From 603898adbe70e5b017617d24972f54bb8739ba22 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 31 May 2017 08:39:39 -0500 Subject: [PATCH 01/40] Fixes faulty query and logic --- code/controllers/subsystem/dbcore.dm | 2 +- code/game/gamemodes/game_mode.dm.rej | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 code/game/gamemodes/game_mode.dm.rej diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index b052b20f5d..864274b8fb 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -33,7 +33,7 @@ SUBSYSTEM_DEF(dbcore) //This is as close as we can get to the true round end before Disconnect() without changing where it's called, defeating the reason this is a subsystem if(SSdbcore.Connect()) var/sql_station_name = sanitizeSQL(station_name()) - var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("INSERT INTO [format_table_name("round")] (end_datetime, game_mode_result, end_state, station_name) VALUES (Now(), '[SSticker.mode_result]', '[SSticker.end_state]', '[sql_station_name]') WHERE id = [GLOB.round_id]") + var/datum/DBQuery/query_round_end = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET end_datetime = Now(), game_mode_result = '[SSticker.mode_result]', end_state = '[SSticker.end_state]', station_name = '[sql_station_name]' WHERE id = [GLOB.round_id]") query_round_end.Execute() if(IsConnected()) Disconnect() diff --git a/code/game/gamemodes/game_mode.dm.rej b/code/game/gamemodes/game_mode.dm.rej new file mode 100644 index 0000000000..c834b64a56 --- /dev/null +++ b/code/game/gamemodes/game_mode.dm.rej @@ -0,0 +1,10 @@ +diff a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm (rejected hunks) +@@ -84,8 +84,6 @@ + var/sql + if(SSticker && SSticker.mode) + sql += "game_mode = '[SSticker.mode]'" +- if(sql) +- sql += ", " + if(GLOB.revdata.originmastercommit) + if(sql) + sql += ", " From 12719cb824a5736193d4bf4cd95bbaa901e61416 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 31 May 2017 08:50:30 -0500 Subject: [PATCH 02/40] [Omega] Fixes checkered plating --- _maps/map_files/OmegaStation/OmegaStation.dmm | 35 ++++--------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 16a623b495..f732a4dc79 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -2443,10 +2443,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "aeg" = ( /obj/machinery/conveyor{ @@ -2457,10 +2454,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "aeh" = ( /obj/machinery/conveyor{ @@ -2478,10 +2472,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "aei" = ( /obj/machinery/conveyor{ @@ -4417,10 +4408,7 @@ dir = 9 }, /obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plating{ - tag = "icon-plating_warn_end (WEST)"; - icon_state = "plating_warn_end" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "aho" = ( /obj/machinery/conveyor{ @@ -4467,10 +4455,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "ahr" = ( /obj/machinery/conveyor{ @@ -4485,10 +4470,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "ahs" = ( /obj/machinery/conveyor{ @@ -4510,10 +4492,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/turf/open/floor/plating{ - tag = "icon-plating_warn_side (EAST)"; - icon_state = "plating_warn_side" - }, +/turf/open/floor/plating, /area/quartermaster/storage) "aht" = ( /obj/machinery/door/poddoor{ From d53044aa104067a0affee5aff0e41205e9c29f28 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 1 Jun 2017 08:38:41 -0500 Subject: [PATCH 03/40] Fixes black carpet recipe and sprite --- code/game/objects/items/stacks/tiles/tile_types.dm.rej | 10 ++++++++++ code/modules/crafting/recipes.dm.rej | 10 ++++++++++ 2 files changed, 20 insertions(+) create mode 100644 code/game/objects/items/stacks/tiles/tile_types.dm.rej create mode 100644 code/modules/crafting/recipes.dm.rej diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm.rej b/code/game/objects/items/stacks/tiles/tile_types.dm.rej new file mode 100644 index 0000000000..2f47c12b65 --- /dev/null +++ b/code/game/objects/items/stacks/tiles/tile_types.dm.rej @@ -0,0 +1,10 @@ +diff a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm (rejected hunks) +@@ -111,6 +111,8 @@ + icon_state = "tile-carpet-black" + turf_type = /turf/open/floor/carpet/black + ++/obj/item/stack/tile/carpet/black/fifty ++ amount = 50 + + /obj/item/stack/tile/fakespace + name = "astral carpet" diff --git a/code/modules/crafting/recipes.dm.rej b/code/modules/crafting/recipes.dm.rej new file mode 100644 index 0000000000..39167bca83 --- /dev/null +++ b/code/modules/crafting/recipes.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm (rejected hunks) +@@ -347,7 +347,7 @@ + /datum/crafting_recipe/blackcarpet + name = "Black Carpet" + reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) +- result = /obj/item/stack/tile/carpet/black ++ result = /obj/item/stack/tile/carpet/black/fifty + category = CAT_MISC + + /datum/crafting_recipe/showercurtain From ec90b208629977a132590aeae58225edb41a906b Mon Sep 17 00:00:00 2001 From: cebutris Date: Sun, 4 Jun 2017 13:20:08 -0400 Subject: [PATCH 04/40] oof --- code/modules/mob/living/emote.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index cacd433fec..eb0c7094c3 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -87,6 +87,7 @@ message_larva = "lets out a sickly hiss of air and falls limply to the floor..." message_monkey = "lets out a faint chimper as it collapses and stops moving..." message_simple = "stops moving..." + playsound(user.loc, 'sound/voice/oof.ogg', 80, 1, 1) //Defenitley not copypasta stat_allowed = UNCONSCIOUS /datum/emote/living/deathgasp/run_emote(mob/user, params) From 12790a5422378c1a85cc858a2882171edd82a077 Mon Sep 17 00:00:00 2001 From: cebutris Date: Sun, 4 Jun 2017 13:22:29 -0400 Subject: [PATCH 05/40] i swear I added this the first time --- sound/voice/oof.ogg | Bin 0 -> 9714 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sound/voice/oof.ogg diff --git a/sound/voice/oof.ogg b/sound/voice/oof.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dd0e7edee6fd66e940e911454b8cd066de3f6d27 GIT binary patch literal 9714 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 Date: Sun, 4 Jun 2017 19:23:18 -0500 Subject: [PATCH 06/40] Only human and silicon servants can help recite multi-invoker scriptures --- .../clock_helpers/scripture_checks.dm | 3 +++ .../clock_cult/clock_items/clockwork_slab.dm | 18 +++--------------- .../gamemodes/clock_cult/clock_scripture.dm | 6 +++--- .../clock_scriptures/scripture_applications.dm | 2 +- .../objects/items/weapons/storage/toolbox.dm | 2 +- 5 files changed, 11 insertions(+), 20 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm b/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm index e5d193d74a..914804185e 100644 --- a/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm +++ b/code/game/gamemodes/clock_cult/clock_helpers/scripture_checks.dm @@ -59,3 +59,6 @@ //changes construction value /proc/change_construction_value(amount) GLOB.clockwork_construction_value += amount + +/proc/can_recite_scripture(mob/living/L) + return (is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal() && (GLOB.ratvar_awakens || (ishuman(L) || issilicon(L)))) diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm index 8b3aa01533..72dba26bed 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_slab.dm @@ -14,7 +14,6 @@ var/target_component_id //the target component ID to create, if any var/no_cost = FALSE //If the slab is admin-only and needs no components and has no scripture locks var/speed_multiplier = 1 //multiples how fast this slab recites scripture - var/nonhuman_usable = FALSE //if the slab can be used by nonhumans, defaults to off var/produces_components = TRUE //if it produces components at all var/selected_scripture = SCRIPTURE_DRIVER var/recollecting = FALSE //if we're looking at fancy recollection @@ -33,13 +32,9 @@ no_cost = TRUE produces_components = FALSE -/obj/item/clockwork/slab/scarab - nonhuman_usable = TRUE - /obj/item/clockwork/slab/debug speed_multiplier = 0 no_cost = TRUE - nonhuman_usable = TRUE /obj/item/clockwork/slab/debug/attack_hand(mob/living/user) ..() @@ -49,7 +44,6 @@ /obj/item/clockwork/slab/cyborg //three scriptures, plus a spear and proselytizer clockwork_desc = "A divine link to the Celestial Derelict, allowing for limited recital of scripture.\n\ Hitting a slab, a Servant with a slab, or a cache will transfer this slab's components into the target, the target's slab, or the global cache, respectively." - nonhuman_usable = TRUE quickbound = list(/datum/clockwork_scripture/ranged_ability/judicial_marker, /datum/clockwork_scripture/ranged_ability/linked_vanguard, \ /datum/clockwork_scripture/create_object/tinkerers_cache) maximum_quickbound = 6 //we usually have one or two unique scriptures, so if ratvar is up let us bind one more @@ -106,12 +100,6 @@ slab_ability = null return ..() -/obj/item/clockwork/slab/ratvar_act() - if(GLOB.ratvar_awakens) - nonhuman_usable = TRUE - else - nonhuman_usable = initial(nonhuman_usable) - /obj/item/clockwork/slab/dropped(mob/user) . = ..() addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later @@ -138,7 +126,7 @@ production_time = world.time + SLAB_PRODUCTION_TIME + production_slowdown var/mob/living/L L = get_atom_on_turf(src, /mob/living) - if(istype(L) && is_servant_of_ratvar(L) && (nonhuman_usable || ishuman(L))) + if(istype(L) && can_recite_scripture(L)) var/component_to_generate = target_component_id if(!component_to_generate) component_to_generate = get_weighted_component_id(src) //more likely to generate components that we have less of @@ -268,7 +256,7 @@ if(busy) to_chat(user, "[src] refuses to work, displaying the message: \"[busy]!\"") return 0 - if(!nonhuman_usable && !ishuman(user)) + if(!can_recite_scripture(user)) to_chat(user, "[src] hums fitfully in your hands, but doesn't seem to do anything...") return 0 access_display(user) @@ -288,7 +276,7 @@ ui.open() /obj/item/clockwork/slab/proc/recite_scripture(datum/clockwork_scripture/scripture, mob/living/user) - if(!scripture || !user || !user.canUseTopic(src) || (!nonhuman_usable && !ishuman(user))) + if(!scripture || !user || !user.canUseTopic(src) || !can_recite_scripture(user)) return FALSE if(user.get_active_held_item() != src) to_chat(user, "You need to hold the slab in your active hand to recite scripture!") diff --git a/code/game/gamemodes/clock_cult/clock_scripture.dm b/code/game/gamemodes/clock_cult/clock_scripture.dm index e8f1e8dbbc..9050d4569c 100644 --- a/code/game/gamemodes/clock_cult/clock_scripture.dm +++ b/code/game/gamemodes/clock_cult/clock_scripture.dm @@ -120,7 +120,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or if(multiple_invokers_used && !multiple_invokers_optional && !GLOB.ratvar_awakens && !slab.no_cost) var/nearby_servants = 0 for(var/mob/living/L in range(1, get_turf(invoker))) - if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) + if(can_recite_scripture(L)) nearby_servants++ if(nearby_servants < invokers_required) to_chat(invoker, "There aren't enough non-mute servants nearby ([nearby_servants]/[invokers_required])!") @@ -170,7 +170,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or if(!channel_time && invocations.len) if(multiple_invokers_used) for(var/mob/living/L in range(1, invoker)) - if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) + if(can_recite_scripture(L)) for(var/invocation in invocations) clockwork_say(L, text2ratvar(invocation), whispered) else @@ -185,7 +185,7 @@ Judgement: 12 servants, 5 caches, 300 CV, and any existing AIs are converted or return FALSE if(multiple_invokers_used) for(var/mob/living/L in range(1, get_turf(invoker))) - if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) + if(can_recite_scripture(L)) clockwork_say(L, text2ratvar(invocation), whispered) else clockwork_say(invoker, text2ratvar(invocation), whispered) diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm index 21da8fab00..c3e40692c2 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_applications.dm @@ -53,7 +53,7 @@ /datum/clockwork_scripture/fellowship_armory/run_scripture() for(var/mob/living/L in orange(1, invoker)) - if(is_servant_of_ratvar(L) && L.stat == CONSCIOUS && L.can_speak_vocal()) + if(can_recite_scripture(L)) channel_time = max(channel_time - 10, 0) return ..() diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index d73a7ab058..d90c42fe4a 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -151,7 +151,7 @@ new /obj/item/weapon/weldingtool/experimental/brass(src) /obj/item/weapon/storage/toolbox/brass/prefilled/ratvar - var/slab_type = /obj/item/clockwork/slab/scarab + var/slab_type = /obj/item/clockwork/slab /obj/item/weapon/storage/toolbox/brass/prefilled/ratvar/PopulateContents() ..() From 97027d1631c88d13cb7d285109906aa5f8cda5a5 Mon Sep 17 00:00:00 2001 From: cebutris Date: Mon, 5 Jun 2017 03:37:25 -0400 Subject: [PATCH 07/40] it actually works now --- code/modules/mob/living/emote.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index eb0c7094c3..a894bad825 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -87,7 +87,6 @@ message_larva = "lets out a sickly hiss of air and falls limply to the floor..." message_monkey = "lets out a faint chimper as it collapses and stops moving..." message_simple = "stops moving..." - playsound(user.loc, 'sound/voice/oof.ogg', 80, 1, 1) //Defenitley not copypasta stat_allowed = UNCONSCIOUS /datum/emote/living/deathgasp/run_emote(mob/user, params) @@ -96,6 +95,7 @@ message_simple = S.deathmessage . = ..() message_simple = initial(message_simple) + playsound(user.loc, 'sound/voice/oof.ogg', 80, 1, 1)//Defenitley not copypasta if(. && isalienadult(user)) playsound(user.loc, 'sound/voice/hiss6.ogg', 80, 1, 1) From 972532926883413cb377b8f193df080dc7316049 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Wed, 7 Jun 2017 03:06:15 -0500 Subject: [PATCH 08/40] A large and unasked for repath and improvement of accessories (formerly ties, but actually armbands and medals) --- _maps/RandomZLevels/centcomAway.dmm | 4 +- .../map_files/Deltastation/DeltaStation2.dmm | 12 +- _maps/map_files/MetaStation/MetaStation.dmm | 6 +- _maps/map_files/generic/Centcomm.dmm | 16 +- code/game/gamemodes/objective_items.dm | 2 +- code/game/machinery/vending.dm | 4 +- code/game/objects/effects/spawners/bundle.dm | 4 +- .../objects/items/weapons/storage/boxes.dm | 2 +- .../objects/items/weapons/storage/lockbox.dm | 17 +- .../crates_lockers/closets/job_closets.dm | 12 +- .../crates_lockers/closets/secure/security.dm | 10 +- code/modules/cargo/packs.dm | 2 +- code/modules/clothing/clothing.dm | 65 ++--- .../clothing/neck/{ties.dm => neck.dm} | 15 +- code/modules/clothing/outfits/standard.dm | 2 +- code/modules/clothing/under/accessories.dm | 256 ++++++++++++++++++ code/modules/clothing/under/ties.dm | 60 ++-- code/modules/crafting/recipes.dm | 2 +- code/modules/jobs/job_types/civilian.dm | 2 +- code/modules/jobs/job_types/security.dm | 14 +- .../mob/living/carbon/human/examine.dm | 12 +- .../modules/spells/spell_types/devil_boons.dm | 2 +- icons/mob/accessories.dmi | Bin 0 -> 7735 bytes icons/mob/ties.dmi | Bin 10864 -> 0 bytes icons/obj/clothing/accessories.dmi | Bin 0 -> 6954 bytes icons/obj/clothing/neck.dmi | Bin 2698 -> 2555 bytes icons/obj/clothing/ties.dmi | Bin 12457 -> 0 bytes tgstation.dme.rej | 10 + 28 files changed, 395 insertions(+), 136 deletions(-) rename code/modules/clothing/neck/{ties.dm => neck.dm} (92%) create mode 100644 code/modules/clothing/under/accessories.dm create mode 100644 icons/mob/accessories.dmi delete mode 100644 icons/mob/ties.dmi create mode 100644 icons/obj/clothing/accessories.dmi delete mode 100644 icons/obj/clothing/ties.dmi create mode 100644 tgstation.dme.rej diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 8fab986fdb..97b8381ff2 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -3502,7 +3502,7 @@ /area/awaymission/centcomAway/general) "kN" = ( /obj/structure/table/wood, -/obj/item/clothing/tie/medal, +/obj/item/clothing/accessory/medal, /turf/open/floor/carpet, /area/awaymission/centcomAway/general) "kO" = ( @@ -3516,7 +3516,7 @@ /area/awaymission/centcomAway/general) "kQ" = ( /obj/structure/table/wood, -/obj/item/clothing/tie/medal/gold, +/obj/item/clothing/accessory/medal/gold, /turf/open/floor/carpet, /area/awaymission/centcomAway/general) "kR" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 62311b4885..4b5ab0529d 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -30611,11 +30611,11 @@ "blx" = ( /obj/structure/table/reinforced, /obj/item/weapon/clipboard, -/obj/item/clothing/tie/armband/deputy, -/obj/item/clothing/tie/armband/deputy, -/obj/item/clothing/tie/armband/deputy, -/obj/item/clothing/tie/armband/deputy, -/obj/item/clothing/tie/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -103271,7 +103271,7 @@ /obj/item/weapon/wirerod, /obj/item/weapon/wrench, /obj/item/clothing/under/waiter, -/obj/item/clothing/tie/waistcoat, +/obj/item/clothing/accessory/waistcoat, /obj/structure/sign/poster/contraband/random{ pixel_x = -32 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 9290c25c95..e59ada0081 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -14011,7 +14011,7 @@ name = "Station Intercom (General)"; pixel_y = 28 }, -/obj/item/clothing/tie/waistcoat, +/obj/item/clothing/accessory/waistcoat, /obj/item/clothing/suit/toggle/lawyer/black, /obj/item/clothing/under/suit_jacket/red, /obj/item/clothing/neck/tie/black, @@ -15128,7 +15128,7 @@ contents = newlist(/obj/item/clothing/suit/armor/vest,/obj/item/weapon/gun/ballistic/automatic/pistol,/obj/item/weapon/suppressor,/obj/item/weapon/melee/classic_baton/telescopic,/obj/item/clothing/mask/balaclava,/obj/item/bodybag,/obj/item/weapon/soap/nanotrasen) }, /obj/item/weapon/storage/backpack/dufflebag{ - contents = newlist(/obj/item/clothing/under/lawyer/blacksuit,/obj/item/clothing/tie/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); + contents = newlist(/obj/item/clothing/under/lawyer/blacksuit,/obj/item/clothing/accessory/waistcoat,/obj/item/clothing/suit/toggle/lawyer/black,/obj/item/clothing/shoes/laceup,/obj/item/clothing/gloves/color/black,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/head/fedora); desc = "A large dufflebag for holding extra things. There is a NanoTrasen logo on the back."; icon_state = "duffle-syndieammo"; item_state = "duffle-syndieammo" @@ -57182,7 +57182,7 @@ "ccz" = ( /obj/item/weapon/wrench, /obj/item/clothing/suit/apron, -/obj/item/clothing/tie/armband/hydro, +/obj/item/clothing/accessory/armband/hydro, /obj/structure/table/glass, /obj/effect/turf_decal/stripes/line{ dir = 9 diff --git a/_maps/map_files/generic/Centcomm.dmm b/_maps/map_files/generic/Centcomm.dmm index d7df57e8ee..ac4d218ce2 100644 --- a/_maps/map_files/generic/Centcomm.dmm +++ b/_maps/map_files/generic/Centcomm.dmm @@ -5590,8 +5590,8 @@ /obj/item/clothing/under/skirt/black, /obj/item/clothing/under/shorts/black, /obj/item/clothing/under/pants/track, -/obj/item/clothing/tie/armband/deputy, -/obj/item/clothing/tie/waistcoat, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/waistcoat, /obj/item/clothing/shoes/jackboots, /obj/item/clothing/shoes/laceup, /obj/item/clothing/neck/stripedredscarf, @@ -11175,7 +11175,7 @@ /obj/structure/rack, /obj/item/clothing/head/that, /obj/item/clothing/under/suit_jacket, -/obj/item/clothing/tie/waistcoat, +/obj/item/clothing/accessory/waistcoat, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "BI" = ( @@ -11379,7 +11379,7 @@ /obj/structure/sign/goldenplaque{ pixel_y = 32 }, -/obj/item/clothing/tie/lawyers_badge{ +/obj/item/clothing/accessory/lawyers_badge{ desc = "A badge of upmost glory."; name = "thunderdome badge" }, @@ -11400,7 +11400,7 @@ /obj/structure/sign/goldenplaque{ pixel_y = 32 }, -/obj/item/clothing/tie/medal/silver{ +/obj/item/clothing/accessory/medal/silver{ pixel_y = 5 }, /turf/open/floor/plasteel/grimy, @@ -11605,11 +11605,11 @@ name = "Thunderdome Plaque"; pixel_y = -32 }, -/obj/item/clothing/tie/medal/gold{ +/obj/item/clothing/accessory/medal/gold{ pixel_x = 3; pixel_y = 5 }, -/obj/item/clothing/tie/medal/gold, +/obj/item/clothing/accessory/medal/gold, /turf/open/floor/plasteel/grimy, /area/tdome/tdomeobserve) "CF" = ( @@ -11625,7 +11625,7 @@ name = "Thunderdome Plaque"; pixel_y = -32 }, -/obj/item/clothing/tie/medal{ +/obj/item/clothing/accessory/medal{ pixel_y = 5 }, /turf/open/floor/plasteel/grimy, diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 5dfb0b5515..29b75d75d1 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -43,7 +43,7 @@ /datum/objective_item/steal/capmedal name = "the medal of captaincy" - targetitem = /obj/item/clothing/tie/medal/gold/captain + targetitem = /obj/item/clothing/accessory/medal/gold/captain difficulty = 5 excludefromjob = list("Captain") diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 6c86899cf0..ba1717485e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -995,7 +995,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/clothing/head/helmet/gladiator = 1,/obj/item/clothing/under/gimmick/rank/captain/suit = 1,/obj/item/clothing/head/flatcap = 1, /obj/item/clothing/suit/toggle/labcoat/mad = 1,/obj/item/clothing/shoes/jackboots = 1, /obj/item/clothing/under/schoolgirl = 1,/obj/item/clothing/under/schoolgirl/red = 1,/obj/item/clothing/under/schoolgirl/green = 1,/obj/item/clothing/under/schoolgirl/orange = 1,/obj/item/clothing/head/kitty = 1,/obj/item/clothing/under/skirt/black = 1,/obj/item/clothing/head/beret = 1, - /obj/item/clothing/tie/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/tie/waistcoat = 1, + /obj/item/clothing/accessory/waistcoat = 1,/obj/item/clothing/under/suit_jacket = 1,/obj/item/clothing/head/that =1,/obj/item/clothing/under/kilt = 1,/obj/item/clothing/head/beret = 1,/obj/item/clothing/accessory/waistcoat = 1, /obj/item/clothing/glasses/monocle =1,/obj/item/clothing/head/bowler = 1,/obj/item/weapon/cane = 1,/obj/item/clothing/under/sl_suit = 1, /obj/item/clothing/mask/fakemoustache = 1,/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1,/obj/item/clothing/head/plaguedoctorhat = 1,/obj/item/clothing/mask/gas/plaguedoctor = 1, /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/owl = 1,/obj/item/clothing/mask/gas/owl_mask = 1, @@ -1136,7 +1136,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /obj/item/clothing/neck/scarf/purple=1,/obj/item/clothing/neck/scarf/yellow=1,/obj/item/clothing/neck/scarf/orange=1, /obj/item/clothing/neck/scarf/cyan=1,/obj/item/clothing/neck/scarf=1,/obj/item/clothing/neck/scarf/black=1, /obj/item/clothing/neck/scarf/zebra=1,/obj/item/clothing/neck/scarf/christmas=1,/obj/item/clothing/neck/stripedredscarf=1, - /obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/tie/waistcoat=1, + /obj/item/clothing/neck/stripedbluescarf=1,/obj/item/clothing/neck/stripedgreenscarf=1,/obj/item/clothing/accessory/waistcoat=1, /obj/item/clothing/under/skirt/black=1,/obj/item/clothing/under/skirt/blue=1,/obj/item/clothing/under/skirt/red=1,/obj/item/clothing/under/skirt/purple=1, /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress=1, /obj/item/clothing/under/sailordress=1, /obj/item/clothing/under/redeveninggown=1, /obj/item/clothing/under/blacktango=1, /obj/item/clothing/under/plaid_skirt=1,/obj/item/clothing/under/plaid_skirt/blue=1,/obj/item/clothing/under/plaid_skirt/purple=1,/obj/item/clothing/under/plaid_skirt/green=1, diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index c272c383e9..c316b7e209 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -60,7 +60,7 @@ /obj/effect/spawner/bundle/costume/butler name = "butler costume spawner" items = list( - /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/accessory/waistcoat, /obj/item/clothing/under/suit_jacket, /obj/item/clothing/head/that) @@ -73,7 +73,7 @@ /obj/effect/spawner/bundle/costume/prig name = "prig costume spawner" items = list( - /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/accessory/waistcoat, /obj/item/clothing/glasses/monocle, /obj/effect/spawner/lootdrop/minor/bowler_or_that, /obj/item/clothing/shoes/sneakers/black, diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 646768cea8..f35cff56a9 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -568,7 +568,7 @@ /obj/item/weapon/storage/box/deputy/PopulateContents() for(var/i in 1 to 7) - new /obj/item/clothing/tie/armband/deputy(src) + new /obj/item/clothing/accessory/armband/deputy(src) /obj/item/weapon/storage/box/metalfoam name = "box of metal foam grenades" diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 2a026a8f9e..8902a1f4f6 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -100,17 +100,20 @@ w_class = WEIGHT_CLASS_NORMAL max_w_class = WEIGHT_CLASS_SMALL storage_slots = 10 + max_combined_w_class = 20 req_access = list(GLOB.access_captain) icon_locked = "medalbox+l" icon_closed = "medalbox" icon_broken = "medalbox+b" + can_hold = list(/obj/item/clothing/accessory/medal) /obj/item/weapon/storage/lockbox/medal/PopulateContents() - new /obj/item/clothing/tie/medal/silver/valor(src) - new /obj/item/clothing/tie/medal/bronze_heart(src) + new /obj/item/clothing/accessory/medal/silver/valor(src) + new /obj/item/clothing/accessory/medal/bronze_heart(src) for(var/i in 1 to 3) - new /obj/item/clothing/tie/medal/conduct(src) - new /obj/item/clothing/tie/medal/gold/captain(src) - new /obj/item/clothing/tie/medal/silver/security(src) - new /obj/item/clothing/tie/medal/nobel_science(src) - new /obj/item/clothing/tie/medal/gold/heroism(src) + new /obj/item/clothing/accessory/medal/conduct(src) + new /obj/item/clothing/accessory/medal/gold/captain(src) + new /obj/item/clothing/accessory/medal/silver/security(src) + new /obj/item/clothing/accessory/medal/plasma(src) + new /obj/item/clothing/accessory/medal/plasma/nobel_science(src) + new /obj/item/clothing/accessory/medal/gold/heroism(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index de8d807f93..ca304dc62f 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -15,8 +15,8 @@ new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src) - new /obj/item/clothing/tie/waistcoat(src) - new /obj/item/clothing/tie/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/shoes/sneakers/black(src) @@ -39,8 +39,8 @@ new /obj/item/clothing/under/waiter(src) new /obj/item/device/radio/headset/headset_srv(src) new /obj/item/device/radio/headset/headset_srv(src) - new /obj/item/clothing/tie/waistcoat(src) - new /obj/item/clothing/tie/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) for(var/i in 1 to 3) new /obj/item/clothing/suit/apron/chef(src) new /obj/item/clothing/head/soft/mime(src) @@ -95,8 +95,8 @@ new /obj/item/clothing/suit/toggle/lawyer/black(src) new /obj/item/clothing/shoes/laceup(src) new /obj/item/clothing/shoes/laceup(src) - new /obj/item/clothing/tie/lawyers_badge(src) - new /obj/item/clothing/tie/lawyers_badge(src) + new /obj/item/clothing/accessory/lawyers_badge(src) + new /obj/item/clothing/accessory/lawyers_badge(src) /obj/structure/closet/wardrobe/chaplain_black name = "chapel wardrobe" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 9d24b44f33..d49241ff80 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -132,28 +132,28 @@ /obj/structure/closet/secure_closet/security/cargo/PopulateContents() ..() - new /obj/item/clothing/tie/armband/cargo(src) + new /obj/item/clothing/accessory/armband/cargo(src) new /obj/item/device/encryptionkey/headset_cargo(src) /obj/structure/closet/secure_closet/security/engine /obj/structure/closet/secure_closet/security/engine/PopulateContents() ..() - new /obj/item/clothing/tie/armband/engine(src) + new /obj/item/clothing/accessory/armband/engine(src) new /obj/item/device/encryptionkey/headset_eng(src) /obj/structure/closet/secure_closet/security/science /obj/structure/closet/secure_closet/security/science/PopulateContents() ..() - new /obj/item/clothing/tie/armband/science(src) + new /obj/item/clothing/accessory/armband/science(src) new /obj/item/device/encryptionkey/headset_sci(src) /obj/structure/closet/secure_closet/security/med /obj/structure/closet/secure_closet/security/med/PopulateContents() ..() - new /obj/item/clothing/tie/armband/medblue(src) + new /obj/item/clothing/accessory/armband/medblue(src) new /obj/item/device/encryptionkey/headset_med(src) /obj/structure/closet/secure_closet/detective @@ -171,7 +171,7 @@ new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/under/rank/det/grey(src) - new /obj/item/clothing/tie/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/suit/det_suit/grey(src) new /obj/item/clothing/head/fedora(src) new /obj/item/clothing/shoes/laceup(src) diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 421b8a057e..efda086af5 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1630,7 +1630,7 @@ /obj/item/clothing/suit/toggle/lawyer/purple, /obj/item/clothing/under/lawyer/blacksuit, /obj/item/clothing/suit/toggle/lawyer/black, - /obj/item/clothing/tie/waistcoat, + /obj/item/clothing/accessory/waistcoat, /obj/item/clothing/neck/tie/blue, /obj/item/clothing/neck/tie/red, /obj/item/clothing/neck/tie/black, diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 8a943b4c26..fcbaace6fb 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -529,7 +529,7 @@ BLIND // can't see anything var/can_adjust = 1 var/adjusted = NORMAL_STYLE var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only - var/obj/item/clothing/tie/hastie = null + var/obj/item/clothing/accessory/attached_accessory var/mutantrace_variation = NO_MUTANTRACE_VARIATION //Are there special sprites for specific situations? Don't use this unless you need to. /obj/item/clothing/under/worn_overlays(isinhands = FALSE) @@ -541,14 +541,14 @@ BLIND // can't see anything . += mutable_appearance('icons/effects/item_damage.dmi', "damageduniform") if(blood_DNA) . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") - if(hastie) - var/tie_color = hastie.item_color - if(!tie_color) - tie_color = hastie.icon_state - var/mutable_appearance/tie = mutable_appearance('icons/mob/ties.dmi', "[tie_color]") - tie.alpha = hastie.alpha - tie.color = hastie.color - . += tie + if(attached_accessory) + var/accessory_color = attached_accessory.item_color + if(!accessory_color) + accessory_color = attached_accessory.icon_state + var/mutable_appearance/accessory = mutable_appearance('icons/mob/accessories.dmi', "[accessory_color]") + accessory.alpha = attached_accessory.alpha + accessory.color = attached_accessory.color + . += accessory /obj/item/clothing/under/attackby(obj/item/W, mob/user, params) if((has_sensor == BROKEN_SENSORS) && istype(W, /obj/item/stack/cable_coil)) @@ -587,29 +587,30 @@ BLIND // can't see anything adjusted = DIGITIGRADE_STYLE H.update_inv_w_uniform() - if(hastie && slot != slot_hands) - hastie.on_uniform_equip(src, user) + if(attached_accessory && slot != slot_hands) + attached_accessory.on_uniform_equip(src, user) /obj/item/clothing/under/dropped(mob/user) - if(hastie) - hastie.on_uniform_dropped(src, user) + if(attached_accessory) + attached_accessory.on_uniform_dropped(src, user) ..() /obj/item/clothing/under/attackby(obj/item/I, mob/user, params) - if(!attachTie(I, user)) + if(!attach_accessory(I, user)) ..() -/obj/item/clothing/under/proc/attachTie(obj/item/I, mob/user, notifyAttach = 1) - if(istype(I, /obj/item/clothing/tie)) - var/obj/item/clothing/tie/T = I - if(hastie) +/obj/item/clothing/under/proc/attach_accessory(obj/item/I, mob/user, notifyAttach = 1) + . = FALSE + if(istype(I, /obj/item/clothing/accessory)) + var/obj/item/clothing/accessory/A = I + if(attached_accessory) if(user) to_chat(user, "[src] already has an accessory.") - return 0 + return else if(user && !user.drop_item()) return - if(!T.attach(src, user)) + if(!A.attach(src, user)) return if(user && notifyAttach) @@ -619,21 +620,21 @@ BLIND // can't see anything var/mob/living/carbon/human/H = loc H.update_inv_w_uniform() - return 1 + return TRUE -/obj/item/clothing/under/proc/removetie(mob/user) +/obj/item/clothing/under/proc/remove_accessory(mob/user) if(!isliving(user)) return if(!can_use(user)) return - if(hastie) - var/obj/item/clothing/tie/T = hastie - hastie.detach(src, user) - if(user.put_in_hands(T)) - to_chat(user, "You detach [T] from [src].") + if(attached_accessory) + var/obj/item/clothing/accessory/A = attached_accessory + attached_accessory.detach(src, user) + if(user.put_in_hands(A)) + to_chat(user, "You detach [A] from [src].") else - to_chat(user, "You detach [T] from [src] and it falls on the floor.") + to_chat(user, "You detach [A] from [src] and it falls on the floor.") if(ishuman(loc)) var/mob/living/carbon/human/H = loc @@ -659,8 +660,8 @@ BLIND // can't see anything to_chat(user, "Its vital tracker appears to be enabled.") if(SENSOR_COORDS) to_chat(user, "Its vital tracker and tracking beacon appear to be enabled.") - if(hastie) - to_chat(user, "\A [hastie] is attached to it.") + if(attached_accessory) + to_chat(user, "\A [attached_accessory] is attached to it.") /proc/generate_female_clothing(index,t_color,icon,type) var/icon/female_clothing_icon = icon("icon"=icon, "icon_state"=t_color) @@ -721,8 +722,8 @@ BLIND // can't see anything to_chat(user, "You can't do that right now!") return else - if(hastie) - removetie(user) + if(attached_accessory) + remove_accessory(user) else rolldown() diff --git a/code/modules/clothing/neck/ties.dm b/code/modules/clothing/neck/neck.dm similarity index 92% rename from code/modules/clothing/neck/ties.dm rename to code/modules/clothing/neck/neck.dm index 59dc504098..de4858e23e 100644 --- a/code/modules/clothing/neck/ties.dm +++ b/code/modules/clothing/neck/neck.dm @@ -160,17 +160,6 @@ /obj/item/clothing/neck/necklace/dope name = "gold necklace" desc = "Damn, it feels good to be a gangster." - icon = 'icons/obj/clothing/ties.dmi' + icon = 'icons/obj/clothing/neck.dmi' icon_state = "bling" - item_color = "bling" - -//////////////// -//OONGA BOONGA// -//////////////// - -/obj/item/clothing/neck/talisman - name = "bone talisman" - desc = "A hunter's talisman, some say the old gods smile on those who wear it." - icon_state = "talisman" - item_color = "talisman" - armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) \ No newline at end of file + item_color = "bling" \ No newline at end of file diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6344ef22d7..ff60b5366e 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -154,7 +154,7 @@ /datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) var/obj/item/clothing/under/U = H.w_uniform - U.attachTie(new /obj/item/clothing/tie/waistcoat(H)) + U.attach_accessory(new /obj/item/clothing/accessory/waistcoat(H)) if(visualsOnly) return diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm new file mode 100644 index 0000000000..3653d7a395 --- /dev/null +++ b/code/modules/clothing/under/accessories.dm @@ -0,0 +1,256 @@ +/obj/item/clothing/accessory //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is + name = "Accessory" + desc = "Something has gone wrong!" + icon = 'icons/obj/clothing/accessories.dmi' + icon_state = "plasma" + item_state = "" //no inhands + item_color = "plasma" //On accessories, this controls the worn sprite. That's a bit weird. + slot_flags = 0 + w_class = WEIGHT_CLASS_SMALL + var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed + +/obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) + if(pockets) // Attach storage to jumpsuit + if(U.pockets) // storage items conflict + return FALSE + + pockets.loc = U + U.pockets = pockets + + U.attached_accessory = src + loc = U + layer = FLOAT_LAYER + plane = FLOAT_PLANE + if(minimize_when_attached) + transform *= 0.5 //halve the size so it doesn't overpower the under + pixel_x += 8 + pixel_y -= 8 + U.add_overlay(src) + + for(var/armor_type in armor) + U.armor[armor_type] += armor[armor_type] + + if(isliving(user)) + on_uniform_equip(U, user) + + return TRUE + + +/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user) + if(pockets && pockets == U.pockets) + pockets.loc = src + U.pockets = null + + for(var/armor_type in armor) + U.armor[armor_type] -= armor[armor_type] + + if(isliving(user)) + on_uniform_dropped(U, user) + + if(minimize_when_attached) + transform *= 2 + pixel_x -= 8 + pixel_y += 8 + layer = initial(layer) + plane = initial(plane) + U.cut_overlays() + U.attached_accessory = null + +/obj/item/clothing/accessory/proc/on_uniform_equip(obj/item/clothing/under/U, user) + return + +/obj/item/clothing/accessory/proc/on_uniform_dropped(obj/item/clothing/under/U, user) + return + +/obj/item/clothing/accessory/examine(mob/user) + ..() + to_chat(user, "\The [src] can be attached to a uniform. Alt-click to remove it once attached.") + +/obj/item/clothing/accessory/waistcoat + name = "waistcoat" + desc = "For some classy, murderous fun." + icon_state = "waistcoat" + item_state = "waistcoat" + item_color = "waistcoat" + minimize_when_attached = FALSE + +////////// +//Medals// +////////// + +/obj/item/clothing/accessory/medal + name = "bronze medal" + desc = "A bronze medal." + icon_state = "bronze" + item_color = "bronze" + materials = list(MAT_METAL=1000) + resistance_flags = FIRE_PROOF + +//Pinning medals on people +/obj/item/clothing/accessory/medal/attack(mob/living/carbon/human/M, mob/living/user) + if(ishuman(M) && (user.a_intent == INTENT_HELP)) + + if(M.wear_suit) + if((M.wear_suit.flags_inv & HIDEJUMPSUIT)) //Check if the jumpsuit is covered + to_chat(user, "Medals can only be pinned on jumpsuits.") + return + + if(M.w_uniform) + var/obj/item/clothing/under/U = M.w_uniform + var/delay = 20 + if(user == M) + delay = 0 + else + user.visible_message("[user] is trying to pin [src] on [M]'s chest.", \ + "You try to pin [src] on [M]'s chest.") + if(do_after(user, delay, target = M)) + if(U.attach_accessory(src, user, 0)) //Attach it, do not notify the user of the attachment + if(user == M) + to_chat(user, "You attach [src] to [U].") + else + user.visible_message("[user] pins \the [src] on [M]'s chest.", \ + "You pin \the [src] on [M]'s chest.") + + else to_chat(user, "Medals can only be pinned on jumpsuits!") + else ..() + +/obj/item/clothing/accessory/medal/conduct + name = "distinguished conduct medal" + desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." + +/obj/item/clothing/accessory/medal/bronze_heart + name = "bronze heart medal" + desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty." + icon_state = "bronze_heart" + +/obj/item/clothing/accessory/medal/silver + name = "silver medal" + desc = "A silver medal." + icon_state = "silver" + item_color = "silver" + materials = list(MAT_SILVER=1000) + +/obj/item/clothing/accessory/medal/silver/valor + name = "medal of valor" + desc = "A silver medal awarded for acts of exceptional valor." + +/obj/item/clothing/accessory/medal/silver/security + name = "robust security award" + desc = "An award for distinguished combat and sacrifice in defence of Nanotrasen's commercial interests. Often awarded to security staff." + +/obj/item/clothing/accessory/medal/gold + name = "gold medal" + desc = "A prestigious golden medal." + icon_state = "gold" + item_color = "gold" + materials = list(MAT_GOLD=1000) + +/obj/item/clothing/accessory/medal/gold/captain + name = "medal of captaincy" + desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew." + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF + +/obj/item/clothing/accessory/medal/gold/heroism + name = "medal of exceptional heroism" + desc = "An extremely rare golden medal awarded only by Centcom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders." + +/obj/item/clothing/accessory/medal/plasma + name = "plasma medal" + desc = "An eccentric medal made of plasma." + icon_state = "plasma" + item_color = "plasma" + armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = -10, acid = 0) //It's made of plasma. Of course it's flammable. + materials = list(MAT_PLASMA=1000) + +/obj/item/clothing/accessory/medal/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + atmos_spawn_air("plasma=20;TEMP=[exposed_temperature]") + visible_message(" \The [src] bursts into flame!","Your [src] bursts into flame!") + qdel(src) + +/obj/item/clothing/accessory/medal/plasma/nobel_science + name = "nobel sciences award" + desc = "A plasma medal which represents significant contributions to the field of science or engineering." + + + +//////////// +//Armbands// +//////////// + +/obj/item/clothing/accessory/armband + name = "red armband" + desc = "An fancy red armband!" + icon_state = "redband" + item_color = "redband" + +/obj/item/clothing/accessory/armband/deputy + name = "security deputy armband" + desc = "An armband, worn by personnel authorized to act as a deputy of station security." + +/obj/item/clothing/accessory/armband/cargo + name = "cargo bay guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown." + icon_state = "cargoband" + item_color = "cargoband" + +/obj/item/clothing/accessory/armband/engine + name = "engineering guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!" + icon_state = "engieband" + item_color = "engieband" + +/obj/item/clothing/accessory/armband/science + name = "science guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple." + icon_state = "rndband" + item_color = "rndband" + +/obj/item/clothing/accessory/armband/hydro + name = "hydroponics guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue." + icon_state = "hydroband" + item_color = "hydroband" + +/obj/item/clothing/accessory/armband/med + name = "medical guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white." + icon_state = "medband" + item_color = "medband" + +/obj/item/clothing/accessory/armband/medblue + name = "medical guard armband" + desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue." + icon_state = "medblueband" + item_color = "medblueband" + +////////////// +//OBJECTION!// +////////////// + +/obj/item/clothing/accessory/lawyers_badge + name = "attorney's badge" + desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet." + icon_state = "lawyerbadge" + item_color = "lawyerbadge" + +/obj/item/clothing/accessory/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user) + var/mob/living/L = user + if(L) + L.bubble_icon = "lawyer" + +/obj/item/clothing/accessory/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user) + var/mob/living/L = user + if(L) + L.bubble_icon = initial(L.bubble_icon) + +//////////////// +//OONGA BOONGA// +//////////////// + +/obj/item/clothing/accessory/talisman + name = "bone talisman" + desc = "A hunter's talisman, some say the old gods smile on those who wear it." + icon_state = "talisman" + item_color = "talisman" + armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index 9db9941f8c..fcc8472834 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -1,4 +1,4 @@ -/obj/item/clothing/tie //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is +/obj/item/clothing/accessory //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is name = "tie" desc = "A neosilk clip-on tie." icon = 'icons/obj/clothing/ties.dmi' @@ -9,7 +9,7 @@ w_class = WEIGHT_CLASS_SMALL var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed -/obj/item/clothing/tie/proc/attach(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) if(pockets) // Attach storage to jumpsuit if(U.pockets) // storage items conflict return 0 @@ -33,7 +33,7 @@ return 1 -/obj/item/clothing/tie/proc/detach(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user) if(pockets && pockets == U.pockets) pockets.loc = src U.pockets = null @@ -50,13 +50,13 @@ U.cut_overlays() U.hastie = null -/obj/item/clothing/tie/proc/on_uniform_equip(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/proc/on_uniform_equip(obj/item/clothing/under/U, user) return -/obj/item/clothing/tie/proc/on_uniform_dropped(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/proc/on_uniform_dropped(obj/item/clothing/under/U, user) return -/obj/item/clothing/tie/waistcoat +/obj/item/clothing/accessory/waistcoat name = "waistcoat" desc = "For some classy, murderous fun." icon_state = "waistcoat" @@ -68,7 +68,7 @@ //Medals// ////////// -/obj/item/clothing/tie/medal +/obj/item/clothing/accessory/medal name = "bronze medal" desc = "A bronze medal." icon_state = "bronze" @@ -77,7 +77,7 @@ resistance_flags = FIRE_PROOF //Pinning medals on people -/obj/item/clothing/tie/medal/attack(mob/living/carbon/human/M, mob/living/user) +/obj/item/clothing/accessory/medal/attack(mob/living/carbon/human/M, mob/living/user) if(ishuman(M) && (user.a_intent == INTENT_HELP)) if(M.wear_suit) @@ -104,47 +104,47 @@ else to_chat(user, "Medals can only be pinned on jumpsuits!") else ..() -/obj/item/clothing/tie/medal/conduct +/obj/item/clothing/accessory/medal/conduct name = "distinguished conduct medal" desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." -/obj/item/clothing/tie/medal/bronze_heart +/obj/item/clothing/accessory/medal/bronze_heart name = "bronze heart medal" desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty." icon_state = "bronze_heart" -/obj/item/clothing/tie/medal/nobel_science +/obj/item/clothing/accessory/medal/nobel_science name = "nobel sciences award" desc = "A bronze medal which represents significant contributions to the field of science or engineering." -/obj/item/clothing/tie/medal/silver +/obj/item/clothing/accessory/medal/silver name = "silver medal" desc = "A silver medal." icon_state = "silver" item_color = "silver" materials = list(MAT_SILVER=1000) -/obj/item/clothing/tie/medal/silver/valor +/obj/item/clothing/accessory/medal/silver/valor name = "medal of valor" desc = "A silver medal awarded for acts of exceptional valor." -/obj/item/clothing/tie/medal/silver/security +/obj/item/clothing/accessory/medal/silver/security name = "robust security award" desc = "An award for distinguished combat and sacrifice in defence of Nanotrasen's commercial interests. Often awarded to security staff." -/obj/item/clothing/tie/medal/gold +/obj/item/clothing/accessory/medal/gold name = "gold medal" desc = "A prestigious golden medal." icon_state = "gold" item_color = "gold" materials = list(MAT_GOLD=1000) -/obj/item/clothing/tie/medal/gold/captain +/obj/item/clothing/accessory/medal/gold/captain name = "medal of captaincy" desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew." resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF -/obj/item/clothing/tie/medal/gold/heroism +/obj/item/clothing/accessory/medal/gold/heroism name = "medal of exceptional heroism" desc = "An extremely rare golden medal awarded only by Centcom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders." @@ -152,47 +152,47 @@ //Armbands// //////////// -/obj/item/clothing/tie/armband +/obj/item/clothing/accessory/armband name = "red armband" desc = "An fancy red armband!" icon_state = "redband" item_color = "redband" -/obj/item/clothing/tie/armband/deputy +/obj/item/clothing/accessory/armband/deputy name = "security deputy armband" desc = "An armband, worn by personnel authorized to act as a deputy of station security." -/obj/item/clothing/tie/armband/cargo +/obj/item/clothing/accessory/armband/cargo name = "cargo bay guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown." icon_state = "cargoband" item_color = "cargoband" -/obj/item/clothing/tie/armband/engine +/obj/item/clothing/accessory/armband/engine name = "engineering guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!" icon_state = "engieband" item_color = "engieband" -/obj/item/clothing/tie/armband/science +/obj/item/clothing/accessory/armband/science name = "science guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple." icon_state = "rndband" item_color = "rndband" -/obj/item/clothing/tie/armband/hydro +/obj/item/clothing/accessory/armband/hydro name = "hydroponics guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue." icon_state = "hydroband" item_color = "hydroband" -/obj/item/clothing/tie/armband/med +/obj/item/clothing/accessory/armband/med name = "medical guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white." icon_state = "medband" item_color = "medband" -/obj/item/clothing/tie/armband/medblue +/obj/item/clothing/accessory/armband/medblue name = "medical guard armband" desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue." icon_state = "medblueband" @@ -202,29 +202,29 @@ //OBJECTION!// ////////////// -/obj/item/clothing/tie/lawyers_badge +/obj/item/clothing/accessory/lawyers_badge name = "attorney's badge" desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet." icon_state = "lawyerbadge" item_color = "lawyerbadge" -/obj/item/clothing/tie/lawyers_badge/attach(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/lawyers_badge/attach(obj/item/clothing/under/U, user) if(!..()) return 0 if(isliving(U.loc)) on_uniform_equip(U, user) -/obj/item/clothing/tie/lawyers_badge/detach(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/lawyers_badge/detach(obj/item/clothing/under/U, user) ..() if(isliving(U.loc)) on_uniform_dropped(U, user) -/obj/item/clothing/tie/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user) var/mob/living/L = user if(L) L.bubble_icon = "lawyer" -/obj/item/clothing/tie/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user) +/obj/item/clothing/accessory/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user) var/mob/living/L = user if(L) L.bubble_icon = initial(L.bubble_icon) diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index b5fe59f019..d16a988c9d 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -414,7 +414,7 @@ /datum/crafting_recipe/bonetalisman name = "Bone Talisman" - result = /obj/item/clothing/neck/talisman + result = /obj/item/clothing/accessory/talisman time = 20 reqs = list(/obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 1) diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm index fd01846467..704496ad67 100644 --- a/code/modules/jobs/job_types/civilian.dm +++ b/code/modules/jobs/job_types/civilian.dm @@ -186,7 +186,7 @@ Lawyer shoes = /obj/item/clothing/shoes/laceup l_hand = /obj/item/weapon/storage/briefcase/lawyer l_pocket = /obj/item/device/laser_pointer - r_pocket = /obj/item/clothing/tie/lawyers_badge + r_pocket = /obj/item/clothing/accessory/lawyers_badge /datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index d3ae011f60..3756d1e3e7 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -195,7 +195,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S else department = pick_n_take(GLOB.available_depts) var/ears = null - var/tie = null + var/accessory = null var/list/dep_access = null var/destination = null var/spawn_point = null @@ -205,29 +205,29 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S dep_access = list(GLOB.access_mailsorting, GLOB.access_mining, GLOB.access_mining_station) destination = /area/security/checkpoint/supply spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns - tie = /obj/item/clothing/tie/armband/cargo + accessory = /obj/item/clothing/accessory/armband/cargo if(SEC_DEPT_ENGINEERING) ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi dep_access = list(GLOB.access_construction, GLOB.access_engine) destination = /area/security/checkpoint/engineering spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns - tie = /obj/item/clothing/tie/armband/engine + accessory = /obj/item/clothing/accessory/armband/engine if(SEC_DEPT_MEDICAL) ears = /obj/item/device/radio/headset/headset_sec/alt/department/med dep_access = list(GLOB.access_medical) destination = /area/security/checkpoint/medical spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns - tie = /obj/item/clothing/tie/armband/medblue + accessory = /obj/item/clothing/accessory/armband/medblue if(SEC_DEPT_SCIENCE) ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci dep_access = list(GLOB.access_research) destination = /area/security/checkpoint/science spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns - tie = /obj/item/clothing/tie/armband/science + accessory = /obj/item/clothing/accessory/armband/science - if(tie) + if(accessory) var/obj/item/clothing/under/U = H.w_uniform - U.attachTie(new tie) + U.attach_accessory(new accessory) if(ears) if(H.ears) qdel(H.ears) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index a3bb2fefde..42765011d1 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -14,17 +14,17 @@ //uniform if(w_uniform && !(slot_w_uniform in obscured)) - //Ties - var/tie_msg + //accessory + var/accessory_msg if(istype(w_uniform,/obj/item/clothing/under)) var/obj/item/clothing/under/U = w_uniform - if(U.hastie) - tie_msg += " with \icon[U.hastie] \a [U.hastie]" + if(U.attached_accessory) + accessory_msg += " with \icon[U.attached_accessory] \a [U.attached_accessory]" if(w_uniform.blood_DNA) - msg += "[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][tie_msg]!\n" + msg += "[t_He] [t_is] wearing \icon[w_uniform] [w_uniform.gender==PLURAL?"some":"a"] blood-stained [w_uniform.name][accessory_msg]!\n" else - msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n" + msg += "[t_He] [t_is] wearing \icon[w_uniform] \a [w_uniform][accessory_msg].\n" //head if(head) diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm index e8fcc73010..75b6597f07 100644 --- a/code/modules/spells/spell_types/devil_boons.dm +++ b/code/modules/spells/spell_types/devil_boons.dm @@ -18,7 +18,7 @@ new /obj/item/weapon/coin/gold(user.loc), new /obj/item/weapon/coin/diamond(user.loc), new /obj/item/weapon/coin/silver(user.loc), - new /obj/item/clothing/tie/medal/gold(user.loc), + new /obj/item/clothing/accessory/medal/gold(user.loc), new /obj/item/stack/sheet/mineral/gold(user.loc), new /obj/item/stack/sheet/mineral/silver(user.loc), new /obj/item/stack/sheet/mineral/diamond(user.loc), diff --git a/icons/mob/accessories.dmi b/icons/mob/accessories.dmi new file mode 100644 index 0000000000000000000000000000000000000000..22c42e1eae77f987d024dba2b18afc5ae20f45cb GIT binary patch literal 7735 zcmc&(cTiN#mcIl6B}d6o34(xth$NAmbC4_yIfEiOsU%4vIVUCO0S1QbkaLn8L^4DC zU<3w%y}Yfh-M3Y5>(%b7+CRE)ci+>u&*}3!;dV!Asw)uQqrC?J0HKnitTq5(Fy9tD z8~^|)K2!#Sk3C=AS8rvl-#|R<-QL=}x&VN8X3S)(1J)A)+@p&>6s&V93s$Y)Oz@sP zs3KX1?vkSv;ui(`C%yW{N@fdw_A)6c`kjkpZE>rn%sD+6c;1QEn_?iS`_4L)l<3gr zRpgaXb|@7OHrrnL`e|+!4Sm#iJOx4jd-B@UtNU?W;W1zP{fR0g+prwE*o`&)8&c;( z62)~=64&7-4{Q+{<~Cp3RCnIq!E)@H`iNXoT6zDdHu)jMUZplU!4)1;w^+VD?{cDq z#cRGF=`l9pZo~OxQ0=+aejRn{d<9Oq7g^NE%_XUyh$%-ZFZAM$6dEwC!Z(%#00tZ- z*_XQBnfprts`Oh~xJQS3yf_5H7!W9t&5R93`^V2Not?=aXcrvz*zL6+a+v=RF3EIM zttu+j`lV9<*ZNXglFwN=G5GY+_>x>dO5I^f-=17Sz4WL2R8eEd7zrI6-HDA(a_DO@ z9=_%d$ur#S;cBooBuI?E5+^ioJ)ONG2o*EW_OVGGXO@!v`ccgjE5h!=5+IEiAYf+I z4#SX@9pDd+P^7^jA>~2dTKR~vOr8s3`dI@A1xi-#WkM> zhubC^f~oo(o7*@DtAqEvb{*yGWqycpd}W^fZmkd*cURGEJ0ikv)tff^zwrD|3HC1{ z%6%~7-(Z;N_%#2*Nzk=c4G3l<-b_Oq^85M76XdSLF55H8fY-3yu+P2ur;-8(3 z>{44>?1*UaA0k!vL~bsKXQt{uP=&iP_VwJf1l}2KnJ!DKX|Xj!{y1XpdPZ!uMsu28 z)5rNn16xwl9#8Q!$u1utV-_$nf$GamNApYQ z{4_~-_^poJNYej*c1MLhI95EB11vC37on?P&YR0e^LrbQv~+Pyg!6;mwyFj4T)G?wv5LAHyBXy|AB)?OBL` zLuo;Xk2#vHt}SKM;&9D)=+)wvw_8?CW_=QEi^M&vBWn)C#QO+;i!j_vG%HnAw z!SrL)*xB%_MbMJ=uDMRyA<*%!m zTbt|p@*JBjfBhdA*S`pZ|JatJ?J;zd0$=HVV=|-gO0Sa8a&!G3I8GY(yDeJDzEV5k)vX1l;%7ktg`x8Mkw(YHE05f^(hVm$)PBXU1V$?a zUOq{ev^Szy*x4S9OP?TuCd&wt;^#096qD-Nhs){BTO4c3$M8eaBGoU0&~)R=%PtOd z^9u{z*E!enJHC%M?I*Ebkk;4N=QlLyJNf?P7=Y>c`8C_;U<4R~qXRRJHR@_=YOJgK zR`OV&DoJj4+A2Wv93#_5)c3SF0%g)YwY<#x7C&Ir!O@XzP~b9UUOPQ{p{1mRt8)MA z%V0Yt`$N0?`}_N|P`|i_G3y`M#grMs&fg1TGN@Y0zwLs2->aIz2ke}jx*&0q!iUb? zx9;!%&y9d8ls5tx6iuxMOt*%Ohz!d_y<)fyGYkh=9QQ>N1*^`6SqjcqPwBNXsk)Ht zJdUnL)Rm|7~{JAEw#BD^ns_j-fcIO z72p?(cWx37uL!6XE^jIfOn=Q_1z~*_+-iT?imRKD#Ny)hmE}cdC}QVCr8A9QeU$WK zm1prl5wToXZK!7A@w+h8y_t;=CN_~9M4~s2_|=1QR5i9yyD6geldfU7T}DErcs1v+ z`-BZE9ch03(%$bK!vJY};EC&zjqO@28*Qb%bcd2_IlYqHBJKjN=!-Yup=pDDyL|}h9*>lXudW5#yLtn@kQ2J##I=U3wPGBf+sw~i@3 z?Pbz~eOIM`xFSuHmf6Cc(U_CR_8kPCd}dCQB*D@w?@Z1`tA z3=(c2#`()qSkex+6>p%~uDa=%&E<2(H#lRJGS8z5%Ty99888i(a59Fe(#rD>x8?13 zcH&VpJa$oLh&3(>us3NI_d_1)tzw$*kRi6|csUTY`q)$HhQ99I`C9sml;xy`(lufRzyx2hGz+6n%FLuj$>P%ZWD}?#IIt(d;$3K#ge1}iy z&rJTvg6Cdb;zHUs51CBHUPV8m^?scs)ZnzlI#CrTM(rmFfk1%Z_;}JxF+cTX>Mj(b z4dh)_Rkgzfroh<95_6-fm#`k{EuTyrGiSNY%dB+Tyh2#s?yXUoh<8?nv5yna)xxRi`u4*1K6s?OL z_MV#Yu7&BrqeasinvjW~<*i>sOF@eON&EwX46T-{IUbO;Qbl4U%33j+4I8}Ors*f@ zFf%`lMl#`HkBQ1~rrK9BjyXB2+JHv%>)_My_Ca%)7aDhb$&2v95jqAwfS;aX9HU)& ztd$6U9FpM$OS}#{{n*apV%x8Wdo@Hp(|VO;Xruthi=FsNOvq>$2CyZ1b!2{5_3}AC zMYLlR{YQ3XvJ={m$=>JR%(rK~;VKJz?w>&8;uk0T6n%H6svD~MxAYqN`oE{v|7VAy zv>i8Lphp$ep-GZPQ!;SaW9Mo7J23?hD0UX98WwgfnSM46t=+V=kMb)p2Bd5iii8)$ z4ey!UVWlT3xb*P)s(&5kZvmZiD?xs-MiQq&+uU(K!=@f$;#oS&i+bo+$+CLM2&w2< z*YufZMPkg3JriQRit|9eON0k|M9hbs%xC{aR#Pw)O04eH&r7G3nnOtauI2k5r#esb znyA|{Rm8?XSEM?;7)MLd~;wOJiA)^fYvku0&07?RG{B+_`g zi~1pGwC|iX1^_w*#yH$nI)pSHhT5cNTPuCg71I3M%rwH*-=BVCW1~YpA~a0X1Vi_4 z0M`f`2Hhr*aEA5i%uLFr7=(!#j2u+e_Fg+xlU^icNNQ4=Fmklky0FMnp#=3ME!Jx)&xH<1YFzGSo-UdxJzPcuEYG?*?B ztgWrh!acduGculti$@ybH4SFCo*Lu6HW+|2;d~6|>)62QX;4_9{>r*Vyp`X8 zimXMTFitp!>viE-Fi!Y~c!U5qapk-)Oo;H>tbNLv@1qna#ruW*o{N*M)pyNchDj9H`$3ACx&A%{ zfqLue>zsBCxGER2-VIuhKF_z zC^ert2ZF+i%X?w+($w@s^51Rk9#|P(Z8rcNAc4r-6wMChKxxsL2+F8O_?3m}vSy@=e|*_oPwLCw4AgeZ5eM{hz~hs;GP-=>TULZEnaG%Ej_2oJE9Q-6DE(wWv^ z=I;i_x1IMLAAj?3f-T{p{-{IczD4LO=g&XzDWqRpT4H8pWx0vagBt`c&A`Bb7mj%1 zr42|F zeIy1bsMF|O;U)Zh0!g<}j6BRl8 zZx0W`+x=B0XBGggGoioDbk;fEfT--v(KBFZGP! zu;^%lStpOmeTMV5Qj;l5)6+Pxg&0b1{nu+fF(N_N{#Mb2?N#OjzvDcU4|kKw=B542 z+_UaPJ$)g_MtPfwL3_E%x8uRw=eAY)C`!&o-eD++jqT$pLm3F2dneHNG)Y4-K?%_A_5*5qj8FI73o8ut=j=iEA>ZIr{=1KYDEx_}BoPbt z_4Qf1LXWkTc{r9TW8j6~l~GldL9^Q`rh1NKOmZ^SIXD8EUII-pXr{?qLm9v4Cj6u# z&2XO{QsMr43>{{)wHmSocW-0^y?V%0w->Fuu53%(^?bIlzNn^}E`;Uz8VjNzuP;yi z)PTho{USkoQt`!AC9KMZ&+f5cr>CcnA(2T9 z4AD;mBqq;buTF+29GB3S=%>cnYIf;i2^<Lw1ATv{!B=c(F-`rMI27~;m9ZaZp!*#X()hIVEs_8EXzhOy{~-f8nd)U%@t?TM0Ml z;rJSGO(eQ!xrRpBG1BGe2N{3DVvvx~Mk>J8`c+cycenk1+ldpu4d-jbU0>d&f-QQe ztT)gfFVj3RTWR)dZe+wH{o$qGa@^Vsj)of#+1jvOu%=RUQ?$1Xgp`oE7p1Txq zJ}<{ChAbm6Phl7Ps0&{ny!gr#9_JeX8!k=KfQrk ztr|{z{Xs(mGJI=!E0z$sg;NGiV%n=GwUBh4iM8#Ww3+sq51KaA)Wlx&kWR(Nh6^2v zRqkUJ_hW1NFUML1B=d&7E@h*{f*0wQEVo9oI3GU_T{%>E^F|Q;CqPHi8y!$O{Clan zA*vdZW>)Cv7AE<48#@1g%saWL*T zGzg1ishf2F;Huhzl_jkj^h!owVEFBAtflV(XgQRmyTsc+FT4-46va-Di&B<9EeRX8 zwVv5Lx!2?+lQrDTR4-42u$mEI43rHTixInisSwBihWR|{`0jpgfvqwzqydd~6u>F4 zH7aC`O>k~>dN*h2FkBS?Rq`e%Zff%BxqO+DnAp*@Z0}1Q9UVJzK0hvV*)2wR-|ciP zkc;JX()Ey%@6RfQnJ-di|HqkRzhK+%31cP)zE)J;@BP+i#*&N)*~!9ZFTUh1dFd?} zm^m3rthvr^6Suo>rPQzW>a2VcwD4^%-$o5}Mej2h06XF4o}Qk!F$d__I#IjyA`17k zeegD})!#%=GJU_dstvZ?V`dg`NbX$7m`54txhFI10MrgZI$_D0QARPg;J+N@!MUrfeZi348y7S_-hI`bdwJwo6DJv!QK zqZQ)#RHkBDckg^&M%45+0^Fl%9DiB^!-&(=nNIj)CA!i%65MfxvfXt&&piXZIsaNL z1!DEYv}k|P3qN+Fi~#?qS+J>v>K3Uw?;S8!uC(4LAg)u4ys)I^8WC-B=rIr-|t|~k}fz-cPTQs5clUs>Ph))0tRj* zt)sfD%pdSjLg+L%(vu}h5Y>i zHu$?`G(r)S_DSL&AA0`%1qOR10B1pP9W>tn=XL?Yhf^U3kfus-j}{ zBV0ZxQ&M^vHXO*>D9=|}7T*h|6UfZBb9`=c@Tl>iimd%+X-%2Wrv32R_ReC$sIeez z*AJHExR@`!Eq+qq%*gzTjbe#wOp}9BML-u^0Gv0)7=$5bJopX!!}1#Eyb%!qdZ01i z1`Ob~;`O2gWOoO53Ae%IzrNR8YXA5?J66XLJQ_akJeITKbpw@l#pQ3h-n*+M5a~yt zxPlQ^p zQ3mDJ4jR2yDEyc>7rhG6)pAd%X2mud6;_@8K4k=c(a2H$1FAJ=6PEM6L5zb5|EO*Q z#Z@va790&>8h;7O#!|bMAwiUP_)5n?78Q2NFVvtWPcl-cDiIOYkX*pnJH#snskms+ zC=Dadkw%1TV0hoVH zGLn!0AbBb$(w)bFYvzG~vGj+r9ulB@;R1!=U-Q-|ztErfFjk62!)XyIoQB<$Qaudq zC?~94WSl*k$im;0J)l>RC=kh#`+k{x+%L3tM?xLqoNq-r6B^NjVG*#my8Bt9Y}otd z_NcYcL|yblP@v&2t;UR&v07Wlvxi6^(Rxx^~&Y zf6D_)>a{0U07)IF&%&S!A&-Y{S5NG-MAuSYqC$>doml;t*+G`)gii1UCz{SE-dF?v zfpU#Q&KfF-zcf@AgJRjH4KT_@1<3;lwIyP^Gi^hsp@ho2yZL+)KhvHl%e$k3^V^9F z&!nt^DB0kWxed5h<@VM~-P1Tmm|ymJQgfi^Kj#v+ytnisxjikTq3yG7) g8{Xa~4&7k&v>Gt%@YDu@H^G3CoVskK^y~Nk20g}=g8%>k literal 0 HcmV?d00001 diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi deleted file mode 100644 index 19b36bfc948d2a59a1c497e8ecd5c97430ddc584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10864 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 IZw&qa8(3_r>;M1& diff --git a/icons/obj/clothing/accessories.dmi b/icons/obj/clothing/accessories.dmi new file mode 100644 index 0000000000000000000000000000000000000000..99c203cc167e183097bf24b4c39f051b86d03d89 GIT binary patch literal 6954 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 ZM0Bv8N>LgyioN^-sDrhYE0kV`{tpIJrVjuB literal 0 HcmV?d00001 diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi index 9606e11d63ec616331724dcb524e8324d55e35cc..0f3668ce102b10edb3d8771d178df6bcd28f1bf6 100644 GIT binary patch delta 2259 zcmZ9Odpy(oAICqN&6df=kdTeC(MHHEG_%|)x#d@@$W%fXRAO}5mr{$&$~~5DKOIqW zs6?2g+fL<{ONkwq<#HyMhUPar&iV8A$NTYoKL2_B{Z7+a#Pip|NR_6>Fpg3Ql%3#Z znFHE5Itc&(iwpGK3FwlZ!^>KDID%uSpw zEbQBZLt6`-Yf7W2?IkDG(Km0>P3oY-XFAW=;m*(*?NwVq7ayKMi#43> zgZJsk0_N?WRev3lZ0;w|vD(%3)>vZ!K$UNGcMD<{N%JwBefnP7m!4lqdE4@(v&6$k z4W@ok3+eISu<-DDV2rR!m{KaQ+}yaa?6Gr1?)LWM#V6lpwfMZ8|L8DKuzGNsIx(qJjcr{M29P!UHTi)iC{<8$xApV%l-FI}>`6@q|m|u9&OCCnuQV z<{0W`__JkArwOkhtENWHE0EkX@`EQ%z~;+clJ~!dU858Jgb1We*p$dH{}RBX+Y4Qf zYsuZ7F70!TdDj^xVJR;S%ns*~uTPhP1EUI#gmnAIbW7XfLyN)&!sp8TrK}SQskC&( zi+-k0FKA!~*Up_E-CX2MN&oe=?YFIBARIPUZcBXI=+&$VcKt-Gc z#(w(5;Sp8V#1{E;%r0o4*pslzc-!cfp;Q%bdg=h`D?!U&Zg4b`@u~!icqfon5;%9? zW&60|pt&~|-WpTSgdj0q6Jo~qBG*)H#fUuD*PIwYs0K<%MAi1tY@2p5X%LfFG; z-?ck?GKb_ow8xA!FdB&vY{~_NCI`KG9)S>t^@(#aX3NZ&-3|+jX`78B6-28Nv(TT%eS%j*y|7u6l_m{y{)>V6m%>Yl|}um zdVb6@0&`#~+$6wT+bngkOdx3YEnOhXo{w}dE}|Au;StcPf@AszSk}hH-s{%qFm5w& zju}7xQ}(&J`R?59V;5>Bm0?j_;SX;KG~Z1%%Hx@1-lI_Dk(sfk(hJCZVfC;Q zbtH$e(wd`%NbX=Orhc1rBNS1+zqg)QRAM{T%)ll-W>^R{TA{L$WEK!5e@TgR%FD6? zzE&^_v?&|zm~jF2S>E4Y_@Es|!v4xrqhGFH=jxgeOw|nyBlxQp<%&kSdr;Ld#{MJF z{an9WE>B+ahGg~Q2KfyKmRi}p>RNA~3HNduAcEhy^N*NclE*qW#|F}RE{}E0`bF5Z zF4Z74flg#IyuNKyMmKhz$K#D=;6A##(TiYDwlSW3knj?Sh+z_Ubt1H?1$ zDfEYd0V{@inK>E|^1d1>R+&(n+?kD!GpeB2@SmS>0cxPm3VYguvI!S2&Up{mhw= z{CaqxK`I*tPFbA!M+12(dOn;b#bOg{KOkkAl3NR0a*Kql8RjW1+v@mCmB<^U)iL7& z8mjelh)usut%?Rq@3o6us)`btZ38z1q<^{ho9;3#0nsTLffLZ-T;F^ZdPh>mQ+{{# zrQ^ZfiywIW?$c+`>IYlL)e@Wesba~TMECqRoLpRIzJasdSRVae6v%BToSD&1v8ANY z>k#lZZXiS<;xf#THLCvv=#217p?A=O+qktFgK3_&>bTu@gBKnd0yr9t&FHDJH$mWV zM*5X8$KBCHqKoaIu%BDAH00+D;-Ey;pLz8F0o z)pG0}y@*D9k=;kJQRmU4e_&XZeQ6&HzsF+76XGPu$INJtRSz*WsFk&h<%yy7LwlINWz+p!>Q(TtMFO^AODl3wm+^tmtCH*yvnFFr7vKEVyQIJ!r)H}|NW zVc5!$?8Z0u_o25~X8xGuXeZAsDlX6(lwtC;AMl}5=YMm&Px~b+z`HE@60hoBPk`s&(d~x?ZMWKy zp^Icz>&|#`ruAzRb*&YPZS{qSwX=EqkW~o*f*jFmIyU%&uvMyl)l>MmXV(kXw+%_! dR8gwjpkb11bt`sv(JB3J2VJvmX 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 T^$rUhJV?OY#M-#dkdp8(AroHK diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi deleted file mode 100644 index 83c1ffedf20abd4f10b63150ad4b8e105e2917de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12457 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 OKu$_YvP#@I^nU Date: Thu, 8 Jun 2017 03:39:13 -0500 Subject: [PATCH 09/40] cleanup --- .../objects/items/stacks/tiles/tile_types.dm | 3 +++ .../items/stacks/tiles/tile_types.dm.rej | 10 ---------- code/modules/crafting/recipes.dm | 2 +- code/modules/crafting/recipes.dm.rej | 10 ---------- icons/obj/tiles.dmi | Bin 11987 -> 11985 bytes 5 files changed, 4 insertions(+), 21 deletions(-) delete mode 100644 code/game/objects/items/stacks/tiles/tile_types.dm.rej delete mode 100644 code/modules/crafting/recipes.dm.rej diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index de0cdaf494..01a0940e53 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -112,6 +112,9 @@ icon_state = "tile-carpet-black" turf_type = /turf/open/floor/carpet/black +/obj/item/stack/tile/carpet/black/fifty + amount = 50 + /obj/item/stack/tile/fakespace name = "astral carpet" diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm.rej b/code/game/objects/items/stacks/tiles/tile_types.dm.rej deleted file mode 100644 index 2f47c12b65..0000000000 --- a/code/game/objects/items/stacks/tiles/tile_types.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm (rejected hunks) -@@ -111,6 +111,8 @@ - icon_state = "tile-carpet-black" - turf_type = /turf/open/floor/carpet/black - -+/obj/item/stack/tile/carpet/black/fifty -+ amount = 50 - - /obj/item/stack/tile/fakespace - name = "astral carpet" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 67464adc12..d84d806a00 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -382,7 +382,7 @@ /datum/crafting_recipe/blackcarpet name = "Black Carpet" reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) - result = /obj/item/stack/tile/carpet/black + result = /obj/item/stack/tile/carpet/black/fifty category = CAT_MISC /datum/crafting_recipe/showercurtain diff --git a/code/modules/crafting/recipes.dm.rej b/code/modules/crafting/recipes.dm.rej deleted file mode 100644 index 39167bca83..0000000000 --- a/code/modules/crafting/recipes.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm (rejected hunks) -@@ -347,7 +347,7 @@ - /datum/crafting_recipe/blackcarpet - name = "Black Carpet" - reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) -- result = /obj/item/stack/tile/carpet/black -+ result = /obj/item/stack/tile/carpet/black/fifty - category = CAT_MISC - - /datum/crafting_recipe/showercurtain diff --git a/icons/obj/tiles.dmi b/icons/obj/tiles.dmi index 5372e24c05df6f67f4410cf00eac932000f96e51..1c0ac03abecac62849a5c8e295804c5b2f609157 100644 GIT binary patch delta 10895 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 Dx;t>4 delta 10990 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 l|8Fb%f0&)_KMn4od)%{>2@r Date: Thu, 8 Jun 2017 03:48:22 -0500 Subject: [PATCH 10/40] cleanup --- code/game/gamemodes/game_mode.dm | 26 +++++++++++++------------- code/game/gamemodes/game_mode.dm.rej | 10 ---------- 2 files changed, 13 insertions(+), 23 deletions(-) delete mode 100644 code/game/gamemodes/game_mode.dm.rej diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index c57e9180f5..1852fe0770 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -80,17 +80,17 @@ report = config.intercept addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME) - if(SSdbcore.Connect()) - var/sql - if(SSticker && SSticker.mode) - sql += "game_mode = '[SSticker.mode]'" - if(sql) - sql += ", " - if(GLOB.revdata.commit) - sql += "commit_hash = '[GLOB.revdata.commit]'" - if(sql) - var/datum/DBQuery/query_round_game_mode = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET [sql] WHERE id = [GLOB.round_id]") - query_round_game_mode.Execute() + if(SSdbcore.Connect()) + var/sql + if(SSticker && SSticker.mode) + sql += "game_mode = '[SSticker.mode]'" + if(GLOB.revdata.originmastercommit) + if(sql) + sql += ", " + sql += "commit_hash = '[GLOB.revdata.originmastercommit]'" + if(sql) + var/datum/DBQuery/query_round_game_mode = SSdbcore.NewQuery("UPDATE [format_table_name("round")] SET [sql] WHERE id = [GLOB.round_id]") + query_round_game_mode.Execute() if(report) addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h)) generate_station_goals() @@ -239,11 +239,11 @@ if(ishuman(M)) if(!M.stat) surviving_humans++ - if(M.z == ZLEVEL_CENTCOM) + if(M.z == ZLEVEL_CENTCOM) escaped_humans++ if(!M.stat) surviving_total++ - if(M.z == ZLEVEL_CENTCOM) + if(M.z == ZLEVEL_CENTCOM) escaped_total++ diff --git a/code/game/gamemodes/game_mode.dm.rej b/code/game/gamemodes/game_mode.dm.rej deleted file mode 100644 index c834b64a56..0000000000 --- a/code/game/gamemodes/game_mode.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm (rejected hunks) -@@ -84,8 +84,6 @@ - var/sql - if(SSticker && SSticker.mode) - sql += "game_mode = '[SSticker.mode]'" -- if(sql) -- sql += ", " - if(GLOB.revdata.originmastercommit) - if(sql) - sql += ", " From 7b6c76525c5f6feab949437274d2853884d00fb2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 09:45:45 -0500 Subject: [PATCH 11/40] Trims whitelist entries and makes them use ckey() --- code/modules/admin/whitelist.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/admin/whitelist.dm b/code/modules/admin/whitelist.dm index d6e8fc908f..974a753027 100644 --- a/code/modules/admin/whitelist.dm +++ b/code/modules/admin/whitelist.dm @@ -10,7 +10,7 @@ GLOBAL_PROTECT(whitelist) continue if(findtextEx(line,"#",1,2)) continue - GLOB.whitelist += line + GLOB.whitelist += ckey(line) if(!GLOB.whitelist.len) GLOB.whitelist = null From 24bfaa9b56128daf15f602ad464c950f589fae7c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 10:58:31 -0500 Subject: [PATCH 12/40] Fixes #8044, being able to hold defib paddles while dead, by removing NODROP from them --- code/game/objects/items/weapons/defib.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 4bdf6ddf3c..886d875edc 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -273,7 +273,6 @@ force = 0 throwforce = 6 w_class = WEIGHT_CLASS_BULKY - flags = NODROP var/revivecost = 1000 var/cooldown = 0 From 1658e48bc1737ddea42bfbb42274407500923fe1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 14:46:07 -0500 Subject: [PATCH 13/40] [READY] Gang Points Refactor - Now stored in the gang datum --- code/__DEFINES/misc.dm | 6 +- code/datums/mind.dm | 2 +- code/game/gamemodes/gang/gang.dm | 14 ++- code/game/gamemodes/gang/gang_datum.dm | 128 ++++++++++++++------- code/game/gamemodes/gang/gang_items.dm | 19 ++- code/game/gamemodes/gang/recaller.dm | 11 +- code/game/gamemodes/wizard/artefact.dm | 2 +- code/game/objects/effects/decals/crayon.dm | 20 +++- code/game/objects/objs.dm | 3 + code/modules/admin/verbs/onlyone.dm | 2 +- code/modules/clothing/neck/ties.dm | 3 + 11 files changed, 145 insertions(+), 65 deletions(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index ab8fcb7d70..6ea8cd64ee 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -429,4 +429,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define GIBTONITE_UNSTRUCK 0 #define GIBTONITE_ACTIVE 1 #define GIBTONITE_STABLE 2 -#define GIBTONITE_DETONATE 3 \ No newline at end of file +#define GIBTONITE_DETONATE 3 +//Gangster starting influences + +#define GANGSTER_SOLDIER_STARTING_INFLUENCE 5 +#define GANGSTER_BOSS_STARTING_INFLUENCE 20 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index be5180c2ae..e1c6606400 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -989,7 +989,7 @@ if(!G || (src in G.bosses)) return SSticker.mode.remove_gangster(src,0,2,1) - G.bosses += src + G.bosses[src] = GANGSTER_BOSS_STARTING_INFLUENCE gang_datum = G special_role = "[G.name] Gang Boss" G.add_gang_hud(src) diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index 6606a0d871..5b97280e9a 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ for(var/n in 1 to 3) var/datum/mind/boss = pick(antag_candidates) antag_candidates -= boss - G.bosses += boss + G.bosses[boss] = GANGSTER_BOSS_STARTING_INFLUENCE boss.gang_datum = G var/title if(n == 1) @@ -85,6 +85,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ sleep(rand(10,100)) for(var/datum/gang/G in gangs) for(var/datum/mind/boss_mind in G.bosses) + G.bosses[boss_mind] = GANGSTER_BOSS_STARTING_INFLUENCE //Force influence to be put on it. G.add_gang_hud(boss_mind) forge_gang_objectives(boss_mind) greet_gang(boss_mind) @@ -170,7 +171,7 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ return 0 if(check && gangster_mind.current.isloyal()) //Check to see if the potential gangster is implanted return 1 - G.gangsters += gangster_mind + G.gangsters[gangster_mind] = GANGSTER_SOLDIER_STARTING_INFLUENCE gangster_mind.gang_datum = G if(check) if(iscarbon(gangster_mind.current)) @@ -209,15 +210,24 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/ if(!G.is_deconvertible && !remove_bosses) return 0 if(gangster_mind in G.gangsters) + G.reclaim_points(G.gangsters[gangster_mind]) G.gangsters -= gangster_mind removed = 1 if(remove_bosses && (gangster_mind in G.bosses)) + G.reclaim_points(G.bosses[gangster_mind]) G.bosses -= gangster_mind removed = 1 + if(G.tags_by_mind[gangster_mind] && islist(G.tags_by_mind[gangster_mind])) + var/list/tags_cache = G.tags_by_mind[gangster_mind] + for(var/v in tags_cache) + var/obj/effect/decal/cleanable/crayon/gang/c = v + c.set_mind_owner(null) + G.tags_by_mind -= gangster_mind if(!removed) return 0 + gangster_mind.special_role = null gangster_mind.gang_datum = null diff --git a/code/game/gamemodes/gang/gang_datum.dm b/code/game/gamemodes/gang/gang_datum.dm index d6aa1830f2..a2e7220106 100644 --- a/code/game/gamemodes/gang/gang_datum.dm +++ b/code/game/gamemodes/gang/gang_datum.dm @@ -8,6 +8,7 @@ var/list/datum/mind/gangsters = list() //gang B Members var/list/datum/mind/bosses = list() //gang A Bosses var/list/obj/item/device/gangtool/gangtools = list() + var/list/tags_by_mind = list() //Assoc list in format of tags_by_mind[mind_of_gangster] = list(tag1, tag2, tag3) where tags are the actual object decals. var/style var/fighting_style = "normal" var/list/territory = list() @@ -202,9 +203,9 @@ return var/added_names = "" var/lost_names = "" - + SSticker.mode.shuttle_check() // See if its time to start wrapping things up - + //Re-add territories that were reclaimed, so if they got tagged over, they can still earn income if they tag it back before the next status report var/list/reclaimed_territories = territory_new & territory_lost territory |= reclaimed_territories @@ -245,47 +246,90 @@ set_domination_time(new_time) message += "[seconds_remaining] seconds remain in hostile takeover.
" else - for(var/obj/item/device/gangtool/G in gangtools) - var/pmessage = message - var/points_new = 0 - if(istype(G, /obj/item/device/gangtool/soldier)) - points_new = max(0,round(3 - G.points/10)) + (sbonus) + (LAZYLEN(G.tags)/2) // Soldier points - pmessage += "Your influence has increased by [round(sbonus)] from your gang holding [LAZYLEN(territory)] territories, and a bonus of [round(LAZYLEN(G.tags)/2)] for territories you have personally marked and kept intact.
" - else - points_new = max(0,round(5 - G.points/10)) + LAZYLEN(territory) // Boss points, more focused on big picture - pmessage += "Your influence has increased by [round(points_new)] from your gang holding [territory.len] territories
" - G.points += points_new - var/mob/living/carbon/human/ganger = get(G.loc, /mob/living) - var/points_newer = 0 - var/static/inner = inner_outfit - var/static/outer = outer_outfit - if(ishuman(ganger) && ganger.mind in (gangsters|bosses)) - for(var/obj/C in ganger.contents) - if(C.type == inner_outfit) - points_newer += 2 - continue - if(C.type == outer_outfit) - points_newer += 2 - continue - switch(C.type) - if(/obj/item/clothing/neck/necklace/dope) - points_newer += 2 - if(/obj/item/clothing/head/collectable/petehat/gang) - points_newer += 4 - if(/obj/item/clothing/shoes/gang) - points_newer += 6 - if(/obj/item/clothing/mask/gskull) - points_newer += 5 - if(/obj/item/clothing/gloves/gang) - points_newer += 3 - if(/obj/item/weapon/storage/belt/military/gang) - points_newer += 4 - if(points_newer) - G.points += points_newer - pmessage += "Your influential choice of clothing has further increased your influence by [points_newer] points.
" - pmessage += "You now have [G.points] influence.
" - to_chat(ganger, "\icon[G] [pmessage]") + pay_territory_income_to_bosses() + pay_territory_income_to_soldiers(sbonus) + pay_all_clothing_bonuses() + announce_all_influence() +/datum/gang/proc/pay_all_clothing_bonuses() + for(var/datum/mind/mind in gangsters|bosses) + pay_clothing_bonus(mind) + +/datum/gang/proc/pay_clothing_bonus(var/datum/mind/gangsta) + var/mob/living/carbon/human/gangbanger = gangsta.current + . = 0 + if(!istype(gangbanger) || gangbanger.stat == DEAD) //Dead gangsters aren't influential at all! + return 0 + var/static/inner = inner_outfit + var/static/outer = outer_outfit + for(var/obj/item/C in gangbanger.contents) + if(C.type == inner_outfit) + . += 2 + continue + else if(C.type == outer_outfit) + . += 2 + continue + . += C.gang_contraband_value() + adjust_influence(gangsta, .) + if(.) + announce_to_mind(gangsta, "Your influential choice of clothing has increased your influence by [.] points!") + else + announce_to_mind(gangsta, "Unfortunately, you have not gained any additional influence from your drab, old, boring clothing. Learn to dress like a gangsta, bro!") //Kek + +/datum/gang/proc/pay_soldier_territory_income(datum/mind/soldier, sbonus = 0) + . = 0 + . = max(0,round(3 - gangsters[soldier]/10)) + (sbonus) + (get_soldier_territories(soldier)/2) + adjust_influence(soldier, .) + +/datum/gang/proc/get_soldier_territories(datum/mind/soldier) + if(!islist(tags_by_mind[soldier])) //They have no tagged territories! + return 0 + var/list/tags = tags_by_mind[soldier] + return tags.len + +/datum/gang/proc/pay_territory_income_to_soldiers(sbonus = 0) + for(var/datum/mind/soldier in gangsters) + var/returned = pay_soldier_territory_income(soldier) + if(!returned) + announce_to_mind(soldier, "You have not gained any influence from territories you personally tagged. Get to work, soldier!") + else + announce_to_mind(soldier, "You have gained [returned] influence from [get_soldier_territories(soldier)] territories you have personally tagged.") + +/datum/gang/proc/announce_all_influence() + for(var/datum/mind/MG in bosses|gangsters) + announce_total_influence(MG) + +/datum/gang/proc/pay_territory_income_to_bosses() + . = 0 + for(var/datum/mind/boss_mind in bosses) + var/inc = max(0,round(5 - bosses[boss_mind]/10)) + LAZYLEN(territory) + . += inc + adjust_influence(boss_mind, inc) + announce_to_mind(boss_mind, "Your influence has increased by [inc] from your gang holding [LAZYLEN(territory)] territories!") + +/datum/gang/proc/get_influence(datum/mind/gangster_mind) + if(gangster_mind in gangsters) + return gangsters[gangster_mind] + if(gangster_mind in bosses) + return bosses[gangster_mind] + +/datum/gang/proc/adjust_influence(datum/mind/gangster_mind, amount) + if(gangster_mind in gangsters) + gangsters[gangster_mind] += amount + if(gangster_mind in bosses) + bosses[gangster_mind] += amount + +/datum/gang/proc/announce_to_mind(datum/mind/gangster_mind, message) + if(gangster_mind.current && gangster_mind.current.stat != DEAD) + to_chat(gangster_mind.current, message) + +/datum/gang/proc/announce_total_influence(datum/mind/gangster_mind) + announce_to_mind(gangster_mind, "[name] Gang: You now have a total of [get_influence(gangster_mind)] influence!") + +/datum/gang/proc/reclaim_points(amount) + for(var/datum/mind/bawss in bosses) + adjust_influence(bawss, amount/bosses.len) + announce_to_mind(bawss, "[name] Gang: [amount/bosses.len] influence given from internal automatic restructuring.") //Multiverse diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index dae3c85be1..43e5fee8b4 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -11,7 +11,7 @@ if(check_canbuy && !can_buy(user, gang, gangtool)) return FALSE var/real_cost = get_cost(user, gang, gangtool) - gangtool.points -= real_cost + gang.adjust_influence(user.mind, -real_cost) spawn_item(user, gang, gangtool) return TRUE @@ -23,7 +23,7 @@ to_chat(user, spawn_msg) /datum/gang_item/proc/can_buy(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) - return gang && (gangtool.points >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) + return gang && (gang.get_influence(user.mind) >= get_cost(user, gang, gangtool)) && can_see(user, gang, gangtool) /datum/gang_item/proc/can_see(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) return TRUE @@ -118,6 +118,9 @@ name = "pimpin' hat" desc = "The undisputed king of style." +/obj/item/clothing/head/collectable/petehat/gang/gang_contraband_value() + return 4 + /datum/gang_item/clothing/mask name = "Golden Death Mask" id = "mask" @@ -129,6 +132,8 @@ icon_state = "gskull" desc = "Strike terror, and envy, into the hearts of your enemies." +/obj/item/clothing/mask/gskull/gang_contraband_value() + return 5 /datum/gang_item/clothing/shoes name = "Bling Boots" @@ -141,13 +146,15 @@ desc = "Stand aside peasants." icon_state = "bling" +/obj/item/clothing/shoes/gang/gang_contraband_value() + return 6 + /datum/gang_item/clothing/neck name = "Gold Necklace" id = "necklace" cost = 9 item_path = /obj/item/clothing/neck/necklace/dope - /datum/gang_item/clothing/hands name = "Decorative Brass Knuckles" id = "hand" @@ -160,6 +167,9 @@ icon_state = "knuckles" w_class = 3 +/obj/item/clothing/gloves/gang/gang_contraband_value() + return 3 + /datum/gang_item/clothing/belt name = "Badass Belt" id = "belt" @@ -173,7 +183,8 @@ desc = "The belt buckle simply reads 'BAMF'." storage_slots = 1 - +/obj/item/weapon/storage/belt/military/gang/gang_contraband_value() + return 4 /////////////////// //WEAPONS diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 8363261c5d..8533ccf49e 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -15,7 +15,6 @@ var/outfits = 2 var/free_pen = 0 var/promotable = 0 - var/points = 15 var/list/tags = list() /obj/item/device/gangtool/Initialize() //Initialize supply point income if it hasn't already been started @@ -50,7 +49,7 @@ var/isboss = (user.mind == gang.bosses[1]) dat += "Registration: [gang.name] Gang [isboss ? "Boss" : "Lieutenant"]
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [points]
" + dat += "Your Influence: [gang.get_influence(user.mind)]
" dat += "Time until Influence grows: [time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss")]
" dat += "
" @@ -147,8 +146,9 @@ gang.gangtools += src icon_state = "gangtool-[gang.color]" if(!(user.mind in gang.bosses)) + var/cached_influence = gang.gangsters[user.mind] SSticker.mode.remove_gangster(user.mind, 0, 2) - gang.bosses += user.mind + gang.bosses[user.mind] = cached_influence user.mind.gang_datum = gang user.mind.special_role = "[gang.name] Gang Lieutenant" gang.add_gang_hud(user.mind) @@ -246,9 +246,6 @@ ///////////// Internal tool used by gang regulars /////////// -/obj/item/device/gangtool/soldier - points = 5 - /obj/item/device/gangtool/soldier/New(mob/user) . = ..() gang = user.mind.gang_datum @@ -264,7 +261,7 @@ dat += "
Takeover In Progress:
[gang.domination_time_remaining()] seconds remain
" dat += "Registration: [gang.name] - Foot Soldier
" dat += "Organization Size: [gang.gangsters.len + gang.bosses.len] | Station Control: [round((gang.territory.len/GLOB.start_state.num_territories)*100, 1)]%
" - dat += "Your Influence: [points]
" + dat += "Your Influence: [gang.get_influence(user.mind)]
" if(LAZYLEN(tags)) dat += "Your tags generate bonus influence for you.
You have tagged the following territories:" for(var/obj/effect/decal/cleanable/crayon/gang/T in tags) diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm index f89833d315..9a21400653 100644 --- a/code/game/gamemodes/wizard/artefact.dm +++ b/code/game/gamemodes/wizard/artefact.dm @@ -243,7 +243,7 @@ if(!is_gangster(user)) var/datum/gang/multiverse/G = new(src, "[user.real_name]") SSticker.mode.gangs += G - G.bosses += user.mind + G.bosses[user.mind] = 0 G.add_gang_hud(user.mind) user.mind.gang_datum = G to_chat(user, "With your new found power you could easily conquer the station!") diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 53ecfc8d62..2361510e46 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -30,27 +30,35 @@ layer = HIGH_OBJ_LAYER //Harder to hide do_icon_rotate = FALSE //These are designed to always face south, so no rotation please. var/datum/gang/gang - var/obj/item/device/gangtool/linked_tool + var/datum/mind/user_mind var/area/territory /obj/effect/decal/cleanable/crayon/gang/Initialize(mapload, var/datum/gang/G, var/e_name = "gang tag", var/rotation = 0, var/mob/user) if(!type || !G) qdel(src) + user_mind = user.mind territory = get_area(src) gang = G var/newcolor = G.color_hex icon_state = G.name G.territory_new |= list(territory.type = territory.name) - linked_tool = locate(/obj/item/device/gangtool) in user.contents - if(linked_tool) - linked_tool.tags += src + //If this isn't tagged by a specific gangster there's no bonus income. + set_mind_owner(user_mind) ..(mapload, newcolor, icon_state, e_name, rotation) +/obj/effect/decal/cleanable/crayon/gang/proc/set_mind_owner(datum/mind/mind) + if(istype(user_mind) && istype(gang) && islist(gang.tags_by_mind[user_mind])) //Clear us out of old ownership + gang.tags_by_mind[user_mind] -= src + if(istype(mind)) + if(!islist(gang.tags_by_mind[mind])) + gang.tags_by_mind[mind] = list() + gang.tags_by_mind[mind] += src + user_mind = mind + /obj/effect/decal/cleanable/crayon/gang/Destroy() - if(linked_tool) - linked_tool.tags -= src if(gang) gang.territory -= territory.type + set_mind_owner(null) gang.territory_new -= territory.type gang.territory_lost |= list(territory.type = territory.name) return ..() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 9766dbc26d..7482b4ca14 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -193,3 +193,6 @@ ..() if(unique_rename) to_chat(user, "Use a pen on it to rename it or change its description.") + +/obj/proc/gang_contraband_value() + return 0 diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm index 37dab65b0c..299853ae53 100644 --- a/code/modules/admin/verbs/onlyone.dm +++ b/code/modules/admin/verbs/onlyone.dm @@ -99,7 +99,7 @@ GLOBAL_VAR_INIT(highlander, FALSE) var/datum/gang/multiverse/G = new(src, "[H.real_name]") SSticker.mode.gangs += G - G.bosses += H.mind + G.bosses[H.mind] = 0 //No they don't use influence but this prevents runtimes. G.add_gang_hud(H.mind) H.mind.gang_datum = G diff --git a/code/modules/clothing/neck/ties.dm b/code/modules/clothing/neck/ties.dm index 59dc504098..3affebc270 100644 --- a/code/modules/clothing/neck/ties.dm +++ b/code/modules/clothing/neck/ties.dm @@ -164,6 +164,9 @@ icon_state = "bling" item_color = "bling" +/obj/item/clothing/neck/necklace/dope/gang_contraband_value() + return 2 + //////////////// //OONGA BOONGA// //////////////// From 356ea18e956c263a00ffd756e5275785cfb16fbb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:16:56 -0500 Subject: [PATCH 14/40] [Meta] atmosia pump layer fix --- _maps/map_files/MetaStation/MetaStation.dmm | 70 ++++++--------------- 1 file changed, 20 insertions(+), 50 deletions(-) diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 9290c25c95..25c6618a75 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -13412,9 +13412,7 @@ "aza" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/plasteel/black, /area/engine/engineering) @@ -31819,9 +31817,7 @@ "bhv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -34604,9 +34600,7 @@ "bmy" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -38251,9 +38245,7 @@ "bsN" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -38333,9 +38325,7 @@ req_access_txt = "19" }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/machinery/button/door{ id = "council blast"; @@ -41604,11 +41594,6 @@ }, /area/engine/atmos) "bzc" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Distro to Waste"; - on = 0 - }, /obj/machinery/light{ dir = 1 }, @@ -41616,6 +41601,11 @@ dir = 1; on = 1 }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Distro to Waste"; + on = 0 + }, /turf/open/floor/plasteel/caution{ dir = 1 }, @@ -42035,9 +42025,7 @@ "bzT" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/machinery/vending/coffee{ pixel_x = -3 @@ -42155,9 +42143,7 @@ "bAg" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/structure/extinguisher_cabinet{ pixel_x = 27 @@ -43639,9 +43625,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/plasteel/neutral/corner{ dir = 1 @@ -43787,9 +43771,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/plasteel/neutral/corner{ dir = 4 @@ -47556,9 +47538,7 @@ "bKz" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -47986,9 +47966,7 @@ "bLs" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -50400,9 +50378,7 @@ "bQa" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 1; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -50531,9 +50507,7 @@ }, /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 2; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /turf/open/floor/wood, /area/bridge/showroom/corporate) @@ -50570,9 +50544,7 @@ "bQq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/structure/cable/yellow{ d1 = 1; @@ -50641,9 +50613,7 @@ "bQu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 8; - on = 1; - scrub_N2O = 1; - scrub_Toxins = 1 + on = 1 }, /obj/structure/cable/yellow{ d1 = 4; From 3deb4c0eff140925149997690b007204c95a8e6d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:18:01 -0500 Subject: [PATCH 15/40] Fixes deadmin player panel runtime --- code/modules/admin/adminmenu.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/admin/adminmenu.dm b/code/modules/admin/adminmenu.dm index fc7a57e212..8954244da4 100644 --- a/code/modules/admin/adminmenu.dm +++ b/code/modules/admin/adminmenu.dm @@ -6,6 +6,6 @@ set name = "Player Panel" set desc = "Player Panel" set category = "Admin" - usr.client.holder.player_panel_new() - SSblackbox.add_details("admin_verb","Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return \ No newline at end of file + if(usr.client.holder) + usr.client.holder.player_panel_new() + SSblackbox.add_details("admin_verb","Player Panel New") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! From d859e3a6370add6e5d2cc522a4a04b73263164a2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:18:06 -0500 Subject: [PATCH 16/40] Diseases can now only spread to mobs with an atmos line of sight --- code/datums/diseases/_disease.dm | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index fbf6af136e..cc11d0e6d2 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -115,12 +115,19 @@ else return - if(isturf(source.loc)) + var/turf/T = source.loc + if(istype(T)) for(var/mob/living/carbon/C in oview(spread_range, source)) - if(isturf(C.loc)) - if(AStar(source, C.loc,/turf/proc/Distance, spread_range, adjacent = (spread_flags & AIRBORNE) ? /turf/proc/reachableAdjacentAtmosTurfs : /turf/proc/reachableAdjacentTurfs)) - C.ContractDisease(src) - + var/turf/V = get_turf(C) + if(V) + while(TRUE) + if(V == T) + C.ContractDisease(src) + break + var/turf/Temp = get_step_towards(V, T) + if(!CANATMOSPASS(V, Temp)) + break + V = Temp /datum/disease/process() if(!holder) From 54d8e3a1599d2d7dacaff13da5d753298e374e05 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:18:09 -0500 Subject: [PATCH 17/40] You can no longer mount borgs while stunned. --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 9574533884..27cf0c3a82 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1140,7 +1140,7 @@ return if(incapacitated()) return - if(M.restrained()) + if(M.incapacitated()) return if(module) if(!module.allow_riding) From c013ce47936b32d39e0eaaba71360f2c5ccde80c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 17:19:14 -0500 Subject: [PATCH 18/40] [Delta] Ridin' Dirty --- _maps/map_files/Deltastation/DeltaStation2.dmm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 62311b4885..df3d53cf31 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -52672,7 +52672,6 @@ /obj/machinery/camera/emp_proof{ c_tag = "Containment - Fore Starboard"; dir = 8; - icon_state = "camera"; network = list("Singularity") }, /turf/open/floor/plating/airless, @@ -54400,7 +54399,6 @@ /obj/machinery/camera/emp_proof{ c_tag = "Containment - Fore Port"; dir = 4; - icon_state = "camera"; network = list("Singularity") }, /turf/open/space, @@ -62751,7 +62749,6 @@ /obj/machinery/camera/emp_proof{ c_tag = "Containment - Aft Port"; dir = 4; - icon_state = "camera"; network = list("Singularity") }, /turf/open/space, @@ -64431,7 +64428,6 @@ /obj/machinery/camera/emp_proof{ c_tag = "Containment - Aft Starboard"; dir = 8; - icon_state = "camera"; network = list("Singularity") }, /turf/open/floor/plating/airless, From e034a6be50ffe1f0047d85e3c04fe18c8d0d7495 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 8 Jun 2017 19:08:53 -0500 Subject: [PATCH 19/40] Security record crime details is now a single line input box --- code/game/machinery/computer/security.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 5baa169e99..b0970edbad 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -620,7 +620,7 @@ What a mess.*/ if("mi_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) - var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null) + var/t2 = stripped_input(usr, "Please input minor crime details:", "Secure. records", "", null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) @@ -634,7 +634,7 @@ What a mess.*/ if("ma_crim_add") if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) - var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null) + var/t2 = stripped_input(usr, "Please input major crime details:", "Secure. records", "", null) if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return var/crime = GLOB.data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) From ff53afcd99dee5f839bf4fa694caf4ee3abc74a1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 03:26:59 -0500 Subject: [PATCH 20/40] Fixes clockwork armor bitflags --- .../gamemodes/clock_cult/clock_items/clockwork_armor.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm index 49c2bb4c13..3b0c220b87 100644 --- a/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm +++ b/code/game/gamemodes/clock_cult/clock_items/clockwork_armor.dm @@ -25,7 +25,7 @@ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) - flags &= STOPSPRESSUREDMAGE + flags &= ~STOPSPRESSUREDMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -81,7 +81,7 @@ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) - flags &= STOPSPRESSUREDMAGE + flags &= ~STOPSPRESSUREDMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -142,7 +142,7 @@ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list(melee = 80, bullet = 70, laser = -25, energy = 0, bomb = 60, bio = 0, rad = 0, fire = 100, acid = 100) - flags &= STOPSPRESSUREDMAGE + flags &= ~STOPSPRESSUREDMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -194,7 +194,7 @@ if(GLOB.ratvar_awakens) flags |= NOSLIP else - flags &= NOSLIP + flags &= ~NOSLIP /obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) From 99ac851f468b607f8261d1a4a9dfef649c4d9d2f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 03:42:22 -0500 Subject: [PATCH 21/40] Gang - Purchasing the improvised shotgun actually spawns a gun. --- code/game/gamemodes/gang/gang_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/gang/gang_items.dm b/code/game/gamemodes/gang/gang_items.dm index dae3c85be1..e479034e51 100644 --- a/code/game/gamemodes/gang/gang_items.dm +++ b/code/game/gamemodes/gang/gang_items.dm @@ -215,6 +215,7 @@ name = "Sawn-Off Improvised Shotgun" id = "sawn" cost = 6 + item_path = /obj/item/weapon/gun/ballistic/revolver/doublebarrel/improvised/sawn /datum/gang_item/weapon/ammo/improvised_ammo name = "Box of Buckshot" From 07cb1ab1de5d7419baa9847fbee2ffed2780079c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 08:59:57 -0500 Subject: [PATCH 22/40] Fix related CID/IPs on player panel --- code/modules/admin/admin.dm | 2 +- code/modules/admin/admin.dm.rej | 10 ++++++++++ code/modules/admin/topic.dm | 7 +++---- code/modules/admin/topic.dm.rej | 10 ++++++++++ 4 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 code/modules/admin/admin.dm.rej create mode 100644 code/modules/admin/topic.dm.rej diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a1f98cb89f..d31a9a7edf 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -38,7 +38,7 @@ if(M.client) body += "
\[First Seen: [M.client.player_join_date]\]\[Byond account registered on: [M.client.account_join_date]\]" - body += "
Show related accounts by: " + body += "

