Skip to content

Commit

Permalink
Less Overpowered Commando ERTs (Marsoc, WY Whiteout, UPP Commandos) (#…
Browse files Browse the repository at this point in the history
…4466)

# About the pull request

This PR adds three new alternative Commando distress calls for
admin/staff only usage. These are variants of the Marsoc, WY Whiteout
and UPP Commando that use less overpowered gear.

The non-OP versions have no unique identifier in the admin menus,
however the overpowered versions are denoted with the affix of
"(!DEATHSQUAD!)". This applies to both the distress call and the preset.

Marsoc: Have lost HEAP/Special Explosives/Unique Medical Items
WY Whiteout: Have lost HEAP/Special OP Flamer/Extra OP Smartgun, they
are still combat Synthetics
UPP: Have lost their cloaking abilities, they still retain a cloak for
the aesthetic but it is non-functional.

# Explain why it's good for the game

Commando ERTs are virtually never used in game outside of zombies or for
clean-up after an event due to how oppressively overpowered they are.

This addition will allow admins/staff to make usage of these unique ERTs
more commonly for events without having to worry about them annihilating
the entire server. While each ERT is still quite powerful, they are not
as destructive.

I am 100% open to further changes as needed. 

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>

Put screenshots and videos here with an empty line between the
screenshots and the `<details>` tags.

</details>


# Changelog
:cl:
add: Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout,
UPP Commandos) have been added for admin use.
admin: The powerful versions of commando ERTs are denoted with
(!DEATHSQUAD!) in the distress call and equipment preset menus.
/:cl:

---------

Co-authored-by: Steelpoint <[email protected]>
  • Loading branch information
Steelpoint and Steelpoint committed Nov 13, 2023
1 parent 69fee2e commit 895c071
Show file tree
Hide file tree
Showing 9 changed files with 478 additions and 35 deletions.
105 changes: 82 additions & 23 deletions code/datums/emergency_calls/deathsquad.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

//Weyland-Yutani Deathsquad - W-Y Deathsquad. Event only
/datum/emergency_call/death
name = "Weyland Whiteout Operators"
name = "Weyland Whiteout Operators (!DEATHSQUAD!)"
mob_max = 8
mob_min = 5
arrival_message = "'!`2*%slau#*jer t*h$em a!l%. le&*ve n(o^ w&*nes%6es.*v$e %#d ou^'"
Expand All @@ -18,41 +18,76 @@


// DEATH SQUAD--------------------------------------------------------------------------------
/datum/emergency_call/death/create_member(datum/mind/M, turf/override_spawn_loc)
/datum/emergency_call/death/create_member(datum/mind/player, turf/override_spawn_loc)
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.

var/mob/living/carbon/human/H = new(spawn_loc)
M.transfer_to(H, TRUE)
var/mob/living/carbon/human/person = new(spawn_loc)
player.transfer_to(person, TRUE)

if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = H
to_chat(H, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!"))
to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE)
else if(medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job))
if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = person
to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE)
else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!"))
to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE)
else if(heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job))
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE)
else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job))
heavies++
to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!"))
to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE)
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE)
else
to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!"))
to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE)
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE)

addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

/datum/emergency_call/death/low_threat
name = "Weyland Whiteout Operators"

// DEATH SQUAD--------------------------------------------------------------------------------
/datum/emergency_call/death/low_threat/create_member(datum/mind/player, turf/override_spawn_loc)
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.

var/mob/living/carbon/human/person = new(spawn_loc)
player.transfer_to(person, TRUE)

if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job))
leader = person
to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/leader, TRUE, TRUE)
else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/medic, TRUE, TRUE)
else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job))
heavies++
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/terminator, TRUE, TRUE)
else
to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!"))
to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above."))
arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat, TRUE, TRUE)

addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

//################################################################################################
// Marine commandos - USCM Deathsquad. Event only
/datum/emergency_call/marsoc
name = "Marine Raider Strike Team"
name = "Marine Raider Strike Team (!DEATHSQUAD!)"
mob_max = 8
mob_min = 5
probability = 0
Expand Down Expand Up @@ -81,7 +116,7 @@
return

