Skip to content

Commit

Permalink
InitalCommit
Browse files Browse the repository at this point in the history
  • Loading branch information
Steelpoint committed Jul 18, 2024
1 parent ccdd8e6 commit 92be94a
Show file tree
Hide file tree
Showing 6 changed files with 403 additions and 14 deletions.
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 @@ -609,7 +609,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 @@ -635,6 +635,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)
if(!M) return

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))
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

0 comments on commit 92be94a

Please sign in to comment.