diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 138f1dd17f3..e65ebe1e6a6 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -90621,11 +90621,9 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "cZw" = ( -/turf/closed/wall/shuttle{ - icon_state = "swall_s9"; - dir = 2 - }, -/area/shuttle/transport) +/mob/living/simple_animal/sloth/citrus, +/turf/open/floor/plasteel, +/area/quartermaster/storage) "cZx" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/plasteel/bot, @@ -111412,7 +111410,7 @@ aNp aNp aLI aNp -aNp +cZw aYC bal bbN diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 4146891a1c3..81634727e58 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -5756,12 +5756,9 @@ /turf/open/floor/plasteel/black, /area/shuttle/labor) "ama" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Waste to Filtering"; - on = 1 - }, +/mob/living/simple_animal/sloth/paperwork, /turf/open/floor/plasteel, -/area/atmos) +/area/quartermaster/storage) "amb" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber{ dir = 4; @@ -81130,7 +81127,7 @@ bgy aZE bjr bjr -bjr +ama bmh bjr bjr diff --git a/code/__DEFINES/contracts.dm b/code/__DEFINES/contracts.dm index cba98a29b24..629493cc603 100644 --- a/code/__DEFINES/contracts.dm +++ b/code/__DEFINES/contracts.dm @@ -15,7 +15,7 @@ #define BANE_TOOLBOX "toolbox" #define OBLIGATION_FOOD "food" -#define OBLIGATION_DRINK "drink" +#define OBLIGATION_FIDDLE "fiddle" #define OBLIGATION_GREET "greet" #define OBLIGATION_PRESENCEKNOWN "presenceknown" #define OBLIGATION_SAYNAME "sayname" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 0d0b54b8ee0..64866abc94e 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -1,6 +1,9 @@ -//Defines for atom layers +//Defines for atom layers and planes //KEEP THESE IN A NICE ACSCENDING ORDER, PLEASE +#define CLICKCATCHER_PLANE -99 + +#define GAME_PLANE 0 //#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define #define MID_TURF_LAYER 2.02 #define HIGH_TURF_LAYER 2.03 @@ -47,14 +50,20 @@ #define AREA_LAYER 10 #define MASSIVE_OBJ_LAYER 11 #define POINT_LAYER 12 + +#define LIGHTING_PLANE 15 #define LIGHTING_LAYER 15 //HUD layer defines -#define COLORED_VISION_LAYER 17.8 -#define FLASH_LAYER 17.9 -#define FULLSCREEN_LAYER 18 -#define UI_DAMAGE_LAYER 18.1 -#define BLIND_LAYER 18.2 -#define CRIT_LAYER 18.3 + +#define FULLSCREEN_PLANE 18 +#define FLASH_LAYER 18 +#define FULLSCREEN_LAYER 18.1 +#define UI_DAMAGE_LAYER 18.2 +#define BLIND_LAYER 18.3 +#define CRIT_LAYER 18.4 + +#define HUD_PLANE 19 #define HUD_LAYER 19 -#define ABOVE_HUD_LAYER 19.1 +#define ABOVE_HUD_PLANE 20 +#define ABOVE_HUD_LAYER 20 diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm index 0bb4b3b9184..c2c6eb234a2 100644 --- a/code/__HELPERS/pronouns.dm +++ b/code/__HELPERS/pronouns.dm @@ -21,6 +21,9 @@ /datum/proc/p_are(temp_gender) . = "is" +/datum/proc/p_were(temp_gender) + . = "was" + /datum/proc/p_theyre(capitalized, temp_gender) . = p_they(capitalized, temp_gender) + "'" + copytext(p_are(temp_gender), 2) @@ -78,6 +81,13 @@ if(temp_gender == PLURAL || temp_gender == NEUTER) . = "are" +/client/p_were(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "was" + if(temp_gender == PLURAL || temp_gender == NEUTER) + . = "were" + /client/p_s(temp_gender) if(!temp_gender) temp_gender = gender @@ -141,6 +151,13 @@ if(temp_gender == PLURAL) . = "are" +/mob/p_were(temp_gender) + if(!temp_gender) + temp_gender = gender + . = "was" + if(temp_gender == PLURAL) + . = "were" + /mob/p_s(temp_gender) if(!temp_gender) temp_gender = gender @@ -183,6 +200,13 @@ temp_gender = PLURAL return ..() +/mob/living/carbon/human/p_were(temp_gender) + var/list/obscured = check_obscured_slots() + var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) + if((slot_w_uniform in obscured) && skipface) + temp_gender = PLURAL + return ..() + /mob/living/carbon/human/p_s(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index c61184476ee..1cc608b007d 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -926,25 +926,29 @@ var/list/WALLITEMS_INVERSE = list( return "white" /proc/params2turf(scr_loc, turf/origin) + if(!scr_loc) + return null var/tX = splittext(scr_loc, ",") var/tY = splittext(tX[2], ":") var/tZ = origin.z tY = tY[1] tX = splittext(tX[1], ":") tX = tX[1] - tX = max(1, min(world.maxx, origin.x + (text2num(tX) - (world.view + 1)))) - tY = max(1, min(world.maxy, origin.y + (text2num(tY) - (world.view + 1)))) + tX = Clamp(origin.x + text2num(tX) - world.view + 1, 1, world.maxx) + tY = Clamp(origin.y + text2num(tY) - world.view + 1, 1, world.maxy) return locate(tX, tY, tZ) /proc/screen_loc2turf(text, turf/origin) + if(!text) + return null var/tZ = splittext(text, ",") var/tX = splittext(tZ[1], "-") var/tY = text2num(tX[2]) tX = splittext(tZ[2], "-") tX = text2num(tX[2]) tZ = origin.z - tX = max(1, min(origin.x + 7 - tX, world.maxx)) - tY = max(1, min(origin.y + 7 - tY, world.maxy)) + tX = Clamp(origin.x + 7 - tX, 1, world.maxx) + tY = Clamp(origin.y + 7 - tY, 1, world.maxy) return locate(tX, tY, tZ) /proc/IsValidSrc(datum/D) diff --git a/code/_onclick/_defines.dm b/code/_onclick/_defines.dm deleted file mode 100644 index 3c76c35e807..00000000000 --- a/code/_onclick/_defines.dm +++ /dev/null @@ -1 +0,0 @@ -#define CLICKCATCHER_PLANE -99 \ No newline at end of file diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 3300602476c..a6189669b74 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -346,15 +346,11 @@ icon_state = "click_catcher" plane = CLICKCATCHER_PLANE mouse_opacity = 2 - screen_loc = "CENTER-7,CENTER-7" + screen_loc = "CENTER" -/obj/screen/click_catcher/proc/MakeGreed() - . = list() - for(var/i = 0, i<15, i++) - for(var/j = 0, j<15, j++) - var/obj/screen/click_catcher/CC = new() - CC.screen_loc = "NORTH-[i],EAST-[j]" - . += CC +/obj/screen/click_catcher/New() + ..() + transform = matrix(200, 0, 0, 0, 200, 0) /obj/screen/click_catcher/Click(location, control, params) var/list/modifiers = params2list(params) @@ -362,7 +358,7 @@ var/mob/living/carbon/C = usr C.swap_hand() else - var/turf/T = screen_loc2turf(screen_loc, get_turf(usr)) + var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr)) if(T) T.Click(location, control, params) . = 1 \ No newline at end of file diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index 2e99889a323..b9ca95d4439 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -37,9 +37,12 @@ if(new_master) var/old_layer = new_master.layer + var/old_plane = new_master.plane new_master.layer = FLOAT_LAYER + new_master.plane = FLOAT_PLANE alert.overlays += new_master new_master.layer = old_layer + new_master.plane = old_plane alert.icon_state = "template" // We'll set the icon to the client's ui pref in reorganize_alerts() alert.master = new_master else diff --git a/code/_onclick/hud/blob_overmind.dm b/code/_onclick/hud/blob_overmind.dm index a375374ba22..c3cc3851dc4 100644 --- a/code/_onclick/hud/blob_overmind.dm +++ b/code/_onclick/hud/blob_overmind.dm @@ -132,6 +132,7 @@ blobpwrdisplay.screen_loc = ui_health blobpwrdisplay.mouse_opacity = 0 blobpwrdisplay.layer = ABOVE_HUD_LAYER + blobpwrdisplay.plane = ABOVE_HUD_PLANE infodisplay += blobpwrdisplay healths = new /obj/screen/healths/blob() diff --git a/code/_onclick/hud/devil.dm b/code/_onclick/hud/devil.dm index ec2597b1975..ee01b27097b 100644 --- a/code/_onclick/hud/devil.dm +++ b/code/_onclick/hud/devil.dm @@ -25,6 +25,7 @@ using.icon_state = "swap_1_m" using.screen_loc = ui_swaphand_position(owner,1) using.layer = HUD_LAYER + using.plane = HUD_PLANE static_inventory += using using = new /obj/screen/inventory() @@ -33,6 +34,7 @@ using.icon_state = "swap_2" using.screen_loc = ui_swaphand_position(owner,2) using.layer = HUD_LAYER + using.plane = HUD_PLANE static_inventory += using zone_select = new /obj/screen/zone_sel() diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 9ceaa67bf6a..5461276f1b1 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -60,6 +60,7 @@ icon_state = "default" screen_loc = "CENTER-7,CENTER-7" layer = FULLSCREEN_LAYER + plane = FULLSCREEN_PLANE mouse_opacity = 0 var/severity = 0 @@ -71,18 +72,22 @@ /obj/screen/fullscreen/brute icon_state = "brutedamageoverlay" layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE /obj/screen/fullscreen/oxy icon_state = "oxydamageoverlay" layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE /obj/screen/fullscreen/crit icon_state = "passage" layer = CRIT_LAYER + plane = FULLSCREEN_PLANE /obj/screen/fullscreen/blind icon_state = "blackimageoverlay" layer = BLIND_LAYER + plane = FULLSCREEN_PLANE /obj/screen/fullscreen/impaired icon_state = "impairedoverlay" diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index 0dfb1dbb14a..fa29b7e2cec 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -42,6 +42,7 @@ var/list/screenoverlays = list() //the screen objects used as whole screen overlays (flash, damageoverlay, etc...) var/list/inv_slots[slots_amt] // /obj/screen/inventory objects, ordered by their slot ID. var/list/hand_slots // /obj/screen/inventory/hand objects, assoc list of "[held_index]" = object + var/list/obj/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object var/obj/screen/movable/action_button/hide_toggle/hide_actions_toggle var/action_buttons_hidden = 0 @@ -55,6 +56,9 @@ hide_actions_toggle = new hide_actions_toggle.InitialiseIcon(mymob) hand_slots = list() + for(var/mytype in subtypesof(/obj/screen/plane_master)) + var/obj/screen/plane_master/instance = new mytype() + plane_masters["[instance.plane]"] = instance /datum/hud/Destroy() if(mymob.hud_used == src) @@ -108,6 +112,11 @@ deity_follower_display = null nightvisionicon = null + if(plane_masters.len) + for(var/thing in plane_masters) + qdel(plane_masters[thing]) + plane_masters.Cut() + if(screenoverlays.len) for(var/thing in screenoverlays) qdel(thing) @@ -184,6 +193,9 @@ if(infodisplay.len) screenmob.client.screen -= infodisplay + if(plane_masters.len) + for(var/thing in plane_masters) + screenmob.client.screen += plane_masters[thing] hud_version = display_hud_version persistant_inventory_update(screenmob) mymob.update_action_buttons(1) diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm new file mode 100644 index 00000000000..eda44bda065 --- /dev/null +++ b/code/_onclick/hud/plane_master.dm @@ -0,0 +1,28 @@ +/obj/screen/plane_master + screen_loc = "CENTER" + icon_state = "blank" + appearance_flags = PLANE_MASTER|NO_CLIENT_COLOR + blend_mode = BLEND_OVERLAY + +/obj/screen/plane_master/New() + if(blend_mode == BLEND_MULTIPLY) + //What is this? Read http://www.byond.com/forum/?post=2141928 + var/image/backdrop = image('icons/mob/screen_gen.dmi', "black") + backdrop.transform = matrix(200, 0, 0, 0, 200, 0) + backdrop.layer = BACKGROUND_LAYER + backdrop.blend_mode = BLEND_OVERLAY + overlays += backdrop + ..() + +/obj/screen/plane_master/game_world + name = "game world plane master" + plane = GAME_PLANE + blend_mode = BLEND_OVERLAY + +/obj/screen/plane_master/lighting + name = "lighting plane master" + plane = LIGHTING_PLANE + blend_mode = BLEND_OVERLAY +// blend_mode = BLEND_MULTIPLY +// color = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,0, 0.1,0.1,0.1,0) + mouse_opacity = 0 diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index 93292a2ee4a..15a42655b4c 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -222,6 +222,7 @@ else A.screen_loc = "CENTER+[x]:16,SOUTH+[y]:7" A.layer = ABOVE_HUD_LAYER + A.plane = ABOVE_HUD_PLANE x++ if(x == 4) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index dc40fa92d96..20d98bd9ebf 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -10,6 +10,7 @@ name = "" icon = 'icons/mob/screen_gen.dmi' layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF appearance_flags = APPEARANCE_UI var/obj/master = null //A reference to the object in the slot. Grabs or items, generally. @@ -33,6 +34,7 @@ /obj/screen/swap_hand layer = HUD_LAYER + plane = HUD_PLANE name = "swap hand" /obj/screen/swap_hand/Click() @@ -81,6 +83,7 @@ var/icon_empty // Icon when empty. For now used only by humans. var/icon_full // Icon when contains an item. For now used only by humans. layer = HUD_LAYER + plane = HUD_PLANE /obj/screen/inventory/Click() // At this point in client Click() code we have passed the 1/10 sec check and little else @@ -169,6 +172,7 @@ icon = 'icons/mob/screen_midnight.dmi' icon_state = "act_drop" layer = HUD_LAYER + plane = HUD_PLANE /obj/screen/drop/Click() usr.drop_item_v() @@ -306,6 +310,7 @@ icon = 'icons/mob/screen_midnight.dmi' icon_state = "act_resist" layer = HUD_LAYER + plane = HUD_PLANE /obj/screen/resist/Click() if(isliving(usr)) @@ -422,6 +427,7 @@ blend_mode = BLEND_ADD screen_loc = "WEST,SOUTH to EAST,NORTH" layer = FLASH_LAYER + plane = FULLSCREEN_PLANE /obj/screen/damageoverlay icon = 'icons/mob/screen_full.dmi' @@ -431,6 +437,7 @@ screen_loc = "CENTER-7,CENTER-7" mouse_opacity = 0 layer = UI_DAMAGE_LAYER + plane = FULLSCREEN_PLANE /obj/screen/healths name = "health" @@ -489,6 +496,7 @@ /obj/screen/wheel name = "wheel" layer = HUD_LAYER + plane = HUD_PLANE icon_state = "" screen_loc = null //if you make a new wheel, remember to give it a screen_loc var/list/buttons_names = list() //list of the names for each button, its length is the amount of buttons. @@ -585,6 +593,7 @@ name = "default wheel button" screen_loc = "8,8" layer = HUD_LAYER + plane = HUD_PLANE mouse_opacity = 2 var/obj/screen/wheel/wheel diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 0b050c9322f..89a23721df7 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -72,6 +72,7 @@ var/const/tk_maxrange = 15 //item_state = null w_class = 10 layer = ABOVE_HUD_LAYER + plane = ABOVE_HUD_PLANE var/last_throw = 0 var/atom/movable/focus = null @@ -189,7 +190,7 @@ var/const/tk_maxrange = 15 return /obj/item/tk_grab/suicide_act(mob/user) - user.visible_message("[user] is using \his telekinesis to choke \himself! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") return (OXYLOSS) /*Not quite done likely needs to use something thats not get_step_to diff --git a/code/datums/action.dm b/code/datums/action.dm index ed4f2416701..34aa8205b0e 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -138,10 +138,13 @@ ..(current_button) else if(target) var/obj/item/I = target - var/old = I.layer + var/old_layer = I.layer + var/old_plane = I.plane I.layer = FLOAT_LAYER //AAAH + I.plane = FLOAT_PLANE //^ what that guy said current_button.add_overlay(I) - I.layer = old + I.layer = old_layer + I.plane = old_plane /datum/action/item_action/toggle_light name = "Toggle Light" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index f5fe92b9316..19b8ce2ebd4 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -1101,21 +1101,24 @@ if("clear") if(src in ticker.mode.devils) if(istype(current,/mob/living/carbon/true_devil/)) - usr << "This cannot be used on true or arch-devils." - else - ticker.mode.devils -= src - special_role = null - current << "Your infernal link has been severed! You are no longer a devil!" - RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt) - RemoveSpell(/obj/effect/proc_holder/spell/fireball/hellish) - RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_contract) - RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_pitchfork) - message_admins("[key_name_admin(usr)] has de-devil'ed [current].") - devilinfo = null - if(issilicon(current)) - var/mob/living/silicon/S = current - S.clear_law_sixsixsix(current) - log_admin("[key_name(usr)] has de-devil'ed [current].") + if(devilinfo) + devilinfo.regress_blood_lizard() + else + usr << "Something went wrong with removing the devil, we were unable to find an attached devilinfo.." + ticker.mode.devils -= src + special_role = null + current << "Your infernal link has been severed! You are no longer a devil!" + RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt) + RemoveSpell(/obj/effect/proc_holder/spell/fireball/hellish) + RemoveSpell(/obj/effect/proc_holder/spell/targeted/summon_contract) + RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork) + RemoveSpell(/obj/effect/proc_holder/spell/targeted/conjure_item/violin) + message_admins("[key_name_admin(usr)] has de-devil'ed [current].") + devilinfo = null + if(issilicon(current)) + var/mob/living/silicon/S = current + S.clear_law_sixsixsix(current) + log_admin("[key_name(usr)] has de-devil'ed [current].") else if(src in ticker.mode.sintouched) ticker.mode.sintouched -= src message_admins("[key_name_admin(usr)] has de-sintouch'ed [current].") diff --git a/code/game/atoms.dm b/code/game/atoms.dm index c098493e4d6..71c76881d63 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -1,5 +1,6 @@ /atom layer = TURF_LAYER + plane = GAME_PLANE var/level = 2 var/flags = 0 var/list/fingerprints diff --git a/code/game/gamemodes/devil/devilinfo.dm b/code/game/gamemodes/devil/devilinfo.dm index 313843d580b..1cbc3fe28fa 100644 --- a/code/game/gamemodes/devil/devilinfo.dm +++ b/code/game/gamemodes/devil/devilinfo.dm @@ -17,7 +17,7 @@ var/global/list/allDevils = list() var/global/list/lawlorify = list ( LORE = list( OBLIGATION_FOOD = "This devil seems to always offer it's victims food before slaughtering them.", - OBLIGATION_DRINK = "This devil seems to always offer it's victims a drink before slaughtering them.", + OBLIGATION_FIDDLE = "This devil will never turn down a musical challenge.", OBLIGATION_GREET = "This devil seems to only be able to converse with people it knows the name of.", OBLIGATION_PRESENCEKNOWN = "This devil seems to be unable to attack from stealth.", OBLIGATION_SAYNAME = "He will always chant his name upon killing someone.", @@ -47,7 +47,7 @@ var/global/list/lawlorify = list ( ), LAW = list( OBLIGATION_FOOD = "When not acting in self defense, you must always offer your victim food before harming them.", - OBLIGATION_DRINK = "When not acting in self defense, you must always offer your victim drink before harming them.", + OBLIGATION_FIDDLE = "When not in immediate danger, if you are challenged to a musical duel, you must accept it. You are not obligated to duel the same person twice.", OBLIGATION_GREET = "You must always greet other people by their last name before talking with them.", OBLIGATION_PRESENCEKNOWN = "You must always make your presence known before attacking.", OBLIGATION_SAYNAME = "You must always say your true name after you kill someone.", @@ -128,7 +128,7 @@ var/global/list/lawlorify = list ( return preTitle + title + mainName + suffix /proc/randomdevilobligation() - return pick(OBLIGATION_FOOD, OBLIGATION_DRINK, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) + return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) /proc/randomdevilban() return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) @@ -289,7 +289,7 @@ var/global/list/lawlorify = list ( /datum/devilinfo/proc/remove_spells() for(var/X in owner.spell_list) var/obj/effect/proc_holder/spell/S = X - if(!istype(S, /obj/effect/proc_holder/spell/targeted/summon_contract)) + if(!istype(S, /obj/effect/proc_holder/spell/targeted/summon_contract) && !istype(S, /obj/effect/proc_holder/spell/targeted/conjure_item/violin)) owner.RemoveSpell(S) /datum/devilinfo/proc/give_summon_contract() @@ -299,26 +299,28 @@ var/global/list/lawlorify = list ( /datum/devilinfo/proc/give_base_spells(give_summon_contract = 0) remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) if(give_summon_contract) give_summon_contract() + if (obligation == OBLIGATION_FIDDLE) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) /datum/devilinfo/proc/give_lizard_spells() remove_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) /datum/devilinfo/proc/give_true_spells() remove_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/devilinfo/proc/give_arch_spells() remove_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/ascended(null)) + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) /datum/devilinfo/proc/beginResurrectionCheck(mob/living/body) diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/game/gamemodes/devil/true_devil/inventory.dm index ca417e09fbf..52feb42e289 100644 --- a/code/game/gamemodes/devil/true_devil/inventory.dm +++ b/code/game/gamemodes/devil/true_devil/inventory.dm @@ -23,6 +23,7 @@ if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) r_hand.layer = ABOVE_HUD_LAYER + r_hand.plane = ABOVE_HUD_PLANE r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) client.screen |= r_hand @@ -38,6 +39,7 @@ if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) l_hand.layer = ABOVE_HUD_LAYER + l_hand.plane = ABOVE_HUD_PLANE l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) client.screen |= l_hand if(hands_overlays.len) diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 2d3cdeb8c9a..8672b2110d7 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -512,8 +512,7 @@ This is here to make the tiles around the station mininuke change when it's arme return ..() /obj/item/weapon/disk/nuclear/suicide_act(mob/user) - user.visible_message("[user] is \ - going delta! It looks like they're comitting suicide.") + user.visible_message("[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!") playsound(user.loc, 'sound/machines/Alarm.ogg', 50, -1, 1) var/end_time = world.time + 100 while(world.time < end_time) @@ -522,8 +521,7 @@ This is here to make the tiles around the station mininuke change when it's arme user.add_atom_colour(RANDOM_COLOUR, ADMIN_COLOUR_PRIORITY) sleep(1) user.remove_atom_colour(ADMIN_COLOUR_PRIORITY) - user.visible_message("[user] was destroyed \ - by the nuclear blast!") + user.visible_message("[user] was destroyed by the nuclear blast!") return OXYLOSS /obj/item/weapon/disk/nuclear/process() diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index d13a9d588fd..aae7317c5f4 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -143,30 +143,38 @@ var/hsboxspawn = 1 if(P.wear_suit) P.wear_suit.loc = P.loc P.wear_suit.layer = initial(P.wear_suit.layer) + P.wear_suit.plane = initial(P.wear_suit.plane) P.wear_suit = null P.wear_suit = new/obj/item/clothing/suit/space(P) P.wear_suit.layer = ABOVE_HUD_LAYER + P.wear_suit.plane = ABOVE_HUD_PLANE P.update_inv_wear_suit() if(P.head) P.head.loc = P.loc P.head.layer = initial(P.head.layer) + P.head.plane = initial(P.head.plane) P.head = null P.head = new/obj/item/clothing/head/helmet/space(P) P.head.layer = ABOVE_HUD_LAYER + P.head.plane = ABOVE_HUD_PLANE P.update_inv_head() if(P.wear_mask) P.wear_mask.loc = P.loc P.wear_mask.layer = initial(P.wear_mask.layer) + P.wear_mask.plane = initial(P.wear_mask.plane) P.wear_mask = null P.wear_mask = new/obj/item/clothing/mask/gas(P) P.wear_mask.layer = ABOVE_HUD_LAYER + P.wear_mask.plane = ABOVE_HUD_PLANE P.update_inv_wear_mask() if(P.back) P.back.loc = P.loc P.back.layer = initial(P.back.layer) + P.back.plane = initial(P.back.plane) P.back = null P.back = new/obj/item/weapon/tank/jetpack/oxygen(P) P.back.layer = ABOVE_HUD_LAYER + P.back.plane = ABOVE_HUD_PLANE P.update_inv_back() P.internal = P.back P.update_internals_hud_icon(1) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index e82965faa41..8e34e987413 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -103,13 +103,10 @@ /obj/machinery/clonepod/examine(mob/user) ..() - if (isnull(occupant) || !is_operational()) - return - if ((!isnull(occupant)) && (occupant.stat != DEAD)) + if(mess) + user << "It's filled with blood and viscera. You swear you can see it moving..." + if (is_operational() && (!isnull(occupant)) && (occupant.stat != DEAD)) user << "Current clone cycle is [round(get_completion())]% complete." - else if(mess) - user << "It's filled with blood and vicerea. You swear you can see \ - it moving..." /obj/machinery/clonepod/proc/get_completion() . = (100 * ((occupant.health + 100) / (heal_level + 100))) @@ -136,6 +133,12 @@ var/mob/dead/observer/G = clonemind.get_ghost() if(!G) return FALSE + if(clonemind.damnation_type) //Can't clone the damned. + addtimer(0, "horrifyingsound", src) + mess = 1 + icon_state = "pod_g" + update_icon() + return FALSE attempting = TRUE //One at a time!! locked = TRUE @@ -369,6 +372,13 @@ locked = FALSE go_out() +/obj/machinery/clonepod/proc/horrifyingsound() + for(var/i in 1 to 5) + playsound(loc,pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg'), 100, rand(0.95,1.05)) + sleep(1) + sleep(10) + playsound(loc,'sound/hallucinations/wail.ogg',100,1) + /obj/machinery/clonepod/deconstruct(disassembled = TRUE) if(occupant) locked = FALSE diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index a81c2d36fc9..9e06b6ad461 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -899,7 +899,7 @@ var/list/obj/machinery/newscaster/allCasters = list() var/creationTime /obj/item/weapon/newspaper/suicide_act(mob/user) - user.visible_message("[user] is focusing intently on [src]! It looks like they're trying to commit sudoku... until their eyes light up with realization!") + user.visible_message("[user] is focusing intently on [src]! It looks like [user.p_theyre()] trying to commit sudoku... until their eyes light up with realization!") user.say(";JOURNALISM IS MY CALLING! EVERYBODY APPRECIATES UNBIASED REPORTI-GLORF") var/mob/living/carbon/human/H = user var/obj/W = new /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey(H.loc) diff --git a/code/game/machinery/overview.dm b/code/game/machinery/overview.dm index f955a12fdf6..708d6c8368d 100644 --- a/code/game/machinery/overview.dm +++ b/code/game/machinery/overview.dm @@ -179,6 +179,7 @@ qdel(J) H.icon = HI H.layer = ABOVE_HUD_LAYER + H.plane = ABOVE_HUD_PLANE usr.mapobjs += H #else @@ -297,6 +298,7 @@ H.icon = I qdel(I) H.layer = ABOVE_HUD_LAYER + H.plane = ABOVE_HUD_PLANE usr.mapobjs += H #endif diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 5a65ac49bab..5163d2a6f54 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -241,8 +241,8 @@ var/global/list/pipeID2State = list( qdel(src) /obj/item/pipe/suicide_act(mob/user) - if (pipe_type in list(PIPE_PUMP, PIPE_PASSIVE_GATE, PIPE_VOLUME_PUMP)) - user.visible_message("[user] shoved the [src] in \his mouth and turned it on! It looks like \he's trying to commit suicide.") + if(pipe_type in list(PIPE_PUMP, PIPE_PASSIVE_GATE, PIPE_VOLUME_PUMP)) + user.visible_message("[user] shoves the [src] in [user.p_their()] mouth and turns it on! It looks like [user.p_theyre()] trying to commit suicide!") if(istype(user, /mob/living/carbon)) var/mob/living/carbon/C = user for(var/i=1 to 20) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 945a2c90644..96399e1c36c 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -69,7 +69,7 @@ var/post_noise = FALSE /obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS|OXYLOSS) /obj/item/toy/crayon/New() @@ -575,15 +575,11 @@ /obj/item/toy/crayon/spraycan/suicide_act(mob/user) var/mob/living/carbon/human/H = user if(is_capped || !actually_paints) - user.visible_message("[user] shakes up the \ - [src] with a rattle and lifts it to their mouth, but nothing \ - happens!") + user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!") user.say("MEDIOCRE!!") return SHAME else - user.visible_message("[user] shakes up the \ - [src] with a rattle and lifts it to their mouth, spraying \ - paint across their teeth!") + user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!") user.say("WITNESS ME!!") if(pre_noise || post_noise) playsound(loc, 'sound/effects/spray.ogg', 5, 1, 5) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index c1727274ae4..1e5e0baccdb 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -38,6 +38,7 @@ var/obj/temp = new/obj() temp.appearance = target.appearance temp.layer = initial(target.layer) // scanning things in your inventory + temp.plane = initial(target.plane) saved_appearance = temp.appearance /obj/item/device/chameleon/proc/toggle() diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index cbdc878dcb3..242bb7bfd91 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -18,7 +18,7 @@ return ..() /obj/item/device/instrument/suicide_act(mob/user) - user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like \he's trying to commit suicide..") + user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/device/instrument/initialize() @@ -51,6 +51,13 @@ hitsound = "swing_hit" instrumentId = "violin" +/obj/item/device/instrument/violin/golden + name = "golden violin" + desc = "A golden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" + icon_state = "golden_violin" + item_state = "golden_violin" + resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF + /obj/item/device/instrument/guitar name = "guitar" desc = "It's made of wood and has bronze strings." @@ -71,4 +78,4 @@ force = 12 attack_verb = list("played metal on", "shredded", "crashed", "smashed") hitsound = 'sound/weapons/stringsmash.ogg' - instrumentId = "eguitar" \ No newline at end of file + instrumentId = "eguitar" diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index bfd6135bf14..4bc1983c43b 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -14,7 +14,7 @@ var/shock_cooldown = 0 /obj/item/device/electropack/suicide_act(mob/user) - user.visible_message("[user] hooks \himself to the electropack and spams the trigger! It looks like \he's trying to commit suicide..") + user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) /obj/item/device/electropack/initialize() @@ -40,7 +40,7 @@ A.icon = 'icons/obj/assemblies.dmi' if(!user.unEquip(W)) - user << "\the [W] is stuck to your hand, you cannot attach it to \the [src]!" + user << "[W] is stuck to your hand, you cannot attach it to [src]!" return W.loc = A W.master = A diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index bcdce786746..103ecef6bd3 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -294,8 +294,7 @@ sharpness = IS_SHARP /obj/item/weapon/shard/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the shard of glass! It looks like \he's trying to commit suicide.")) + user.visible_message("[user] is slitting [user.p_their()] [pick("wrists", "throat")] with the shard of glass! It looks like [user.p_theyre()] trying to commit suicide.") return (BRUTELOSS) diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 7fad3b35eb6..a5287918a82 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -609,8 +609,7 @@ "Remember, a dog is for life, not just for christmas.") /obj/item/toy/talking/skeleton/suicide_act(mob/user) - user.visible_message("[user] is trying to commit \ - suicide with \the [src].") + user.visible_message("[user] is trying to commit suicide with [src].") if(ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index 443f5f09907..1012b45d416 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -73,7 +73,7 @@ RCD the RCD blinks yellow." /obj/item/weapon/rcd/suicide_act(mob/user) - user.visible_message("[user] sets the RCD to 'Wall' and points it down \his throat! It looks like \he's trying to commit suicide..") + user.visible_message("[user] sets the RCD to 'Wall' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide..") return (BRUTELOSS) /obj/item/weapon/rcd/verb/toggle_window_type() diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index d631e1bbcaf..e05af6f8e0d 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -169,7 +169,7 @@ var/global/list/RPD_recipes=list( show_menu(user) /obj/item/weapon/pipe_dispenser/suicide_act(mob/user) - user.visible_message("[user] points the end of the RPD down \his throat and presses a button! It looks like \he's trying to commit suicide...") + user.visible_message("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide...") playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1) playsound(get_turf(user), 'sound/items/Deconstruct.ogg', 50, 1) return(BRUTELOSS) diff --git a/code/game/objects/items/weapons/airlock_painter.dm b/code/game/objects/items/weapons/airlock_painter.dm index 695eaec581f..9fd5f2c82c7 100644 --- a/code/game/objects/items/weapons/airlock_painter.dm +++ b/code/game/objects/items/weapons/airlock_painter.dm @@ -34,10 +34,10 @@ //because you're expecting user input. /obj/item/weapon/airlock_painter/proc/can_use(mob/user) if(!ink) - user << "There is no toner cartridge installed in \the [name]!" + user << "There is no toner cartridge installed in [src]!" return 0 else if(ink.charges < 1) - user << "\The [name] is out of ink!" + user << "[src] is out of ink!" return 0 else return 1 @@ -46,7 +46,7 @@ var/obj/item/organ/lungs/L = user.getorganslot("lungs") if(can_use(user) && L) - user.visible_message("[user] is inhaling toner from \the [name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!") use(user) // Once you've inhaled the toner, you throw up your lungs @@ -79,13 +79,13 @@ return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) - user.visible_message("[user] is spraying toner on \himself from \the [name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") user.reagents.add_reagent("colorful_reagent", 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS else - user.visible_message("[user] is trying to inhale toner from \the [name]! It might be a suicide attempt if \the [name] had any toner.") + user.visible_message("[user] is trying to inhale toner from [src]! It might be a suicide attempt if [src] had any toner.") return SHAME @@ -107,12 +107,12 @@ /obj/item/weapon/airlock_painter/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/device/toner)) if(ink) - user << "\the [name] already contains \a [ink]." + user << "[src] already contains \a [ink]." return if(!user.unEquip(W)) return W.loc = src - user << "You install \the [W] into \the [name]." + user << "You install [W] into [src]." ink = W playsound(src.loc, 'sound/machines/click.ogg', 50, 1) else @@ -123,5 +123,5 @@ playsound(src.loc, 'sound/machines/click.ogg', 50, 1) ink.loc = user.loc user.put_in_hands(ink) - user << "You remove \the [ink] from \the [name]." + user << "You remove [ink] from [src]." ink = null diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 24cee4a20fd..6a517fc438d 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -114,7 +114,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM heat = 1000 /obj/item/clothing/mask/cigarette/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name] as quickly as they can! It looks like \he's trying to give \himself cancer.") + user.visible_message("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.") return (TOXLOSS|OXYLOSS) /obj/item/clothing/mask/cigarette/New() @@ -592,7 +592,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/emagged = 0 //LET THE GRIEF BEGIN /obj/item/clothing/mask/vape/suicide_act(mob/user) - user.visible_message("[user] is puffin hard on dat vape, they trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer + user.visible_message("[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer return (TOXLOSS|OXYLOSS) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 8c6dda375f7..55d331bac04 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -43,7 +43,7 @@ /obj/item/weapon/soap/suicide_act(mob/user) user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!") - user.visible_message("[user] lifts the [src.name] to their mouth and gnaws on it furiously, producing a thick froth! They'll never get that BB gun now!") + user.visible_message("[user] lifts [src] to their mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!") PoolOrNew(/obj/effect/particle_effect/foam, loc) return (TOXLOSS) @@ -110,7 +110,7 @@ var/cooldowntime = 20 /obj/item/weapon/bikehorn/suicide_act(mob/user) - user.visible_message("[user] solemnly points the horn at \his temple! It looks like \he's trying to commit suicide..") + user.visible_message("[user] solemnly points the horn at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") playsound(src.loc, honksound, 50, 1) return (BRUTELOSS) diff --git a/code/game/objects/items/weapons/courtroom.dm b/code/game/objects/items/weapons/courtroom.dm index 734a0428179..746ff506c78 100644 --- a/code/game/objects/items/weapons/courtroom.dm +++ b/code/game/objects/items/weapons/courtroom.dm @@ -14,7 +14,7 @@ resistance_flags = FLAMMABLE /obj/item/weapon/gavelhammer/suicide_act(mob/user) - user.visible_message("[user] has sentenced \himself to death with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] has sentenced [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) return (BRUTELOSS) @@ -31,7 +31,7 @@ /obj/item/weapon/gavelblock/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/gavelhammer)) playsound(loc, 'sound/items/gavel.ogg', 100, 1) - user.visible_message("[user] strikes \the [src] with \the [I].") + user.visible_message("[user] strikes [src] with [I].") user.changeNext_move(CLICK_CD_MELEE) else return ..() \ No newline at end of file diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index d23ce40ffc6..543e0fc6951 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -315,7 +315,7 @@ icon_state = "defibpaddles[wielded]_cooldown" /obj/item/weapon/twohanded/shockpaddles/suicide_act(mob/user) - user.visible_message("[user] is putting the live paddles on \his chest! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!") if(req_defib) defib.deductcharge(revivecost) playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index d329b466cf3..f9f15d56a7b 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -26,7 +26,7 @@ return ..() /obj/item/weapon/c4/suicide_act(mob/user) - user.visible_message("[user] activates the [src.name] and holds it above \his head! It looks like \he's going out with a bang!") + user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" if(user.mind) if(user.mind.special_role) diff --git a/code/game/objects/items/weapons/gift.dm b/code/game/objects/items/weapons/gift.dm index 6da16cb6e4a..2f5ba182a6b 100644 --- a/code/game/objects/items/weapons/gift.dm +++ b/code/game/objects/items/weapons/gift.dm @@ -22,7 +22,7 @@ icon_state = "giftdeliverypackage[rand(1,5)]" /obj/item/weapon/a_gift/suicide_act(mob/user) - user.visible_message("[user] peeks inside the [src.name] and cries \himself to death! It looks like they were on the naughty list...") + user.visible_message("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...") return (BRUTELOSS) /obj/item/weapon/a_gift/attack_self(mob/M) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index a72e63d7684..7a1c1835dac 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -34,9 +34,12 @@ var/obj/item/weapon/reagent_containers/food/drinks/soda_cans/can = locate() in contents if(can) var/muh_layer = can.layer + var/muh_plane = can.plane can.layer = FLOAT_LAYER + can.plane = FLOAT_PLANE underlays += can can.layer = muh_layer + can.plane = muh_plane /obj/item/weapon/grenade/iedcasing/attack_self(mob/user) // diff --git a/code/game/objects/items/weapons/grenades/plastic.dm b/code/game/objects/items/weapons/grenades/plastic.dm index 5d11b5bdac8..6485502340a 100644 --- a/code/game/objects/items/weapons/grenades/plastic.dm +++ b/code/game/objects/items/weapons/grenades/plastic.dm @@ -87,9 +87,9 @@ addtimer(src, "prime", det_time*10) /obj/item/weapon/grenade/plastic/suicide_act(mob/user) - message_admins("[key_name_admin(user)](?) (FLW) suicided with [src.name] at ([user.x],[user.y],[user.z] - JMP)",0,1) - message_admins("[key_name(user)] suicided with [src.name] at ([user.x],[user.y],[user.z])") - user.visible_message("[user] activates the [src.name] and holds it above \his head! It looks like \he's going out with a bang!") + message_admins("[key_name_admin(user)](?) (FLW) suicided with [src] at ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[key_name(user)] suicided with [src] at ([user.x],[user.y],[user.z])") + user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") var/message_say = "FOR NO RAISIN!" if(user.mind) if(user.mind.special_role) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 762832bd4e8..4169ff9a503 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -248,7 +248,7 @@ icon_state = "[initial(icon_state)][armed]" /obj/item/weapon/restraints/legcuffs/beartrap/suicide_act(mob/user) - user.visible_message("[user] is sticking \his head in the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is sticking [user.p_their()] head in the [src.name]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return (BRUTELOSS) diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 4df4798b4db..d9061519468 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -11,7 +11,7 @@ var/reskinned = FALSE /obj/item/weapon/nullrod/suicide_act(mob/user) - user.visible_message("[user] is killing \himself with \the [src.name]! It looks like \he's trying to get closer to god!") + user.visible_message("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!") return (BRUTELOSS|FIRELOSS) /obj/item/weapon/nullrod/attack_self(mob/user) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 4b9189cbe1d..eb11b15cd10 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -75,9 +75,9 @@ return ..() /obj/item/weapon/kitchen/knife/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with the [src.name]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.")) + user.visible_message(pick("[user] is slitting [user.p_their()] wrists with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \ + "[user] is slitting [user.p_their()] throat with the [src.name]! It looks like [user.p_theyre()] trying to commit suicide.", \ + "[user] is slitting [user.p_their()] stomach open with the [src.name]! It looks like [user.p_theyre()] trying to commit seppuku.")) return (BRUTELOSS) /obj/item/weapon/kitchen/knife/ritual diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index 68c264455be..54103242d4d 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -13,8 +13,7 @@ resistance_flags = FIRE_PROOF /obj/item/weapon/melee/energy/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his stomach open with [src]! It looks like \he's trying to commit seppuku.", \ - "[user] is falling on [src]! It looks like \he's trying to commit suicide.")) + user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!") return (BRUTELOSS|FIRELOSS) /obj/item/weapon/melee/energy/add_blood(list/blood_dna) @@ -43,7 +42,7 @@ attack_verb_on = list() /obj/item/weapon/melee/energy/axe/suicide_act(mob/user) - user.visible_message("[user] swings the [src.name] towards \his head! It looks like \he's trying to commit suicide.") + user.visible_message("[user] swings [src] towards [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS|FIRELOSS) /obj/item/weapon/melee/energy/sword diff --git a/code/game/objects/items/weapons/melee/misc.dm b/code/game/objects/items/weapons/melee/misc.dm index 316d34adde8..d771dc5f025 100644 --- a/code/game/objects/items/weapons/melee/misc.dm +++ b/code/game/objects/items/weapons/melee/misc.dm @@ -18,8 +18,8 @@ materials = list(MAT_METAL = 1000) /obj/item/weapon/melee/chainofcommand/suicide_act(mob/user) - user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") - return (OXYLOSS) + user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return (OXYLOSS) /obj/item/weapon/melee/synthetic_arm_blade name = "synthetic arm blade" @@ -102,8 +102,8 @@ target.Weaken(3) add_logs(user, target, "stunned", src) src.add_fingerprint(user) - target.visible_message("[user] has knocked down [target] with \the [src]!", \ - "[user] has knocked down [target] with \the [src]!") + target.visible_message("[user] has knocked down [target] with [src]!", \ + "[user] has knocked down [target] with [src]!") if(!iscarbon(user)) target.LAssailant = null else @@ -126,7 +126,7 @@ var/mob/living/carbon/human/H = user var/obj/item/organ/brain/B = H.getorgan(/obj/item/organ/brain) - user.visible_message("[user] stuffs the [src] up their nose and presses the 'extend' button! It looks like they're trying to clear their mind.") + user.visible_message("[user] stuffs [src] up [user.p_their()] nose and presses the 'extend' button! It looks like [user.p_theyre()] trying to clear their mind.") if(!on) src.attack_self(user) else @@ -179,7 +179,7 @@ ..() shard = new /obj/machinery/power/supermatter_shard(src) START_PROCESSING(SSobj, src) - visible_message("\The [src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") + visible_message("[src] appears, balanced ever so perfectly on its hilt. This isn't ominous at all.") /obj/item/weapon/melee/supermatter_sword/process() if(balanced || throwing || ismob(src.loc) || isnull(src.loc)) @@ -213,22 +213,22 @@ balanced = 0 /obj/item/weapon/melee/supermatter_sword/ex_act(severity, target) - visible_message("\The blast wave smacks into \the [src] and rapidly flashes to ash.",\ + visible_message("The blast wave smacks into [src] and rapidly flashes to ash.",\ "You hear a loud crack as you are washed with a wave of heat.") consume_everything() /obj/item/weapon/melee/supermatter_sword/acid_act() - visible_message("\The acid smacks into \the [src] and rapidly flashes to ash.",\ + visible_message("The acid smacks into [src] and rapidly flashes to ash.",\ "You hear a loud crack as you are washed with a wave of heat.") consume_everything() /obj/item/weapon/melee/supermatter_sword/bullet_act(obj/item/projectile/P) - visible_message("[P] smacks into \the [src] and rapidly flashes to ash.",\ + visible_message("[P] smacks into [src] and rapidly flashes to ash.",\ "You hear a loud crack as you are washed with a wave of heat.") consume_everything() /obj/item/weapon/melee/supermatter_sword/suicide_act(mob/user) - user.visible_message("[user] touches the [src]'s blade. It looks like they're tired of waiting for the radiation to kill them!") + user.visible_message("[user] touches [src]'s blade. It looks like [user.p_theyre()] tired of waiting for the radiation to kill [user.p_them()]!") user.drop_item() shard.Bumped(user) @@ -244,7 +244,7 @@ if(istype(T, T.baseturf)) return //Can't void the void, baby! playsound(T, 'sound/effects/supermatter.ogg', 50, 1) - T.visible_message("\The [T] smacks into \the [src] and rapidly flashes to ash.",\ + T.visible_message("[T] smacks into [src] and rapidly flashes to ash.",\ "You hear a loud crack as you are washed with a wave of heat.") shard.Consume() T.ChangeTurf(T.baseturf) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index b885b7d51fc..c678ad18a4e 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -45,7 +45,7 @@ /obj/item/weapon/storage/backpack/holding/suicide_act(mob/user) - user.visible_message("[user] is jumping into [src]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is jumping into [src]! It looks like [user.p_theyre()] trying to commit suicide.") user.drop_item() user.Stun(5) sleep(20) @@ -100,7 +100,7 @@ max_combined_w_class = 60 /obj/item/weapon/storage/backpack/santabag/suicide_act(mob/user) - user.visible_message("[user] places the [src.name] over their head and pulls it tight! It looks like they aren't in the Christmas spirit...") + user.visible_message("[user] places [src] over their head and pulls it tight! It looks like they aren't in the Christmas spirit...") return (OXYLOSS) /obj/item/weapon/storage/backpack/cultpack diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index ae1173db001..216e983acba 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -41,7 +41,7 @@ cant_hold = list(/obj/item/weapon/disk/nuclear) /obj/item/weapon/storage/bag/trash/suicide_act(mob/user) - user.visible_message("[user] puts the [src.name] over their head and starts chomping at the insides! Disgusting!") + user.visible_message("[user] puts [src] over [user.p_their()] head and starts chomping at the insides! Disgusting!") playsound(loc, 'sound/items/eatfood.ogg', 50, 1, -1) return (TOXLOSS) diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm index fb83d85e1a1..927f7a74c6c 100644 --- a/code/game/objects/items/weapons/storage/book.dm +++ b/code/game/objects/items/weapons/storage/book.dm @@ -20,7 +20,7 @@ var/deity_name = "Christ" /obj/item/weapon/storage/book/bible/suicide_act(mob/user) - user.visible_message("[user] is offering \himself to [src.deity_name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is offering [user.p_them()]self to [deity_name]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/storage/book/bible/booze @@ -153,7 +153,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible", " return if (user.disabilities & CLUMSY && prob(50)) - user << "The [src] slips out of your hand and hits your head." + user << "[src] slips out of your hand and hits your head." user.take_bodypart_damage(10) user.Paralyse(20) return diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index d8e8a8cfd0c..31ec1007d76 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -566,7 +566,7 @@ foldable = null /obj/item/weapon/storage/box/hug/suicide_act(mob/user) - user.visible_message("[user] clamps the box of hugs on \his jugular! Guess it wasn't such a hugbox after all..") + user.visible_message("[user] clamps the box of hugs on [user.p_their()] jugular! Guess it wasn't such a hugbox after all..") return (BRUTELOSS) /obj/item/weapon/storage/box/hug/attack_self(mob/user) diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index bd030784150..dda9c69aa43 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -166,6 +166,7 @@ for(var/obj/O in contents) O.screen_loc = "[cx],[cy]" O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE cx++ if(cx > mx) cx = tx @@ -185,6 +186,7 @@ ND.sample_object.screen_loc = "[cx]:16,[cy]:16" ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" ND.sample_object.layer = ABOVE_HUD_LAYER + ND.sample_object.plane = ABOVE_HUD_PLANE cx++ if(cx > (4+cols)) cx = 4 @@ -195,6 +197,7 @@ O.screen_loc = "[cx]:16,[cy]:16" O.maptext = "" O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE cx++ if(cx > (4+cols)) cx = 4 @@ -358,6 +361,7 @@ var/mob/M = loc W.dropped(M) W.layer = initial(W.layer) + W.plane = initial(W.plane) W.loc = new_location if(usr) @@ -483,10 +487,12 @@ boxes.icon_state = "block" boxes.screen_loc = "7,7 to 10,8" boxes.layer = HUD_LAYER + boxes.plane = HUD_PLANE closer = new /obj/screen/close() closer.master = src closer.icon_state = "backpack_close" closer.layer = ABOVE_HUD_LAYER + closer.plane = ABOVE_HUD_PLANE orient2hud() @@ -521,4 +527,4 @@ /obj/item/weapon/storage/contents_explosion(severity, target) for(var/atom/A in contents) A.ex_act(severity, target) - CHECK_TICK \ No newline at end of file + CHECK_TICK diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm index 3381b821b2d..856496eb8a2 100644 --- a/code/game/objects/items/weapons/storage/toolbox.dm +++ b/code/game/objects/items/weapons/storage/toolbox.dm @@ -15,7 +15,7 @@ hitsound = 'sound/weapons/smash.ogg' /obj/item/weapon/storage/toolbox/suicide_act(mob/user) - user.visible_message("[user] robusts \himself with [src]! It looks like \he's trying to commit suicide..") + user.visible_message("[user] robusts [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/storage/toolbox/emergency diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index c4118cce190..f7bd5368e37 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -18,7 +18,7 @@ var/throw_hit_chance = 35 /obj/item/weapon/melee/baton/suicide_act(mob/user) - user.visible_message("[user] is putting the live [name] in \his mouth! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the live [name] in [user.p_their()] mouth! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) /obj/item/weapon/melee/baton/New() diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index 18b428f311d..4c2f7c5a5d7 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -114,7 +114,7 @@ /obj/item/weapon/tank/suicide_act(mob/user) var/mob/living/carbon/human/H = user - user.visible_message("[user] is putting the [src]'s valve to their lips! I don't think they're gonna stop!") + user.visible_message("[user] is putting [src]'s valve to [user.p_their()] lips! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/effects/spray.ogg', 10, 1, -3) if (H && !qdeleted(H)) for(var/obj/item/W in H) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 7c225fe21e8..906d25d77d1 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -32,7 +32,7 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) /obj/item/weapon/wrench/suicide_act(mob/user) - user.visible_message("[user] is beating \himself to death with the [src]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) return (BRUTELOSS) @@ -64,13 +64,13 @@ /obj/item/weapon/wrench/power/attack_self(mob/user) playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) var/obj/item/weapon/wirecutters/power/s_drill = new /obj/item/weapon/screwdriver/power - user << "You attach the screw driver bit to the [src]." + user << "You attach the screw driver bit to [src]." user.unEquip(src) user.put_in_active_hand(s_drill) qdel(src) obj/item/weapon/wrench/power/suicide_act(mob/user) - user.visible_message("[user] is pressing the [src] against \his head, it looks like he's trying to drill \his head off") + user.visible_message("[user] is pressing [src] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/wrench/medical @@ -83,7 +83,7 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) attack_verb = list("wrenched", "medicaled", "tapped", "jabbed", "whacked") /obj/item/weapon/wrench/medical/suicide_act(mob/user) - user.visible_message("[user] is praying to the medical wrench to take \his soul. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is praying to the medical wrench to take [user.p_their()] soul. It looks like [user.p_theyre()] trying to commit suicide!") // TODO Make them glow with the power of the M E D I C A L W R E N C H // during their ascension @@ -134,8 +134,7 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) /obj/item/weapon/screwdriver/suicide_act(mob/user) - user.visible_message(pick("[user] is stabbing the [src] into \his temple! It looks like \he's trying to commit suicide.", \ - "[user] is stabbing the [src] into \his heart! It looks like \he's trying to commit suicide.")) + user.visible_message("[user] is stabbing [src] into [user.p_their()] [pick("temple", "heart")]! It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) /obj/item/weapon/screwdriver/New(loc, var/param_color = null) @@ -181,13 +180,13 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) toolspeed = 4 /obj/item/weapon/screwdriver/power/suicide_act(mob/user) - user.visible_message("[user] is putting the [src] up to \his temple, it looks like they're trying to commit suicide") + user.visible_message("[user] is putting [src] to [user.p_their()] temple. It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) /obj/item/weapon/screwdriver/power/attack_self(mob/user) playsound(get_turf(user),'sound/items/change_drill.ogg',50,1) var/obj/item/weapon/wrench/power/b_drill = new /obj/item/weapon/wrench/power - user << "You attach the bolt driver bit to the [src]." + user << "You attach the bolt driver bit to [src]." user.unEquip(src) user.put_in_active_hand(b_drill) qdel(src) @@ -241,7 +240,7 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) ..() /obj/item/weapon/wirecutters/suicide_act(mob/user) - user.visible_message("[user] is cutting at \his arteries with the [src]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is cutting at [user.p_their()] arteries with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1, -1) return (BRUTELOSS) @@ -269,21 +268,20 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) toolspeed = 4 /obj/item/weapon/wirecutters/power/suicide_act(mob/user) - user.visible_message("[user] is the [src] around \his neck, it looks like \he's trying to rip \his head off!") + user.visible_message("[user] is [src] around [user.p_their()] neck. It looks like [user.p_theyre()] trying to rip [user.p_their()] head off!") playsound(loc, 'sound/items/jaws_cut.ogg', 50, 1, -1) - var/mob/living/carbon/C = user - var/obj/item/bodypart/BP = C.get_bodypart("head") - if(BP) - BP.drop_limb()// <- i have no idea why this works, but it does - playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) - else - user.visible_message("[user] doesn't have a head to cutt off, but dies anyway.") + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/bodypart/BP = C.get_bodypart("head") + if(BP) + BP.drop_limb() + playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) return (BRUTELOSS) /obj/item/weapon/wirecutters/power/attack_self(mob/user) playsound(get_turf(user),"sound/items/change_jaws.ogg",50,1) var/obj/item/weapon/crowbar/power/pryjaws = new /obj/item/weapon/crowbar/power - user << "You attach the pry jaws to the [src]." + user << "You attach the pry jaws to [src]." user.unEquip(src) user.put_in_active_hand(pryjaws) qdel(src) @@ -372,7 +370,7 @@ obj/item/weapon/wrench/power/suicide_act(mob/user) /obj/item/weapon/weldingtool/suicide_act(mob/user) - user.visible_message("[user] welds \his every orifice closed! It looks like \he's trying to commit suicide..") + user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) @@ -554,8 +552,7 @@ obj/item/weapon/weldingtool/proc/switched_off(mob/user) /obj/item/weapon/weldingtool/ignition_effect(atom/A, mob/user) if(welding && remove_fuel(1, user)) - . = "[user] casually lights [A] with [src], \ - what a badass." + . = "[user] casually lights [A] with [src], what a badass." else . = "" @@ -651,7 +648,7 @@ obj/item/weapon/weldingtool/proc/switched_off(mob/user) armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 50, acid = 30) /obj/item/weapon/crowbar/suicide_act(mob/user) - user.visible_message("[user] is beating \himself to death with the [src]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is beating [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/genhit.ogg', 50, 1, -1) return (BRUTELOSS) @@ -697,14 +694,14 @@ obj/item/weapon/weldingtool/proc/switched_off(mob/user) toolspeed = 4 /obj/item/weapon/crowbar/power/suicide_act(mob/user) - user.visible_message("[user] is putting his head in the [src], it looks like \he's trying to commit suicide!") + user.visible_message("[user] is putting [user.p_their()] head in [src], it looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/jaws_pry.ogg', 50, 1, -1) return (BRUTELOSS) /obj/item/weapon/crowbar/power/attack_self(mob/user) playsound(get_turf(user),"sound/items/change_jaws.ogg",50,1) var/obj/item/weapon/wirecutters/power/cutjaws = new /obj/item/weapon/wirecutters/power - user << "You attach the cutting jaws to the [src]." + user << "You attach the cutting jaws to [src]." user.unEquip(src) user.put_in_active_hand(cutjaws) qdel(src) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index ec802e17b6e..d8f2c0a205f 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -44,9 +44,9 @@ if(iscyborg(user)) user << "You free up your module." else if(istype(src, /obj/item/weapon/twohanded/required)) - user << "You drop \the [name]." + user << "You drop [src]." else - user << "You are now carrying the [name] with one hand." + user << "You are now carrying [src] with one hand." if(unwieldsound) playsound(loc, unwieldsound, 50, 1) var/obj/item/weapon/twohanded/offhand/O = user.get_inactive_held_item() @@ -72,14 +72,14 @@ name = "[name] (Wielded)" update_icon() if(iscyborg(user)) - user << "You dedicate your module to [name]." + user << "You dedicate your module to [src]." else - user << "You grab the [name] with both hands." + user << "You grab [src] with both hands." if (wieldsound) playsound(loc, wieldsound, 50, 1) var/obj/item/weapon/twohanded/offhand/O = new(user) ////Let's reserve his other hand~ O.name = "[name] - offhand" - O.desc = "Your second grip on the [name]" + O.desc = "Your second grip on [src]." user.put_in_inactive_hand(O) return @@ -136,7 +136,7 @@ /obj/item/weapon/twohanded/required/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(wielded && !slot_flags) - M << "\The [src] is too cumbersome to carry with anything but your hands!" + M << "[src] is too cumbersome to carry with anything but your hands!" return 0 return ..() @@ -145,7 +145,7 @@ if(get_dist(src,user) > 1) return 0 if(H != null) - user << "\The [src] is too cumbersome to carry in one hand!" + user << "[src] is too cumbersome to carry in one hand!" return if(src.loc != user) wield(user) @@ -170,7 +170,7 @@ w_class = 4 slot_flags = SLOT_BACK force_unwielded = 5 - force_wielded = 24 // Was 18, Buffed - RobRichards/RR + force_wielded = 24 attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") hitsound = 'sound/weapons/bladeslice.ogg' sharpness = IS_SHARP @@ -184,7 +184,7 @@ return /obj/item/weapon/twohanded/fireaxe/suicide_act(mob/user) - user.visible_message("[user] axes \himself from head to toe! It looks like \he's trying to commit suicide..") + user.visible_message("[user] axes [user.p_them()]self from head to toe! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) @@ -263,7 +263,7 @@ sleep(1) /obj/item/weapon/twohanded/dualsaber/proc/impale(mob/living/user) - user << "You twirl around a bit before losing your balance and impaling yourself on \the [src]." + user << "You twirl around a bit before losing your balance and impaling yourself on [src]." if (force_wielded) user.take_bodypart_damage(20,25) else @@ -316,8 +316,7 @@ var/mob/living/carbon/C = user if(C.wear_mask == src) in_mouth = ", barely missing their nose" - . = "[user] swings their \ - [src][in_mouth]. They light [A] in the process." + . = "[user] swings [user.p_their()] [src][in_mouth]. [user.p_they()] light[user.p_s()] [A] in the process." playsound(loc, hitsound, get_clamped_volume(), 1, -1) add_fingerprint(user) // Light your candles while spinning around the room @@ -435,7 +434,7 @@ /obj/item/weapon/twohanded/required/chainsaw/attack_self(mob/user) on = !on - user << "As you pull the starting cord dangling from \the [src], [on ? "it begins to whirr." : "the chain stops moving."]" + user << "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]" force = on ? force_on : initial(force) throwforce = on ? force_on : initial(force) icon_state = "chainsaw_[on ? "on" : "off"]" @@ -535,7 +534,7 @@ icon_state = "pitchfork[wielded]" /obj/item/weapon/twohanded/pitchfork/suicide_act(mob/user) - user.visible_message("[user] impales \himself in \his abdomen with [src]! It looks like \he's trying to commit suicide..") + user.visible_message("[user] impales [user.p_them()]self in [user.p_their()] abdomen with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/twohanded/pitchfork/demonic/pickup(mob/user) @@ -543,7 +542,7 @@ var/mob/living/U = user if(U.mind && !U.mind.devilinfo && (U.mind.soulOwner == U.mind)) //Burn hands unless they are a devil or have sold their soul U.visible_message("As [U] picks [src] up, [U]'s arms briefly catch fire.", \ - "\"As you pick up the [src] your arms ignite, reminding you of all your past sins.\"") + "\"As you pick up [src] your arms ignite, reminding you of all your past sins.\"") if(ishuman(U)) var/mob/living/carbon/human/H = U H.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm")) @@ -552,7 +551,7 @@ /obj/item/weapon/twohanded/pitchfork/demonic/attack(mob/target, mob/living/carbon/human/user) if(user.mind && !user.mind.devilinfo && (user.mind.soulOwner != user.mind)) - user << "The [src] burns in your hands." + user << "[src] burns in your hands." user.apply_damage(rand(force/2, force), BURN, pick("l_arm", "r_arm")) ..() diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 0120e97a2a2..9599cf67d0e 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -40,7 +40,7 @@ resistance_flags = FIRE_PROOF /obj/item/weapon/banhammer/suicide_act(mob/user) - user.visible_message("[user] is hitting \himself with the [src.name]! It looks like \he's trying to ban \himself from life.") + user.visible_message("[user] is hitting [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to ban [user.p_them()]self from life.") return (BRUTELOSS|FIRELOSS|TOXLOSS|OXYLOSS) /obj/item/weapon/banhammer/attack(mob/M, mob/user) @@ -61,8 +61,9 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") /obj/item/weapon/sord/suicide_act(mob/user) - user.visible_message("[user] is trying to impale \himself with \the [name]! It might be a suicide attempt if it weren't so shitty.", "You try to impale yourself with \the [name], but it's USELESS...") - return(SHAME) + user.visible_message("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty.", \ + "You try to impale yourself with [src], but it's USELESS...") + return SHAME /obj/item/weapon/claymore name = "claymore" @@ -84,7 +85,7 @@ resistance_flags = FIRE_PROOF /obj/item/weapon/claymore/suicide_act(mob/user) - user.visible_message("[user] is falling on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is falling on [src]! It looks like [user.p_theyre()] trying to commit suicide!") return(BRUTELOSS) var/highlander_claymores = 0 @@ -128,7 +129,7 @@ var/highlander_claymores = 0 /obj/item/weapon/claymore/highlander/pickup(mob/living/user) user << "The power of Scotland protects you! You are shielded from all stuns and knockdowns." - user.add_stun_absorption("highlander", INFINITY, 1, "is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") + user.add_stun_absorption("highlander", INFINITY, 1, " is protected by the power of Scotland!", "The power of Scotland absorbs the stun!", " is protected by the power of Scotland!") /obj/item/weapon/claymore/highlander/dropped(mob/living/user) qdel(src) //If this ever happens, it's because you lost an arm @@ -237,7 +238,7 @@ var/highlander_claymores = 0 slot_flags = null /obj/item/weapon/katana/suicide_act(mob/user) - user.visible_message("[user] is slitting \his stomach open with the [src.name]! It looks like \he's trying to commit seppuku.") + user.visible_message("[user] is slitting [user.p_their()] stomach open with [src]! It looks like [user.p_theyre()] trying to commit seppuku!") return(BRUTELOSS) /obj/item/weapon/wirerod @@ -335,7 +336,7 @@ var/highlander_claymores = 0 sharpness = IS_BLUNT /obj/item/weapon/switchblade/suicide_act(mob/user) - user.visible_message("[user] is slitting \his own throat with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is slitting [user.p_their()] own throat with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) /obj/item/weapon/phone @@ -353,9 +354,9 @@ var/highlander_claymores = 0 /obj/item/weapon/phone/suicide_act(mob/user) if(locate(/obj/structure/chair/stool) in user.loc) - user.visible_message("[user] begins to tie a noose with the [src.name]'s cord! It looks like \he's trying to commit suicide.") + user.visible_message("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!") else - user.visible_message("[user] is strangling \himself with the [src.name]'s cord! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is strangling [user.p_them()]self with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!") return(OXYLOSS) /obj/item/weapon/cane @@ -411,7 +412,7 @@ var/highlander_claymores = 0 icon_state = "ectoplasm" /obj/item/weapon/ectoplasm/suicide_act(mob/user) - user.visible_message("[user] is inhaling the [src.name]! It looks like \he's trying to visit the astral plane.") + user.visible_message("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane.") return (OXYLOSS) /obj/item/weapon/mounted_chainsaw diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 794fdd7883d..633bcbc3994 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1345,6 +1345,7 @@ if(I) I.loc = M.loc I.layer = initial(I.layer) + I.plane = initial(I.plane) I.dropped(M) M.Paralyse(5) @@ -1375,6 +1376,7 @@ if(I) I.loc = M.loc I.layer = initial(I.layer) + I.plane = initial(I.plane) I.dropped(M) M.Paralyse(5) @@ -1428,6 +1430,7 @@ if(I) I.loc = M.loc I.layer = initial(I.layer) + I.plane = initial(I.plane) I.dropped(M) if(ishuman(M)) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 4422ec1fedf..8808513ad59 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -260,6 +260,7 @@ welded = 0 update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) + pipe_vision_img.plane = ABOVE_HUD_PLANE return 0 else return ..() @@ -290,6 +291,7 @@ welded = 0 update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) + pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index b39fe29c0ff..43abe6ee607 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -353,6 +353,7 @@ welded = 0 update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) + pipe_vision_img.plane = ABOVE_HUD_PLANE return 0 else return ..() @@ -374,6 +375,7 @@ welded = 0 update_icon() pipe_vision_img = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) + pipe_vision_img.plane = ABOVE_HUD_PLANE playsound(loc, 'sound/weapons/bladeslice.ogg', 100, 1) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 1559c82c9f3..883fb4266ba 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -220,7 +220,6 @@ var/next_external_rsc = 0 if(!void) void = new() - void = void.MakeGreed() screen += void diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index ebde71d8005..c28acd10e73 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -11,7 +11,7 @@ dog_fashion = /datum/dog_fashion/head/chef /obj/item/clothing/head/chefhat/suicide_act(mob/user) - user.visible_message("[user] is donning [src]! It looks like they're trying to become a chef.") + user.visible_message("[user] is donning [src]! It looks like [user.p_theyre()] trying to become a chef.") user.say("Bork Bork Bork!") sleep(20) user.visible_message("[user] climbs into an imaginary oven!") diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index c5f6436a484..8267c58d1a6 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,7 +1,7 @@ /obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking /obj/item/clothing/shoes/suicide_act(mob/user) - user.visible_message("[user] is bashing their own head in with [src]! Ain't that a kick in the head?") + user.visible_message("[user] is bashing [user.p_their()] own head in with [src]! Ain't that a kick in the head?") for(var/i = 0, i < 3, i++) sleep(3) playsound(user, 'sound/weapons/genhit2.ogg', 50, 1) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 4c4c319fda3..9cca7ee80b9 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -18,7 +18,6 @@ icon_state = "armoralt" item_state = "armoralt" blood_overlay_type = "armor" - armor = list(melee = 30, bullet = 30, laser = 30, energy = 10, bomb = 25, bio = 0, rad = 0, fire = 50, acid = 75) dog_fashion = /datum/dog_fashion/back /obj/item/clothing/suit/armor/vest/alt diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 77fd5976d4a..057752822f3 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -19,7 +19,7 @@ flags_inv = HIDEHAIR|HIDEEARS /obj/item/clothing/suit/cloak/suicide_act(mob/user) - user.visible_message("[user] is strangling themself with [src]! It looks like they're trying to commit suicide.") + user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return(OXYLOSS) /obj/item/clothing/suit/cloak/hos diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index fc53036a794..683b065b36a 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -20,6 +20,7 @@ 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 @@ -45,6 +46,7 @@ pixel_x -= 8 pixel_y += 8 layer = initial(layer) + plane = initial(plane) U.cut_overlays() U.hastie = null diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm index df05f33ccdb..8490c2bf5b3 100644 --- a/code/modules/detectivework/footprints_and_rag.dm +++ b/code/modules/detectivework/footprints_and_rag.dm @@ -19,8 +19,7 @@ spillable = 0 /obj/item/weapon/reagent_containers/glass/rag/suicide_act(mob/user) - user.visible_message("[user] ties the [src.name] around their head and groans! It looks like--") - user.say("MY BRAIN HURTS!!") + user.visible_message("[user] is smothering [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (OXYLOSS) /obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user,proximity) diff --git a/code/modules/events/anomaly_bluespace.dm b/code/modules/events/anomaly_bluespace.dm index bcfc914bc75..3d77e6e6b12 100644 --- a/code/modules/events/anomaly_bluespace.dm +++ b/code/modules/events/anomaly_bluespace.dm @@ -66,6 +66,7 @@ blueeffect.icon = 'icons/effects/effects.dmi' blueeffect.icon_state = "shieldsparkles" blueeffect.layer = FLASH_LAYER + blueeffect.plane = FULLSCREEN_PLANE blueeffect.mouse_opacity = 0 M.client.screen += blueeffect sleep(20) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index de4ccc102e4..c14da947741 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -630,6 +630,7 @@ var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/ite if(slots_free.len) halitem.screen_loc = pick(slots_free) halitem.layer = ABOVE_HUD_LAYER + halitem.plane = ABOVE_HUD_PLANE switch(rand(1,6)) if(1) //revolver halitem.icon = 'icons/obj/guns/projectile.dmi' diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 41077807377..7d209adf80b 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -259,7 +259,7 @@ ///Lavaland bowls and bottles/// -/obj/item/reagent_containers/food/drinks/mushroom_bowl +/obj/item/weapon/reagent_containers/food/drinks/mushroom_bowl name = "mushroom bowl" desc = "A bowl made out of mushrooms. Not food, though it might have contained some at some point." icon = 'icons/obj/lavaland/ash_flora.dmi' diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 306db8311da..afdc5aaaec7 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -109,8 +109,8 @@ target.visible_message("[user] has hit [target][head_attack_message] with a bottle of [src.name]!", \ "[user] has hit [target][head_attack_message] with a bottle of [src.name]!") else - user.visible_message("[target] hits \himself with a bottle of [src.name][head_attack_message]!", \ - "[target] hits \himself with a bottle of [src.name][head_attack_message]!") + user.visible_message("[target] hits [target.p_them()]self with a bottle of [src.name][head_attack_message]!", \ + "[target] hits [target.p_them()]self with a bottle of [src.name][head_attack_message]!") //Attack logs add_logs(user, target, "attacked", src) @@ -125,7 +125,7 @@ /obj/item/weapon/reagent_containers/food/drinks/bottle/proc/SplashReagents(var/mob/M) if(src.reagents.total_volume) - M.visible_message("The contents of \the [src] splashes all over [M]!") + M.visible_message("The contents of [src] splashes all over [M]!") reagents.reaction(M, TOUCH) reagents.clear_reagents() return @@ -380,7 +380,7 @@ message_admins(message) log_game("[key_name(user)] has primed a [name] for detonation at [bombarea] [COORD(bombturf)].") - user << "You light \the [src] on fire." + user << "You light [src] on fire." add_overlay(fire_overlay) if(!isGlass) spawn(50) @@ -402,6 +402,6 @@ if(!isGlass) user << "The flame's spread too far on it!" return - user << "You snuff out the flame on \the [src]." + user << "You snuff out the flame on [src]." overlays -= fire_overlay active = 0 diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 9f5ed9a028b..813174a0649 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -125,7 +125,7 @@ possible_states = list() /obj/item/weapon/reagent_containers/food/condiment/saltshaker/suicide_act(mob/user) - user.visible_message("[user] begins to swap forms with the salt shaker! It looks like \he's trying to commit suicide.") + user.visible_message("[user] begins to swap forms with the salt shaker! It looks like [user.p_theyre()] trying to commit suicide!") var/newname = "[name]" name = "[user.name]" user.name = newname diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 6f6b04f66ea..f9a8a9ac207 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -25,7 +25,7 @@ bitesize = 5 /obj/item/weapon/reagent_containers/food/snacks/grown/banana/suicide_act(mob/user) - user.visible_message("[user] is aiming the [src.name] at themself! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is aiming [src] at [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1) sleep(25) if(!user) @@ -49,7 +49,7 @@ throw_range = 7 /obj/item/weapon/grown/bananapeel/suicide_act(mob/user) - user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is deliberately slipping on [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1) return (BRUTELOSS) diff --git a/code/modules/hydroponics/grown/kudzu.dm b/code/modules/hydroponics/grown/kudzu.dm index 2e05b8bb35b..a4825162e7e 100644 --- a/code/modules/hydroponics/grown/kudzu.dm +++ b/code/modules/hydroponics/grown/kudzu.dm @@ -22,7 +22,7 @@ return S /obj/item/seeds/kudzu/suicide_act(mob/user) - user.visible_message("[user] swallows the pack of kudzu seeds! It looks like \he's trying to commit suicide..") + user.visible_message("[user] swallows the pack of kudzu seeds! It looks like [user.p_theyre()] trying to commit suicide!") plant(user) return (BRUTELOSS) diff --git a/code/modules/hydroponics/grown/nettle.dm b/code/modules/hydroponics/grown/nettle.dm index fa8f9fc1de7..d9f52938f80 100644 --- a/code/modules/hydroponics/grown/nettle.dm +++ b/code/modules/hydroponics/grown/nettle.dm @@ -43,7 +43,7 @@ attack_verb = list("stung") /obj/item/weapon/grown/nettle/suicide_act(mob/user) - user.visible_message("[user] is eating some of the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is eating some of [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS|TOXLOSS) /obj/item/weapon/grown/nettle/pickup(mob/living/user) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 6d1a3be6e02..e2c3c518582 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -33,7 +33,7 @@ reagents.add_reagent("weedkiller", 100) /obj/item/weapon/reagent_containers/spray/weedspray/suicide_act(mob/user) - user.visible_message("[user] is huffing the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (TOXLOSS) /obj/item/weapon/reagent_containers/spray/pestspray // -- Skie @@ -55,7 +55,7 @@ reagents.add_reagent("pestkiller", 100) /obj/item/weapon/reagent_containers/spray/pestspray/suicide_act(mob/user) - viewers(user) << "[user] is huffing the [src.name]! It looks like \he's trying to commit suicide." + user.visible_message("[user] is huffing [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (TOXLOSS) /obj/item/weapon/cultivator @@ -91,7 +91,7 @@ sharpness = IS_SHARP /obj/item/weapon/hatchet/suicide_act(mob/user) - user.visible_message("[user] is chopping at \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is chopping at [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return (BRUTELOSS) @@ -111,9 +111,14 @@ attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' -/obj/item/weapon/scythe/suicide_act(mob/user) // maybe later i'll actually figure out how to make it behead them - user.visible_message("[user] is beheading \himself with the [src.name]! It looks like \he's trying to commit suicide.") - playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) +/obj/item/weapon/scythe/suicide_act(mob/user) + user.visible_message("[user] is beheading [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/bodypart/BP = C.get_bodypart("head") + if(BP) + BP.drop_limb() + playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) return (BRUTELOSS) // ************************************* diff --git a/code/modules/lighting/lighting_system.dm b/code/modules/lighting/lighting_system.dm index e453e04ae64..97632e13043 100644 --- a/code/modules/lighting/lighting_system.dm +++ b/code/modules/lighting/lighting_system.dm @@ -237,6 +237,7 @@ icon = LIGHTING_ICON icon_state = LIGHTING_ICON_STATE layer = LIGHTING_LAYER + plane = LIGHTING_PLANE mouse_opacity = 0 blend_mode = BLEND_OVERLAY invisibility = INVISIBILITY_LIGHTING diff --git a/code/modules/mining/equipment.dm b/code/modules/mining/equipment.dm index 4e26e3f8d8c..3a0140c80f8 100644 --- a/code/modules/mining/equipment.dm +++ b/code/modules/mining/equipment.dm @@ -417,6 +417,7 @@ for(var/turf/closed/mineral/M in minerals) var/turf/F = get_turf(M) var/image/I = image('icons/turf/smoothrocks.dmi', loc = F, icon_state = M.scan_state, layer = FLASH_LAYER) + I.plane = FULLSCREEN_PLANE C.images += I spawn(30) if(C) diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm index dc6d616d366..f1d0192c094 100644 --- a/code/modules/mining/lavaland/ash_flora.dm +++ b/code/modules/mining/lavaland/ash_flora.dm @@ -212,7 +212,7 @@ //what you can craft with these things /datum/crafting_recipe/mushroom_bowl name = "Mushroom Bowl" - result = /obj/item/reagent_containers/food/drinks/mushroom_bowl + result = /obj/item/weapon/reagent_containers/food/drinks/mushroom_bowl reqs = list(/obj/item/weapon/reagent_containers/food/snacks/ash_flora/shavings = 5) time = 30 category = CAT_PRIMAL diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index c49001fd7d7..c8606b07e1b 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -268,6 +268,7 @@ s.use(s.max_amount) s.loc = loc s.layer = initial(s.layer) + s.plane = initial(s.plane) /obj/machinery/mineral/ore_redemption/power_change() ..() diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 932def45a6a..44db183f45f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -334,9 +334,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp A.icon = ui_style2icon(client.prefs.UI_style) A.desc = message var/old_layer = source.layer + var/old_plane = source.plane source.layer = FLOAT_LAYER + source.plane = FLOAT_PLANE A.add_overlay(source) source.layer = old_layer + source.plane = old_plane src << "(Click to re-enter)" if(sound) src << sound(sound) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 2348aaa112f..ad183cc471f 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -159,6 +159,7 @@ I.loc = src held_items[hand_index] = I I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE I.equipped(src, slot_hands) if(I.pulledby) I.pulledby.stop_pulling() @@ -216,6 +217,7 @@ return FALSE I.forceMove(get_turf(src)) I.layer = initial(I.layer) + I.plane = initial(I.plane) I.dropped(src) return FALSE @@ -268,6 +270,7 @@ if(client) client.screen -= I I.layer = initial(I.layer) + I.plane = initial(I.plane) I.appearance_flags &= ~NO_CLIENT_COLOR I.forceMove(loc) I.dropped(src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 4aae3881bef..de8de331e04 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -323,6 +323,7 @@ W.dropped(src) if (W) W.layer = initial(W.layer) + W.plane = initial(W.plane) if (legcuffed) var/obj/item/weapon/W = legcuffed legcuffed = null @@ -334,6 +335,7 @@ W.dropped(src) if (W) W.layer = initial(W.layer) + W.plane = initial(W.plane) /mob/living/carbon/proc/clear_cuffs(obj/item/I, cuff_break) if(!I.loc || buckled) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index b5a9658e9f5..e67f9364ac5 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -605,8 +605,7 @@ if(health >= 0) if(src == M) - visible_message( \ - "[src] examines \himself.", \ + visible_message("[src] examines [p_them()]self.", \ "You check yourself for injuries.") var/list/missing = list("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg") diff --git a/code/modules/mob/living/carbon/inventory.dm b/code/modules/mob/living/carbon/inventory.dm index b1db784fb46..f6101d0d7e8 100644 --- a/code/modules/mob/living/carbon/inventory.dm +++ b/code/modules/mob/living/carbon/inventory.dm @@ -37,6 +37,7 @@ observe.client.screen -= I I.loc = src I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE I.appearance_flags |= NO_CLIENT_COLOR var/not_handled = FALSE switch(slot) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index f8a7915357e..3b95c35b0fd 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -142,8 +142,8 @@ if(user.grab_state) //only the first upgrade is instantaneous var/old_grab_state = user.grab_state var/grab_upgrade_time = 30 - visible_message("[user] starts to tighten \his grip on [src]!", \ - "[user] starts to tighten \his grip on you!") + visible_message("[user] starts to tighten [user.p_their()] grip on [src]!", \ + "[user] starts to tighten [user.p_their()] grip on you!") if(!do_mob(user, src, grab_upgrade_time)) return 0 if(!user.pulling || user.pulling != src || user.grab_state != old_grab_state || user.a_intent != "grab") diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm index 71aaaf15df1..aa890b2730a 100644 --- a/code/modules/mob/living/silicon/robot/inventory.dm +++ b/code/modules/mob/living/silicon/robot/inventory.dm @@ -50,6 +50,7 @@ O.mouse_opacity = initial(O.mouse_opacity) module_state_1 = O O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE O.screen_loc = inv1.screen_loc observer_screen_update(O,TRUE) contents += O @@ -61,6 +62,7 @@ O.mouse_opacity = initial(O.mouse_opacity) module_state_2 = O O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE O.screen_loc = inv2.screen_loc observer_screen_update(O,TRUE) contents += O @@ -72,6 +74,7 @@ O.mouse_opacity = initial(O.mouse_opacity) module_state_3 = O O.layer = ABOVE_HUD_LAYER + O.plane = ABOVE_HUD_PLANE O.screen_loc = inv3.screen_loc observer_screen_update(O,TRUE) contents += O diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 46a5ea5ce86..7830bea184b 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -85,6 +85,7 @@ robot_modules_background = new() robot_modules_background.icon_state = "block" robot_modules_background.layer = HUD_LAYER //Objects that appear on screen are on layer ABOVE_HUD_LAYER, UI should be just below it. + robot_modules_background.plane = HUD_PLANE ident = rand(1, 999) update_icons() diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 4c11c6d04d3..dde4a1e2f15 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -408,6 +408,7 @@ var/global/mulebot_count = 0 load.loc = loc load.pixel_y = initial(load.pixel_y) load.layer = initial(load.layer) + load.plane = initial(load.plane) if(dirn) var/turf/T = loc var/turf/newT = get_step(T,dirn) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm index 44838adbe88..1437e77e56e 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/inventory.dm @@ -60,6 +60,7 @@ I.screen_loc = null // will get moved if inventory is visible I.loc = src I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE switch(slot) if(slot_head) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index ca5456e625c..95c18b53f40 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -41,6 +41,7 @@ if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) r_hand.layer = ABOVE_HUD_LAYER + r_hand.plane = ABOVE_HUD_PLANE r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) client.screen |= r_hand @@ -58,6 +59,7 @@ if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) l_hand.layer = ABOVE_HUD_LAYER + l_hand.plane = ABOVE_HUD_PLANE l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) client.screen |= l_hand diff --git a/code/modules/mob/living/simple_animal/friendly/sloth.dm b/code/modules/mob/living/simple_animal/friendly/sloth.dm new file mode 100644 index 00000000000..2953a7cc914 --- /dev/null +++ b/code/modules/mob/living/simple_animal/friendly/sloth.dm @@ -0,0 +1,41 @@ +/mob/living/simple_animal/sloth + name = "sloth" + desc = "An adorable, sleepy creature." + icon = 'icons/mob/pets.dmi' + icon_state = "sloth" + icon_living = "sloth" + icon_dead = "sloth_dead" + speak_emote = list("yawns") + emote_hear = list("snores.","yawns.") + emote_see = list("dozes off.", "looks around sleepily.") + speak_chance = 1 + turns_per_move = 5 + butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab = 3) + response_help = "pets" + response_disarm = "gently pushes aside" + response_harm = "kicks" + gold_core_spawnable = 2 + melee_damage_lower = 18 + melee_damage_upper = 18 + health = 50 + maxHealth = 50 + speed = 2 + + +//Cargo Sloth +/mob/living/simple_animal/sloth/paperwork + name = "Paperwork" + desc = "Cargo's pet sloth. About as useful as the rest of the techs." + gold_core_spawnable = 0 + +//Cargo Sloth 2 + +/mob/living/simple_animal/sloth/citrus + name = "Citrus" + desc = "Cargo's pet sloth. She's dressed in a horrible sweater." + icon_state = "cool_sloth" + icon_living = "cool_sloth" + icon_dead = "cool_sloth_dead" + gender = FEMALE + butcher_results = list(/obj/item/toy/spinningtoy = 1) + gold_core_spawnable = 0 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index aa895a89b6a..7063fe1f35f 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -255,6 +255,7 @@ var/global/list/parasites = list() //all currently existing/living guardians I.loc = src I.equipped(src, slot) I.layer = ABOVE_HUD_LAYER + I.plane = ABOVE_HUD_PLANE /mob/living/simple_animal/hostile/guardian/proc/apply_overlay(cache_index) var/image/I = guardian_overlays[cache_index] @@ -283,6 +284,7 @@ var/global/list/parasites = list() //all currently existing/living guardians if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) r_hand.layer = ABOVE_HUD_LAYER + r_hand.plane = ABOVE_HUD_PLANE r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) client.screen |= r_hand @@ -297,6 +299,7 @@ var/global/list/parasites = list() //all currently existing/living guardians if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) l_hand.layer = ABOVE_HUD_LAYER + l_hand.plane = ABOVE_HUD_PLANE l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) client.screen |= l_hand diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0375c8b2706..0be6d447f7e 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -515,10 +515,12 @@ var/obj/item/r_hand = get_item_for_held_index(2) if(r_hand) r_hand.layer = ABOVE_HUD_LAYER + r_hand.plane = ABOVE_HUD_PLANE r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) client.screen |= r_hand if(l_hand) l_hand.layer = ABOVE_HUD_LAYER + l_hand.plane = ABOVE_HUD_PLANE l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) client.screen |= l_hand diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm index a63e9fad1fa..06e54ac94a4 100644 --- a/code/modules/mob/living/ventcrawling.dm +++ b/code/modules/mob/living/ventcrawling.dm @@ -93,7 +93,7 @@ var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/components/unary var/obj/machinery/atmospherics/A = X //all elements in totalMembers are necessarily of this type. if(!A.pipe_vision_img) A.pipe_vision_img = image(A, A.loc, layer = ABOVE_HUD_LAYER, dir = A.dir) - //20 for being above darkness + A.pipe_vision_img.plane = ABOVE_HUD_PLANE pipes_shown += A.pipe_vision_img if(client) client.images += A.pipe_vision_img diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index db9fea8663d..0c03c4a056d 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -406,11 +406,15 @@ It's fairly easy to fix if dealing with single letters but not so much with comp A.target = source if(!alert_overlay) var/old_layer = source.layer + var/old_plane = source.plane source.layer = FLOAT_LAYER + source.plane = FLOAT_PLANE A.add_overlay(source) source.layer = old_layer + source.plane = old_plane else alert_overlay.layer = FLOAT_LAYER + alert_overlay.plane = FLOAT_PLANE A.add_overlay(alert_overlay) /proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d52bdf07aa0..a83cccc2f09 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -277,7 +277,6 @@ return 0 /mob/get_spacemove_backup() - var/atom/movable/dense_object_backup for(var/A in orange(1, get_turf(src))) if(isarea(A)) continue @@ -297,9 +296,7 @@ return AM if(pulling == AM) continue - dense_object_backup = AM - break - . = dense_object_backup + . = AM /mob/proc/mob_has_gravity() return has_gravity() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 4bc408098b2..266b7504d94 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -178,6 +178,7 @@ W.loc = loc W.dropped(src) W.layer = initial(W.layer) + W.plane = initial(W.plane) diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 60e324d1842..83fd3ff9abc 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -78,6 +78,7 @@ /obj/item/weapon/paper/contract/infernal/revive name = "paper- contract of resurrection" contractType = CONTRACT_REVIVE + var/cooldown = FALSE /obj/item/weapon/paper/contract/infernal/knowledge name = "paper- contract for knowledge" @@ -99,7 +100,7 @@ if(signed && (user == target.current) && istype(user,/mob/living/carbon/human/)) var/mob/living/carbon/human/H = user H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!") - H.visible_message("[H] holds up a contract claiming his soul, then immediately catches fire. It looks like \he's trying to commit suicide!") + H.visible_message("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!") H.adjust_fire_stacks(20) H.IgniteMob() return(FIRELOSS) @@ -203,6 +204,10 @@ /obj/item/weapon/paper/contract/infernal/revive/attack(mob/M, mob/living/user) if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind) + if (cooldown) + user << "Give [M] a chance to think through the contract, don't rush him." + return 0 + cooldown = TRUE var/mob/living/carbon/human/H = M var/mob/dead/observer/ghost = H.get_ghost() var/response = "No" @@ -220,9 +225,13 @@ H.fakefire() FulfillContract(H, 1)//Revival contracts are always signed in blood addtimer(H, "fakefireextinguish",5,TRUE) + addtimer(src,"resetcooldown",300,TRUE) else ..() +/obj/item/weapon/paper/contract/infernal/revive/proc/resetcooldown() + cooldown = FALSE + /obj/item/weapon/paper/contract/infernal/proc/FulfillContract(mob/living/carbon/human/user = target.current, blood = 0) signed = 1 diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm index ee80b828451..6117dce62db 100644 --- a/code/modules/paperwork/handlabeler.dm +++ b/code/modules/paperwork/handlabeler.dm @@ -9,7 +9,7 @@ var/mode = 0 /obj/item/weapon/hand_labeler/suicide_act(mob/user) - user.visible_message("[user] is pointing \the [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!") + user.visible_message("[user] is pointing [src] at [user.p_them()]self. [user.p_theyre(TRUE)] going to label [user.p_them()]self as a suicide!") labels_left = max(labels_left - 1, 0) var/old_real_name = user.real_name diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 3ddb31a8343..f82564d27c7 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -90,7 +90,7 @@ add_fingerprint(usr) /obj/item/weapon/paper/suicide_act(mob/user) - user.visible_message("[user] scratches a grid on their wrist with the paper! It looks like \he's trying to commit sudoku..") + user.visible_message("[user] scratches a grid on [user.p_their()] wrist with the paper! It looks like [user.p_theyre()] trying to commit sudoku...") return (BRUTELOSS) /obj/item/weapon/paper/attack_self(mob/user) @@ -341,8 +341,9 @@ /obj/item/weapon/paper/fire_act(exposed_temperature, exposed_volume) ..() - icon_state = "paper_onfire" - info = "[stars(info)]" + if(!(resistance_flags & FIRE_PROOF)) + icon_state = "paper_onfire" + info = "[stars(info)]" /obj/item/weapon/paper/extinguish() diff --git a/code/modules/paperwork/paper_cutter.dm b/code/modules/paperwork/paper_cutter.dm index 8f959443ddd..8b1f3519638 100644 --- a/code/modules/paperwork/paper_cutter.dm +++ b/code/modules/paperwork/paper_cutter.dm @@ -19,11 +19,16 @@ /obj/item/weapon/papercutter/suicide_act(mob/user) if(storedcutter) - user.visible_message("[user] is beheading \himself with [src.name]! It looks like \he's trying to commit suicide.") - playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) + user.visible_message("[user] is beheading [user.p_them()]self with [src.name]! It looks like [user.p_theyre()] trying to commit suicide!") + if(iscarbon(user)) + var/mob/living/carbon/C = user + var/obj/item/bodypart/BP = C.get_bodypart("head") + if(BP) + BP.drop_limb() + playsound(loc,pick('sound/misc/desceration-01.ogg','sound/misc/desceration-02.ogg','sound/misc/desceration-01.ogg') ,50, 1, -1) return (BRUTELOSS) else - user.visible_message("[user] repeatedly bashes [src.name] against \his head! It looks like \he's trying to commit suicide.") + user.visible_message("[user] repeatedly bashes [src.name] against [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) return (BRUTELOSS) @@ -41,7 +46,7 @@ if(!user.drop_item()) return playsound(loc, "pageturn", 60, 1) - user << "You place \the [P] in [src]." + user << "You place [P] in [src]." P.loc = src storedpaper = P update_icon() @@ -56,16 +61,16 @@ return if(istype(P, /obj/item/weapon/screwdriver) && storedcutter) playsound(src, P.usesound, 50, 1) - user << "\The [storedcutter] has been [cuttersecured ? "unsecured" : "secured"]." + user << "[storedcutter] has been [cuttersecured ? "unsecured" : "secured"]." cuttersecured = !cuttersecured return ..() /obj/item/weapon/papercutter/attack_hand(mob/user) - src.add_fingerprint(user) + add_fingerprint(user) if(!storedcutter) - user << "The cutting blade is gone! You can't use \the [src] now." + user << "The cutting blade is gone! You can't use [src] now." return if(!cuttersecured) @@ -76,7 +81,7 @@ if(storedpaper) playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1) - user << "You neatly cut \the [storedpaper]." + user << "You neatly cut [storedpaper]." storedpaper = null qdel(storedpaper) new /obj/item/weapon/paperslip(get_turf(src)) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 4eb41425d40..e8795b3abe3 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -29,7 +29,7 @@ /obj/item/weapon/paperplane/suicide_act(mob/user) user.Stun(10) - user.visible_message("[user] jams the [src] in their brains. It looks like \he's trying to commit suicide.") + user.visible_message("[user] jams the [src] in [user.p_their()] nose. It looks like [user.p_theyre()] trying to commit suicide!") user.adjust_blurriness(6) user.adjust_eye_damage(rand(6,8)) sleep(10) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 181350544c4..c77f7df7325 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -26,7 +26,7 @@ var/colour = "black" //what colour the ink is! /obj/item/weapon/pen/suicide_act(mob/user) - user.visible_message("[user] is scribbling numbers all over themself with [src]! It looks like they're trying to commit sudoku!") + user.visible_message("[user] is scribbling numbers all over [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit sudoku...") return(BRUTELOSS) /obj/item/weapon/pen/blue diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index f86c1772ad1..016ac1e53f6 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -14,7 +14,7 @@ attack_verb = list("stamped") /obj/item/weapon/stamp/suicide_act(mob/user) - user.visible_message("[user] stamps 'VOID' on \his forehead, then promptly falls over, dead.") + user.visible_message("[user] stamps 'VOID' on [user.p_their()] forehead, then promptly falls over, dead.") return (OXYLOSS) /obj/item/weapon/stamp/qm diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index e89bed85f58..88f7727ba70 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -477,9 +477,9 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ /obj/item/stack/cable_coil/suicide_act(mob/user) if(locate(/obj/structure/chair/stool) in get_turf(user)) - user.visible_message("[user] is making a noose with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is making a noose with [src]! It looks like [user.p_theyre()] trying to commit suicide!") else - user.visible_message("[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return(OXYLOSS) /obj/item/stack/cable_coil/New(loc, amount = MAXCOIL, var/param_color = null) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 3b176d0a14a..d0812512d89 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -87,7 +87,7 @@ user << "The charge meter reads [round(src.percent() )]%." /obj/item/weapon/stock_parts/cell/suicide_act(mob/user) - user.visible_message("[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) /obj/item/weapon/stock_parts/cell/attackby(obj/item/W, mob/user, params) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 74fd320c11d..2bd3627f3e8 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -120,6 +120,7 @@ var/global/list/rad_collectors = list() return Z.loc = get_turf(src) Z.layer = initial(Z.layer) + Z.plane = initial(Z.plane) src.loaded_tank = null if(active) toggle_power() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 6fab2ac2fa1..7415ff4bf5a 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -160,14 +160,14 @@ if(clumsy_check) if(istype(user)) if (user.disabilities & CLUMSY && prob(40)) - user << "You shoot yourself in the foot with \the [src]!" + user << "You shoot yourself in the foot with [src]!" var/shot_leg = pick("l_leg", "r_leg") process_fire(user,user,0,params, zone_override = shot_leg) user.drop_item() return if(weapon_weight == WEAPON_HEAVY && user.get_inactive_held_item()) - user << "You need both hands free to fire \the [src]!" + user << "You need both hands free to fire [src]!" return process_fire(target,user,1,params) @@ -189,7 +189,7 @@ pin.auth_fail(user) return 0 else - user << "\The [src]'s trigger is locked. This weapon doesn't have a firing pin installed!" + user << "[src]'s trigger is locked. This weapon doesn't have a firing pin installed!" return 0 obj/item/weapon/gun/proc/newshot() diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 185d5ff2654..8e6edf2608a 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -140,10 +140,10 @@ /obj/item/weapon/gun/energy/suicide_act(mob/user) if (src.can_shoot()) - user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) - user.visible_message("[user] melts \his face off with the [src.name]!") + user.visible_message("[user] melts [user.p_their()] face off with [src]!") playsound(loc, fire_sound, 50, 1, -1) var/obj/item/ammo_casing/energy/shot = ammo_type[select] power_supply.use(shot.e_cost) @@ -153,7 +153,7 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index bcdcc8287f4..8caed922e53 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -110,13 +110,6 @@ ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) pin = null -/obj/item/weapon/gun/energy/kinetic_accelerator/suicide_act(mob/user) - if(!suppressed) - playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) - user.visible_message("[user] cocks the [src.name] and pretends to blow \his brains out! It looks like \he's trying to commit suicide!") - shoot_live_shot() - return (OXYLOSS) - /obj/item/weapon/gun/energy/plasmacutter name = "plasma cutter" desc = "A mining tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off of xenos! Or, you know, mine stuff." diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 60a2cd21e2f..0f85660da60 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -76,6 +76,6 @@ return /obj/item/weapon/gun/magic/suicide_act(mob/user) - user.visible_message("[user] is twisting the [src.name] above \his head, releasing a magical blast! It looks like \he's trying to commit suicide.") + user.visible_message("[user] is twisting [src] above [user.p_their()] head, releasing a magical blast! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, fire_sound, 50, 1, -1) return (FIRELOSS) \ No newline at end of file diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 1262c57d5bd..57c3cfdf6d5 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -48,9 +48,9 @@ /obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user) - user.visible_message("[user] zaps \himself with [src].") + user.visible_message("[user] zaps [user.p_them()]self with [src].") playsound(user, fire_sound, 50, 1) - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]" + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped [user.p_them()]self with a [src]" ///////////////////////////////////// @@ -66,12 +66,13 @@ max_charges = 3 //3, 2, 2, 1 /obj/item/weapon/gun/magic/wand/death/zap_self(mob/living/user) - var/message ="You irradiate yourself with pure energy! " - message += pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?") - user << message + ..() + user << "You irradiate yourself with pure energy! \ + [pick("Do not pass go. Do not collect 200 zorkmids.","You feel more confident in your spell casting skills.","You Die...","Do you want your possessions identified?")]\ + " user.adjustOxyLoss(500) charges-- - ..() + ///////////////////////////////////// //WAND OF HEALING @@ -163,6 +164,6 @@ max_charges = 8 //8, 4, 4, 3 /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user) - explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) - charges-- ..() + explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) + charges-- \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm index 9b50a1e4a98..1c78936a348 100644 --- a/code/modules/projectiles/guns/projectile.dm +++ b/code/modules/projectiles/guns/projectile.dm @@ -143,17 +143,17 @@ /obj/item/weapon/gun/projectile/suicide_act(mob/user) if (src.chambered && src.chambered.BB && !src.chambered.BB.nodamage) - user.visible_message("[user] is putting the barrel of the [src.name] in \his mouth. It looks like \he's trying to commit suicide.") + user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) process_fire(user, user, 0, zone_override = "head") - user.visible_message("[user] blows \his brains out with the [src.name]!") + user.visible_message("[user] blows [user.p_their()] brain[user.p_s()] out with [src]!") return(BRUTELOSS) else user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow \his brains out with the [src.name]! It looks like \he's trying to commit suicide!") + user.visible_message("[user] is pretending to blow [user.p_their()] brain[user.p_s()] out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(loc, 'sound/weapons/empty.ogg', 50, 1, -1) return (OXYLOSS) diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index b70598692e5..2021ac98033 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -475,10 +475,11 @@ . = 1 if(prob(20)) M.losebreath += 4 - M.adjustBrainLoss(2*REM) - M.adjustToxLoss(3*REM,0) - M.adjustStaminaLoss(10*REM,0) - M.blur_eyes(5) + M.adjustBrainLoss(2*REM) + M.adjustToxLoss(3*REM,0) + M.adjustStaminaLoss(10*REM,0) + M.blur_eyes(5) + . = TRUE ..() /datum/reagent/consumable/tinlux @@ -500,7 +501,9 @@ color = "#d3a308" nutriment_factor = 3 * REAGENTS_METABOLISM -datum/reagent/consumable/vitfro/on_mob_life(mob/living/M) +/datum/reagent/consumable/vitfro/on_mob_life(mob/living/M) if(prob(80)) M.adjustBruteLoss(-1*REM, 0) M.adjustFireLoss(-1*REM, 0) + . = TRUE + ..() \ No newline at end of file diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index f6da5758e77..946b7d31f41 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -658,6 +658,33 @@ return ..() || . +/datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious + name = "Rotatium" + id = "rotatium" + description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild." + reagent_state = LIQUID + color = "#AC88CA" //RGB: 172, 136, 202 + metabolization_rate = 0.6 * REAGENTS_METABOLISM + toxpwr = 0.5 + +/datum/reagent/toxin/rotatium/on_mob_life(mob/living/M) + if(M.hud_used) + if(current_cycle >= 20 && current_cycle%20 == 0) + var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"]) + var/rotation = min(round(current_cycle/20), 89) // By this point the player is probably puking and quitting anyway + for(var/whole_screen in screens) + animate(whole_screen, transform = matrix(rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING, loop = -1) + animate(transform = matrix(-rotation, MATRIX_ROTATE), time = 5, easing = QUAD_EASING) + return ..() + +/datum/reagent/toxin/rotatium/on_mob_delete(mob/living/M) + if(M && M.hud_used) + var/list/screens = list(M.hud_used.plane_masters["[GAME_PLANE]"], M.hud_used.plane_masters["[LIGHTING_PLANE]"]) + for(var/whole_screen in screens) + animate(whole_screen, transform = matrix(), time = 5, easing = QUAD_EASING) + ..() + + //ACID diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 53fcb2bc473..f3fa0c3da0c 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -87,3 +87,10 @@ results = list("heparin" = 4) required_reagents = list("formaldehyde" = 1, "sodium" = 1, "chlorine" = 1, "lithium" = 1) mix_message = "The mixture thins and loses all color." + +/datum/chemical_reaction/rotatium + name = "Rotatium" + id = "Rotatium" + results = list("rotatium" = 3) + required_reagents = list("mindbreaker" = 1, "teslium" = 1, "neurotoxin2" = 1) + mix_message = "After sparks, fire, and the smell of mindbreaker, the mix is constantly spinning with no stop in sight." \ No newline at end of file diff --git a/code/modules/spells/spell_types/conjure.dm b/code/modules/spells/spell_types/conjure.dm index 89b143fcffc..1e528b0ed7e 100644 --- a/code/modules/spells/spell_types/conjure.dm +++ b/code/modules/spells/spell_types/conjure.dm @@ -50,3 +50,31 @@ summon_amt = 10 range = 3 newVars = list("emagged" = 2, "remote_disabled" = 1,"shoot_sound" = 'sound/weapons/laser.ogg',"projectile" = /obj/item/projectile/beam/laser, "declare_arrests" = 0,"name" = "Wizard's Justicebot") + +/obj/effect/proc_holder/spell/targeted/conjure_item + name = "Summon weapon" + desc = "A generic spell that should not exist. This summons an instance of a specific type of item, or if one already exists, un-summons it. Summons into hand if possible." + invocation_type = "none" + include_user = 1 + range = -1 + clothes_req = 0 + var/obj/item/item + var/item_type = /obj/item/weapon/banhammer + school = "conjuration" + charge_max = 150 + cooldown_min = 10 + +/obj/effect/proc_holder/spell/targeted/conjure_item/cast(list/targets, mob/user = usr) + if (item) + qdel(item) + item = null + else + for(var/mob/living/carbon/C in targets) + if(C.drop_item()) + item = new item_type + C.put_in_hands(item) + +/obj/effect/proc_holder/spell/targeted/conjure_item/Destroy() + if(item) + qdel(item) + return ..() diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm index cd00b67776b..0e5fd60e666 100644 --- a/code/modules/spells/spell_types/devil.dm +++ b/code/modules/spells/spell_types/devil.dm @@ -1,12 +1,11 @@ -/obj/effect/proc_holder/spell/targeted/summon_pitchfork +/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork name = "Summon Pitchfork" desc = "A devil's weapon of choice. Use this to summon/unsummon your pitchfork." invocation_type = "none" include_user = 1 range = -1 clothes_req = 0 - var/obj/item/weapon/twohanded/pitchfork/demonic/pitchfork - var/pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/ + item_type = /obj/item/weapon/twohanded/pitchfork/demonic school = "conjuration" charge_max = 150 @@ -14,27 +13,20 @@ action_icon_state = "pitchfork" action_background_icon_state = "bg_demon" -/obj/effect/proc_holder/spell/targeted/summon_pitchfork/cast(list/targets, mob/user = usr) - if (pitchfork) - qdel(pitchfork) - else - for(var/mob/living/carbon/C in targets) - if(C.drop_item()) - pitchfork = new pitchfork_type - C.put_in_hands(pitchfork) +/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater + item_type = /obj/item/weapon/twohanded/pitchfork/demonic/greater -/obj/effect/proc_holder/spell/targeted/summon_pitchfork/Destroy() - if(pitchfork) - qdel(pitchfork) - pitchfork = null - return ..() - -/obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater - pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/greater - -/obj/effect/proc_holder/spell/targeted/summon_pitchfork/ascended - pitchfork_type = /obj/item/weapon/twohanded/pitchfork/demonic/ascended +/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended + item_type = /obj/item/weapon/twohanded/pitchfork/demonic/ascended +/obj/effect/proc_holder/spell/targeted/conjure_item/violin + item_type = /obj/item/device/instrument/violin/golden + desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin." + invocation_type = "whisper" + invocation = "I aint have this much fun since Georgia." + action_icon_state = "golden_violin" + name = "Summon golden violin" + action_background_icon_state = "bg_demon" /obj/effect/proc_holder/spell/targeted/summon_contract name = "Summon infernal contract" diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 67b1a888703..c982a4fb9c0 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -64,9 +64,7 @@ sharpness = IS_SHARP_ACCURATE /obj/item/weapon/scalpel/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting \his wrists with [src]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his throat with [src]! It looks like \he's trying to commit suicide.", \ - "[user] is slitting \his stomach open with [src]! It looks like \he's trying to commit seppuku.")) + user.visible_message("[user] is slitting [user.p_their()] [pick("wrists", "throat", "stomach")] with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) diff --git a/code/modules/zombie/items.dm b/code/modules/zombie/items.dm index 40961cdb193..7f76b6898de 100644 --- a/code/modules/zombie/items.dm +++ b/code/modules/zombie/items.dm @@ -62,33 +62,28 @@ /obj/item/zombie_hand/proc/tear_airlock(obj/machinery/door/airlock/A, mob/user) removing_airlock = TRUE - user << "You start tearing apart the airlock...\ - " + user << "You start tearing apart the airlock..." playsound(src.loc, 'sound/machines/airlock_alien_prying.ogg', 100, 1) - A.audible_message("You hear a loud metallic \ - grinding sound.") + A.audible_message("You hear a loud metallic grinding sound.") addtimer(src, "growl", 20, unique=FALSE, target=user) if(do_after(user, delay=160, needhand=FALSE, target=A, progress=TRUE)) playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) - A.audible_message("With a screech, [A] is torn \ - apart!") + A.audible_message("With a screech, [A] is torn apart!") var/obj/structure/door_assembly/door = new A.assemblytype(get_turf(A)) door.density = 0 door.anchored = 1 door.name = "ravaged [door]" - door.desc = "An airlock that has been torn apart. Looks like it \ - won't be keeping much out now." + door.desc = "An airlock that has been torn apart. Looks like it won't be keeping much out now." qdel(A) removing_airlock = FALSE /obj/item/zombie_hand/proc/growl(mob/user) if(removing_airlock) playsound(src.loc, 'sound/hallucinations/growl3.ogg', 50, 1) - user.audible_message("[user] growls as \ - their claws dig into the metal frame...") + user.audible_message("[user] growls as [user.p_their()] claws dig into the metal frame...") /obj/item/zombie_hand/suicide_act(mob/living/carbon/user) // Suiciding as a zombie brings someone else in to play it @@ -99,10 +94,8 @@ user.Weaken(30) var/success = offer_control(user) if(success) - user.visible_message("[user] appears to have \ - found new spirit.") + user.visible_message("[user] appears to have found new spirit.") return SHAME else - user.visible_message("[user] stops moving.\ - ") + user.visible_message("[user] stops moving.") return OXYLOSS diff --git a/html/changelog.html b/html/changelog.html index 610edddcacf..022bd926ca8 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,54 @@ -->
+

