From 8a75aa216fb9399e6185f42d8cb7b8d7d6f7e08f Mon Sep 17 00:00:00 2001 From: Fikou <23585223+Fikou@users.noreply.github.com> Date: Wed, 28 Dec 2022 13:14:10 +0100 Subject: [PATCH] adds an admin combat-ready miner outfit (#72286) ## About The Pull Request adds an admin outfit intended for easy spawn ins as a shaft miner, to test megafauna and whatnot included are: bone bracers, bone talisman both suit and hood are fully goliath plated webbing with 2 lux pens, 2 standard pens and 2 legion cores gps, advanced scanner kinetic accelerator with bayonet and seclite, compact kinetic crusher (normal sized), upgraded resonator night vision medhud mesons mini extinguisher all the trophies and 10 copies of every modkit ## Why It's Good For The Game makes localhost megafauna fights require less preptime ## Changelog :cl: admin: adds an admin combat-ready miner outfit /:cl: --- code/game/objects/items/storage/belt.dm | 13 ++++- .../objects/items/storage/boxes/job_boxes.dm | 25 ++++++++++ code/modules/clothing/glasses/hud.dm | 5 ++ code/modules/jobs/job_types/shaft_miner.dm | 48 ++++++++++++++++--- .../mining/equipment/kinetic_crusher.dm | 4 ++ 5 files changed, 87 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 95a8476fcb7..669a45b366d 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -417,14 +417,23 @@ )) -/obj/item/storage/belt/mining/vendor - contents = newlist(/obj/item/survivalcapsule) +/obj/item/storage/belt/mining/vendor/PopulateContents() + new /obj/item/survivalcapsule(src) /obj/item/storage/belt/mining/alt icon_state = "explorer2" inhand_icon_state = "explorer2" worn_icon_state = "explorer2" +/obj/item/storage/belt/mining/healing/PopulateContents() + for(var/i in 1 to 2) + new /obj/item/reagent_containers/hypospray/medipen/survival/luxury(src) + for(var/i in 1 to 2) + new /obj/item/reagent_containers/hypospray/medipen/survival(src) + for(var/i in 1 to 2) + var/obj/item/organ/internal/monster_core/core = new /obj/item/organ/internal/monster_core/regenerative_core/legion(src) + core.preserve() + /obj/item/storage/belt/mining/primitive name = "hunter's belt" desc = "A versatile belt, woven from sinew." diff --git a/code/game/objects/items/storage/boxes/job_boxes.dm b/code/game/objects/items/storage/boxes/job_boxes.dm index 3cb30f4ae35..15526d3c178 100644 --- a/code/game/objects/items/storage/boxes/job_boxes.dm +++ b/code/game/objects/items/storage/boxes/job_boxes.dm @@ -248,6 +248,31 @@ var/plush_path = /obj/effect/spawner/random/entertainment/plushie new plush_path(src) +/obj/item/storage/box/survival/mining/bonus + mask_type = null + internal_type = /obj/item/tank/internals/emergency_oxygen/double + +/obj/item/storage/box/survival/mining/bonus/PopulateContents() + ..() + new /obj/item/gps/mining(src) + new /obj/item/t_scanner/adv_mining_scanner(src) + +/obj/item/storage/box/miner_modkits + name = "miner modkit/trophy box" + desc = "Contains every modkit and trophy in the game." + +/obj/item/storage/box/miner_modkits/Initialize(mapload) + . = ..() + atom_storage.set_holdable(list(/obj/item/borg/upgrade/modkit, /obj/item/crusher_trophy)) + atom_storage.numerical_stacking = TRUE + +/obj/item/storage/box/miner_modkits/PopulateContents() + for(var/trophy in subtypesof(/obj/item/crusher_trophy)) + new trophy(src) + for(var/modkit in subtypesof(/obj/item/borg/upgrade/modkit)) + for(var/i in 1 to 10) //minimum cost ucrrently is 20, and 2 pkas, so lets go with that + new modkit(src) + /obj/item/storage/box/skillchips name = "box of skillchips" desc = "Contains one copy of every skillchip" diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index a3467fdfbbf..02fbceb2ea5 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -73,6 +73,11 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE glass_colour_type = /datum/client_colour/glass_colour/green +/obj/item/clothing/glasses/hud/health/night/meson + name = "night vision meson health scanner HUD" + desc = "Truly combat ready." + vision_flags = SEE_TURFS + /obj/item/clothing/glasses/hud/health/night/science name = "night vision medical science scanner HUD" desc = "An clandestine medical science heads-up display that allows operatives to find \ diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 153adb055e1..9afd4f4f34c 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -41,7 +41,7 @@ /obj/item/knife/combat/survival = 1, /obj/item/mining_voucher = 1, /obj/item/stack/marker_beacon/ten = 1, - ) + ) belt = /obj/item/modular_computer/pda/shaftminer ears = /obj/item/radio/headset/headset_cargo/mining gloves = /obj/item/clothing/gloves/color/black @@ -68,21 +68,57 @@ /obj/item/mining_voucher = 1, /obj/item/stack/marker_beacon/ten = 1, /obj/item/t_scanner/adv_mining_scanner/lesser = 1, - ) + ) glasses = /obj/item/clothing/glasses/meson mask = /obj/item/clothing/mask/gas/explorer internals_slot = ITEM_SLOT_SUITSTORE -/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) +/datum/outfit/job/miner/equipped/post_equip(mob/living/carbon/human/miner, visualsOnly = FALSE) ..() if(visualsOnly) return - if(istype(H.wear_suit, /obj/item/clothing/suit/hooded)) - var/obj/item/clothing/suit/hooded/S = H.wear_suit - S.ToggleHood() + if(istype(miner.wear_suit, /obj/item/clothing/suit/hooded)) + var/obj/item/clothing/suit/hooded/explorer_suit = miner.wear_suit + explorer_suit.ToggleHood() /datum/outfit/job/miner/equipped/mod name = "Shaft Miner (Equipment + MODsuit)" back = /obj/item/mod/control/pre_equipped/mining suit = null mask = /obj/item/clothing/mask/gas/explorer + +/datum/outfit/job/miner/equipped/combat + name = "Shaft Miner (Combat-Ready)" + glasses = /obj/item/clothing/glasses/hud/health/night/meson + gloves = /obj/item/clothing/gloves/bracer + accessory = /obj/item/clothing/accessory/talisman + backpack_contents = list( + /obj/item/storage/box/miner_modkits = 1, + /obj/item/gun/energy/recharge/kinetic_accelerator = 2, + /obj/item/kinetic_crusher/compact = 1, + /obj/item/resonator/upgraded = 1, + ) + box = /obj/item/storage/box/survival/mining/bonus + l_pocket = /obj/item/modular_computer/pda/shaftminer + r_pocket = /obj/item/extinguisher/mini + belt = /obj/item/storage/belt/mining/healing + +/datum/outfit/job/miner/equipped/combat/post_equip(mob/living/carbon/human/miner, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + var/list/miner_contents = miner.get_all_contents() + var/obj/item/clothing/suit/hooded/explorer/explorer_suit = locate() in miner_contents + if(explorer_suit) + for(var/i in 1 to 3) + var/obj/item/stack/sheet/animalhide/goliath_hide/plating = new() + explorer_suit.attackby(plating) + for(var/i in 1 to 3) + var/obj/item/stack/sheet/animalhide/goliath_hide/plating = new() + explorer_suit.hood.attackby(plating) + for(var/obj/item/gun/energy/recharge/kinetic_accelerator/accelerator in miner_contents) + var/obj/item/knife/combat/survival/knife = new(accelerator) + accelerator.bayonet = knife + var/obj/item/flashlight/seclite/flashlight = new() + var/datum/component/seclite_attachable/light_component = accelerator.GetComponent(/datum/component/seclite_attachable) + light_component.add_light(flashlight) diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 325c05f3912..aeb16f097f7 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -169,6 +169,10 @@ if(light_on) . += "[icon_state]_lit" +/obj/item/kinetic_crusher/compact //for admins + name = "compact kinetic crusher" + w_class = WEIGHT_CLASS_NORMAL + //destablizing force /obj/projectile/destabilizer name = "destabilizing force"