diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm index c4af29c6ad3..bd543535f81 100644 --- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm @@ -726,7 +726,9 @@ /turf/simulated/floor/plating/airless, /area/ruin/onehalf/hallway) "bK" = ( -/obj/machinery/vending/coffee, +/obj/machinery/vending/coffee{ + name = "\improper Solar's Best Hot Drinks" + }, /obj/effect/landmark/damageturf, /turf/simulated/floor/plasteel/airless, /area/ruin/onehalf/hallway) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 5fd98794503..4bbc7d03d07 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1926,23 +1926,23 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return pois -/proc/flash_color(mob_or_client, flash_color = "#960000", flash_time = 2 SECONDS) - var/mob/M +/proc/flash_color(mob_or_client, flash_color="#960000", flash_time=20) var/client/C - if(ismob(mob_or_client)) - M = mob_or_client - if(!M.client) + if(istype(mob_or_client, /mob)) + var/mob/M = mob_or_client + if(M.client) + C = M.client + else return - C = M.client - else if(isclient(mob_or_client)) + else if(istype(mob_or_client, /client)) C = mob_or_client - M = C.mob - if(!istype(C) || !istype(M)) + if(!istype(C)) return C.color = flash_color - INVOKE_ASYNC(C, /client/.proc/colour_transition, M.get_screen_colour(), flash_time) + spawn(0) + animate(C, color = initial(C.color), time = flash_time) #define RANDOM_COLOUR (rgb(rand(0,255),rand(0,255),rand(0,255))) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 28f69ba1795..14a952cb36f 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -287,7 +287,7 @@ SUBSYSTEM_DEF(ticker) else log_debug("Playercount: [playercount] versus trigger: [highpop_trigger] - keeping standard job config") - SSnightshift.check_nightshift(TRUE) + SSnightshift.check_nightshift() #ifdef UNIT_TESTS RunUnitTests() diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 3efc5b1e094..4a812b40e4e 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -14,9 +14,9 @@ EXCEPTION("Invalid target given") if(goal_number) goal = goal_number - bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0", ABOVE_HUD_LAYER) + bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0", HUD_LAYER) bar.alpha = 0 - bar.plane = ABOVE_HUD_PLANE + bar.plane = HUD_PLANE bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA user = User if(user) diff --git a/code/game/gamemodes/changeling/powers/epinephrine.dm b/code/game/gamemodes/changeling/powers/epinephrine.dm index 6d57f52bd15..ef22de10ce4 100644 --- a/code/game/gamemodes/changeling/powers/epinephrine.dm +++ b/code/game/gamemodes/changeling/powers/epinephrine.dm @@ -16,7 +16,7 @@ else to_chat(user, "Adrenaline rushes through us.") user.SetSleeping(0) - user.WakeUp() + user.stat = 0 user.SetParalysis(0) user.SetStunned(0) user.SetWeakened(0) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 6d695141fc9..fbb6a0ad3c3 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -231,23 +231,20 @@ to destroy them and players will be able to make replacements. build_path = /obj/machinery/vending/boozeomat req_components = list(/obj/item/vending_refill/boozeomat = 1) - var/static/list/vending_names_paths = list( // This should really get refactored at some point + var/static/list/vending_names_paths = list( "Booze-O-Mat" = /obj/machinery/vending/boozeomat, - "Hot Drinks machine" = /obj/machinery/vending/coffee, + "Solar's Best Hot Drinks" = /obj/machinery/vending/coffee, "Getmore Chocolate Corp" = /obj/machinery/vending/snack, "Mr. Chang" = /obj/machinery/vending/chinese, "Robust Softdrinks" = /obj/machinery/vending/cola, - "cigarette machine" = /obj/machinery/vending/cigarette, - "ShadyCigs Ultra" = /obj/machinery/vending/cigarette/beach, + "ShadyCigs Deluxe" = /obj/machinery/vending/cigarette, "Hatlord 9000" = /obj/machinery/vending/hatdispenser, "Suitlord 9000" = /obj/machinery/vending/suitdispenser, "Shoelord 9000" = /obj/machinery/vending/shoedispenser, "AutoDrobe" = /obj/machinery/vending/autodrobe, "ClothesMate" = /obj/machinery/vending/clothing, - "NanoMed" = /obj/machinery/vending/wallmed, - "Emergency NanoMed" = /obj/machinery/vending/wallmed, "NanoMed Plus" = /obj/machinery/vending/medical, - "SyndiMed Plus" = /obj/machinery/vending/medical/syndicate_access, + "NanoMed" = /obj/machinery/vending/wallmed, "Vendomat" = /obj/machinery/vending/assist, "YouTool" = /obj/machinery/vending/tool, "Engi-Vend" = /obj/machinery/vending/engivend, @@ -273,9 +270,6 @@ to destroy them and players will be able to make replacements. /obj/item/circuitboard/vendor/proc/set_type(type) var/obj/machinery/vending/typepath = vending_names_paths[type] - if(!typepath) - stack_trace("set_type() called with an invalid type variable. type: [type]") - build_path = typepath board_name = "[type] Vendor" format_board_name() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index d40aa3424e0..5d979ff2044 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1646,7 +1646,7 @@ //don't forget to change the refill size if you change the machine's contents! /obj/machinery/vending/clothing - name = "\improper ClothesMate" //renamed to make the slogan rhyme + name = "\improper ClothesMate" //renamed to make the slogan rhyme desc = "A vending machine for clothing." icon_state = "clothes" slogan_list = list("Dress for success!","Prepare to look swagalicious!","Look at all this free swag!","Why leave style up to fate? Use the ClothesMate!") diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 6e1c2ba7c99..0f30d33d7b4 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -266,10 +266,9 @@ possessed = TRUE - var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, FALSE, 10 SECONDS, source = src, role_cleanname = "Possessed Blade") + var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the spirit of [user.real_name]'s blade?", ROLE_PAI, FALSE, 10 SECONDS, source = src) var/mob/dead/observer/theghost = null - if(QDELETED(src)) - return + if(length(candidates)) theghost = pick(candidates) var/mob/living/simple_animal/shade/sword/S = new(src) diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index 398e587145b..896ed8e5134 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -1,15 +1,18 @@ /obj/structure/sign icon = 'icons/obj/decals.dmi' - anchored = TRUE - layer = NOT_HIGH_OBJ_LAYER + anchored = 1 + opacity = 0 + density = 0 + layer = 3.5 max_integrity = 100 + armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) flags_2 = RAD_PROTECT_CONTENTS_2 | RAD_NO_CONTAMINATE_2 /obj/structure/sign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) if(BRUTE) if(damage_amount) - playsound(loc, 'sound/weapons/slash.ogg', 80, TRUE) + playsound(src.loc, 'sound/weapons/slash.ogg', 80, TRUE) else playsound(loc, 'sound/weapons/tap.ogg', 50, TRUE) if(BURN) @@ -22,41 +25,50 @@ if(!I.use_tool(src, user, 0, volume = I.tool_volume)) return to_chat(user, "You unfasten the sign with [I].") - var/obj/item/sign/S = new(get_turf(user)) // This is bad + var/obj/item/sign/S = new(src.loc) S.name = name S.desc = desc S.icon_state = icon_state + //var/icon/I = icon('icons/obj/decals.dmi', icon_state) + //S.icon = I.Scale(24, 24) + S.sign_state = icon_state qdel(src) /obj/item/sign name = "sign" + desc = "" icon = 'icons/obj/decals.dmi' w_class = WEIGHT_CLASS_NORMAL resistance_flags = FLAMMABLE + var/sign_state = "" -/obj/item/sign/screwdriver_act(mob/living/user, obj/item/I) - . = TRUE - var/direction = input("In which direction?", "Select direction.") as null|anything in list("North", "South", "East", "West") - if(!direction || QDELETED(src) || !in_range(src, user)) - return - if(!I.use_tool(src, user, 0, volume = I.tool_volume)) - return - var/obj/structure/sign/S = new(get_turf(src)) // This is also bad - switch(direction) - if("North") - S.pixel_y = 32 - if("South") - S.pixel_y = -32 - if("East") - S.pixel_x = 32 - if("West") - S.pixel_x = -32 - S.name = name - S.desc = desc - S.icon_state = icon_state - to_chat(user, "You fasten [src] with [I].") - qdel(src) +/obj/item/sign/attackby(obj/item/tool as obj, mob/user as mob) //construction + if(istype(tool, /obj/item/screwdriver) && isturf(user.loc)) + var/direction = input("In which direction?", "Select direction.") in list("North", "East", "South", "West", "Cancel") + if(direction == "Cancel") + return + if(QDELETED(src)) + return + var/obj/structure/sign/S = new(user.loc) + switch(direction) + if("North") + S.pixel_y = 32 + if("East") + S.pixel_x = 32 + if("South") + S.pixel_y = -32 + if("West") + S.pixel_x = -32 + else + return + S.name = name + S.desc = desc + S.icon_state = sign_state + to_chat(user, "You fasten \the [S] with your [tool].") + qdel(src) + else + return ..() /obj/structure/sign/double/map name = "station map" diff --git a/code/modules/awaymissions/mission_code/ruins/oldstation.dm b/code/modules/awaymissions/mission_code/ruins/oldstation.dm index 2b3cdaff80d..ab1f4ca2603 100644 --- a/code/modules/awaymissions/mission_code/ruins/oldstation.dm +++ b/code/modules/awaymissions/mission_code/ruins/oldstation.dm @@ -43,7 +43,7 @@ /obj/item/card/id/away/old/apc name = "APC Access ID" desc = "A special ID card that allows access to APC terminals." - icon_state = "guest_invalid" + icon_state = "centcom_old" access = list(ACCESS_ENGINE_EQUIP) /obj/item/storage/backpack/old diff --git a/code/modules/events/blob.dm b/code/modules/events/blob.dm index 4f15e3983e4..65d820ce43f 100644 --- a/code/modules/events/blob.dm +++ b/code/modules/events/blob.dm @@ -27,7 +27,6 @@ var/mob/living/simple_animal/mouse/blobinfected/B = new(vent.loc) var/mob/M = pick(candidates) B.key = M.key - B.mind.special_role = SPECIAL_ROLE_BLOB SSticker.mode.update_blob_icons_added(B.mind) to_chat(B, "You are now a mouse, infected with blob spores. Find somewhere isolated... before you burst and become the blob! Use ventcrawl (alt-click on vents) to move around.") diff --git a/code/modules/events/rogue_drones.dm b/code/modules/events/rogue_drones.dm index e069fb4e5c8..f3ea93c80c4 100644 --- a/code/modules/events/rogue_drones.dm +++ b/code/modules/events/rogue_drones.dm @@ -22,7 +22,7 @@ else if(prob(50)) msg = "Contact has been lost with a combat drone wing operating out of the NSV Icarus. If any are sighted in the area, approach with caution." else - msg = "Unidentified hackers have targeted a combat drone wing deployed from the NSV Icarus. If any are sighted in the area, approach with caution." + msg = "Unidentified hackers have targetted a combat drone wing deployed from the NSV Icarus. If any are sighted in the area, approach with caution." GLOB.event_announcement.Announce(msg, "Rogue drone alert") /datum/event/rogue_drone/tick() diff --git a/code/modules/food_and_drinks/food/foods/candy.dm b/code/modules/food_and_drinks/food/foods/candy.dm index 730ba91f413..aeab2b52128 100644 --- a/code/modules/food_and_drinks/food/foods/candy.dm +++ b/code/modules/food_and_drinks/food/foods/candy.dm @@ -132,7 +132,6 @@ filling_color = "#7D5F46" bitesize = 3 junkiness = 25 - antable = FALSE list_reagents = list("nutriment" = 1, "chocolate" = 1) tastes = list("chocolate" = 1) diff --git a/code/modules/food_and_drinks/food/foods/ethnic.dm b/code/modules/food_and_drinks/food/foods/ethnic.dm index 469f96d906a..6523b7521e3 100644 --- a/code/modules/food_and_drinks/food/foods/ethnic.dm +++ b/code/modules/food_and_drinks/food/foods/ethnic.dm @@ -58,7 +58,6 @@ desc = "What is in this anyways?" icon_state = "chinese1" junkiness = 25 - antable = FALSE list_reagents = list("nutriment" = 1, "beans" = 3, "msg" = 4, "sugar" = 2) tastes = list("noodle" = 1, "vegetables" = 1) diff --git a/code/modules/food_and_drinks/food/foods/junkfood.dm b/code/modules/food_and_drinks/food/foods/junkfood.dm index 7b7a665e0f5..ec17f3c4a5a 100644 --- a/code/modules/food_and_drinks/food/foods/junkfood.dm +++ b/code/modules/food_and_drinks/food/foods/junkfood.dm @@ -11,7 +11,6 @@ trash = /obj/item/trash/chips filling_color = "#E8C31E" junkiness = 20 - antable = FALSE list_reagents = list("nutriment" = 1, "sodiumchloride" = 1, "sugar" = 3) tastes = list("crisps" = 1) @@ -22,7 +21,6 @@ trash = /obj/item/trash/sosjerky filling_color = "#631212" junkiness = 25 - antable = FALSE list_reagents = list("protein" = 1, "sugar" = 3) tastes = list("chewy beef" = 1) @@ -33,7 +31,6 @@ trash = /obj/item/trash/pistachios filling_color = "#BAD145" junkiness = 20 - antable = FALSE list_reagents = list("plantmatter" = 2, "sodiumchloride" = 1, "sugar" = 4) tastes = list("pistachios" = 1) @@ -44,7 +41,6 @@ trash = /obj/item/trash/raisins filling_color = "#343834" junkiness = 25 - antable = FALSE list_reagents = list("plantmatter" = 2, "sugar" = 4) tastes = list("dried raisins" = 1) @@ -65,7 +61,6 @@ trash = /obj/item/trash/cheesie filling_color = "#FFA305" junkiness = 25 - antable = FALSE list_reagents = list("nutriment" = 1, "fake_cheese" = 2, "sugar" = 3) tastes = list("cheese" = 1, "crisps" = 2) @@ -76,7 +71,6 @@ filling_color = "#FF5D05" trash = /obj/item/trash/syndi_cakes bitesize = 3 - antable = FALSE list_reagents = list("nutriment" = 4, "salglu_solution" = 5) tastes = list("sweetness" = 3, "cake" = 1) @@ -87,7 +81,6 @@ trash = /obj/item/trash/tastybread filling_color = "#A66829" junkiness = 20 - antable = FALSE list_reagents = list("nutriment" = 2, "sugar" = 4) tastes = list("bread" = 1) diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 740e8b8a103..4ec135e9e01 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -24,23 +24,6 @@ idle_power_usage = 2 active_power_usage = 500 -/obj/machinery/gibber/Initialize(mapload) - . = ..() - overlays += image('icons/obj/kitchen.dmi', "grjam") - component_parts = list() - component_parts += new /obj/item/circuitboard/gibber(null) - component_parts += new /obj/item/stock_parts/matter_bin(null) - component_parts += new /obj/item/stock_parts/manipulator(null) - RefreshParts() - -/obj/machinery/gibber/Destroy() - if(contents.len) - for(var/atom/movable/A in contents) - A.loc = get_turf(src) - if(occupant) - occupant = null - return ..() - /obj/machinery/gibber/suicide_act(mob/user) if(occupant || locked) return FALSE @@ -53,6 +36,21 @@ addtimer(CALLBACK(src, .proc/startgibbing, user), 33) return OBLITERATION +/obj/machinery/gibber/Destroy() + if(contents.len) + for(var/atom/movable/A in contents) + A.loc = get_turf(src) + if(occupant) + occupant = null + return ..() + +/obj/machinery/gibber/RefreshParts() //If you want to make the machine upgradable, this is where you would change any vars basd on its stock parts. + return + +/obj/machinery/gibber/New() + ..() + overlays += image('icons/obj/kitchen.dmi', "grjam") + /obj/machinery/gibber/update_icon() overlays.Cut() diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index 0d67959c5e2..20b2a4d375a 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -31,6 +31,10 @@ update_static_data(owner, ui) . = TRUE +/datum/orbit_menu/ui_data(mob/user) + var/list/data = list() + return data + /datum/orbit_menu/ui_static_data(mob/user) var/list/data = list() @@ -92,7 +96,6 @@ ) if(SSticker && SSticker.mode) other_antags += list( - "Blob" = (mind.special_role == SPECIAL_ROLE_BLOB), "Cultist" = (mind in SSticker.mode.cult), "Wizard" = (mind in SSticker.mode.wizards), "Wizard's Apprentice" = (mind in SSticker.mode.apprentices), @@ -118,10 +121,6 @@ var/list/antag_serialized = serialized.Copy() antag_serialized["antag"] = "Terror Spider" antagonists += list(antag_serialized) - else if(istype(M, /mob/living/simple_animal/revenant)) - var/list/antag_serialized = serialized.Copy() - antag_serialized["antag"] = "Revenant" - antagonists += list(antag_serialized) else misc += list(serialized) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 2fbe42a7ecc..46a71531dcd 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -272,8 +272,6 @@ * * target - The mob who is currently on fire */ /mob/living/carbon/proc/pat_out(mob/living/target) - if(target == src) - return // Probably shouldn't be able to pat yourself out. var/self_message = "You try to extinguish [target]!" if(prob(30) && ishuman(src)) // 30% chance of burning your hands var/mob/living/carbon/human/H = src diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 348aab228ae..a8a4133310d 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -170,13 +170,9 @@ if("growl", "growls") var/M = handle_emote_param(param) - if(miming) - message = "[src] acts out a growl[M ? " at [M]" : ""]!" - m_type = 1 - else - message = "[src] growls[M ? " at [M]" : ""]!" - playsound(loc, "growls", 80, 1, frequency = get_age_pitch()) - m_type = 2 + message = "[src] growls[M ? " at [M]" : ""]." + playsound(loc, "growls", 80, 1, frequency = get_age_pitch()) + m_type = 2 if("ping", "pings") var/M = handle_emote_param(param) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 3ac0ef0f64d..8276d06f126 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -13,7 +13,6 @@ return 0 /mob/proc/get_screen_colour() - return /mob/proc/update_client_colour(time = 10) //Update the mob's client.color with an animation the specified time in length. if(!client) //No client_colour without client. If the player logs back in they'll be back through here anyway. diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 1c8e886e736..21c0f648a3b 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -97,10 +97,12 @@ A.emp_act(severity) /obj/item/smallDelivery/attack_self(mob/user as mob) - if(wrapped?.loc == src) //sometimes items can disappear. For example, bombs. --rastaf0 - wrapped.forceMove(get_turf(src)) + if(wrapped && wrapped.loc) //sometimes items can disappear. For example, bombs. --rastaf0 + wrapped.loc = user.loc if(ishuman(user)) user.put_in_hands(wrapped) + else + wrapped.loc = get_turf(src) playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) @@ -161,8 +163,6 @@ if(is_type_in_list(target, no_wrap)) return - if(is_type_in_list(A.loc, list(/obj/item/smallDelivery, /obj/structure/bigDelivery))) - return if(target.anchored) return if(target in user) diff --git a/icons/mob/clothing/species/drask/gloves1.dmi b/icons/mob/clothing/species/drask/gloves1.dmi new file mode 100644 index 00000000000..70423488ef5 Binary files /dev/null and b/icons/mob/clothing/species/drask/gloves1.dmi differ diff --git a/icons/mob/clothing/species/drask/uniform.dmi b/icons/mob/clothing/species/drask/uniform.dmi index 82281f52c84..25cfb51013c 100644 Binary files a/icons/mob/clothing/species/drask/uniform.dmi and b/icons/mob/clothing/species/drask/uniform.dmi differ diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index 32c27e7d57d..2c541898b08 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