diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 7859d735d6..201418eba1 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -41663,7 +41663,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, /turf/open/floor/plasteel/white/corner, @@ -44797,7 +44797,7 @@ /area/engine/engineering) "ccy" = ( /obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, /turf/open/floor/plasteel, @@ -45150,7 +45150,7 @@ "cdB" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, /turf/open/floor/plating, @@ -54054,6 +54054,13 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) +"emX" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors) "ene" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -55773,6 +55780,12 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/pool) +"iBR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -56517,6 +56530,12 @@ /obj/structure/window, /turf/open/floor/wood, /area/crew_quarters/bar) +"krn" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors) "ksp" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/closed/wall, @@ -57370,6 +57389,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"mAU" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, +/turf/open/floor/plating/asteroid/snow/icemoon, +/area/icemoon/surface/outdoors) "mCy" = ( /obj/machinery/space_heater{ anchored = 1 @@ -97640,14 +97666,14 @@ bFJ bvd bKH bzs -avm -ayF -avm -ayF -avB -ayF -avm -ayF +iBR +avx +mAU +avx +emX +avx +mAU +krn avB awd awe diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 747db3d6ce..ed5104e296 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -391,16 +391,6 @@ /mob/living/carbon/human/proc/hardset_dna(ui, list/mutation_index, newreal_name, newblood_type, datum/species/mrace, newfeatures) - if(newfeatures) - var/old_size = dna.features["body_size"] - dna.features = newfeatures - dna.update_body_size(old_size) - - if(mrace) - var/datum/species/newrace = new mrace.type - newrace.copy_properties_from(mrace) - set_species(newrace, icon_update=0) - if(newreal_name) real_name = newreal_name dna.generate_unique_enzymes() @@ -410,7 +400,17 @@ if(ui) dna.uni_identity = ui - updateappearance(icon_update=0) + updateappearance(icon_update=FALSE) + + if(newfeatures) + var/old_size = dna.features["body_size"] + dna.features = newfeatures + dna.update_body_size(old_size) + + if(mrace) + var/datum/species/newrace = new mrace.type + newrace.copy_properties_from(mrace) + set_species(newrace, icon_update=FALSE) if(LAZYLEN(mutation_index)) dna.mutation_index = mutation_index.Copy() diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm index 997c77aa51..19b2b8dda8 100644 --- a/code/datums/wires/apc.dm +++ b/code/datums/wires/apc.dm @@ -30,6 +30,7 @@ if(WIRE_POWER1, WIRE_POWER2) // Short for a long while. if(!A.shorted) A.shorted = TRUE + A.update() addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200) if(WIRE_IDSCAN) // Unlock for a little while. A.locked = FALSE @@ -49,6 +50,7 @@ else A.shorted = TRUE A.shock(usr, 50) + A.update() if(WIRE_AI) // Disable AI control. if(mend) A.aidisabled = FALSE diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 67113fcf78..a2d3cccc35 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -70,14 +70,13 @@ if(W.amount < 5) to_chat(user, "You need at least five wooden planks to make a wall!") return - else - to_chat(user, "You start adding [I] to [src]...") - if(do_after(user, 50, target=src)) - W.use(5) - var/turf/T = get_turf(src) - T.PlaceOnTop(/turf/closed/wall/mineral/wood/nonmetal) - qdel(src) - return + to_chat(user, "You start adding [I] to [src]...") + if(do_after(user, 50, target=src)) + W.use(5) + var/turf/T = get_turf(src) + T.PlaceOnTop(/turf/closed/wall/mineral/wood/nonmetal) + qdel(src) + return return ..() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 4c12809184..2a45267c65 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -470,15 +470,15 @@ if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) if(obj_integrity < integrity_failure * max_integrity) - damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) else if(obj_integrity < (0.75 * max_integrity)) - damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(lights && hasPower()) if(locked) - lights_overlay = get_airlock_overlay("lights_bolts", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + lights_overlay = get_airlock_overlay("lights_bolts", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) else if(emergency) - lights_overlay = get_airlock_overlay("lights_emergency", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + lights_overlay = get_airlock_overlay("lights_emergency", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(note) note_overlay = get_airlock_overlay(notetype, note_overlay_file) @@ -496,18 +496,18 @@ else panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(obj_integrity < integrity_failure * max_integrity) - damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) else if(obj_integrity < (0.75 * max_integrity)) - damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) - lights_overlay = get_airlock_overlay("lights_denied", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + lights_overlay = get_airlock_overlay("lights_denied", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(note) note_overlay = get_airlock_overlay(notetype, note_overlay_file) if(AIRLOCK_EMAG) frame_overlay = get_airlock_overlay("closed", icon) - sparks_overlay = get_airlock_overlay("sparks", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + sparks_overlay = get_airlock_overlay("sparks", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(airlock_material) filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file) else @@ -518,9 +518,9 @@ else panel_overlay = get_airlock_overlay("panel_closed", overlays_file) if(obj_integrity < integrity_failure * max_integrity) - damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_broken", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) else if(obj_integrity < (0.75 * max_integrity)) - damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_damaged", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(welded) weld_overlay = get_airlock_overlay("welded", overlays_file) if(note) @@ -533,7 +533,7 @@ else filling_overlay = get_airlock_overlay("fill_closing", icon) if(lights && hasPower()) - lights_overlay = get_airlock_overlay("lights_closing", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + lights_overlay = get_airlock_overlay("lights_closing", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(panel_open) if(security_level) panel_overlay = get_airlock_overlay("panel_closing_protected", overlays_file) @@ -554,7 +554,7 @@ else panel_overlay = get_airlock_overlay("panel_open", overlays_file) if(obj_integrity < (0.75 * max_integrity)) - damag_overlay = get_airlock_overlay("sparks_open", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + damag_overlay = get_airlock_overlay("sparks_open", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(note) note_overlay = get_airlock_overlay("[notetype]_open", note_overlay_file) @@ -565,7 +565,7 @@ else filling_overlay = get_airlock_overlay("fill_opening", icon) if(lights && hasPower()) - lights_overlay = get_airlock_overlay("lights_opening", overlays_file, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE) + lights_overlay = get_airlock_overlay("lights_opening", overlays_file, ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE) if(panel_open) if(security_level) panel_overlay = get_airlock_overlay("panel_opening_protected", overlays_file) @@ -577,11 +577,17 @@ cut_overlays() add_overlay(frame_overlay) add_overlay(filling_overlay) - add_overlay(lights_overlay) + if(lights_overlay) + add_overlay(lights_overlay) + var/mutable_appearance/lights_vis = mutable_appearance(lights_overlay.icon, lights_overlay.icon_state) + add_overlay(lights_vis) add_overlay(panel_overlay) add_overlay(weld_overlay) add_overlay(sparks_overlay) - add_overlay(damag_overlay) + if(damag_overlay) + add_overlay(damag_overlay) + var/mutable_appearance/damage_vis = mutable_appearance(damag_overlay.icon, damag_overlay.icon_state) + add_overlay(damage_vis) add_overlay(note_overlay) check_unres() diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index 5b332cda46..7450cb937c 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -99,7 +99,7 @@ if(href_list["reset_radio_short"]) pai.unshort_radio() if(href_list["setlaws"]) - var/newlaws = stripped_multiline_input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", MAX_MESSAGE_LEN) + var/newlaws = stripped_multiline_input(usr, "Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", "", MAX_MESSAGE_LEN) if(newlaws && pai) pai.add_supplied_law(0,newlaws) if(href_list["toggle_holo"]) diff --git a/code/game/objects/items/implants/implant_abductor.dm b/code/game/objects/items/implants/implant_abductor.dm index 0c50beadea..e0765e7951 100644 --- a/code/game/objects/items/implants/implant_abductor.dm +++ b/code/game/objects/items/implants/implant_abductor.dm @@ -5,36 +5,30 @@ icon_state = "implant" activated = 1 var/obj/machinery/abductor/pad/home - var/cooldown = 30 + var/next_use = 0 /obj/item/implant/abductor/activate() . = ..() - if(cooldown == initial(cooldown)) + if(next_use <= world.time) home.Retrieve(imp_in,1) - cooldown = 0 - START_PROCESSING(SSobj, src) + next_use = world.time + 60 SECONDS else - to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!") - -/obj/item/implant/abductor/process() - if(cooldown < initial(cooldown)) - cooldown++ - if(cooldown == initial(cooldown)) - STOP_PROCESSING(SSobj, src) + to_chat(imp_in, "You must wait [DisplayTimeText(next_use - world.time)] to use [src] again!") /obj/item/implant/abductor/implant(mob/living/target, mob/user) - if(..()) - var/obj/machinery/abductor/console/console - if(ishuman(target)) - var/datum/antagonist/abductor/A = target.mind.has_antag_datum(/datum/antagonist/abductor) - if(A) - console = get_abductor_console(A.team.team_number) - home = console.pad - - if(!home) - var/list/consoles = list() - for(var/obj/machinery/abductor/console/C in GLOB.machines) - consoles += C - console = pick(consoles) + . = ..() + if(!.) + return + var/obj/machinery/abductor/console/console + if(ishuman(target)) + var/datum/antagonist/abductor/A = target.mind.has_antag_datum(/datum/antagonist/abductor) + if(A) + console = get_abductor_console(A.team.team_number) home = console.pad - return TRUE + + if(!home) + var/list/consoles = list() + for(var/obj/machinery/abductor/console/C in GLOB.machines) + consoles += C + console = pick(consoles) + home = console.pad diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 420164edfa..aae17e3ce8 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -406,8 +406,6 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ resistance_flags = FLAMMABLE force = 0 throwforce = 0 - pull_effort = 90 - is_fabric = TRUE merge_type = /obj/item/stack/sheet/cloth /obj/item/stack/sheet/cloth/get_main_recipes() @@ -428,7 +426,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \ new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \ new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 25), \ - new/datum/stack_recipe("durathread string", /obj/item/weaponcrafting/durathread_string, 1, time = 40) \ + new/datum/stack_recipe("durathread string", /obj/item/weaponcrafting/durathread_string, 1, time = 40), \ )) /obj/item/stack/sheet/durathread @@ -820,13 +818,12 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra max_amount = 80 singular_name = "raw cotton ball" icon_state = "sheet-cotton" - is_fabric = TRUE resistance_flags = FLAMMABLE force = 0 throwforce = 0 merge_type = /obj/item/stack/sheet/cotton - pull_effort = 30 - loom_result = /obj/item/stack/sheet/cloth + var/pull_effort = 30 + var/loom_result = /obj/item/stack/sheet/cloth /obj/item/stack/sheet/cotton/ten amount = 10 diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm index 378855707e..dfba533247 100644 --- a/code/game/objects/items/stacks/sheets/sheets.dm +++ b/code/game/objects/items/stacks/sheets/sheets.dm @@ -13,9 +13,6 @@ mats_per_stack = MINERAL_MATERIAL_AMOUNT var/sheettype = null //this is used for girders in the creation of walls/false walls var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity - var/is_fabric = FALSE //is this a valid material for the loom? - var/loom_result //result from pulling on the loom - var/pull_effort = 0 //amount of delay when pulling on the loom var/shard_type // the shard debris typepath left over by solar panels and windows etc. /obj/item/stack/sheet/Initialize(mapload, new_amount, merge) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ff59b85332..bc0c1328af 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -777,6 +777,7 @@ var/cooldown = 0 var/obj/machinery/computer/holodeck/holo = null // Holodeck cards should not be infinite var/list/cards = list() + var/original_size = 52 /obj/item/toy/cards/deck/Initialize() . = ..() @@ -834,11 +835,11 @@ /obj/item/toy/cards/deck/update_icon_state() switch(cards.len) - if(27 to INFINITY) + if(INFINITY to original_size/2) icon_state = "deck_[deckstyle]_full" - if(11 to 27) + if(original_size/2 to original_size/4) icon_state = "deck_[deckstyle]_half" - if(1 to 11) + if(original_size/4 to 1) icon_state = "deck_[deckstyle]_low" else icon_state = "deck_[deckstyle]_empty" diff --git a/code/game/objects/structures/loom.dm b/code/game/objects/structures/loom.dm index ad128b01c2..164e597117 100644 --- a/code/game/objects/structures/loom.dm +++ b/code/game/objects/structures/loom.dm @@ -21,21 +21,21 @@ return TRUE ///Handles the weaving. -/obj/structure/loom/proc/weave(obj/item/stack/sheet/S, mob/user) - if(!istype(S) || !S.is_fabric) +/obj/structure/loom/proc/weave(obj/item/stack/sheet/cotton/W, mob/user) + if(!istype(W)) return FALSE if(!anchored) user.show_message("The loom needs to be wrenched down.", MSG_VISUAL) return FALSE - if(S.amount < FABRIC_PER_SHEET) - user.show_message("You need at least [FABRIC_PER_SHEET] units of fabric before using this.", 1) + if(W.amount < FABRIC_PER_SHEET) + user.show_message("You need at least [FABRIC_PER_SHEET] units of fabric before using this.", MSG_VISUAL) return FALSE - user.show_message("You start weaving \the [S.name] through the loom..", MSG_VISUAL) - if(S.use_tool(src, user, S.pull_effort)) - if(S.amount >= FABRIC_PER_SHEET) - new S.loom_result(drop_location()) - S.use(FABRIC_PER_SHEET) - user.show_message("You weave \the [S.name] into a workable fabric.", MSG_VISUAL) + user.show_message("You start weaving \the [W.name] through the loom..", MSG_VISUAL) + if(W.use_tool(src, user, W.pull_effort)) + if(W.amount >= FABRIC_PER_SHEET) + new W.loom_result(drop_location()) + W.use(FABRIC_PER_SHEET) + user.show_message("You weave \the [W.name] into a workable fabric.", MSG_VISUAL) return TRUE #undef FABRIC_PER_SHEET \ No newline at end of file diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm index fd969d511b..5323db001f 100644 --- a/code/game/turfs/simulated/floor/plating/misc_plating.dm +++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm @@ -198,7 +198,7 @@ /turf/open/floor/plating/ice/smooth icon_state = "smooth" smooth = SMOOTH_MORE | SMOOTH_BORDER - canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice) + canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice, /turf/open/floor/plating/ice/colder) /turf/open/floor/plating/ice/colder temperature = 140 diff --git a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm index a4b19f2d40..f1ce13a90f 100644 --- a/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm +++ b/code/modules/antagonists/clockcult/clock_structures/traps/brass_skewer.dm @@ -113,6 +113,8 @@ "You start tenderly lifting [skewee] off of [src]...") if(!do_after(user, 60, target = skewee)) skewee.visible_message("[skewee] painfully slides back down [src].") + if(skewee.stat >= UNCONSCIOUS) + return //by ratvar, no more spamming my deadchat, holy fuck skewee.say("Oof, ouch owwie!!", forced = "fail brass skewer removal") return skewee.visible_message("[skewee] comes free of [src] with a squelching pop!", \ diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 93927f4420..58e826b36d 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -244,6 +244,7 @@ GLOBAL_LIST_INIT(meta_gas_fusions, meta_gas_fusion_list()) if(!ispath(path)) path = gas_id2path(path) //a lot of these strings can't have embedded expressions (especially for mappers), so support for IDs needs to stick around gases[path] = text2num(gas[id]) + archive() return 1 /datum/gas_mixture/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4) diff --git a/code/modules/games/unum.dm b/code/modules/games/unum.dm new file mode 100644 index 0000000000..9820fa6754 --- /dev/null +++ b/code/modules/games/unum.dm @@ -0,0 +1,22 @@ +/// A deck of unum cards. Classic. +/obj/item/toy/cards/deck/unum + name = "\improper UNUM deck" + desc = "A deck of unum cards. House rules to argue over not included." + icon = 'icons/obj/toy.dmi' + icon_state = "deck_unum_full" + deckstyle = "unum" + original_size = 108 + +//Populate the deck. +/obj/item/toy/cards/deck/unum/populate_deck() + for(var/colour in list("Red","Yellow","Green","Blue")) + cards += "[colour] 0" //Uno, i mean, cough cough, Unum decks have only one colour of each 0, weird huh? + for(var/k in 0 to 1) //two of each colour of number + cards += "[colour] skip" + cards += "[colour] reverse" + cards += "[colour] draw 2" + for(var/i in 1 to 9) + cards += "[colour] [i]" + for(var/k in 0 to 3) //4 wilds and draw 4s + cards += "Wildcard" + cards += "Draw 4" diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 838de24b60..5364486b04 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -287,12 +287,12 @@ Works together with spawning an observer, noted above. var/maximumRoundEnd = SSautotransfer.starttime + SSautotransfer.voteinterval * SSautotransfer.maxvotes if(penalty - SSshuttle.realtimeofstart > maximumRoundEnd + SSshuttle.emergencyCallTime + SSshuttle.emergencyDockTime + SSshuttle.emergencyEscapeTime) penalty = CANT_REENTER_ROUND - if(!(ckey in GLOB.client_ghost_timeouts)) - GLOB.client_ghost_timeouts += ckey - GLOB.client_ghost_timeouts[ckey] = 0 - else if(GLOB.client_ghost_timeouts[ckey] == CANT_REENTER_ROUND) + if(!(ghost.ckey in GLOB.client_ghost_timeouts)) + GLOB.client_ghost_timeouts += ghost.ckey + GLOB.client_ghost_timeouts[ghost.ckey] = 0 + else if(GLOB.client_ghost_timeouts[ghost.ckey] == CANT_REENTER_ROUND) return - GLOB.client_ghost_timeouts[ckey] = max(GLOB.client_ghost_timeouts[ckey],penalty) + GLOB.client_ghost_timeouts[ghost.ckey] = max(GLOB.client_ghost_timeouts[ghost.ckey],penalty) // needs to be done AFTER the ckey transfer, too return ghost diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index f1108189c7..dc091cb451 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1411,6 +1411,7 @@ if(WIRE_POWER1, WIRE_POWER2) if(!wires.is_cut(WIRE_POWER1) && !wires.is_cut(WIRE_POWER2)) shorted = FALSE + update() if(WIRE_AI) if(!wires.is_cut(WIRE_AI)) aidisabled = FALSE diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 344d41071d..3c3f3c9541 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -314,8 +314,11 @@ . = ..() SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) if(on && status == LIGHT_OK) - SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE, dir, clamp(light_power*250, 30, 200)) - + var/overlay_alpha = clamp(light_power*250, 30, 200) + SSvis_overlays.add_vis_overlay(src, overlayicon, base_state, EMISSIVE_UNBLOCKABLE_LAYER, EMISSIVE_UNBLOCKABLE_PLANE, dir, overlay_alpha) + var/mutable_appearance/M = mutable_appearance(overlayicon, base_state) + M.alpha = overlay_alpha + . += M // update the icon_state and luminosity of the light depending on its state /obj/machinery/light/proc/update(trigger = TRUE) diff --git a/code/modules/vending/games.dm b/code/modules/vending/games.dm index efd9aad673..641e52dd13 100644 --- a/code/modules/vending/games.dm +++ b/code/modules/vending/games.dm @@ -6,7 +6,8 @@ products = list(/obj/item/toy/cards/deck = 5, /obj/item/storage/pill_bottle/dice = 10, /obj/item/toy/cards/deck/cas = 3, - /obj/item/toy/cards/deck/cas/black = 3) + /obj/item/toy/cards/deck/cas/black = 3, + /obj/item/toy/cards/deck/unum = 3) contraband = list(/obj/item/dice/fudge = 9) premium = list(/obj/item/melee/skateboard/pro = 3, /obj/item/melee/skateboard/hoverboard = 1) diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 698c1f7a34..e8106905b7 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 6fa096ca45..2a61ac361b 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1994,6 +1994,7 @@ #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm" #include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm" #include "code\modules\games\cas.dm" +#include "code\modules\games\unum.dm" #include "code\modules\goonchat\browserOutput.dm" #include "code\modules\holiday\easter.dm" #include "code\modules\holiday\holidays.dm"