/datum/emergency_call/marsoc_covert
name = "Marine Raider Operatives (Covert)"
name = "Marine Raider Operatives (!DEATHSQUAD! Covert)"
mob_max = 8
mob_min = 5
probability = 0
Expand All @@ -107,3 +142,27 @@
to_chat(H, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives."))
to_chat(H, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!"))
return


/datum/emergency_call/marsoc/low_threat
name = "Marine Raider Operatives"

/datum/emergency_call/marsoc/low_threat/create_member(datum/mind/MIND)

var/turf/spawn_loc = get_spawn_point()

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

var/mob/living/carbon/human/player = new(spawn_loc)
MIND.transfer_to(player, TRUE)
if(!leader && HAS_FLAG(player.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(player.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader.
leader = player
to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are a Marine Raider Team Leader, better than all the rest.")))
arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat/sl, TRUE, TRUE)
else
to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are an elite Marine Raider, the best of the best.")))
arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat, TRUE, TRUE)
to_chat(player, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives."))
to_chat(player, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!"))
return
28 changes: 27 additions & 1 deletion code/datums/emergency_calls/upp_commando.dm
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

//UPP COMMANDOS
/datum/emergency_call/upp_commando
name = "UPP Commandos"
name = "UPP Commandos (!DEATHSQUAD!)"
mob_max = 6
probability = 0
objectives = "Stealthily assault the ship. Use your silenced weapons, tranquilizers, and night vision to get the advantage on the enemy. Take out the power systems, comms and engine. Stick together and keep a low profile."
Expand Down Expand Up @@ -51,3 +51,29 @@

addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)

/datum/emergency_call/upp_commando/low_threat
name = "UPP Commandos"

/datum/emergency_call/upp_commando/create_member(datum/mind/mind, turf/override_spawn_loc)
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.

var/mob/living/carbon/human/person = new(spawn_loc)
mind.transfer_to(person, TRUE)

if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader.
leader = person
arm_equipment(person, /datum/equipment_preset/upp/commando/leader/low_threat, TRUE, TRUE)
to_chat(person, SPAN_ROLE_HEADER("You are a Commando Team Leader of the Union of Progressive People, a powerful socialist state that rivals the United Americas!"))
else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job))
medics++
to_chat(person, SPAN_ROLE_HEADER("You are a Commando Medic of the Union of Progressive People, a powerful socialist state that rivals the United Americas!"))
arm_equipment(person, /datum/equipment_preset/upp/commando/medic/low_threat, TRUE, TRUE)
else
to_chat(person, SPAN_ROLE_HEADER("You are a Commando of the Union of Progressive People, a powerful socialist state that rivals the United Americas!"))
arm_equipment(person, /datum/equipment_preset/upp/commando/low_threat, TRUE, TRUE)
print_backstory(person)

addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS)
4 changes: 4 additions & 0 deletions code/game/objects/items/storage/backpack.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1127,6 +1127,10 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r
max_storage_space = 21
camo_alpha = 10

/obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak
desc = "A thermo-optic camouflage cloak commonly used by UPP commando units. This one is less effective than normal."
actions_types = null

//----------TWE SECTION----------
/obj/item/storage/backpack/rmc
has_gamemode_skin = FALSE
Expand Down
12 changes: 12 additions & 0 deletions code/game/objects/items/storage/pouch.dm
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,18 @@
new /obj/item/reagent_container/hypospray/autoinjector/stimulant/redemption_stimulant(src)
new /obj/item/reagent_container/hypospray/autoinjector/stimulant/speed_stimulant(src)

/obj/item/storage/pouch/medical/socmed/not_op/fill_preset_inventory()
new /obj/item/device/healthanalyzer(src)
new /obj/item/stack/medical/splint(src)
new /obj/item/stack/medical/advanced/bruise_pack(src)
new /obj/item/stack/medical/advanced/ointment(src)
new /obj/item/reagent_container/hypospray/autoinjector/bicaridine(src)
new /obj/item/reagent_container/hypospray/autoinjector/kelotane(src)
new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src)
new /obj/item/reagent_container/hypospray/autoinjector/emergency(src)
new /obj/item/reagent_container/hypospray/autoinjector/emergency(src)
new /obj/item/tool/extinguisher/mini(src)

/obj/item/storage/pouch/medical/socmed/dutch
name = "\improper Dutch's Medical Pouch"
desc = "A pouch bought from a black market trader by Dutch quite a few years ago. Rumoured to be stolen from secret USCM assets. Its contents have been slowly used up and replaced over the years."
Expand Down
Loading

0 comments on commit 895c071

Please sign in to comment.