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

Elite Mercenary Non-Deathsquad Version #6757

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 37 additions & 7 deletions code/datums/emergency_calls/mercs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,18 @@
max_medics = 3

/datum/emergency_call/heavy_mercs
name = "Elite Mercenaries (Random Alignment)"
name = "Elite Mercenaries (!DEATHSQUAD!) (Random Hostility)"
mob_min = 4
mob_max = 8
probability = 0
max_medics = 1
max_engineers = 1
max_heavies = 1
var/standard_preset = /datum/equipment_preset/other/elite_merc/standard
var/medic_preset = /datum/equipment_preset/other/elite_merc/medic
var/engineer_preset = /datum/equipment_preset/other/elite_merc/engineer
var/heavy_preset = /datum/equipment_preset/other/elite_merc/heavy
var/leader_preset = /datum/equipment_preset/other/elite_merc/leader

/datum/emergency_call/heavy_mercs/New()
. = ..()
Expand All @@ -102,8 +107,24 @@
else
objectives = "Help the crew of the [MAIN_SHIP_NAME] in exchange for payment, and choose your payment well. Do what your Captain says. Ensure your survival at all costs."

/datum/emergency_call/heavy_mercs/low_threat
name = "Elite Mercenaries (Random Hostility)"
standard_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat
medic_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/medic
engineer_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/engineer
heavy_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/heavy
leader_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/leader

/datum/emergency_call/heavy_mercs/hostile
name = "Elite Mercenaries (!DEATHSQUAD!) (HOSTILE to USCM)"

/datum/emergency_call/heavy_mercs/hostile/low_threat
name = "Elite Mercenaries (HOSTILE to USCM)"
standard_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat
medic_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/medic
engineer_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/engineer
heavy_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/heavy
leader_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/leader

/datum/emergency_call/heavy_mercs/hostile/New()
. = ..()
Expand All @@ -112,7 +133,8 @@
objectives = "Ransack the [MAIN_SHIP_NAME] and kill anyone who gets in your way. Do what your Captain says. Ensure your survival at all costs."

/datum/emergency_call/heavy_mercs/friendly
name = "Elite Mercenaries (Friendly)"
name = "Elite Mercenaries (!DEATHSQUAD!) (ALLIED to USCM)"
mob_min = 1

/datum/emergency_call/heavy_mercs/friendly/New()
. = ..()
Expand All @@ -132,6 +154,14 @@
to_chat(H, SPAN_NOTICE(SPAN_BOLD("To this end, you have been contacted by Weyland-Yutani of the USCSS Royce to assist the [MAIN_SHIP_NAME]..")))
to_chat(H, SPAN_NOTICE(SPAN_BOLD("Ensure they are not destroyed.</b>")))

/datum/emergency_call/heavy_mercs/friendly/low_threat
name = "Elite Mercenaries (ALLIED to USCM)"
standard_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat
medic_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/medic
engineer_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/engineer
heavy_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/heavy
leader_preset = /datum/equipment_preset/other/elite_merc/standard_lowthreat/leader

/datum/emergency_call/heavy_mercs/create_member(datum/mind/M, turf/override_spawn_loc)
var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point()

Expand All @@ -145,22 +175,22 @@

