Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Foxtrot Rework + Marine Reinforcements #6788

Closed
58 changes: 58 additions & 0 deletions code/datums/emergency_calls/beacon-reinforcements/freelancers.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@


/datum/emergency_call/freelancer/beacon
name = "Freelancer (Beacon Reinforcements)"
mob_max = 7
mob_min = 1
max_engineers = 1
max_medics = 1
spawn_max_amount = TRUE

/datum/emergency_call/freelancer/beacon/New()
..()
objectives = "Assist the USCM forces"
arrival_message = "[MAIN_SHIP_NAME], this is the Free Vessel Nellie. We've accepted your contract for aid and are coming aboard. Jolly ho!"

/datum/emergency_call/freelancer/beacon/create_member(datum/mind/mind, turf/override_spawn_loc)
set waitfor = 0
if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST)
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc)) return //Didn't find a useable spawn point.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same


var/mob/living/carbon/human/human = new(spawn_loc)

if(mind)
mind.transfer_to(human, TRUE)
else
human.create_hud()

if(mob_max > length(members))
announce_dchat("Some Freelancers were not taken, use the Join As Freed Mob verb to take one of them.")


if(!leader && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(human.client, JOB_SQUAD_LEADER, time_required_for_job))))
leader = human
arm_equipment(human, /datum/equipment_preset/other/freelancer/beacon/leader, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Warlord over your own mercenary band."))
else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job))))
medics++
arm_equipment(human, /datum/equipment_preset/other/freelancer/medic, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Medic within a mercenary band."))
else
arm_equipment(human, /datum/equipment_preset/other/freelancer/beacon, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Riflemen within a mercenary faction"))

print_backstory(human)

sleep(10)
if(!mind)
kiVts marked this conversation as resolved.
Show resolved Hide resolved
human.free_for_ghosts()
to_chat(human, SPAN_BOLD("Objectives: [objectives]"))

/datum/emergency_call/freelancer/beacon/print_backstory(mob/living/carbon/human/human)
to_chat(human, SPAN_BOLD("You started off in the Neroid Sector as a colonist seeking work at one of the established colonies."))
to_chat(human, SPAN_BOLD("The withdrawl of United American forces in the early 2180s, the system fell into disarray."))
to_chat(human, SPAN_BOLD("Taking up arms as a mercenary, the Freelancers have become a powerful force of order in the system."))
to_chat(human, SPAN_BOLD("While they are motivated primarily by money, many colonists see the Freelancers as the main forces of order in the Neroid Sector."))
57 changes: 57 additions & 0 deletions code/datums/emergency_calls/beacon-reinforcements/rmc.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@


/datum/emergency_call/rmc/beacon
name = "RMC (Beacon Reinforcements)"
mob_max = 7
mob_min = 1
max_engineers = 1
max_medics = 1
spawn_max_amount = TRUE

/datum/emergency_call/rmc/beacon/New()
..()
objectives = "Assist the USCM forces"
arrival_message = "[MAIN_SHIP_NAME], this is the HMS Thames of the Three World Empires. We've received your call and are enroute to aid per the C2 Collaborative Defense Agreement."

/datum/emergency_call/rmc/beacon/create_member(datum/mind/mind, turf/override_spawn_loc)
set waitfor = 0
if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST)
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc)) return //Didn't find a useable spawn point.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same


var/mob/living/carbon/human/human = new(spawn_loc)

if(mind)
mind.transfer_to(human, TRUE)
else
human.create_hud()

if(mob_max > length(members))
announce_dchat("Some Commandos were not taken, use the Join As Freed Mob verb to take one of them.")