Show related accounts by: " body += "\[ CID | " body += "IP \]" diff --git a/code/modules/admin/admin.dm.rej b/code/modules/admin/admin.dm.rej new file mode 100644 index 0000000000..39e86b0f03 --- /dev/null +++ b/code/modules/admin/admin.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm (rejected hunks) +@@ -434,7 +434,7 @@ + if("Hard Restart (No Delay, No Feeback Reason)") + world.Reboot() + if("Hardest Restart (No actions, just reboot)") +- world.Reboot(fast_track = TRUE) ++ world.Reboot(fast_track = TRUE) + if("Service Restart (Force restart DD)") + GLOB.reboot_mode = REBOOT_MODE_HARD + world.ServiceReboot() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 4756318ee7..97bbfc0792 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2247,9 +2247,8 @@ thing_to_check = splittext(thing_to_check, ", ") - var/dat = "Related accounts by [uppertext(href_list["showrelatedacc"])]:
" - for(var/thing in thing_to_check) - dat += "[thing]
" + var/list/dat = list("Related accounts by [uppertext(href_list["showrelatedacc"])]:") + dat += thing_to_check - usr << browse(dat, "size=420x300") + usr << browse(dat.Join("
"), "window=related_[C];size=420x300") diff --git a/code/modules/admin/topic.dm.rej b/code/modules/admin/topic.dm.rej new file mode 100644 index 0000000000..333acee487 --- /dev/null +++ b/code/modules/admin/topic.dm.rej @@ -0,0 +1,10 @@ +diff a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm (rejected hunks) +@@ -2240,7 +2240,7 @@ + + else if(href_list["showrelatedacc"]) + var/client/C = locate(href_list["client"]) in GLOB.clients +- var/list/thing_to_check ++ var/thing_to_check + if(href_list["showrelatedacc"] == "cid") + thing_to_check = C.related_accounts_cid + else From 9e0488d2d90e0e4974211e59a040f1ba3c08c20c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 09:01:03 -0500 Subject: [PATCH 23/40] Moves borer completion to gamemode --- code/controllers/subsystem/ticker.dm | 37 ---------------------------- code/game/gamemodes/game_mode.dm | 37 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 9dce620e25..e335669acc 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -581,43 +581,6 @@ SUBSYSTEM_DEF(ticker) CHECK_TICK - //Borers - var/borerwin = FALSE - if(GLOB.borers.len) - var/borertext = "
The borers were:" - for(var/mob/living/simple_animal/borer/B in GLOB.borers) - if((B.key || B.controlling) && B.stat != DEAD) - borertext += "
[B.controlling ? B.victim.key : B.key] was [B.truename] (" - var/turf/location = get_turf(B) - if(location.z == ZLEVEL_CENTCOM && B.victim) - borertext += "escaped with host" - else - borertext += "failed" - borertext += ")" - to_chat(world, borertext) - - var/total_borers = 0 - for(var/mob/living/simple_animal/borer/B in GLOB.borers) - if((B.key || B.victim) && B.stat != DEAD) - total_borers++ - if(total_borers) - var/total_borer_hosts = 0 - for(var/mob/living/carbon/C in GLOB.mob_list) - var/mob/living/simple_animal/borer/D = C.has_brain_worms() - var/turf/location = get_turf(C) - if(location.z == ZLEVEL_CENTCOM && D && D.stat != DEAD) - total_borer_hosts++ - if(GLOB.total_borer_hosts_needed <= total_borer_hosts) - borerwin = TRUE - to_chat(world, "There were [total_borers] borers alive at round end!") - to_chat(world, "A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [GLOB.total_borer_hosts_needed] hosts to escape.") - if(borerwin) - to_chat(world, "The borers were successful!") - else - to_chat(world, "The borers have failed!") - - CHECK_TICK - mode.declare_station_goal_completion() CHECK_TICK diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 4c03417aa9..f71bb2cf45 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -264,6 +264,43 @@ send2irc("Server", "Round just ended.") if(cult.len && !istype(SSticker.mode,/datum/game_mode/cult)) datum_cult_completion() + + if(GLOB.borers.len) + var/borerwin = FALSE + var/borertext = "
The borers were:" + for(var/mob/living/simple_animal/borer/B in GLOB.borers) + if((B.key || B.controlling) && B.stat != DEAD) + borertext += "
[B.controlling ? B.victim.key : B.key] was [B.truename] (" + var/turf/location = get_turf(B) + if(location.z == ZLEVEL_CENTCOM && B.victim) + borertext += "escaped with host" + else + borertext += "failed" + borertext += ")" + to_chat(world, borertext) + + var/total_borers = 0 + for(var/mob/living/simple_animal/borer/B in GLOB.borers) + if((B.key || B.victim) && B.stat != DEAD) + total_borers++ + if(total_borers) + var/total_borer_hosts = 0 + for(var/mob/living/carbon/C in GLOB.mob_list) + var/mob/living/simple_animal/borer/D = C.has_brain_worms() + var/turf/location = get_turf(C) + if(location.z == ZLEVEL_CENTCOM && D && D.stat != DEAD) + total_borer_hosts++ + if(GLOB.total_borer_hosts_needed <= total_borer_hosts) + borerwin = TRUE + to_chat(world, "There were [total_borers] borers alive at round end!") + to_chat(world, "A total of [total_borer_hosts] borers with hosts escaped on the shuttle alive. The borers needed [GLOB.total_borer_hosts_needed] hosts to escape.") + if(borerwin) + to_chat(world, "The borers were successful!") + else + to_chat(world, "The borers have failed!") + + CHECK_TICK + return 0 From 5f1fe8b8da249a1d7e08eccfc1d4f7455265c6de Mon Sep 17 00:00:00 2001 From: LetterJay Date: Fri, 9 Jun 2017 09:04:31 -0500 Subject: [PATCH 24/40] cleanup --- code/modules/admin/admin.dm.rej | 10 ---------- code/modules/admin/topic.dm | 8 ++++---- code/modules/admin/topic.dm.rej | 10 ---------- 3 files changed, 4 insertions(+), 24 deletions(-) delete mode 100644 code/modules/admin/admin.dm.rej delete mode 100644 code/modules/admin/topic.dm.rej diff --git a/code/modules/admin/admin.dm.rej b/code/modules/admin/admin.dm.rej deleted file mode 100644 index 39e86b0f03..0000000000 --- a/code/modules/admin/admin.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm (rejected hunks) -@@ -434,7 +434,7 @@ - if("Hard Restart (No Delay, No Feeback Reason)") - world.Reboot() - if("Hardest Restart (No actions, just reboot)") -- world.Reboot(fast_track = TRUE) -+ world.Reboot(fast_track = TRUE) - if("Service Restart (Force restart DD)") - GLOB.reboot_mode = REBOOT_MODE_HARD - world.ServiceReboot() diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 97bbfc0792..21e3961c64 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2239,7 +2239,7 @@ error_viewer.show_to(owner, null, href_list["viewruntime_linear"]) else if(href_list["showrelatedacc"]) var/client/C = locate(href_list["client"]) in GLOB.clients - var/list/thing_to_check + var/thing_to_check if(href_list["showrelatedacc"] == "cid") thing_to_check = C.related_accounts_cid else @@ -2247,8 +2247,8 @@ thing_to_check = splittext(thing_to_check, ", ") - var/list/dat = list("Related accounts by [uppertext(href_list["showrelatedacc"])]:") - dat += thing_to_check + var/list/dat = list("Related accounts by [uppertext(href_list["showrelatedacc"])]:") + dat += thing_to_check - usr << browse(dat.Join("
"), "window=related_[C];size=420x300") + usr << browse(dat.Join("
"), "window=related_[C];size=420x300") diff --git a/code/modules/admin/topic.dm.rej b/code/modules/admin/topic.dm.rej deleted file mode 100644 index 333acee487..0000000000 --- a/code/modules/admin/topic.dm.rej +++ /dev/null @@ -1,10 +0,0 @@ -diff a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm (rejected hunks) -@@ -2240,7 +2240,7 @@ - - else if(href_list["showrelatedacc"]) - var/client/C = locate(href_list["client"]) in GLOB.clients -- var/list/thing_to_check -+ var/thing_to_check - if(href_list["showrelatedacc"] == "cid") - thing_to_check = C.related_accounts_cid - else From 109c1e2ecbdaa81d5f70e433cfb63bd861742050 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 09:06:59 -0500 Subject: [PATCH 25/40] Automatic changelog generation for PR #1498 [ci skip] --- html/changelogs/AutoChangeLog-pr-1498.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1498.yml diff --git a/html/changelogs/AutoChangeLog-pr-1498.yml b/html/changelogs/AutoChangeLog-pr-1498.yml new file mode 100644 index 0000000000..08f8aaf02b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1498.yml @@ -0,0 +1,4 @@ +author: "oranges" +delete-after: True +changes: + - tweak: "Security minor and major crime descriptors are now a single line input, making it easier to add them" From e90145c4909b96747cf99dd194ce4e2a840b43fb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 09:10:09 -0500 Subject: [PATCH 26/40] Automatic changelog generation for PR #1327 [ci skip] --- html/changelogs/AutoChangeLog-pr-1327.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1327.yml diff --git a/html/changelogs/AutoChangeLog-pr-1327.yml b/html/changelogs/AutoChangeLog-pr-1327.yml new file mode 100644 index 0000000000..85eddc62fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1327.yml @@ -0,0 +1,5 @@ +author: "Goodstuff" +delete-after: True +changes: + - bugfix: "Fixes the crafting recipe for black carpet" + - bugfix: "Removed a random white dot on the black carpet sprite" From f5d219bc6bdacd1e7767f9b35054cd704b1cdb4d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 15:55:32 -0500 Subject: [PATCH 27/40] Automatic changelog generation for PR #1487 [ci skip] --- html/changelogs/AutoChangeLog-pr-1487.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1487.yml diff --git a/html/changelogs/AutoChangeLog-pr-1487.yml b/html/changelogs/AutoChangeLog-pr-1487.yml new file mode 100644 index 0000000000..eeed3b359b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1487.yml @@ -0,0 +1,4 @@ +author: "Xhuis" +delete-after: True +changes: + - tweak: "Defibrillator paddles will no longer stick to your hands, and will snap back onto the unit if you drop them somehow." From 3c0ceae3a447fe337470c5ba57fc02a0abb3b8ac Mon Sep 17 00:00:00 2001 From: deathride58 Date: Fri, 9 Jun 2017 20:24:19 -0400 Subject: [PATCH 28/40] fixes oof.ogg --- sound/voice/oof.ogg | Bin 9714 -> 6429 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/sound/voice/oof.ogg b/sound/voice/oof.ogg index dd0e7edee6fd66e940e911454b8cd066de3f6d27..8d686c0c69c4f81ab4d71124403d4e89e3c2154b 100644 GIT binary patch literal 6429 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 Date: Fri, 9 Jun 2017 20:08:42 -0500 Subject: [PATCH 29/40] Fixes communications consoles --- code/game/machinery/computer/communications.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 code/game/machinery/computer/communications.dm diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm old mode 100644 new mode 100755 index 605cd60ce6..8bfbbd1348 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -1,7 +1,7 @@ // The communications computer /obj/machinery/computer/communications name = "communications console" - desc = "This can be used for various important functions. Still under developement." + desc = "A console used for high-priority announcements and emergencies." icon_screen = "comm" icon_keyboard = "tech_key" req_access = list(GLOB.access_heads) From b2cc05b6b5687d0ffc7bedf03a336b9239c37cb1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 20:08:45 -0500 Subject: [PATCH 30/40] Makes dismembered heads and brains respect NOCLONE --- code/modules/mob/living/brain/brain_item.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm index aa9e133165..2ee3007bb1 100644 --- a/code/modules/mob/living/brain/brain_item.dm +++ b/code/modules/mob/living/brain/brain_item.dm @@ -72,6 +72,8 @@ if(!brainmob.stored_dna) brainmob.stored_dna = new /datum/dna/stored(brainmob) C.dna.copy_dna(brainmob.stored_dna) + if(L.disabilities & NOCLONE) + brainmob.disabilities |= NOCLONE //This is so you can't just decapitate a husked guy and clone them without needing to get a new body var/obj/item/organ/zombie_infection/ZI = L.getorganslot("zombie_infection") if(ZI) brainmob.set_species(ZI.old_species) //For if the brain is cloned From 9a8778b16f0a0e7c332e456c845f310992d3fd72 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 20:11:51 -0500 Subject: [PATCH 31/40] Adds /image/proc/copy_overlays --- .../subsystem/processing/overlays.dm | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/processing/overlays.dm b/code/controllers/subsystem/processing/overlays.dm index 4e1d2d64d5..c856ab165b 100644 --- a/code/controllers/subsystem/processing/overlays.dm +++ b/code/controllers/subsystem/processing/overlays.dm @@ -161,7 +161,7 @@ PROCESSING_SUBSYSTEM_DEF(overlays) if(NOT_QUEUED_ALREADY && need_compile) //have we caught more pokemon? QUEUE_FOR_COMPILE -/atom/proc/copy_overlays(atom/other, cut_old = FALSE) //copys our_overlays from another atom +/atom/proc/copy_overlays(atom/other, cut_old) //copys our_overlays from another atom if(!other) if(cut_old) cut_overlays() @@ -190,3 +190,18 @@ PROCESSING_SUBSYSTEM_DEF(overlays) /image/proc/cut_overlays(x) overlays.Cut() + +/image/proc/copy_overlays(atom/other, cut_old) + if(!other) + if(cut_old) + cut_overlays() + return + + var/list/cached_other = other.our_overlays + if(cached_other) + if(cut_old || !overlays.len) + overlays = cached_other.Copy() + else + overlays |= cached_other + else if(cut_old) + cut_overlays() From b1b39093e98ddf479b293b9558e749b8e07314ed Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Fri, 9 Jun 2017 20:27:10 -0500 Subject: [PATCH 32/40] Changes Amanitin log message --- code/modules/reagents/chemistry/reagents/toxin_reagents.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index cedec9941b..11db7e8d68 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -613,9 +613,8 @@ /datum/reagent/toxin/amanitin/on_mob_delete(mob/living/M) var/toxdamage = current_cycle*3*REM + M.log_message("has taken [toxdamage] toxin damage from amanitin toxin", INDIVIDUAL_ATTACK_LOG) M.adjustToxLoss(toxdamage) - if(M) - add_logs(M, get_turf(M), "has taken [toxdamage] toxin damage from amanitin toxin") ..() /datum/reagent/toxin/lipolicide From d8e6b4acc29b900a8ae56b0b4679d0c51fd8b153 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 10 Jun 2017 02:02:40 -0500 Subject: [PATCH 33/40] Polishes the glass tables --- icons/obj/smooth_structures/glass_table.dmi | Bin 1457 -> 2311 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/smooth_structures/glass_table.dmi b/icons/obj/smooth_structures/glass_table.dmi index 3fa90ea0642f513da6934618e89996cfa917b708..112499f3801c278984d96772135e84865553c51f 100644 GIT binary patch delta 2109 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 YUN$JTjOAqgUIrlWboFyt=akR{0Q}`bH2?qr From c474c3bb6e4d3fef068fb19a264e2980c16dab7c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 10 Jun 2017 07:57:36 -0500 Subject: [PATCH 34/40] Automatic changelog generation for PR #1516 [ci skip] --- html/changelogs/AutoChangeLog-pr-1516.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1516.yml diff --git a/html/changelogs/AutoChangeLog-pr-1516.yml b/html/changelogs/AutoChangeLog-pr-1516.yml new file mode 100644 index 0000000000..6bc4bf5372 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1516.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - imageadd: "Glass tables are shinier" From a583375bea7cedb20d38ded99747fbaf49045761 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 10 Jun 2017 07:58:39 -0500 Subject: [PATCH 35/40] Automatic changelog generation for PR #1513 [ci skip] --- html/changelogs/AutoChangeLog-pr-1513.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1513.yml diff --git a/html/changelogs/AutoChangeLog-pr-1513.yml b/html/changelogs/AutoChangeLog-pr-1513.yml new file mode 100644 index 0000000000..3066b9af93 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1513.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Cloning dismembered heads and brains now respects husking and other clone preventing disabilities." From 8a628cf13f2df0141cc87830f4d127ac9d5f4650 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 10 Jun 2017 09:00:08 -0500 Subject: [PATCH 36/40] Delete ties.dm --- code/modules/clothing/neck/ties.dm | 179 ----------------------------- 1 file changed, 179 deletions(-) delete mode 100644 code/modules/clothing/neck/ties.dm diff --git a/code/modules/clothing/neck/ties.dm b/code/modules/clothing/neck/ties.dm deleted file mode 100644 index 3affebc270..0000000000 --- a/code/modules/clothing/neck/ties.dm +++ /dev/null @@ -1,179 +0,0 @@ -/obj/item/clothing/neck/tie - name = "tie" - desc = "A neosilk clip-on tie." - icon = 'icons/obj/clothing/neck.dmi' - icon_state = "bluetie" - item_state = "" //no inhands - item_color = "bluetie" - w_class = WEIGHT_CLASS_SMALL - -/obj/item/clothing/neck/tie/blue - name = "blue tie" - icon_state = "bluetie" - item_color = "bluetie" - -/obj/item/clothing/neck/tie/red - name = "red tie" - icon_state = "redtie" - item_color = "redtie" - -/obj/item/clothing/neck/tie/black - name = "black tie" - icon_state = "blacktie" - item_color = "blacktie" - -/obj/item/clothing/neck/tie/horrible - name = "horrible tie" - desc = "A neosilk clip-on tie. This one is disgusting." - icon_state = "horribletie" - item_color = "horribletie" - -/obj/item/clothing/neck/stethoscope - name = "stethoscope" - desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing." - icon_state = "stethoscope" - item_color = "stethoscope" - -/obj/item/clothing/neck/stethoscope/attack(mob/living/carbon/human/M, mob/living/user) - if(ishuman(M) && isliving(user)) - if(user.a_intent == INTENT_HELP) - var/body_part = parse_zone(user.zone_selected) - - var/heart_strength = "no" - var/lung_strength = "no" - - var/obj/item/organ/heart/heart = M.getorganslot("heart") - var/obj/item/organ/lungs/lungs = M.getorganslot("lungs") - - if(!(M.stat == DEAD || (M.status_flags&FAKEDEATH))) - if(heart && istype(heart)) - heart_strength = "an unstable" - if(heart.beating) - heart_strength = "a healthy" - if(lungs && istype(lungs)) - lung_strength = "strained" - if(!(M.failed_last_breath || M.losebreath)) - lung_strength = "healthy" - - var/diagnosis = (body_part == "chest" ? "You hear [heart_strength] pulse and [lung_strength] respiration." : "You faintly hear [heart_strength] pulse.") - user.visible_message("[user] places [src] against [M]'s [body_part] and listens attentively.", "You place [src] against [M]'s [body_part]. [diagnosis]") - return - return ..(M,user) - -/////////// -//SCARVES// -/////////// - -/obj/item/clothing/neck/scarf //Default white color, same functionality as beanies. - name = "white scarf" - icon_state = "scarf" - desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks." - item_color = "scarf" - dog_fashion = /datum/dog_fashion/head - -/obj/item/clothing/neck/scarf/black - name = "black scarf" - icon_state = "scarf" - color = "#4A4A4B" //Grey but it looks black - -/obj/item/clothing/neck/scarf/red - name = "red scarf" - icon_state = "scarf" - color = "#D91414" //Red - -/obj/item/clothing/neck/scarf/green - name = "green scarf" - icon_state = "scarf" - color = "#5C9E54" //Green - -/obj/item/clothing/neck/scarf/darkblue - name = "dark blue scarf" - icon_state = "scarf" - color = "#1E85BC" //Blue - -/obj/item/clothing/neck/scarf/purple - name = "purple scarf" - icon_state = "scarf" - color = "#9557C5" //purple - -/obj/item/clothing/neck/scarf/yellow - name = "yellow scarf" - icon_state = "scarf" - color = "#E0C14F" //Yellow - -/obj/item/clothing/neck/scarf/orange - name = "orange scarf" - icon_state = "scarf" - color = "#C67A4B" //orange - -/obj/item/clothing/neck/scarf/cyan - name = "cyan scarf" - icon_state = "scarf" - color = "#54A3CE" //Cyan - - -//Striped scarves get their own icons - -/obj/item/clothing/neck/scarf/zebra - name = "zebra scarf" - icon_state = "zebrascarf" - item_color = "zebrascarf" - -/obj/item/clothing/neck/scarf/christmas - name = "christmas scarf" - icon_state = "christmasscarf" - item_color = "christmasscarf" - -//The three following scarves don't have the scarf subtype -//This is because Ian can equip anything from that subtype -//However, these 3 don't have corgi versions of their sprites -/obj/item/clothing/neck/stripedredscarf - name = "striped red scarf" - icon_state = "stripedredscarf" - item_color = "stripedredscarf" - -/obj/item/clothing/neck/stripedgreenscarf - name = "striped green scarf" - icon_state = "stripedgreenscarf" - item_color = "stripedgreenscarf" - -/obj/item/clothing/neck/stripedbluescarf - name = "striped blue scarf" - icon_state = "stripedbluescarf" - item_color = "stripedbluescarf" - -/obj/item/clothing/neck/petcollar //don't really wear this though please c'mon seriously guys - name = "pet collar" - desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule." - icon_state = "petcollar" - item_color = "petcollar" - var/tagname = null - -/obj/item/clothing/neck/petcollar/attack_self(mob/user) - tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN) - name = "[initial(name)] - [tagname]" - -////////////// -//DOPE BLING// -////////////// - -/obj/item/clothing/neck/necklace/dope - name = "gold necklace" - desc = "Damn, it feels good to be a gangster." - icon = 'icons/obj/clothing/ties.dmi' - icon_state = "bling" - item_color = "bling" - -/obj/item/clothing/neck/necklace/dope/gang_contraband_value() - return 2 - -//////////////// -//OONGA BOONGA// -//////////////// - -/obj/item/clothing/neck/talisman - name = "bone talisman" - desc = "A hunter's talisman, some say the old gods smile on those who wear it." - icon_state = "talisman" - item_color = "talisman" - armor = list(melee = 5, bullet = 5, laser = 5, energy = 5, bomb = 20, bio = 20, rad = 5, fire = 0, acid = 25) \ No newline at end of file From 8a1c8f70b54302571767026857b23730e7de3a33 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 10 Jun 2017 09:01:26 -0500 Subject: [PATCH 37/40] Automatic changelog generation for PR #1445 [ci skip] --- html/changelogs/AutoChangeLog-pr-1445.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1445.yml diff --git a/html/changelogs/AutoChangeLog-pr-1445.yml b/html/changelogs/AutoChangeLog-pr-1445.yml new file mode 100644 index 0000000000..960d3366f3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1445.yml @@ -0,0 +1,11 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - rscadd: "New plasma medals have been added to the Captain's medal box. Don't get them too warm." + - imageadd: "New sprites for plasma medals." + - imageadd: "Icon and worn sprites for all medals and the lawyer's badge have been improved. Worn medals more closely match their icons." + - tweak: "The bone talisman is an accessory again, so it's not useless." + - imageadd: "It also has a new worn sprite, based on an arm band." + - imagedel: "Ties have been removed from accessories.dmi and vice versa. Same for +the explorer's webbing sprites that were in there. ties.dmi is now neck.dmi, and has sprites for scarves, ties, sthetoscopes, etc." + - tweak: "Examining an accessory now tells you how to use it." From 82c34cca96b25648cfe514adaa2c5f141232e3f7 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 10 Jun 2017 09:09:53 -0500 Subject: [PATCH 38/40] update master --- tgstation.dme | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tgstation.dme b/tgstation.dme index 0d035a36f3..20fd6d126b 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1209,7 +1209,7 @@ #include "code\modules\clothing\masks\hailer.dm" #include "code\modules\clothing\masks\miscellaneous.dm" #include "code\modules\clothing\masks\vg_masks.dm" -#include "code\modules\clothing\neck\ties.dm" +#include "code\modules\clothing\neck\neck.dm" #include "code\modules\clothing\outfits\ert.dm" #include "code\modules\clothing\outfits\standard.dm" #include "code\modules\clothing\shoes\bananashoes.dm" @@ -1234,6 +1234,7 @@ #include "code\modules\clothing\suits\utility.dm" #include "code\modules\clothing\suits\vg_suits.dm" #include "code\modules\clothing\suits\wiz_robe.dm" +#include "code\modules\clothing\under\accessories.dm" #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\pants.dm" @@ -1494,8 +1495,8 @@ #include "code\modules\mining\equipment\lazarus_injector.dm" #include "code\modules\mining\equipment\marker_beacons.dm" #include "code\modules\mining\equipment\mineral_scanner.dm" -#include "code\modules\mining\equipment\regenerative_core.dm" #include "code\modules\mining\equipment\mining_tools.dm" +#include "code\modules\mining\equipment\regenerative_core.dm" #include "code\modules\mining\equipment\resonator.dm" #include "code\modules\mining\equipment\survival_pod.dm" #include "code\modules\mining\equipment\vendor_items.dm" From 700004e309eb20e099b16c2fc52063d12d983c9d Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 10 Jun 2017 09:24:03 -0500 Subject: [PATCH 39/40] Update lockbox.dm --- .../objects/items/weapons/storage/lockbox.dm | 256 ++++++++++-------- 1 file changed, 147 insertions(+), 109 deletions(-) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 8902a1f4f6..94f34e0e3b 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -1,119 +1,157 @@ -/obj/item/weapon/storage/lockbox - name = "lockbox" - desc = "A locked box." - icon_state = "lockbox+l" - item_state = "syringe_kit" - w_class = WEIGHT_CLASS_BULKY - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. - storage_slots = 4 - req_access = list(GLOB.access_armory) - var/locked = 1 - var/broken = 0 - var/icon_locked = "lockbox+l" - var/icon_closed = "lockbox" - var/icon_broken = "lockbox+b" - - -/obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W, mob/user, params) - if(W.GetID()) - if(broken) - to_chat(user, "It appears to be broken.") - return - if(allowed(user)) - locked = !locked - if(locked) - icon_state = icon_locked - to_chat(user, "You lock the [src.name]!") - close_all() - return - else - icon_state = icon_closed - to_chat(user, "You unlock the [src.name]!") - return - else - to_chat(user, "Access Denied.") - return - if(!locked) - return ..() - else - to_chat(user, "It's locked!") - -/obj/item/weapon/storage/lockbox/MouseDrop(over_object, src_location, over_location) - if (locked) - src.add_fingerprint(usr) - to_chat(usr, "It's locked!") - return 0 - ..() - -/obj/item/weapon/storage/lockbox/emag_act(mob/user) - if(!broken) - broken = 1 - locked = 0 - desc += "It appears to be broken." - icon_state = src.icon_broken - if(user) - visible_message("\The [src] has been broken by [user] with an electromagnetic card!") - return -/obj/item/weapon/storage/lockbox/show_to(mob/user) - if(locked) - to_chat(user, "It's locked!") - else - ..() - return - -//Check the destination item type for contentto. -/obj/item/weapon/storage/lockbox/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) - if(locked) - to_chat(user, "It's locked!") - return 0 - return ..() - -/obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0) - if(locked) - return 0 - return ..() - -/obj/item/weapon/storage/lockbox/loyalty - name = "lockbox of mindshield implants" - req_access = list(GLOB.access_security) - -/obj/item/weapon/storage/lockbox/loyalty/PopulateContents() - for(var/i in 1 to 3) - new /obj/item/weapon/implantcase/mindshield(src) - new /obj/item/weapon/implanter/mindshield(src) - - -/obj/item/weapon/storage/lockbox/clusterbang - name = "lockbox of clusterbangs" - desc = "You have a bad feeling about opening this." - req_access = list(GLOB.access_security) - -/obj/item/weapon/storage/lockbox/clusterbang/PopulateContents() - new /obj/item/weapon/grenade/clusterbuster(src) - -/obj/item/weapon/storage/lockbox/medal - name = "medal box" - desc = "A locked box used to store medals of honor." - icon_state = "medalbox+l" - item_state = "syringe_kit" - w_class = WEIGHT_CLASS_NORMAL - max_w_class = WEIGHT_CLASS_SMALL - storage_slots = 10 +/obj/item/weapon/storage/lockbox + name = "lockbox" + desc = "A locked box." + icon_state = "lockbox+l" + item_state = "syringe_kit" + w_class = WEIGHT_CLASS_BULKY + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 14 //The sum of the w_classes of all the items in this storage item. + storage_slots = 4 + req_access = list(GLOB.access_armory) + var/locked = 1 + var/broken = 0 + var/icon_locked = "lockbox+l" + var/icon_closed = "lockbox" + var/icon_broken = "lockbox+b" + + +/obj/item/weapon/storage/lockbox/attackby(obj/item/weapon/W, mob/user, params) + if(W.GetID()) + if(broken) + to_chat(user, "It appears to be broken.") + return + if(allowed(user)) + locked = !locked + if(locked) + icon_state = icon_locked + to_chat(user, "You lock the [src.name]!") + close_all() + return + else + icon_state = icon_closed + to_chat(user, "You unlock the [src.name]!") + return + else + to_chat(user, "Access Denied.") + return + if(!locked) + return ..() + else + to_chat(user, "It's locked!") + +/obj/item/weapon/storage/lockbox/MouseDrop(over_object, src_location, over_location) + if (locked) + src.add_fingerprint(usr) + to_chat(usr, "It's locked!") + return 0 + ..() + +/obj/item/weapon/storage/lockbox/emag_act(mob/user) + if(!broken) + broken = 1 + locked = 0 + desc += "It appears to be broken." + icon_state = src.icon_broken + if(user) + visible_message("\The [src] has been broken by [user] with an electromagnetic card!") + return +/obj/item/weapon/storage/lockbox/show_to(mob/user) + if(locked) + to_chat(user, "It's locked!") + else + ..() + return + +//Check the destination item type for contentto. +/obj/item/weapon/storage/lockbox/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) + if(locked) + to_chat(user, "It's locked!") + return 0 + return ..() + +/obj/item/weapon/storage/lockbox/can_be_inserted(obj/item/W, stop_messages = 0) + if(locked) + return 0 + return ..() + +/obj/item/weapon/storage/lockbox/loyalty + name = "lockbox of mindshield implants" + req_access = list(GLOB.access_security) + +/obj/item/weapon/storage/lockbox/loyalty/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/weapon/implantcase/mindshield(src) + new /obj/item/weapon/implanter/mindshield(src) + + +/obj/item/weapon/storage/lockbox/clusterbang + name = "lockbox of clusterbangs" + desc = "You have a bad feeling about opening this." + req_access = list(GLOB.access_security) + +/obj/item/weapon/storage/lockbox/clusterbang/PopulateContents() + new /obj/item/weapon/grenade/clusterbuster(src) + +/obj/item/weapon/storage/lockbox/medal + name = "medal box" + desc = "A locked box used to store medals of honor." + icon_state = "medalbox+l" + item_state = "syringe_kit" + w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_SMALL + storage_slots = 10 max_combined_w_class = 20 - req_access = list(GLOB.access_captain) - icon_locked = "medalbox+l" - icon_closed = "medalbox" - icon_broken = "medalbox+b" + req_access = list(GLOB.access_captain) + icon_locked = "medalbox+l" + icon_closed = "medalbox" + icon_broken = "medalbox+b" can_hold = list(/obj/item/clothing/accessory/medal) - -/obj/item/weapon/storage/lockbox/medal/PopulateContents() + +/obj/item/weapon/storage/lockbox/medal/PopulateContents() new /obj/item/clothing/accessory/medal/silver/valor(src) new /obj/item/clothing/accessory/medal/bronze_heart(src) - for(var/i in 1 to 3) + for(var/i in 1 to 3) new /obj/item/clothing/accessory/medal/conduct(src) new /obj/item/clothing/accessory/medal/gold/captain(src) new /obj/item/clothing/accessory/medal/silver/security(src) new /obj/item/clothing/accessory/medal/plasma(src) new /obj/item/clothing/accessory/medal/plasma/nobel_science(src) new /obj/item/clothing/accessory/medal/gold/heroism(src) + +/obj/item/weapon/storage/lockbox/secmedal + name = "security medal box" + desc = "A locked box used to store medals to be given to members of the security department." + icon_state = "medalbox+l" + item_state = "syringe_kit" + w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_SMALL + storage_slots = 10 + max_combined_w_class = 20 + req_access = list(GLOB.access_hos) + icon_locked = "medalbox+l" + icon_closed = "medalbox" + icon_broken = "medalbox+b" + can_hold = list(/obj/item/clothing/accessory/medal) + +/obj/item/weapon/storage/lockbox/secmedal/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/clothing/accessory/medal/silver/security(src) + +/obj/item/weapon/storage/lockbox/scimedal + name = "science medal box" + desc = "A locked box used to store medals to be given to members of the science department." + icon_state = "medalbox+l" + item_state = "syringe_kit" + w_class = WEIGHT_CLASS_NORMAL + max_w_class = WEIGHT_CLASS_SMALL + storage_slots = 10 + max_combined_w_class = 20 + req_access = list(GLOB.access_rd) + icon_locked = "medalbox+l" + icon_closed = "medalbox" + icon_broken = "medalbox+b" + can_hold = list(/obj/item/clothing/accessory/medal) + +/obj/item/weapon/storage/lockbox/scimedal/PopulateContents() + for(var/i in 1 to 3) + new /obj/item/clothing/accessory/medal/plasma/nobel_science(src) From 522b6d917f709c1c091eae8b2b16717263312f55 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 10 Jun 2017 09:36:39 -0500 Subject: [PATCH 40/40] updates --- .../closets/secure/scientist.dm | 1 + .../crates_lockers/closets/secure/security.dm | 16 +- code/modules/clothing/under/ties.dm | 230 ------------------ tgstation.dme | 1 - 4 files changed, 10 insertions(+), 238 deletions(-) delete mode 100644 code/modules/clothing/under/ties.dm diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index 684ba9af55..feee04d56e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -24,3 +24,4 @@ new /obj/item/device/laser_pointer(src) new /obj/item/weapon/door_remote/research_director(src) new /obj/item/weapon/storage/box/firingpins(src) + new /obj/item/weapon/storage/lockbox/scimedal(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index d49241ff80..4934636948 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -11,7 +11,7 @@ else new /obj/item/weapon/storage/backpack/satchel/cap(src) new /obj/item/clothing/neck/cloak/cap(src) - new /obj/item/weapon/storage/daki(src) + new /obj/item/weapon/storage/daki(src) new /obj/item/weapon/storage/backpack/dufflebag/captain(src) new /obj/item/clothing/head/crown/fancy(src) new /obj/item/clothing/suit/captunic(src) @@ -83,6 +83,8 @@ new /obj/item/weapon/gun/energy/e_gun/hos(src) new /obj/item/device/flashlight/seclite(src) new /obj/item/weapon/pinpointer(src) + new /obj/item/clothing/under/rank/head_of_security/grey(src) + new /obj/item/weapon/storage/lockbox/secmedal(src) /obj/structure/closet/secure_closet/warden name = "\proper warden's locker" @@ -106,7 +108,7 @@ new /obj/item/device/flashlight/seclite(src) new /obj/item/clothing/gloves/krav_maga/sec(src) new /obj/item/weapon/door_remote/head_of_security(src) - new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src) + new /obj/item/weapon/gun/ballistic/shotgun/automatic/combat/compact(src) /obj/structure/closet/secure_closet/security name = "security officer's locker" @@ -132,28 +134,28 @@ /obj/structure/closet/secure_closet/security/cargo/PopulateContents() ..() - new /obj/item/clothing/accessory/armband/cargo(src) + new /obj/item/clothing/accessory/armband/cargo(src) new /obj/item/device/encryptionkey/headset_cargo(src) /obj/structure/closet/secure_closet/security/engine /obj/structure/closet/secure_closet/security/engine/PopulateContents() ..() - new /obj/item/clothing/accessory/armband/engine(src) + new /obj/item/clothing/accessory/armband/engine(src) new /obj/item/device/encryptionkey/headset_eng(src) /obj/structure/closet/secure_closet/security/science /obj/structure/closet/secure_closet/security/science/PopulateContents() ..() - new /obj/item/clothing/accessory/armband/science(src) + new /obj/item/clothing/accessory/armband/science(src) new /obj/item/device/encryptionkey/headset_sci(src) /obj/structure/closet/secure_closet/security/med /obj/structure/closet/secure_closet/security/med/PopulateContents() ..() - new /obj/item/clothing/accessory/armband/medblue(src) + new /obj/item/clothing/accessory/armband/medblue(src) new /obj/item/device/encryptionkey/headset_med(src) /obj/structure/closet/secure_closet/detective @@ -171,7 +173,7 @@ new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/under/rank/det/grey(src) - new /obj/item/clothing/accessory/waistcoat(src) + new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/suit/det_suit/grey(src) new /obj/item/clothing/head/fedora(src) new /obj/item/clothing/shoes/laceup(src) diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm deleted file mode 100644 index fcc8472834..0000000000 --- a/code/modules/clothing/under/ties.dm +++ /dev/null @@ -1,230 +0,0 @@ -/obj/item/clothing/accessory //Ties moved to neck slot items, but as there are still things like medals and armbands, this accessory system is being kept as-is - name = "tie" - desc = "A neosilk clip-on tie." - icon = 'icons/obj/clothing/ties.dmi' - icon_state = "bluetie" - item_state = "" //no inhands - item_color = "bluetie" - slot_flags = 0 - w_class = WEIGHT_CLASS_SMALL - var/minimize_when_attached = TRUE // TRUE if shown as a small icon in corner, FALSE if overlayed - -/obj/item/clothing/accessory/proc/attach(obj/item/clothing/under/U, user) - if(pockets) // Attach storage to jumpsuit - if(U.pockets) // storage items conflict - return 0 - - pockets.loc = U - U.pockets = pockets - - U.hastie = src - loc = U - layer = FLOAT_LAYER - plane = FLOAT_PLANE - if(minimize_when_attached) - transform *= 0.5 //halve the size so it doesn't overpower the under - pixel_x += 8 - pixel_y -= 8 - U.add_overlay(src) - - for(var/armor_type in armor) - U.armor[armor_type] += armor[armor_type] - - return 1 - - -/obj/item/clothing/accessory/proc/detach(obj/item/clothing/under/U, user) - if(pockets && pockets == U.pockets) - pockets.loc = src - U.pockets = null - - for(var/armor_type in armor) - U.armor[armor_type] -= armor[armor_type] - - if(minimize_when_attached) - transform *= 2 - pixel_x -= 8 - pixel_y += 8 - layer = initial(layer) - plane = initial(plane) - U.cut_overlays() - U.hastie = null - -/obj/item/clothing/accessory/proc/on_uniform_equip(obj/item/clothing/under/U, user) - return - -/obj/item/clothing/accessory/proc/on_uniform_dropped(obj/item/clothing/under/U, user) - return - -/obj/item/clothing/accessory/waistcoat - name = "waistcoat" - desc = "For some classy, murderous fun." - icon_state = "waistcoat" - item_state = "waistcoat" - item_color = "waistcoat" - minimize_when_attached = FALSE - -////////// -//Medals// -////////// - -/obj/item/clothing/accessory/medal - name = "bronze medal" - desc = "A bronze medal." - icon_state = "bronze" - item_color = "bronze" - materials = list(MAT_METAL=1000) - resistance_flags = FIRE_PROOF - -//Pinning medals on people -/obj/item/clothing/accessory/medal/attack(mob/living/carbon/human/M, mob/living/user) - if(ishuman(M) && (user.a_intent == INTENT_HELP)) - - if(M.wear_suit) - if((M.wear_suit.flags_inv & HIDEJUMPSUIT)) //Check if the jumpsuit is covered - to_chat(user, "Medals can only be pinned on jumpsuits.") - return - - if(M.w_uniform) - var/obj/item/clothing/under/U = M.w_uniform - var/delay = 20 - if(user == M) - delay = 0 - else - user.visible_message("[user] is trying to pin [src] on [M]'s chest.", \ - "You try to pin [src] on [M]'s chest.") - if(do_after(user, delay, target = M)) - if(U.attachTie(src, user, 0)) //Attach it, do not notify the user of the attachment - if(user == M) - to_chat(user, "You attach [src] to [U].") - else - user.visible_message("[user] pins \the [src] on [M]'s chest.", \ - "You pin \the [src] on [M]'s chest.") - - else to_chat(user, "Medals can only be pinned on jumpsuits!") - else ..() - -/obj/item/clothing/accessory/medal/conduct - name = "distinguished conduct medal" - desc = "A bronze medal awarded for distinguished conduct. Whilst a great honor, this is the most basic award given by Nanotrasen. It is often awarded by a captain to a member of his crew." - -/obj/item/clothing/accessory/medal/bronze_heart - name = "bronze heart medal" - desc = "A bronze heart-shaped medal awarded for sacrifice. It is often awarded posthumously or for severe injury in the line of duty." - icon_state = "bronze_heart" - -/obj/item/clothing/accessory/medal/nobel_science - name = "nobel sciences award" - desc = "A bronze medal which represents significant contributions to the field of science or engineering." - -/obj/item/clothing/accessory/medal/silver - name = "silver medal" - desc = "A silver medal." - icon_state = "silver" - item_color = "silver" - materials = list(MAT_SILVER=1000) - -/obj/item/clothing/accessory/medal/silver/valor - name = "medal of valor" - desc = "A silver medal awarded for acts of exceptional valor." - -/obj/item/clothing/accessory/medal/silver/security - name = "robust security award" - desc = "An award for distinguished combat and sacrifice in defence of Nanotrasen's commercial interests. Often awarded to security staff." - -/obj/item/clothing/accessory/medal/gold - name = "gold medal" - desc = "A prestigious golden medal." - icon_state = "gold" - item_color = "gold" - materials = list(MAT_GOLD=1000) - -/obj/item/clothing/accessory/medal/gold/captain - name = "medal of captaincy" - desc = "A golden medal awarded exclusively to those promoted to the rank of captain. It signifies the codified responsibilities of a captain to Nanotrasen, and their undisputable authority over their crew." - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - -/obj/item/clothing/accessory/medal/gold/heroism - name = "medal of exceptional heroism" - desc = "An extremely rare golden medal awarded only by Centcom. To receive such a medal is the highest honor and as such, very few exist. This medal is almost never awarded to anybody but commanders." - -//////////// -//Armbands// -//////////// - -/obj/item/clothing/accessory/armband - name = "red armband" - desc = "An fancy red armband!" - icon_state = "redband" - item_color = "redband" - -/obj/item/clothing/accessory/armband/deputy - name = "security deputy armband" - desc = "An armband, worn by personnel authorized to act as a deputy of station security." - -/obj/item/clothing/accessory/armband/cargo - name = "cargo bay guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is brown." - icon_state = "cargoband" - item_color = "cargoband" - -/obj/item/clothing/accessory/armband/engine - name = "engineering guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is orange with a reflective strip!" - icon_state = "engieband" - item_color = "engieband" - -/obj/item/clothing/accessory/armband/science - name = "science guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is purple." - icon_state = "rndband" - item_color = "rndband" - -/obj/item/clothing/accessory/armband/hydro - name = "hydroponics guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is green and blue." - icon_state = "hydroband" - item_color = "hydroband" - -/obj/item/clothing/accessory/armband/med - name = "medical guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white." - icon_state = "medband" - item_color = "medband" - -/obj/item/clothing/accessory/armband/medblue - name = "medical guard armband" - desc = "An armband, worn by the station's security forces to display which department they're assigned to. This one is white and blue." - icon_state = "medblueband" - item_color = "medblueband" - -////////////// -//OBJECTION!// -////////////// - -/obj/item/clothing/accessory/lawyers_badge - name = "attorney's badge" - desc = "Fills you with the conviction of JUSTICE. Lawyers tend to want to show it to everyone they meet." - icon_state = "lawyerbadge" - item_color = "lawyerbadge" - -/obj/item/clothing/accessory/lawyers_badge/attach(obj/item/clothing/under/U, user) - if(!..()) - return 0 - if(isliving(U.loc)) - on_uniform_equip(U, user) - -/obj/item/clothing/accessory/lawyers_badge/detach(obj/item/clothing/under/U, user) - ..() - if(isliving(U.loc)) - on_uniform_dropped(U, user) - -/obj/item/clothing/accessory/lawyers_badge/on_uniform_equip(obj/item/clothing/under/U, user) - var/mob/living/L = user - if(L) - L.bubble_icon = "lawyer" - -/obj/item/clothing/accessory/lawyers_badge/on_uniform_dropped(obj/item/clothing/under/U, user) - var/mob/living/L = user - if(L) - L.bubble_icon = initial(L.bubble_icon) diff --git a/tgstation.dme b/tgstation.dme index 20fd6d126b..792fbf7f0d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1240,7 +1240,6 @@ #include "code\modules\clothing\under\pants.dm" #include "code\modules\clothing\under\shorts.dm" #include "code\modules\clothing\under\syndicate.dm" -#include "code\modules\clothing\under\ties.dm" #include "code\modules\clothing\under\trek.dm" #include "code\modules\clothing\under\vg_under.dm" #include "code\modules\clothing\under\jobs\civilian.dm"