if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader.
leader = H
arm_equipment(H, /datum/equipment_preset/other/elite_merc/leader, TRUE, TRUE)
arm_equipment(H, leader_preset, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are the Elite Mercenary leader!"))
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))
medics++
arm_equipment(H, /datum/equipment_preset/other/elite_merc/medic, TRUE, TRUE)
arm_equipment(H, medic_preset, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Elite Mercenary Medic!"))
else if(engineers < max_engineers && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_ENGINEER) && check_timelock(H.client, JOB_SQUAD_ENGI, time_required_for_job))
engineers++
arm_equipment(H, /datum/equipment_preset/other/elite_merc/engineer, TRUE, TRUE)
arm_equipment(H, engineer_preset, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Elite Mercenary Engineer!"))
else if(heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, JOB_SQUAD_SMARTGUN, time_required_for_job))
heavies++
arm_equipment(H, /datum/equipment_preset/other/elite_merc/heavy, TRUE, TRUE)
arm_equipment(H, heavy_preset, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Elite Mercenary Specialist!"))
else
arm_equipment(H, /datum/equipment_preset/other/elite_merc/standard, TRUE, TRUE)
arm_equipment(H, standard_preset, TRUE, TRUE)
to_chat(H, SPAN_ROLE_HEADER("You are an Elite Mercenary!"))
print_backstory(H)

Expand Down
34 changes: 34 additions & 0 deletions code/modules/clothing/head/helmet.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1364,6 +1364,40 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list(
desc = "A sturdy helmet worn by an unknown mercenary group. Features a toggleable welding screen for eye protection."
built_in_visors = list(new /obj/item/device/helmet_visor/welding_visor/mercenary)

//=======================================================================\\

/obj/item/clothing/head/helmet/marine/veteran/mercenary_lowthreat
name = "\improper L12 ceramic helmet"
desc = "A sturdy helmet worn by an unknown mercenary group. This is a cheaper version of the far more stronger K12 helmet."
icon_state = "mercenary_heavy_helmet"
flags_armor_protection = BODY_FLAG_HEAD|BODY_FLAG_FACE|BODY_FLAG_EYES
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUM
armor_laser = CLOTHING_ARMOR_MEDIUMLOW
armor_energy = CLOTHING_ARMOR_NONE
armor_bomb = CLOTHING_ARMOR_MEDIUMLOW
armor_bio = CLOTHING_ARMOR_MEDIUM
armor_rad = CLOTHING_ARMOR_MEDIUMLOW
armor_internaldamage = CLOTHING_ARMOR_MEDIUM
flags_inventory = COVEREYES|COVERMOUTH|BLOCKSHARPOBJ
flags_inv_hide = HIDEEARS|HIDEEYES|HIDEFACE|HIDEMASK|HIDEALLHAIR
flags_marine_helmet = HELMET_DAMAGE_OVERLAY

/obj/item/clothing/head/helmet/marine/veteran/mercenary_lowthreat/miner
name = "\improper L8 miner helmet"
desc = "A sturdy helmet, specialised for mining, worn by an unknown mercenary group. This is a cheaper version of the far more stronger L8 helmet."
icon_state = "mercenary_miner_helmet"

/obj/item/clothing/head/helmet/marine/veteran/mercenary_lowthreat/support
name = "\improper L7 helmet"
desc = "A sturdy helmet worn by an unknown mercenary group. This is a cheaper version of the far more stronger L8 helmet."
icon_state = "mercenary_engineer_helmet"

/obj/item/clothing/head/helmet/marine/veteran/mercenary_lowthreat/support/engineer
desc = "A sturdy helmet worn by an unknown mercenary group. Features a toggleable welding screen for eye protection. This is a cheaper version of the far more stronger L8 helmet."
built_in_visors = list(new /obj/item/device/helmet_visor/welding_visor/mercenary)


//=============================//MEME\\==================================\\
//=======================================================================\\

Expand Down
76 changes: 76 additions & 0 deletions code/modules/clothing/suits/marine_armor/ert.dm
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,82 @@
armor_melee = CLOTHING_ARMOR_VERYHIGH
armor_bomb = CLOTHING_ARMOR_GIGAHIGH

//=====================================================================\\
/obj/item/clothing/suit/storage/marine/veteran/mercenary_lowthreat
name = "\improper L12 ceramic plated armor"
desc = "A set of grey, heavy ceramic armor with dark blue highlights. It is the standard uniform of an unknown mercenary group working in the sector. This is a cheaper version of the far more stronger K12 version."
icon_state = "mercenary_heavy_armor"
flags_inventory = BLOCKSHARPOBJ|BLOCK_KNOCKDOWN
armor_melee = CLOTHING_ARMOR_MEDIUM
armor_bullet = CLOTHING_ARMOR_MEDIUM
armor_laser = CLOTHING_ARMOR_MEDIUMLOW
armor_energy = CLOTHING_ARMOR_NONE
armor_bomb = CLOTHING_ARMOR_MEDIUMLOW
armor_bio = CLOTHING_ARMOR_MEDIUM
armor_rad = CLOTHING_ARMOR_MEDIUMLOW
armor_internaldamage = CLOTHING_ARMOR_MEDIUM
storage_slots = 2
slowdown = SLOWDOWN_ARMOR_LIGHT
allowed = list(
/obj/item/weapon/gun,
/obj/item/tank/emergency_oxygen,
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
/obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
/obj/item/storage/bible,
/obj/item/weapon/sword/machete,
/obj/item/attachable/bayonet,
/obj/item/device/motiondetector,
/obj/item/device/walkman,
)
uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary)
item_state_slots = list(WEAR_JACKET = "mercenary_heavy_armor")

/obj/item/clothing/suit/storage/marine/veteran/mercenary_lowthreat/heavy
name = "\improper Modified L12 ceramic plated armor"
desc = "A set of grey, heavy ceramic armor with dark blue highlights. It has been modified with extra ceramic plates placed in its storage pouch, and seems intended to support an extremely heavy weapon. This is a cheaper version of the far more stronger K12 version."
armor_melee = CLOTHING_ARMOR_MEDIUMHIGH
armor_bullet = CLOTHING_ARMOR_MEDIUMHIGH
armor_bomb = CLOTHING_ARMOR_MEDIUMHIGH
armor_bio = CLOTHING_ARMOR_MEDIUMHIGH
armor_rad = CLOTHING_ARMOR_MEDIUMHIGH
armor_internaldamage = CLOTHING_ARMOR_MEDIUMHIGH
storage_slots = 1

/obj/item/clothing/suit/storage/marine/veteran/mercenary_lowthreat/miner
name = "\improper L8 armored miner vest"
desc = "A set of beige, light armor built for protection while mining. It is a specialized uniform of an unknown mercenary group working in the sector. This is a cheaper version of the far more stronger Y8 version."
icon_state = "mercenary_miner_armor"
storage_slots = 3
allowed = list(
/obj/item/weapon/gun,
/obj/item/tank/emergency_oxygen,
/obj/item/device/flashlight,
/obj/item/ammo_magazine/,
/obj/item/weapon/baton,
/obj/item/restraint/handcuffs,
/obj/item/storage/fancy/cigarettes,
/obj/item/tool/lighter,
/obj/item/explosive/grenade,
/obj/item/storage/bible,
/obj/item/weapon/sword/machete,
/obj/item/attachable/bayonet,
/obj/item/device/motiondetector,
/obj/item/device/walkman,
)
uniform_restricted = list(/obj/item/clothing/under/marine/veteran/mercenary)
item_state_slots = list(WEAR_JACKET = "mercenary_miner_armor")

/obj/item/clothing/suit/storage/marine/veteran/mercenary_lowthreat/support
name = "\improper L7 armored vest"
desc = "A set of blue armor with yellow highlights built for protection while building or carrying out medical treatment in highly dangerous environments. It is a specialized uniform of an unknown mercenary group working in the sector. This is a cheaper version of the far more stronger Z7 version"
icon_state = "mercenary_engineer_armor"
item_state_slots = list(WEAR_JACKET = "mercenary_engineer_armor")

//=========================//PROVOST\\================================\\
//=======================================================================\\
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/under/marine_uniform.dm
Original file line number Diff line number Diff line change
Expand Up @@ -635,7 +635,7 @@
icon_state = "mercenary_heavy_uniform"
worn_state = "mercenary_heavy_uniform"
min_cold_protection_temperature = ICE_PLANET_MIN_COLD_PROT
suit_restricted = list(/obj/item/clothing/suit/storage/marine/veteran/mercenary)
suit_restricted = list(/obj/item/clothing/suit/storage/marine/veteran/mercenary, /obj/item/clothing/suit/storage/marine/veteran/mercenary_lowthreat)

/obj/item/clothing/under/marine/veteran/mercenary/miner
name = "\improper Mercenary miner fatigues"
Expand Down
32 changes: 31 additions & 1 deletion code/modules/gear_presets/_select_equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -636,7 +636,7 @@ GLOBAL_LIST_INIT(rebel_rifles, list(

var/list/elite_merc_rifles = list(
/obj/item/weapon/gun/smg/m39/elite = /obj/item/ammo_magazine/smg/m39/ap,
/obj/item/weapon/gun/rifle/m41aMK1 = /obj/item/ammo_magazine/rifle/m41aMK1,
/obj/item/weapon/gun/rifle/m41aMK1 = /obj/item/ammo_magazine/rifle/m41aMK1/ap,
/obj/item/weapon/gun/rifle/m41a/elite = /obj/item/ammo_magazine/rifle/ap)

var/list/elite_merc_shotguns = list(
Expand All @@ -662,6 +662,36 @@ GLOBAL_LIST_INIT(rebel_rifles, list(
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine, WEAR_WAIST)
spawn_weapon(gunpath, ammopath, M, 0, ammo_amount)

/datum/equipment_preset/proc/spawn_merc_elite_weapon_lowthreat(atom/M, ammo_amount = 12, shotgun_chance = 50, spawn_belt = 1)
Copy link
Member

Choose a reason for hiding this comment

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

why is this defined so high up instead of on /datum/equipment_preset/other/elite_merc

Copy link
Member

Choose a reason for hiding this comment

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

also given you're only piping humans into this, you can just type it appropriately

if(!M) return
Copy link
Member

Choose a reason for hiding this comment

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

no inline control


var/list/elite_merc_rifles = list(
/obj/item/weapon/gun/rifle/m41aMK1/anchorpoint = /obj/item/ammo_magazine/rifle/m41aMK1/ap,
/obj/item/weapon/gun/rifle/m41a/tactical = /obj/item/ammo_magazine/rifle/ap)

var/list/elite_merc_shotguns = list(
/obj/item/weapon/gun/shotgun/merc = pick(GLOB.shotgun_handfuls_12g),
/obj/item/weapon/gun/shotgun/combat = pick(GLOB.shotgun_handfuls_12g),
/obj/item/weapon/gun/shotgun/type23 = pick(GLOB.shotgun_handfuls_8g))

if(prob(shotgun_chance))
var/gunpath = pick(elite_merc_shotguns)
var/ammopath = elite_merc_shotguns[gunpath]
if(spawn_belt)
if(ishuman(M))
Copy link
Member

Choose a reason for hiding this comment

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

redundant, type is known

var/mob/living/carbon/human/new_human = M
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/shotgun, WEAR_WAIST)
ammo_amount = 24
spawn_weapon(gunpath, ammopath, M, 0, ammo_amount)
else
var/gunpath = pick(elite_merc_rifles)
var/ammopath = elite_merc_rifles[gunpath]
if(spawn_belt)
if(ishuman(M))
var/mob/living/carbon/human/new_human = M
new_human.equip_to_slot_or_del(new /obj/item/storage/belt/marine, WEAR_WAIST)
spawn_weapon(gunpath, ammopath, M, 0, ammo_amount)


/datum/equipment_preset/proc/spawn_weapon(gunpath, ammopath, atom/M, sidearm = 0, ammo_amount = 12)

Expand Down
Loading
Loading