if(!leader && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(human.client, JOB_SQUAD_LEADER, time_required_for_job))))
leader = human
arm_equipment(human, /datum/equipment_preset/twe/royal_marine/beacon/leader, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Officer in the RMC"))
else
arm_equipment(human, /datum/equipment_preset/twe/royal_marine/beacon/standard, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Rifleman in the RMC"))

print_backstory(human)

sleep(10)
if(!mind)
kiVts marked this conversation as resolved.
Show resolved Hide resolved
human.free_for_ghosts()
to_chat(human, SPAN_BOLD("Objectives: [objectives]"))

/datum/emergency_call/rmc/beacon/print_backstory(mob/living/carbon/human/human)
to_chat(human, SPAN_BOLD("You were born in the Three World Empire to a [pick_weight(list("average" = 75, "poor" = 15, "well-established" = 10))] family."))
to_chat(human, SPAN_BOLD("Joining the Royal Marines gave you a lot of combat experience and useful skills."))
to_chat(human, SPAN_BOLD("You are [pick_weight(list("unaware" = 75, "faintly aware" = 15, "knoledgeable" = 10))] of the xenomorph threat."))
to_chat(human, SPAN_BOLD("You are a citizen of the three world empire and joined the Royal Marines Commando"))
to_chat(human, SPAN_BOLD("You are apart of a jointed UA/TWE taskforce onboard the HMS Patna and Thunderchild."))
to_chat(human, SPAN_BOLD("Under the directive of the RMC high command, you have been assisting USCM forces with maintaining peace in the area."))
to_chat(human, SPAN_BOLD("Assist the USCMC Force of the [MAIN_SHIP_NAME] however you can."))
78 changes: 78 additions & 0 deletions code/datums/emergency_calls/beacon-reinforcements/upp.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@


/datum/emergency_call/upp/beacon
name = "UPP (Beacon Reinforcements)"
mob_max = 5
mob_min = 1
max_engineers = 1
max_medics = 1
home_base = /datum/lazy_template/ert/upp_station
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_upp
item_spawn = /obj/effect/landmark/ert_spawns/distress_upp/item
spawn_max_amount = TRUE

/datum/emergency_call/upp/beacon/New()
..()
objectives = "Assist the USCM forces"
arrival_message = "[MAIN_SHIP_NAME], this is the SSV Haldin of the Union of Progressive Peoples. We hear your call for reinforcements and are sending our forces to assist you under International Law as outlined by the Treaty of Canton."

/datum/emergency_call/upp/beacon/create_member(datum/mind/mind, turf/override_spawn_loc)
set waitfor = 0
if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST)
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc)) return //Didn't find a useable spawn point.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no inline ifs, I know this is copypasted, but that code is also six years old.


var/mob/living/carbon/human/human = new(spawn_loc)

if(mind)
mind.transfer_to(human, TRUE)
else
human.create_hud()

if(mob_max > length(members))
announce_dchat("Some UPP were not taken, use the Join As Freed Mob verb to take one of them.")