18 October 2016

+

Basilman updated:

+
    +
  • A third martial art, CQC, has been added and is now available to nuke ops instead of sleeping carp
  • +
+

Kor updated:

+
    +
  • Added sloths to cargobay on Box and Meta
  • +
+

MrPerson updated:

+
    +
  • New toxin - Rotatium. It doesn't quite do what it does on other servers. Instead it rocks your game view back and forth while slowly doing toxin damage. The rocking gets more intense with time.
  • +
  • To make it, mix equal parts mindbreaker, neurotoxin, and teslium.
  • +
+

MrStonedOne updated:

+
    +
  • Byond 511 beta users may now choose their own FPS. This will apply to animations and other client side only effects. Find it in your game preferences.
  • +
+

Shadowlight213 updated:

+
    +
  • fixed removing modular computer components
  • +
+

TheCarlSaganExpress updated:

+
    +
  • Provided you have access, you may now use your ID to unlock the display case.
  • +
  • The fire axe cabinet and display case may now be repaired with the welder.
  • +
+

XDTM updated:

+
    +
  • You can now grind slime extracts in a reagent grinder. If the slime was unused it will result in slime jelly, while if used it will only output the reagents inside the extract.
  • +
+

Yackemflam updated:

+
    +
  • fixed the standard vest being weaker than the slim variant
  • +
