diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index 3c0443ab6d5..74c28006266 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -273,6 +273,7 @@ if(germ_level > 0) for(var/datum/wound/W in wounds) if(!W.bandaged && !W.salved) W.germ_level = max(W.germ_level, germ_level) + update_icon() return proc/fracture() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 0e75071a400..42b5f0ba7bd 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -103,6 +103,8 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/reagent_containers/food/drinks/shaker, /obj/item/weapon/reagent_containers/food/drinks/bottle/patron, /obj/item/weapon/reagent_containers/food/drinks/bottle/goldschlager, + /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, + /obj/item/weapon/lipstick/random, /obj/item/weapon/reagent_containers/food/drinks/ale, /obj/item/weapon/reagent_containers/food/drinks/ale, /obj/item/weapon/reagent_containers/food/drinks/beer, @@ -746,6 +748,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /obj/item/weapon/reagent_containers/glass/paint/black, /obj/item/weapon/reagent_containers/glass/paint/white, /obj/item/weapon/reagent_containers/glass/paint/remover, + /obj/item/weapon/contraband/poster, /obj/item/weapon/wrapping_paper, /obj/item/weapon/wrapping_paper, /obj/item/weapon/wrapping_paper) @@ -756,10 +759,7 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee /datum/supply_packs/randomised/contraband num_contained = 5 - contains = list(/obj/item/weapon/contraband/poster, - /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, - /obj/item/weapon/lipstick/random, - /obj/item/seeds/bloodtomatoseed, + contains = list(/obj/item/seeds/bloodtomatoseed, /obj/item/weapon/storage/pill_bottle/zoom, /obj/item/weapon/storage/pill_bottle/happy, /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm index c002698361e..d7ac2baa6fc 100644 --- a/code/game/objects/effects/decals/contraband.dm +++ b/code/game/objects/effects/decals/contraband.dm @@ -67,7 +67,7 @@ obj/structure/sign/poster name = "poster" - desc = "A large piece of space-resistant printed paper. It's considered contraband." + desc = "A large piece of space-resistant printed paper. " icon = 'icons/obj/contraband.dmi' anchored = 1 var/serial_number //Will hold the value of src.loc if nobody initialises it diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 5f4b3d73956..f74740485d2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -19,6 +19,7 @@ anchored = 1.0 layer = 2.8 throwpass = 1 //You can throw objects over this, despite it's density.") + var/parts = /obj/item/weapon/table_parts /obj/structure/table/New() ..() @@ -38,6 +39,12 @@ T.update_icon() ..() +/obj/structure/table/proc/destroy() + new parts(loc) + density = 0 + del(src) + + /obj/structure/table/update_icon() spawn(2) //So it properly updates when deleting var/dir_sum = 0 @@ -219,65 +226,34 @@ return if(3.0) if (prob(25)) - src.density = 0 + destroy() else return /obj/structure/table/blob_act() if(prob(75)) - if(istype(src, /obj/structure/table/woodentable)) - new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) - return - new /obj/item/weapon/table_parts( src.loc ) - del(src) - return + destroy() /obj/structure/table/hand_p(mob/user as mob) return src.attack_paw(user) - return /obj/structure/table/attack_paw(mob/user) if(HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - visible_message("[user] smashes the table apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) + visible_message("[user] smashes the [src] apart!") + destroy() /obj/structure/table/attack_alien(mob/user) visible_message("[user] slices [src] apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) - /obj/structure/table/attack_animal(mob/living/simple_animal/user) if(user.wall_smash) visible_message("[user] smashes [src] apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) - + destroy() @@ -285,14 +261,7 @@ if(HULK in user.mutations) visible_message("[user] smashes [src] apart!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) + destroy() /obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -323,9 +292,9 @@ var/mob/living/M = G.affecting if (G.state < 2) if(user.a_intent == "hurt") - if (prob(5)) M.Weaken(5) - M.apply_damage(6) - visible_message("\red [G.assailant] slams [G.affecting] against \the [src]!") + if (prob(15)) M.Weaken(5) + M.apply_damage(8,def_zone = "head") + visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!") playsound(src.loc, 'sound/weapons/tablehit1.ogg', 50, 1) else user << "\red You need a better grip to do that!" @@ -341,10 +310,7 @@ user << "\blue Now disassembling table" playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user,50)) - new /obj/item/weapon/table_parts( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //SN src = null - del(src) + destroy() return if(isrobot(user)) @@ -357,13 +323,10 @@ playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2) - new /obj/item/weapon/table_parts( src.loc ) - del(src) - return + O.show_message("\blue The [src] was sliced apart by [user]!", 1, "\red You hear [src] coming apart.", 2) + destroy() user.drop_item(src) - //if(W && W.loc) W.loc = src.loc // Unnecessary - see: mob/proc/drop_item(atom) - Doohl return @@ -374,46 +337,7 @@ name = "wooden table" desc = "Do not apply fire to this. Rumour says it burns easily." icon_state = "wood_table" - - -/obj/structure/table/woodentable/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - if(G.state<2) - user << "\red You need a better grip to do that!" - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) - return - if (istype(W, /obj/item/weapon/wrench)) - user << "\blue Now disassembling the wooden table" - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - sleep(50) - new /obj/item/weapon/table_parts/wood( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) - return - if(isrobot(user)) - return - if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2) - new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) - return - - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc - return - + parts = /obj/item/weapon/table_parts/wood /* * Reinforced tables @@ -423,21 +347,10 @@ desc = "A version of the four legged table. It is stronger." icon_state = "reinf_table" var/status = 2 + parts = /obj/item/weapon/table_parts/reinforced /obj/structure/table/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - if(G.state<2) - user << "\red You need a better grip to do that!" - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) - return - if (istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) @@ -456,40 +369,13 @@ user << "\blue Table strengthened" src.status = 2 return - if(isrobot(user)) - return - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc return if (istype(W, /obj/item/weapon/wrench)) - if(src.status == 1) - user << "\blue Now disassembling the reinforced table" - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if (do_after(user, 50)) - new /obj/item/weapon/table_parts/reinforced( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + if(src.status == 2) return - if(isrobot(user)) - return - - if(istype(W, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The reinforced table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2) - new /obj/item/weapon/table_parts/reinforced( src.loc ) - del(src) - return - - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc - return + ..() /* * Racks diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 560ef3e49c0..1a86a5ca65a 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -570,7 +570,7 @@ var/list/mechtoys = list( temp += "Request from: [cur_supply_group]

" for(var/supply_name in supply_shuttle.supply_packs ) var/datum/supply_packs/N = supply_shuttle.supply_packs[supply_name] - if(N.hidden || N.contraband || N.group != cur_supply_group) continue //Have to send the type instead of a reference to + if(N.hidden || (N.contraband && !can_order_contraband) || N.group != cur_supply_group) continue //Have to send the type instead of a reference to temp += "[supply_name] Cost: [N.cost]
" //the obj because it would get caught by the garbage /*temp = "Supply points: [supply_shuttle.points]


Request what?

" diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index d3c35946617..650d3ad9ae0 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -47,6 +47,8 @@ //todo: other adminranks OOC else if(holder.rights & R_MOD) C << "OOC: [key][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]" + else + C << "OOC: [src.key]: [msg]" else C << "OOC: [holder.fakekey ? holder.fakekey : src.key]: [msg]" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 4c7016e3d91..46ba5457926 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -57,7 +57,12 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/toggleoocdead, /*toggles ooc on/off for everyone who is dead*/ /client/proc/game_panel, /*game panel, allows to change game-mode etc*/ /client/proc/cmd_admin_say, /*admin-only ooc chat*/ - /client/proc/free_slot /*frees slot for chosen job*/ + /datum/admins/proc/PlayerNotes, + /client/proc/cmd_mod_say, + /datum/admins/proc/show_player_info, + /client/proc/free_slot, /*frees slot for chosen job*/ + /client/proc/cmd_admin_change_custom_event, + /client/proc/cmd_admin_rejuvenate ) var/list/admin_verbs_ban = list( /client/proc/unban_panel, diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 45fa42a6caa..878fd8f8835 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -247,7 +247,7 @@ datum/preferences dat += "(®)" dat += "
" dat += "Species: [species]
" - dat += "Blood Type: [b_type]
" + dat += "Blood Type: [b_type]
" dat += "Skin Tone: [-s_tone + 35]/220
" //dat += "Skin pattern: Adjust
" dat += "Limbs: Adjust
" @@ -833,6 +833,11 @@ datum/preferences if(new_metadata) metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN)) + if("b_type") + var/new_b_type = input(user, "Choose your character's blood-type:", "Character Preference") as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" ) + if(new_b_type) + b_type = new_b_type + if("hair") if(species == "Human" || species == "Soghun") var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as color|null diff --git a/code/modules/surgery/ribcage.dm b/code/modules/surgery/ribcage.dm index 5e961e25a7f..04c09cd02ed 100644 --- a/code/modules/surgery/ribcage.dm +++ b/code/modules/surgery/ribcage.dm @@ -15,6 +15,8 @@ max_duration = 70 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) + if (!istype(target)) + return var/datum/organ/external/affected = target.get_organ(target_zone) return ..() && target.op_stage.ribcage == 0 && affected.open >= 2 diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 1a3675622fc..e2082c9419e 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