if(!leader && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(human.client, JOB_SQUAD_LEADER, time_required_for_job))))
leader = human
arm_equipment(human, /datum/equipment_preset/upp/beacon/leader, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Squad Leader in the UPP"))
else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job))))
medics++
arm_equipment(human, /datum/equipment_preset/upp/beacon/medic, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Medic in the UPP"))
else if (engineers < max_engineers && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(human.client, JOB_SQUAD_ENGI, time_required_for_job))))
engineers++
arm_equipment(human, /datum/equipment_preset/upp/beacon/sapper, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Sapper in the UPP"))
else
arm_equipment(human, /datum/equipment_preset/upp/beacon/soldier, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Soldier in the UPP"))

print_backstory(human)

sleep(10)
if(!mind)
human.free_for_ghosts()
to_chat(human, SPAN_BOLD("Objectives: [objectives]"))


/datum/emergency_call/upp/beacon/print_backstory(mob/living/carbon/human/human)
if(ishuman_strict(human))
to_chat(human, SPAN_BOLD("You grew up in relatively simple family in [pick(75;"Eurasia", 25;"a famished UPP colony")] with few belongings or luxuries."))
to_chat(human, SPAN_BOLD("The family you grew up with were [pick(50;"getting by", 25;"impoverished", 25;"starving")] and you were one of [pick(10;"two", 20;"three", 20;"four", 30;"five", 20;"six")] children."))
to_chat(human, SPAN_BOLD("You come from a long line of [pick(40;"crop-harvesters", 20;"soldiers", 20;"factory workers", 5;"scientists", 15;"engineers")], and quickly enlisted to improve your living conditions."))
to_chat(human, SPAN_BOLD("Following your enlistment to the UPP military at the age of 17, you were assigned to the 17th 'Smoldering Sons' battalion (six hundred strong) under the command of Colonel Ganbaatar."))
else
to_chat(human, SPAN_BOLD("You were brought online in a UPP engineering facility, knowing only your engineers for the first few weeks for your pseudo-life."))
to_chat(human, SPAN_BOLD("You were programmed with all of the medical and combat experience a military fighting force support asset required."))
to_chat(human, SPAN_BOLD("Throughout your career, your engineers, and later, your UPP compatriots, treated you like [pick(75;"a tool, and only that.", 25;"a person, despite your purpose.")]"))
to_chat(human, SPAN_BOLD("Some weeks after your unit integration, you were assigned to the 17th 'Smoldering Sons' battalion (six hundred strong) under the command of Colonel Ganbaatar."))
to_chat(human, SPAN_BOLD("You were shipped off with the battalion to one of the UPP's most remote territories, a gas giant designated MV-35 in the Anglo-Japanese Arm, in the Neroid Sector."))
to_chat(human, SPAN_BOLD("For the past 14 months, you and the rest of the Smoldering Sons have been stationed at MV-35's only facility, the helium refinery, Altai Station."))
to_chat(human, SPAN_BOLD("As MV-35 and Altai Station are the only UPP-held zones in the Neroid Sector for many lightyears, you have spent most of your military career holed up in crammed quarters in near darkness, waiting for supply shipments and transport escort deployments."))
to_chat(human, SPAN_BOLD("With the recent arrival of the USCM battalion the 'Falling Falcons' and their flagship, the [MAIN_SHIP_NAME], the UPP has felt threatened in the sector."))
to_chat(human, SPAN_BOLD("Despite your mistrust, you've received an open transmission about a Xenomorph outbreak and are coming to assist the USCM."))
79 changes: 79 additions & 0 deletions code/datums/emergency_calls/beacon-reinforcements/vaipo.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@


/datum/emergency_call/vaipo/beacon
name = "VAIPO (Beacon Reinforcements)"
mob_max = 5
mob_min = 1
max_engineers = 1
max_medics = 1
spawn_max_amount = TRUE

/datum/emergency_call/vaipo/beacon/New()
..()
objectives = "Assist the USCM forces"
arrival_message = "[MAIN_SHIP_NAME], this is USCSS Verloc with Vanguard's Arrow Incorporated, Primary Operations; we read your signal, leathernecks, and are coming to aid in accordance with the Military Aid Act of 2177."

/datum/emergency_call/vaipo/beacon/create_member(datum/mind/mind, turf/override_spawn_loc)
set waitfor = 0
if(SSmapping.configs[GROUND_MAP].map_name == MAP_WHISKEY_OUTPOST)
name_of_spawn = /obj/effect/landmark/ert_spawns/distress_wo
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

if(!istype(spawn_loc)) return //Didn't find a useable spawn point.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no inline ifs


var/mob/living/carbon/human/human = new(spawn_loc)

if(mind)
mind.transfer_to(human, TRUE)
else
human.create_hud()

if(mob_max > length(members))
announce_dchat("Some VAIPO were not taken, use the Join As Freed Mob verb to take one of them.")



if(!leader && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(human.client, JOB_SQUAD_LEADER, time_required_for_job))))
leader = human
arm_equipment(human, /datum/equipment_preset/contractor/duty/beacon/leader, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Squad Leader in VAIPO"))
else if (medics < max_medics && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(human.client, JOB_SQUAD_MEDIC, time_required_for_job))))
medics++
arm_equipment(human, /datum/equipment_preset/contractor/duty/beacon/medic, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Combat Medic in VAIPO"))
else if (engineers < max_engineers && (!mind || (HAS_FLAG(human.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(human.client, JOB_SQUAD_ENGI, time_required_for_job))))
engineers++
arm_equipment(human, /datum/equipment_preset/contractor/duty/beacon/engi, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are an Engineer in VAIPO"))
else
arm_equipment(human, /datum/equipment_preset/contractor/duty/beacon/standard, mind == null, TRUE)
to_chat(human, SPAN_ROLE_HEADER("You are a Riflemen in VAIPO"))

print_backstory(human)

sleep(10)
if(!mind)
human.free_for_ghosts()
to_chat(human, SPAN_BOLD("Objectives: [objectives]"))



/datum/emergency_call/vaipo/beacon/print_backstory(mob/living/carbon/human/human)
if(ishuman_strict(human))
to_chat(human, SPAN_BOLD("You were born [pick(60;"in the United States", 20;"on Earth", 20;"on a colony")] to a [pick(75;"average", 15;"poor", 10;"well-established")] family."))
to_chat(human, SPAN_BOLD("Joining the USCM gave you a lot of combat experience and useful skills but changed you."))
to_chat(human, SPAN_BOLD("After getting out, you couldn't hold a job with the things you saw and did, deciding to put your skills to use you joined a Military Contractor firm."))
to_chat(human, SPAN_BOLD("You are a skilled mercenary, making better pay than in the Corps."))
else
to_chat(human, SPAN_BOLD("You were brought online in a civilian factory."))
to_chat(human, SPAN_BOLD("You were programmed with all of the medical and engineering knowledge a military fighting force support asset required."))
to_chat(human, SPAN_BOLD("You were soon after bought by Vanguard's Arrow Incorporated(VAI) to act as support personnel."))
to_chat(human, SPAN_BOLD("Some months after your purchase, you were assigned to the USCSS Inheritor, a VAI transport vessel."))
to_chat(human, SPAN_BOLD("You are [pick(80;"unaware", 15;"faintly aware", 5;"knowledgeable")] of the xenomorph threat."))
to_chat(human, SPAN_BOLD("You are employed by Vanguard's Arrow Incorporated(VAI), as a member of VAI Primary Operations(VAIPO)"))
to_chat(human, SPAN_BOLD("You are stationed on-board the USCSS Inheritor, a part of VAIPO Task-Force Charlie."))
to_chat(human, SPAN_BOLD("Under the directive of the VAI executive board, you have been assist in riot control, military aid, and to assist USCMC forces wherever possible."))
to_chat(human, SPAN_BOLD("The USCSS Inheritor is staffed with crew of roughly three hundred military contractors, and fifty support personnel."))
to_chat(human, SPAN_BOLD("Assist the USCMC Force of the [MAIN_SHIP_NAME] however you can."))
to_chat(human, SPAN_BOLD("As a side-objective, VAI has been hired by an unknown benefactor to engage in corporate espionage and sabotage against Weyland-Yutani, avoid direct conflict; you aren't VAISO; but attempt to recover Wey-Yu secrets and plans if possible."))
to_chat(human, SPAN_BOLD("Your Task Force has been on patrol within the Neroid sector, and recieved a call for reinforcements from the USS Almayer."))
36 changes: 30 additions & 6 deletions code/datums/emergency_calls/cryo_marines.dm
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,36 @@
probability = 0
max_engineers = 8

/datum/emergency_call/cryo_squad/tech // Actual techweb cryorines
name = "Marine Cryo Reinforcements (Tech)"
mob_max = 6
max_engineers = 2
max_medics = 2
max_smartgunners = 1
max_heavies = 0

/obj/effect/landmark/ert_spawns/distress_cryo
name = "Distress_Cryo"

/datum/emergency_call/cryo_squad/tech
name = "Marine Cryo Reinforcements (Tech)"
mob_max = 5
max_engineers = 1
max_medics = 1
max_heavies = 0
/datum/emergency_call/cryo_squad/tech/proc/get_marines()
var/pop_scale = 0
var/count = 0

for (var/mob/living/carbon/human/H in GLOB.human_mob_list)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you want it to scale with server pop, use GLOB.clients, dont use for loop, just single var with length(GLOB.clients)

if (H.faction == FACTION_MARINE)
count++

switch(count)
if(95 to 104)
pop_scale = 2
if(105 to 114)
pop_scale = 4
if(115 to 350)
pop_scale = 6

return pop_scale

/datum/emergency_call/cryo_squad/tech/New()
. = ..()
var/pop_scale = get_marines()
mob_max += pop_scale
23 changes: 0 additions & 23 deletions code/modules/cm_tech/techs/marine/tier3/cryo_spec.dm

This file was deleted.

17 changes: 4 additions & 13 deletions code/modules/cm_tech/techs/marine/tier3/cryorine.dm
Original file line number Diff line number Diff line change
@@ -1,25 +1,16 @@

/datum/tech/repeatable/cryomarine
/datum/tech/cryomarine
name = "Wake Up Additional Troops"
desc = "Wakes up additional troops to fight against any threats."
icon_state = "cryotroops"

announce_message = "Additional troops are being taken out of cryo."
announce_message = "Contingency squad Foxtrot are being taken out of cryo to assist the operation."

required_points = 6
increase_per_purchase = 6
required_points = 10

flags = TREE_FLAG_MARINE
tier = /datum/tier/three

/datum/tech/repeatable/cryomarine/can_unlock(mob/M)
. = ..()
if(!.)
return
if(!SSticker.mode)
to_chat(M, SPAN_WARNING("You can't do this right now!"))
return

Comment on lines -19 to -22
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did you remove this

/datum/tech/repeatable/cryomarine/on_unlock()
/datum/tech/cryomarine/on_unlock()
. = ..()
SSticker.mode.get_specific_call(/datum/emergency_call/cryo_squad/tech, TRUE, FALSE) // "Marine Cryo Reinforcements (Tech)"
25 changes: 25 additions & 0 deletions code/modules/cm_tech/techs/marine/tier4/beacon_reinforcements.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@

/datum/tech/beacon
name = "Call For Reinforcements"
desc = "Activate the long range transmitters to call for reinforcements."
icon_state = "beacon"

announce_message = "ARES is activating its long range transmitters to call for reinforcements. Standby..."

required_points = 10

flags = TREE_FLAG_MARINE
tier = /datum/tier/four

/datum/tech/beacon/on_unlock()
. = ..()
var/pick_reinforcements = rand(1,4)
switch(pick_reinforcements)
if(1)
SSticker.mode.get_specific_call(/datum/emergency_call/freelancer/beacon, TRUE, TRUE)
if(2)
SSticker.mode.get_specific_call(/datum/emergency_call/rmc/beacon, TRUE, TRUE)
if(3)
SSticker.mode.get_specific_call(/datum/emergency_call/upp/beacon, TRUE, TRUE)
if(4)
SSticker.mode.get_specific_call(/datum/emergency_call/vaipo/beacon, TRUE, TRUE)
Loading
Loading