+

lordpidey updated:

+
    +
  • There is a new potential obligation for devils to have. Musical duels. Ask your nearest devil for a musical duel, there's a 14% chance he's obligated to do it.
  • +
  • Removed the old offering a drink obligation for devils, it overlapped too much with the food obligation.
  • +
  • Trying to clone people who've sold their soul now results in FUN.
  • +
  • Devils can no longer spam ghosts with revival contracts.
  • +
+

phil235 updated:

+
    +
  • Visual effects appear on the target of an attack, similar to the item attack effect.
  • +
  • You now only see a message in chat when witnessing someone else getting attacked or hit by a bullet if you are close enough to the action.
  • +
+

16 October 2016

Cuboos updated:

    @@ -999,32 +1047,6 @@
    • Adds modular computers
    - -

    16 August 2016

    -

    MrStonedOne updated:

    -
      -
    • Automated the granting of profiler access to admins
    • -
    -

    oranges updated:

    -
      -
    • Nanotrasen is an all right kind of company
    • -
    - -

    15 August 2016

    -

    Joan updated:

    -
      -
    • The Ark of the Clockwork Justicar can now be constructed even if Ratvar's rise is not the objective.
    • -
    • Accordingly, its behavior is different; instead of summoning Ratvar, it will convert a massive amount of the station, and should effectively instantly complete the clockwork cult's objectives.
    • -
    -

    MrStonedOne updated:

    -
      -
    • Tweaked the lag stop numbers to hopefully reduce lag during 80+ population
    • -
    • Fixed the blackbox not blackboxing.
    • -
    -

    OSCAR MIKE updated:

    -
      -
    • CONTACT ON THE LEFT SIDE!
    • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b2b08967a29..5e564fb34ee 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -7429,3 +7429,42 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. (and the bodybag starts open) scoopscoop: - bugfix: The cult shifter will now properly spawn as part of the veil walker set. +2016-10-18: + Basilman: + - rscadd: A third martial art, CQC, has been added and is now available to nuke + ops instead of sleeping carp + Kor: + - rscadd: Added sloths to cargobay on Box and Meta + MrPerson: + - rscadd: New toxin - Rotatium. It doesn't quite do what it does on other servers. + Instead it rocks your game view back and forth while slowly doing toxin damage. + The rocking gets more intense with time. + - rscadd: To make it, mix equal parts mindbreaker, neurotoxin, and teslium. + MrStonedOne: + - experiment: Byond 511 beta users may now choose their own FPS. This will apply + to animations and other client side only effects. Find it in your game preferences. + Shadowlight213: + - bugfix: fixed removing modular computer components + TheCarlSaganExpress: + - tweak: Provided you have access, you may now use your ID to unlock the display + case. + - tweak: The fire axe cabinet and display case may now be repaired with the welder. + XDTM: + - rscadd: You can now grind slime extracts in a reagent grinder. If the slime was + unused it will result in slime jelly, while if used it will only output the + reagents inside the extract. + Yackemflam: + - bugfix: fixed the standard vest being weaker than the slim variant + lordpidey: + - rscadd: There is a new potential obligation for devils to have. Musical duels. Ask + your nearest devil for a musical duel, there's a 14% chance he's obligated to + do it. + - rscdel: Removed the old offering a drink obligation for devils, it overlapped + too much with the food obligation. + - tweak: Trying to clone people who've sold their soul now results in FUN. + - tweak: Devils can no longer spam ghosts with revival contracts. + phil235: + - rscadd: Visual effects appear on the target of an attack, similar to the item + attack effect. + - rscdel: You now only see a message in chat when witnessing someone else getting + attacked or hit by a bullet if you are close enough to the action. diff --git a/html/changelogs/AutoChangeLog-pr-20920.yml b/html/changelogs/AutoChangeLog-pr-20920.yml deleted file mode 100644 index b2fe972d8e2..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20920.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "TheCarlSaganExpress" -delete-after: True -changes: - - tweak: "Provided you have access, you may now use your ID to unlock the display case." - - tweak: "The fire axe cabinet and display case may now be repaired with the welder." diff --git a/html/changelogs/AutoChangeLog-pr-20932.yml b/html/changelogs/AutoChangeLog-pr-20932.yml deleted file mode 100644 index c1151bff267..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20932.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Basilman" -delete-after: True -changes: - - rscadd: "A third martial art, CQC, has been added and is now available to nuke ops instead of sleeping carp" diff --git a/html/changelogs/AutoChangeLog-pr-20933.yml b/html/changelogs/AutoChangeLog-pr-20933.yml deleted file mode 100644 index c6ad893dccf..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20933.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "XDTM" -delete-after: True -changes: - - rscadd: "You can now grind slime extracts in a reagent grinder. If the slime was unused it will result in slime jelly, while if used it will only output the reagents inside the extract." diff --git a/html/changelogs/AutoChangeLog-pr-20962.yml b/html/changelogs/AutoChangeLog-pr-20962.yml deleted file mode 100644 index 17df0623528..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20962.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "phil235" -delete-after: True -changes: - - rscadd: "Visual effects appear on the target of an attack, similar to the item attack effect." - - rscdel: "You now only see a message in chat when witnessing someone else getting attacked or hit by a bullet if you are close enough to the action." diff --git a/html/changelogs/AutoChangeLog-pr-20985.yml b/html/changelogs/AutoChangeLog-pr-20985.yml deleted file mode 100644 index 8d3a0ba7cac..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20985.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MrStonedOne" -delete-after: True -changes: - - experiment: "Byond 511 beta users may now choose their own FPS. This will apply to animations and other client side only effects. Find it in your game preferences." diff --git a/html/changelogs/AutoChangeLog-pr-20996.yml b/html/changelogs/AutoChangeLog-pr-20996.yml deleted file mode 100644 index e4f1aa3d5e0..00000000000 --- a/html/changelogs/AutoChangeLog-pr-20996.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Shadowlight213" -delete-after: True -changes: - - bugfix: "fixed removing modular computer components" diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 91bc9ca9828..9e8bceda4d8 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 8902386aa60..f9b04c4649f 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index f57be4f9412..3601bf040bc 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/pets.dmi b/icons/mob/pets.dmi index 645ad969dcd..e852426e62d 100644 Binary files a/icons/mob/pets.dmi and b/icons/mob/pets.dmi differ diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi index ea1b0b5a485..adffb390ad9 100644 Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 5fa00b992bc..b5e5b51937c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -93,7 +93,6 @@ #include "code\_globalvars\lists\names.dm" #include "code\_globalvars\lists\objects.dm" #include "code\_globalvars\lists\poll_ignore.dm" -#include "code\_onclick\_defines.dm" #include "code\_onclick\adjacent.dm" #include "code\_onclick\ai.dm" #include "code\_onclick\autoclick.dm" @@ -125,6 +124,7 @@ #include "code\_onclick\hud\monkey.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\other_mobs.dm" +#include "code\_onclick\hud\plane_master.dm" #include "code\_onclick\hud\revenanthud.dm" #include "code\_onclick\hud\robot.dm" #include "code\_onclick\hud\screen_objects.dm" @@ -1483,6 +1483,7 @@ #include "code\modules\mob\living\simple_animal\friendly\lizard.dm" #include "code\modules\mob\living\simple_animal\friendly\mouse.dm" #include "code\modules\mob\living\simple_animal\friendly\pet.dm" +#include "code\modules\mob\living\simple_animal\friendly\sloth.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\_drone.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\drones_as_items.dm" #include "code\modules\mob\living\simple_animal\friendly\drone\extra_drone_types.dm"