From 7d3123deb484341d20bdeb9d51021c09e3875ded Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 01:24:31 -0600 Subject: [PATCH 01/16] Occupying force redone V2 --- code/datums/ert.dm | 10 ++ code/game/objects/items/cards_ids.dm | 8 ++ code/game/objects/items/stunbaton.dm | 6 + code/modules/antagonists/ert/ert.dm | 15 +++ code/modules/clothing/head/helmet.dm | 9 ++ code/modules/clothing/outfits/occupying.dm | 117 ++++++++++++++++++ .../projectiles/guns/ballistic/automatic.dm | 6 + yogstation.dme | 1 + 8 files changed, 172 insertions(+) create mode 100644 code/modules/clothing/outfits/occupying.dm diff --git a/code/datums/ert.dm b/code/datums/ert.dm index ed745760ed23..c31690acdc85 100644 --- a/code/datums/ert.dm +++ b/code/datums/ert.dm @@ -30,6 +30,16 @@ leader_role = /datum/antagonist/ert/amber/commander roles = list(/datum/antagonist/ert/amber,/datum/antagonist/ert/amber,/datum/antagonist/ert/amber/medic) // entered duplicate here to increase change of soldiers +/datum/ert/occupying + opendoors = FALSE + code = "Blue" + rename_team = "Occupying Force" + mission = "Occupy the station. Minimize crew casulties. Enforce space law." + polldesc = "the Occupying Force" + teamsize = 5 // redundant but keeping this here for clarity + leader_role = /datum/antagonist/ert/occupying/commander + roles = list(/datum/antagonist/ert/occupying,/datum/antagonist/ert/occupying/heavy,/datum/antagonist/ert/occupying,/datum/antagonist/ert/occupying) + /datum/ert/red leader_role = /datum/antagonist/ert/commander/red roles = list(/datum/antagonist/ert/security/red, /datum/antagonist/ert/medic/red, /datum/antagonist/ert/engineer/red) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 84f889fa1382..d1561180d4da 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -478,6 +478,14 @@ update_label("John Doe", "Clowny") desc = "An Amber Task Force ID card." assignment = "Amber Task Force" +/obj/item/card/id/ert/occupying + name = "\improper Occupying Force ID" + desc = "An Occupying Force ID card." + assignment = "Occupying Officer" + +/obj/item/card/id/ert/occupying/Initialize() + access = list(ACCESS_SECURITY,ACCESS_BRIG,ACCESS_WEAPONS,ACCESS_SEC_DOORS,ACCESS_MAINT_TUNNELS)+get_ert_access("sec") + /obj/item/card/id/ert/Initialize() access = get_all_accesses()+get_ert_access("commander")-ACCESS_CHANGE_IDS . = ..() diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 531e6567f836..d60fa4f20b31 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -255,3 +255,9 @@ /obj/item/melee/baton/cattleprod/baton_stun() if(sparkler.activate()) ..() + +/obj/item/melee/baton/cattleprod/tactical + name = "tactical stunprod" + desc = "A cost effective, mass produced, tactical stun prod." + preload_cell_type = /obj/item/stock_parts/cell/high/plus // comes with a cell + color = "#aeb08c" // super tactical \ No newline at end of file diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index af3891f6eb88..f92b6b5fa1fa 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -136,6 +136,21 @@ outfit = /datum/outfit/amber/commander role = "Commander" +/datum/antagonist/ert/occupying + name = "Occupying Officer" + outfit = /datum/outfit/amber + role = "Officer" + +/datum/antagonist/ert/occupying/heavy + name = "Occupying Riot Officer" + outfit = /datum/outfit/occupying/heavy + role = "Riot Officer" + +/datum/antagonist/ert/occupying/commander + name = "Occupying Commander" + outfit = /datum/outfit/occupying/commander + role = "Commander" + /datum/antagonist/ert/clown name = "Comedy Response Officer" outfit = /datum/outfit/centcom_clown diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index a97467c3e8c0..4e7fc854a523 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -73,6 +73,15 @@ return return ..() +/obj/item/clothing/head/helmet/sec/occupying + name = "occupying force helmet" + desc = "Standard deployment gear. Protects the head from impacts and has a built in mounted light." + +/obj/item/clothing/head/helmet/sec/occupying/Initialize() + attached_light = /obj/item/flashlight/seclite + update_helmlight() + . = ..() + /obj/item/clothing/head/helmet/alt name = "bulletproof helmet" desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent." diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm new file mode 100644 index 000000000000..3b30d0ee1301 --- /dev/null +++ b/code/modules/clothing/outfits/occupying.dm @@ -0,0 +1,117 @@ +// occupying force clothing +/obj/item/clothing/under/rank/security/grey/amber/occupying + name = "occupying force jumpsuit" + color = "#55ff9b" + +/obj/item/clothing/under/rank/security/grey/amber/occupying/Initialize() + . = ..() + if(prob(50)) // Adds variation to the uniform. 50% will be worn casually. + src.AltClick() + +/obj/item/clothing/head/beret/sec/centcom/occupying + name = "occupying force beret" + desc = "A special green beret for the mundane life of an Occupying Force commander." + color = "#55ff9b" + +/obj/item/clothing/suit/armor/riot/occupying + armor = list("melee" = 40, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 40, "acid" = 40) + name = "occupying force riot suit" + desc = "A mass produced semi-flexible polycarbonate body armor with decent padding to protect against melee attacks. Not as strong as riot suits typically issued to NT stations." + color = "#55ff9b" + +/obj/item/clothing/head/helmet/riot/raised/occupying + name = "occupying force riot helmet" + desc = "It's a helmet specifically designed for the Occupying force to protect against close range attacks." + color = "#55ff9b" + +// occupying force vest loadouts +// To note: each vest has 7 normal slots - Hopek +/obj/item/storage/belt/military/occupying_officer/ComponentInitialize() // Occupying Officer + . = ..() + new /obj/item/ammo_box/magazine/wt550m9/wtr(src) + new /obj/item/ammo_box/magazine/wt550m9/wtr(src) + new /obj/item/reagent_containers/hypospray/medipen(src) + new /obj/item/restraints/handcuffs/cable/zipties(src) + new /obj/item/restraints/handcuffs/cable/zipties(src) + new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) + new /obj/item/jawsoflife(src) + + +/obj/item/storage/belt/military/occupying_commander/ComponentInitialize() // Occupying force Commander + . = ..() + new /obj/item/ammo_box/magazine/wt550m9/wtr(src) + new /obj/item/ammo_box/magazine/wt550m9/wtr(src) + new /obj/item/reagent_containers/hypospray/medipen(src) + new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) + new /obj/item/megaphone(src) + new /obj/item/restraints/handcuffs/cable/zipties(src) + new /obj/item/jawsoflife(src) + +/obj/item/storage/belt/military/occupying_heavy + color = "#55ff9b" + +/obj/item/storage/belt/military/occupying_heavy/ComponentInitialize() // Occupying Riot Officer + . = ..() + new /obj/item/ammo_box/magazine/wt550m9/wtr(src) + new /obj/item/melee/classic_baton/telescopic(src) + new /obj/item/restraints/handcuffs(src) + new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) + new /obj/item/reagent_containers/hypospray/medipen/survival(src) + new /obj/item/flashlight/flare(src) + new /obj/item/jawsoflife(src) + + +/datum/outfit/occupying + name = "Occupying Officer" + uniform = /obj/item/clothing/under/rank/security/grey/amber/occupying + suit = /obj/item/clothing/suit/armor/vest/alt + shoes = /obj/item/clothing/shoes/jackboots + gloves = /obj/item/clothing/gloves/color/black + ears = /obj/item/radio/headset/headset_cent/alt + mask = /obj/item/clothing/mask/cigarette + belt = /obj/item/storage/belt/military/occupying_officer + suit_store = /obj/item/gun/ballistic/automatic/wt550/occupying + back = /obj/item/melee/baton/cattleprod/tactical + head = /obj/item/clothing/head/helmet/sec/occupying + l_pocket = /obj/item/reagent_containers/food/drinks/beer + r_pocket = /obj/item/storage/box/fancy/cigarettes + id = /obj/item/card/id/ert/occupying + implants = list(/obj/item/implant/mindshield) + + +/datum/outfit/occupying/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + if(visualsOnly) + return + + H.facial_hair_style = "None" // Everyone in the Occupying force is bald and has no facial hair + H.hair_style = "None" + + var/obj/item/radio/R = H.ears + R.set_frequency(FREQ_CENTCOM) + R.freqlock = TRUE + + var/obj/item/card/id/W = H.wear_id + W.icon_state = "centcom" + W.registered_name = "Unknown" // continuing the tradition of these ID's not being assigned to a particular person + W.assignment = "Occupying Force" + W.update_label(W.registered_name, W.assignment) + + H.ignores_capitalism = TRUE // Yogs -- Lets the Occupying force buy a damned smoke for christ's sake + + +/datum/outfit/occupying/commander + name = "Occupying force Commander" + head = /obj/item/clothing/head/beret/sec/centcom/occupying + belt = /obj/item/storage/belt/military/occupying_commander + l_pocket = /obj/item/pinpointer/nuke + r_pocket = /obj/item/lighter/greyscale // everyone has ciggies, only commander has a lighter + mask = /obj/item/clothing/mask/cigarette/cigar/cohiba + glasses = /obj/item/clothing/glasses/hud/security + +/datum/outfit/occupying/heavy + name = "Occupying Riot Officer" + belt = /obj/item/storage/belt/military/occupying_heavy + back = /obj/item/shield/riot + r_pocket = /obj/item/tank/internals/emergency_oxygen/engi + head = /obj/item/clothing/head/helmet/riot/raised/occupying + suit = /obj/item/clothing/suit/armor/riot/occupying diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index 3a07363a584a..4ebe7182d258 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -97,6 +97,12 @@ mag_display_ammo = TRUE empty_indicator = TRUE +/obj/item/gun/ballistic/automatic/wt550/occupying + name = "surplus security auto rifle" + desc = "Crude surplus variant of the WT-550 Automatic Rifle meant for mass deployment. Does not come with the benefits of a two round burst." + burst_size = 1 + mag_type = /obj/item/ammo_box/magazine/wt550m9/wtr + /obj/item/gun/ballistic/automatic/mini_uzi name = "\improper Type U3 Uzi" desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds." diff --git a/yogstation.dme b/yogstation.dme index 627926337af6..dca4ddebd1d1 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -1669,6 +1669,7 @@ #include "code\modules\clothing\neck\skillcapes\skillcape_datums.dm" #include "code\modules\clothing\neck\skillcapes\skillcapes.dm" #include "code\modules\clothing\outfits\amber.dm" +#include "code\modules\clothing\outfits\occupying.dm" #include "code\modules\clothing\outfits\ert.dm" #include "code\modules\clothing\outfits\event.dm" #include "code\modules\clothing\outfits\plasmaman.dm" From e710d0277df2fa6e9e93ddd0a3d7be82448b8a04 Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 16:37:39 -0600 Subject: [PATCH 02/16] Airlock Jimmy --- code/game/turfs/simulated/floor.dm | 3 + code/modules/clothing/head/helmet.dm | 2 +- icons/obj/tools.dmi | Bin 23168 -> 23472 bytes sound/items/jimmy_pump.ogg | Bin 0 -> 24435 bytes yogstation.dme | 2 +- yogstation/code/game/objects/items/tools.dm | 69 ++++++++++++++++++++ 6 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 sound/items/jimmy_pump.ogg diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 249af7cfeb2a..d9bd8aac6822 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -169,6 +169,9 @@ return 0 /turf/open/floor/crowbar_act(mob/living/user, obj/item/I) + if(istype(I,/obj/item/jawsoflife/jimmy)) + to_chat(user,"The [I] cannot pry tiles.") + return return intact ? pry_tile(I, user) : FALSE /turf/open/floor/proc/try_replace_tile(obj/item/stack/tile/T, mob/user, params) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 4e7fc854a523..e4e509a6704c 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -80,7 +80,7 @@ /obj/item/clothing/head/helmet/sec/occupying/Initialize() attached_light = /obj/item/flashlight/seclite update_helmlight() - . = ..() + . = ..() /obj/item/clothing/head/helmet/alt name = "bulletproof helmet" diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index 42ded804eae2ea2e38b854946f525376e0648eed..f232e01217cd28e8611fc153cd399bc7e64e7723 100644 GIT binary patch delta 3842 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 jKF9aR_a|^}TjWUv+!ODEP9IEcH}MF9%}E3 literal 0 HcmV?d00001 diff --git a/yogstation.dme b/yogstation.dme index dca4ddebd1d1..85351dd65cff 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -1669,9 +1669,9 @@ #include "code\modules\clothing\neck\skillcapes\skillcape_datums.dm" #include "code\modules\clothing\neck\skillcapes\skillcapes.dm" #include "code\modules\clothing\outfits\amber.dm" -#include "code\modules\clothing\outfits\occupying.dm" #include "code\modules\clothing\outfits\ert.dm" #include "code\modules\clothing\outfits\event.dm" +#include "code\modules\clothing\outfits\occupying.dm" #include "code\modules\clothing\outfits\plasmaman.dm" #include "code\modules\clothing\outfits\standard.dm" #include "code\modules\clothing\outfits\vr.dm" diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm index 940bcd5fa542..5a7da3ca3277 100644 --- a/yogstation/code/game/objects/items/tools.dm +++ b/yogstation/code/game/objects/items/tools.dm @@ -14,6 +14,7 @@ force = 15 toolspeed = 0.7 tool_behaviour = TOOL_CROWBAR + var/pryforce = 1 // the speed at which airlocks are pried open. Default is 1 . //jaws of life changing jaw code /obj/item/jawsoflife/attack_self(mob/user) @@ -131,3 +132,71 @@ to_chat(user, "You attach the screw driver bit to [src].") update_icon() +/obj/item/jawsoflife/jimmy + name = "airlock jimmy" + desc = "An pump assisted airlock prying jimmy." + icon_state = "jimmy" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + materials = list(MAT_METAL=400,MAT_SILVER=10,MAT_TITANIUM=80) + toolspeed = 0.3 // Starting minimum value. Pump it up by using it up to the max + tool_behaviour = TOOL_CROWBAR + pryforce = 0.4 + var/is_pumping = FALSE // are we charging at the moment? + var/pryforce_max + var/pryforce_min + +/obj/item/jawsoflife/jimmy/Initialize() + . = ..() + pryforce_min = pryforce + pryforce_max = (pryforce * 3) + + +/obj/item/jawsoflife/jimmy/attack_self(mob/user) // airlock jimmy can't switch tool modes back to cutters. + pump(user) + +/obj/item/jawsoflife/jimmy/proc/pump(mob/user) + if(pryforce > pryforce_max && user) + to_chat(user,"[src] is fully pumped.") + else + if(!is_pumping) + is_pumping = TRUE + pryforce = pryforce + 0.1 + show_gage(user) + playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) + addtimer(CALLBACK(src, .proc/pump_cooldown), 5) // cooldown between pumps + addtimer(CALLBACK(src, .proc/pump_powerdown), 300) // lose gained power after 30 seconds + return + +/obj/item/jawsoflife/jimmy/proc/pump_powerdown(mob/user) + if(src.pryforce > src.pryforce_min) + src.pryforce = (src.pryforce - 0.1) + if(pryforce == (pryforce_min + 0.1)) + show_gage(user) + return + +/obj/item/jawsoflife/jimmy/proc/show_gage(mob/user) + if(user) // just in-case this is a proccall instead of being used by a mob + var/pressure_gage = (pryforce * 100) - 20 + var/emag_givaway_flavor = "" + if(pressure_gage < 101) + emag_givaway_flavor = pick("somehow ","unironically ","ironically ","actually ","maybe ") + to_chat(user,"[src]'s pressure gage [emag_givaway_flavor]reads [pressure_gage]%.") + return + +/obj/item/jawsoflife/jimmy/proc/pump_cooldown() + is_pumping = FALSE + +/obj/item/jawsoflife/jimmy/emag_act(mob/user) + if(obj_flags & EMAGGED) + to_chat(user, "Nothing new seems to happen when you swipe the emag.") + return + to_chat(user, "You swipe the emag on [src]'s pressure gage'. ") + obj_flags |= EMAGGED + pryforce_max = (pryforce_max * 1.25) // 1.5 at default values + . = ..() + +/obj/item/jawsoflife/jimmy/examine(mob/user) + . = ..() + if(obj_flags & EMAGGED) + . += "The pressure gage has been tampered with." \ No newline at end of file From 668c639276d989678324de6b2bdba7e3a6740b12 Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 18:52:31 -0600 Subject: [PATCH 03/16] Jimmy rework part 2 --- code/game/machinery/doors/airlock.dm | 14 +++++++ code/modules/clothing/outfits/occupying.dm | 6 +-- yogstation/code/game/objects/items/tools.dm | 42 ++++++++++----------- 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index ce49d48978a8..4ffd769160ef 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1236,6 +1236,20 @@ if(hasPower() && !prying_so_hard) if (I.tool_behaviour == TOOL_CROWBAR) //we need another check, futureproofing for if/when bettertools actually completely replaces the old jaws time_to_open = 50 + if(istype(I,/obj/item/jawsoflife/jimmy)) + time_to_open = 40 + var/obj/item/jawsoflife/jimbo = I + if(jimbo.pump_charge >= jimbo.pump_cost) + jimbo.pump_charge = jimbo.pump_charge - jimbo.pump_cost + if(jimbo.pump_charge < 0) + jimbo.pump_charge = 0 + playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) + if(jimbo.obj_flags & jimbo.EMAGGED) + time_to_open = 25 + else + if(user) + to_chat(user, "You do not have enough charge in the [jimbo] for this. You need at least [jimbo.pump_cost]% ") + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick? prying_so_hard = TRUE if(do_after(user, time_to_open, TRUE, src)) diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index 3b30d0ee1301..d167c4be684b 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -34,7 +34,7 @@ new /obj/item/restraints/handcuffs/cable/zipties(src) new /obj/item/restraints/handcuffs/cable/zipties(src) new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) - new /obj/item/jawsoflife(src) + new /obj/item/jawsoflife/jimmy(src) /obj/item/storage/belt/military/occupying_commander/ComponentInitialize() // Occupying force Commander @@ -45,7 +45,7 @@ new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) new /obj/item/megaphone(src) new /obj/item/restraints/handcuffs/cable/zipties(src) - new /obj/item/jawsoflife(src) + new /obj/item/jawsoflife/jimmy(src) /obj/item/storage/belt/military/occupying_heavy color = "#55ff9b" @@ -58,7 +58,7 @@ new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) new /obj/item/reagent_containers/hypospray/medipen/survival(src) new /obj/item/flashlight/flare(src) - new /obj/item/jawsoflife(src) + new /obj/item/jawsoflife/jimmy(src) /datum/outfit/occupying diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm index 5a7da3ca3277..849344e0e283 100644 --- a/yogstation/code/game/objects/items/tools.dm +++ b/yogstation/code/game/objects/items/tools.dm @@ -134,7 +134,7 @@ /obj/item/jawsoflife/jimmy name = "airlock jimmy" - desc = "An pump assisted airlock prying jimmy." + desc = "A pump assisted airlock prying jimmy." icon_state = "jimmy" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' @@ -142,46 +142,45 @@ toolspeed = 0.3 // Starting minimum value. Pump it up by using it up to the max tool_behaviour = TOOL_CROWBAR pryforce = 0.4 + var/pump_charge = 0 + var/pump_max = 100 + var/pump_min = 0 + var/pump_cost = 50 // the cost to pump best if done in incriments of 25 up to the max + var/pump_rate = 25 var/is_pumping = FALSE // are we charging at the moment? - var/pryforce_max - var/pryforce_min - -/obj/item/jawsoflife/jimmy/Initialize() - . = ..() - pryforce_min = pryforce - pryforce_max = (pryforce * 3) - /obj/item/jawsoflife/jimmy/attack_self(mob/user) // airlock jimmy can't switch tool modes back to cutters. pump(user) /obj/item/jawsoflife/jimmy/proc/pump(mob/user) - if(pryforce > pryforce_max && user) + if(pump_charge >= pump_max && user) to_chat(user,"[src] is fully pumped.") else if(!is_pumping) + var/old_value = pump_charge is_pumping = TRUE - pryforce = pryforce + 0.1 + pump_charge = (pump_charge + pump_rate) > pump_max ? pump_max : pump_charge + pump_rate show_gage(user) - playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) - addtimer(CALLBACK(src, .proc/pump_cooldown), 5) // cooldown between pumps - addtimer(CALLBACK(src, .proc/pump_powerdown), 300) // lose gained power after 30 seconds + if(old_value != pump_charge) + playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) // no need you pump; didn't pump but instead looked at the gage + addtimer(CALLBACK(src, .proc/pump_cooldown), 5) // cooldown between pumps + addtimer(CALLBACK(src, .proc/pump_powerdown), 300) // lose gained power after 30 seconds return /obj/item/jawsoflife/jimmy/proc/pump_powerdown(mob/user) - if(src.pryforce > src.pryforce_min) - src.pryforce = (src.pryforce - 0.1) - if(pryforce == (pryforce_min + 0.1)) + if(src.pump_charge - 25) + src.pump_charge - 25 + if(src.pump) show_gage(user) return /obj/item/jawsoflife/jimmy/proc/show_gage(mob/user) if(user) // just in-case this is a proccall instead of being used by a mob - var/pressure_gage = (pryforce * 100) - 20 + var/pressure_gage = "[src.pump_charge]%" var/emag_givaway_flavor = "" if(pressure_gage < 101) emag_givaway_flavor = pick("somehow ","unironically ","ironically ","actually ","maybe ") - to_chat(user,"[src]'s pressure gage [emag_givaway_flavor]reads [pressure_gage]%.") + to_chat(user,"[src]'s pressure gage [emag_givaway_flavor]reads [pressure_gage].") return /obj/item/jawsoflife/jimmy/proc/pump_cooldown() @@ -191,9 +190,10 @@ if(obj_flags & EMAGGED) to_chat(user, "Nothing new seems to happen when you swipe the emag.") return - to_chat(user, "You swipe the emag on [src]'s pressure gage'. ") + to_chat(user, "You swipe the emag on [src]'s pressure gage' enabling you to pump more pressure. ") obj_flags |= EMAGGED - pryforce_max = (pryforce_max * 1.25) // 1.5 at default values + pump_max = 150 + pump_cost = 75 . = ..() /obj/item/jawsoflife/jimmy/examine(mob/user) From aabf7f0c4a5cb8db8026966742a08c291dac2047 Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 21:00:55 -0600 Subject: [PATCH 04/16] Airlock J conversion --- code/game/machinery/doors/airlock.dm | 14 +++++++------- yogstation/code/game/objects/items/tools.dm | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4ffd769160ef..bb1e7ed2967f 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1238,17 +1238,17 @@ time_to_open = 50 if(istype(I,/obj/item/jawsoflife/jimmy)) time_to_open = 40 - var/obj/item/jawsoflife/jimbo = I - if(jimbo.pump_charge >= jimbo.pump_cost) - jimbo.pump_charge = jimbo.pump_charge - jimbo.pump_cost - if(jimbo.pump_charge < 0) - jimbo.pump_charge = 0 + var/obj/item/jawsoflife/jimmy/J = I + if(J.pump_charge >= J.pump_cost) + J.pump_charge = J.pump_charge - J.pump_cost + if(J.pump_charge < 0) + J.pump_charge = 0 playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) - if(jimbo.obj_flags & jimbo.EMAGGED) + if(J.obj_flags & EMAGGED) time_to_open = 25 else if(user) - to_chat(user, "You do not have enough charge in the [jimbo] for this. You need at least [jimbo.pump_cost]% ") + to_chat(user, "You do not have enough charge in the [J] for this. You need at least [J.pump_cost]% ") playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick? prying_so_hard = TRUE diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm index 849344e0e283..4939003fec3e 100644 --- a/yogstation/code/game/objects/items/tools.dm +++ b/yogstation/code/game/objects/items/tools.dm @@ -168,9 +168,9 @@ return /obj/item/jawsoflife/jimmy/proc/pump_powerdown(mob/user) - if(src.pump_charge - 25) - src.pump_charge - 25 - if(src.pump) + if((pump_charge - 25) >= 0) + pump_charge = pump_charge - 25 + if(user) show_gage(user) return From cf7ab85dd8b128a47f60fc1d8442113bcc15a9bc Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 21:40:06 -0600 Subject: [PATCH 05/16] Helm light fix and more jimmy changes --- code/game/machinery/doors/airlock.dm | 5 +++-- code/modules/clothing/head/helmet.dm | 4 ++-- yogstation/code/game/objects/items/tools.dm | 12 +++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index bb1e7ed2967f..6b18088a4340 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1237,7 +1237,7 @@ if (I.tool_behaviour == TOOL_CROWBAR) //we need another check, futureproofing for if/when bettertools actually completely replaces the old jaws time_to_open = 50 if(istype(I,/obj/item/jawsoflife/jimmy)) - time_to_open = 40 + time_to_open = 30 var/obj/item/jawsoflife/jimmy/J = I if(J.pump_charge >= J.pump_cost) J.pump_charge = J.pump_charge - J.pump_cost @@ -1245,10 +1245,11 @@ J.pump_charge = 0 playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) if(J.obj_flags & EMAGGED) - time_to_open = 25 + time_to_open = 15 else if(user) to_chat(user, "You do not have enough charge in the [J] for this. You need at least [J.pump_cost]% ") + return playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick? prying_so_hard = TRUE diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index e4e509a6704c..5d0ce03a9a94 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -78,8 +78,8 @@ desc = "Standard deployment gear. Protects the head from impacts and has a built in mounted light." /obj/item/clothing/head/helmet/sec/occupying/Initialize() - attached_light = /obj/item/flashlight/seclite - update_helmlight() + var/obj/item/flashlight/seclite/S = new /obj/item/flashlight/seclite(src) + src.attackby(S) // This is the only way that I found to make it work without bypassing checks - Hopek . = ..() /obj/item/clothing/head/helmet/alt diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm index 4939003fec3e..1b590779fa1e 100644 --- a/yogstation/code/game/objects/items/tools.dm +++ b/yogstation/code/game/objects/items/tools.dm @@ -151,6 +151,7 @@ /obj/item/jawsoflife/jimmy/attack_self(mob/user) // airlock jimmy can't switch tool modes back to cutters. pump(user) + show_gage(user) /obj/item/jawsoflife/jimmy/proc/pump(mob/user) if(pump_charge >= pump_max && user) @@ -160,7 +161,6 @@ var/old_value = pump_charge is_pumping = TRUE pump_charge = (pump_charge + pump_rate) > pump_max ? pump_max : pump_charge + pump_rate - show_gage(user) if(old_value != pump_charge) playsound(src, 'sound/items/jimmy_pump.ogg', 100, TRUE) // no need you pump; didn't pump but instead looked at the gage addtimer(CALLBACK(src, .proc/pump_cooldown), 5) // cooldown between pumps @@ -170,17 +170,17 @@ /obj/item/jawsoflife/jimmy/proc/pump_powerdown(mob/user) if((pump_charge - 25) >= 0) pump_charge = pump_charge - 25 - if(user) - show_gage(user) return /obj/item/jawsoflife/jimmy/proc/show_gage(mob/user) + message_admins("I made it to start") if(user) // just in-case this is a proccall instead of being used by a mob + message_admins("I am now in") var/pressure_gage = "[src.pump_charge]%" var/emag_givaway_flavor = "" if(pressure_gage < 101) emag_givaway_flavor = pick("somehow ","unironically ","ironically ","actually ","maybe ") - to_chat(user,"[src]'s pressure gage [emag_givaway_flavor]reads [pressure_gage].") + to_chat(user,"[src]'s pressure gage [emag_givaway_flavor] reads [pressure_gage].") return /obj/item/jawsoflife/jimmy/proc/pump_cooldown() @@ -199,4 +199,6 @@ /obj/item/jawsoflife/jimmy/examine(mob/user) . = ..() if(obj_flags & EMAGGED) - . += "The pressure gage has been tampered with." \ No newline at end of file + . += "The pressure gage has been tampered with." + if(user) + show_gage(user) \ No newline at end of file From bea8e37d5a59e8e0258039dd68339f90d1d003ed Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 22:07:23 -0600 Subject: [PATCH 06/16] casual jumpsuit fix, helm light --- code/modules/clothing/head/helmet.dm | 5 ++--- code/modules/clothing/outfits/occupying.dm | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 5d0ce03a9a94..a759b629b2c0 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -77,9 +77,8 @@ name = "occupying force helmet" desc = "Standard deployment gear. Protects the head from impacts and has a built in mounted light." -/obj/item/clothing/head/helmet/sec/occupying/Initialize() - var/obj/item/flashlight/seclite/S = new /obj/item/flashlight/seclite(src) - src.attackby(S) // This is the only way that I found to make it work without bypassing checks - Hopek +/obj/item/clothing/head/helmet/sec/occupying/Initialize(mob/user) + attached_light = new /obj/item/flashlight/seclite(null) . = ..() /obj/item/clothing/head/helmet/alt diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index d167c4be684b..d8347348324c 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -3,10 +3,10 @@ name = "occupying force jumpsuit" color = "#55ff9b" -/obj/item/clothing/under/rank/security/grey/amber/occupying/Initialize() +/obj/item/clothing/under/rank/security/grey/amber/occupying/Initialize(mob/user) . = ..() if(prob(50)) // Adds variation to the uniform. 50% will be worn casually. - src.AltClick() + rolldown() /obj/item/clothing/head/beret/sec/centcom/occupying name = "occupying force beret" From dc6159b4dc8c1f8c832e9ce1b109d54bce55f6c8 Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 23:13:54 -0600 Subject: [PATCH 07/16] jumpsuit fix. balancing --- code/modules/clothing/clothing.dm | 11 +++++++++-- code/modules/clothing/outfits/occupying.dm | 13 ++++++++----- yogstation/code/game/objects/items/tools.dm | 19 ++++++++----------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2b80e3d9a107..d0056e743a92 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -244,8 +244,15 @@ BLIND // can't see anything set src in usr rolldown() -/obj/item/clothing/under/proc/rolldown() - if(!can_use(usr)) +/obj/item/clothing/under/proc/rolldown(bypass = FALSE) + if(bypass) + toggle_jumpsuit_adjust() + if(usr) + var/mob/living/carbon/human/H = usr + H.update_inv_w_uniform() + H.update_body() + return + if(!can_use(usr)) return if(!can_adjust) to_chat(usr, "You cannot wear this suit any differently!") diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index d8347348324c..5b7e9f91b7ba 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -6,7 +6,7 @@ /obj/item/clothing/under/rank/security/grey/amber/occupying/Initialize(mob/user) . = ..() if(prob(50)) // Adds variation to the uniform. 50% will be worn casually. - rolldown() + rolldown(TRUE) /obj/item/clothing/head/beret/sec/centcom/occupying name = "occupying force beret" @@ -48,15 +48,15 @@ new /obj/item/jawsoflife/jimmy(src) /obj/item/storage/belt/military/occupying_heavy - color = "#55ff9b" + color = "#55ff9b" /obj/item/storage/belt/military/occupying_heavy/ComponentInitialize() // Occupying Riot Officer . = ..() - new /obj/item/ammo_box/magazine/wt550m9/wtr(src) - new /obj/item/melee/classic_baton/telescopic(src) + new /obj/item/restraints/legcuffs/bola(src) + new /obj/item/restraints/legcuffs/bola(src) new /obj/item/restraints/handcuffs(src) new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) - new /obj/item/reagent_containers/hypospray/medipen/survival(src) + new /obj/item/reagent_containers/hypospray/medipen(src) new /obj/item/flashlight/flare(src) new /obj/item/jawsoflife/jimmy(src) @@ -115,3 +115,6 @@ r_pocket = /obj/item/tank/internals/emergency_oxygen/engi head = /obj/item/clothing/head/helmet/riot/raised/occupying suit = /obj/item/clothing/suit/armor/riot/occupying + mask = /obj/item/clothing/mask/breath/tactical + suit_store = /obj/item/melee/baton/loaded + glasses = /obj/item/clothing/glasses/sunglasses \ No newline at end of file diff --git a/yogstation/code/game/objects/items/tools.dm b/yogstation/code/game/objects/items/tools.dm index 1b590779fa1e..d26c09b3a87a 100644 --- a/yogstation/code/game/objects/items/tools.dm +++ b/yogstation/code/game/objects/items/tools.dm @@ -150,8 +150,9 @@ var/is_pumping = FALSE // are we charging at the moment? /obj/item/jawsoflife/jimmy/attack_self(mob/user) // airlock jimmy can't switch tool modes back to cutters. - pump(user) - show_gage(user) + if(user) + pump(user) + show_gage(user) /obj/item/jawsoflife/jimmy/proc/pump(mob/user) if(pump_charge >= pump_max && user) @@ -173,15 +174,11 @@ return /obj/item/jawsoflife/jimmy/proc/show_gage(mob/user) - message_admins("I made it to start") - if(user) // just in-case this is a proccall instead of being used by a mob - message_admins("I am now in") - var/pressure_gage = "[src.pump_charge]%" - var/emag_givaway_flavor = "" - if(pressure_gage < 101) - emag_givaway_flavor = pick("somehow ","unironically ","ironically ","actually ","maybe ") - to_chat(user,"[src]'s pressure gage [emag_givaway_flavor] reads [pressure_gage].") - return + var/emag_givaway_flavor = "" + message_admins("pump charge is [pump_charge]") + if(pump_charge > 101) + emag_givaway_flavor = pick("somehow ","unironically ","ironically ","actually ","maybe ") + to_chat(user,"[src]'s pressure gage [emag_givaway_flavor]reads [pump_charge]%") /obj/item/jawsoflife/jimmy/proc/pump_cooldown() is_pumping = FALSE From 6eb79b573465a8607e27944cd7371669fa227f4d Mon Sep 17 00:00:00 2001 From: Hopek Date: Tue, 3 Nov 2020 23:14:45 -0600 Subject: [PATCH 08/16] indent fix --- code/modules/clothing/clothing.dm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index d0056e743a92..d2c171795ab8 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -173,7 +173,7 @@ SEE_MOBS // can see all mobs, no matter what SEE_OBJS // can see all objs, no matter what SEE_TURFS // can see all turfs (and areas), no matter what SEE_PIXELS// if an object is located on an unlit area, but some of its pixels are - // in a lit area (via pixel_x,y or smooth movement), can see those pixels + // in a lit area (via pixel_x,y or smooth movement), can see those pixels BLIND // can't see anything */ @@ -246,13 +246,13 @@ BLIND // can't see anything /obj/item/clothing/under/proc/rolldown(bypass = FALSE) if(bypass) - toggle_jumpsuit_adjust() - if(usr) - var/mob/living/carbon/human/H = usr - H.update_inv_w_uniform() - H.update_body() - return - if(!can_use(usr)) + toggle_jumpsuit_adjust() + if(usr) + var/mob/living/carbon/human/H = usr + H.update_inv_w_uniform() + H.update_body() + return + if(!can_use(usr)) return if(!can_adjust) to_chat(usr, "You cannot wear this suit any differently!") From 88e35436760da662762012e7b6e24b07b86140f4 Mon Sep 17 00:00:00 2001 From: Hopek Date: Wed, 4 Nov 2020 18:31:01 -0600 Subject: [PATCH 09/16] Energy bolas --- code/modules/clothing/outfits/occupying.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index 5b7e9f91b7ba..798fe470ae71 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -52,8 +52,8 @@ /obj/item/storage/belt/military/occupying_heavy/ComponentInitialize() // Occupying Riot Officer . = ..() - new /obj/item/restraints/legcuffs/bola(src) - new /obj/item/restraints/legcuffs/bola(src) + new /obj/item/restraints/legcuffs/bola/energy(src) + new /obj/item/restraints/legcuffs/bola/energy(src) new /obj/item/restraints/handcuffs(src) new /obj/item/reagent_containers/food/snacks/pizzaslice/pepperoni(src) new /obj/item/reagent_containers/hypospray/medipen(src) From 3a50c4b1ce244ac1f2552240037f18d355a28c1e Mon Sep 17 00:00:00 2001 From: Hopek Date: Wed, 4 Nov 2020 20:04:11 -0600 Subject: [PATCH 10/16] flows better --- code/game/objects/items/stunbaton.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index d60fa4f20b31..da7b5998c30c 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -258,6 +258,6 @@ /obj/item/melee/baton/cattleprod/tactical name = "tactical stunprod" - desc = "A cost effective, mass produced, tactical stun prod." + desc = "A cost-effective, mass-produced, tactical stun prod." preload_cell_type = /obj/item/stock_parts/cell/high/plus // comes with a cell color = "#aeb08c" // super tactical \ No newline at end of file From b55bb103ade00661284cd9d5179fd2ea736cd7db Mon Sep 17 00:00:00 2001 From: Hopek Date: Thu, 5 Nov 2020 00:04:01 -0600 Subject: [PATCH 11/16] whoop --- code/modules/antagonists/ert/ert.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm index f92b6b5fa1fa..b7365b42b4a2 100644 --- a/code/modules/antagonists/ert/ert.dm +++ b/code/modules/antagonists/ert/ert.dm @@ -138,7 +138,7 @@ /datum/antagonist/ert/occupying name = "Occupying Officer" - outfit = /datum/outfit/amber + outfit = /datum/outfit/occupying role = "Officer" /datum/antagonist/ert/occupying/heavy From 95ca3380a1f3e0d82986ac8e33d58219c0a0d003 Mon Sep 17 00:00:00 2001 From: Hopek Date: Thu, 5 Nov 2020 10:22:15 -0600 Subject: [PATCH 12/16] Forced to run parent --- code/game/objects/items/cards_ids.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index d1561180d4da..6bd343a0335a 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -485,6 +485,7 @@ update_label("John Doe", "Clowny") /obj/item/card/id/ert/occupying/Initialize() access = list(ACCESS_SECURITY,ACCESS_BRIG,ACCESS_WEAPONS,ACCESS_SEC_DOORS,ACCESS_MAINT_TUNNELS)+get_ert_access("sec") + . = ..() /obj/item/card/id/ert/Initialize() access = get_all_accesses()+get_ert_access("commander")-ACCESS_CHANGE_IDS From e610f72b203c34804e7f81ae9bca284febed91e0 Mon Sep 17 00:00:00 2001 From: Hopek Date: Fri, 6 Nov 2020 12:48:33 -0600 Subject: [PATCH 13/16] Cigarettes start lit --- code/game/objects/items/cigs_lighters.dm | 5 +++++ code/modules/clothing/outfits/occupying.dm | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index b10684f23202..b80da0a00ba5 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -927,3 +927,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(reagents && reagents.total_volume) hand_reagents() + +/obj/item/clothing/mask/cigarette/lit/Initialize() + light() // These cigarettes start lit. + . = ..() + \ No newline at end of file diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index 798fe470ae71..8712bbb0e77c 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -68,7 +68,7 @@ shoes = /obj/item/clothing/shoes/jackboots gloves = /obj/item/clothing/gloves/color/black ears = /obj/item/radio/headset/headset_cent/alt - mask = /obj/item/clothing/mask/cigarette + mask = /obj/item/clothing/mask/cigarette/lit belt = /obj/item/storage/belt/military/occupying_officer suit_store = /obj/item/gun/ballistic/automatic/wt550/occupying back = /obj/item/melee/baton/cattleprod/tactical From 75754709f9aa6bf57b17b226f9e18f4e35312d1c Mon Sep 17 00:00:00 2001 From: Hopek Date: Fri, 6 Nov 2020 12:58:48 -0600 Subject: [PATCH 14/16] Needs to initialize first otherwise properties won't update except the icon --- code/game/objects/items/cigs_lighters.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index b80da0a00ba5..956cbb5cb3bf 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -929,6 +929,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM hand_reagents() /obj/item/clothing/mask/cigarette/lit/Initialize() - light() // These cigarettes start lit. . = ..() + light() // These cigarettes start lit. \ No newline at end of file From 3ea5908f7ba1f7c9870b55780b2ce0ef2840649d Mon Sep 17 00:00:00 2001 From: Hopek Date: Mon, 9 Nov 2020 13:30:55 -0600 Subject: [PATCH 15/16] Riot officer gets earmuffs per Fluffe's suggestion He's straight edge now --- code/modules/clothing/outfits/occupying.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index 8712bbb0e77c..8f574b715e5f 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -112,6 +112,7 @@ name = "Occupying Riot Officer" belt = /obj/item/storage/belt/military/occupying_heavy back = /obj/item/shield/riot + l_pocket = /obj/item/clothing/ears/earmuffs r_pocket = /obj/item/tank/internals/emergency_oxygen/engi head = /obj/item/clothing/head/helmet/riot/raised/occupying suit = /obj/item/clothing/suit/armor/riot/occupying From fef6598f390df96efdbd80e0a3972e9afc187198 Mon Sep 17 00:00:00 2001 From: Hopek Date: Mon, 9 Nov 2020 13:36:46 -0600 Subject: [PATCH 16/16] Tabs instead of spaces --- code/modules/clothing/outfits/occupying.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/outfits/occupying.dm b/code/modules/clothing/outfits/occupying.dm index 8f574b715e5f..a89cf52b142c 100644 --- a/code/modules/clothing/outfits/occupying.dm +++ b/code/modules/clothing/outfits/occupying.dm @@ -112,7 +112,7 @@ name = "Occupying Riot Officer" belt = /obj/item/storage/belt/military/occupying_heavy back = /obj/item/shield/riot - l_pocket = /obj/item/clothing/ears/earmuffs + l_pocket = /obj/item/clothing/ears/earmuffs r_pocket = /obj/item/tank/internals/emergency_oxygen/engi head = /obj/item/clothing/head/helmet/riot/raised/occupying suit = /obj/item/clothing/suit/armor/riot/occupying