diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ef3b2c54c3..f3f9f1e8b5 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -67,6 +67,8 @@ #define TRAIT_BLIND "blind" #define TRAIT_MUTE "mute" #define TRAIT_EMOTEMUTE "emotemute" +#define TRAIT_LOOC_MUTE "looc_mute" //Just like unconsciousness, it disables LOOC salt. +#define TRAIT_AOOC_MUTE "aooc_mute" //Same as above but for AOOC. #define TRAIT_DEAF "deaf" #define TRAIT_NEARSIGHT "nearsighted" #define TRAIT_FAT "fat" @@ -254,7 +256,7 @@ #define BOOK_TRAIT "granter (book)" // knowledge is power // unique trait sources, still defines -#define STATUE_MUTE "statue" +#define STATUE_TRAIT "statue" #define CLONING_POD_TRAIT "cloning-pod" #define VIRTUAL_REALITY_TRAIT "vr_trait" #define CHANGELING_DRAIN "drain" diff --git a/code/game/objects/structures/petrified_statue.dm b/code/game/objects/structures/petrified_statue.dm index a8a5a577c2..97eadff5f6 100644 --- a/code/game/objects/structures/petrified_statue.dm +++ b/code/game/objects/structures/petrified_statue.dm @@ -4,11 +4,13 @@ icon_state = "human_male" density = TRUE anchored = TRUE + flags_1 = PREVENT_CONTENTS_EXPLOSION_1 max_integrity = 200 - var/timer = 240 //eventually the person will be freed + var/timer = 8 MINUTES //eventually the person will be freed var/mob/living/petrified_mob -/obj/structure/statue/petrified/New(loc, mob/living/L, statue_timer) +/obj/structure/statue/petrified/Initialize(mapload, mob/living/L, statue_timer) + . = ..() if(statue_timer) timer = statue_timer if(L) @@ -17,25 +19,18 @@ L.buckled.unbuckle_mob(L,force=1) L.visible_message("[L]'s skin rapidly turns to marble!", "Your body freezes up! Can't... move... can't... think...") L.forceMove(src) - ADD_TRAIT(L, TRAIT_MUTE, STATUE_MUTE) + ADD_TRAIT(L, TRAIT_MUTE, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_EMOTEMUTE, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_LOOC_MUTE, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_AOOC_MUTE, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_MOBILITY_NOMOVE, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_MOBILITY_NOPICKUP, STATUE_TRAIT) + ADD_TRAIT(L, TRAIT_MOBILITY_NOUSE, STATUE_TRAIT) L.faction += "mimic" //Stops mimics from instaqdeling people in statues L.status_flags |= GODMODE obj_integrity = L.health + 100 //stoning damaged mobs will result in easier to shatter statues max_integrity = obj_integrity - START_PROCESSING(SSobj, src) - ..() - -/obj/structure/statue/petrified/process() - if(!petrified_mob) - STOP_PROCESSING(SSobj, src) - timer-- - petrified_mob.Stun(40) //So they can't do anything while petrified - if(timer <= 0) - STOP_PROCESSING(SSobj, src) - qdel(src) - -/obj/structure/statue/petrified/contents_explosion(severity, target) - return + QDEL_IN(src, timer) /obj/structure/statue/petrified/handle_atom_del(atom/A) if(A == petrified_mob) @@ -59,7 +54,13 @@ if(petrified_mob) petrified_mob.status_flags &= ~GODMODE petrified_mob.forceMove(loc) - REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_MUTE) + REMOVE_TRAIT(petrified_mob, TRAIT_MUTE, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_EMOTEMUTE, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_LOOC_MUTE, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_AOOC_MUTE, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOMOVE, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOPICKUP, STATUE_TRAIT) + REMOVE_TRAIT(petrified_mob, TRAIT_MOBILITY_NOUSE, STATUE_TRAIT) petrified_mob.take_overall_damage((petrified_mob.health - obj_integrity + 100)) //any new damage the statue incurred is transfered to the mob petrified_mob.faction -= "mimic" petrified_mob = null diff --git a/code/modules/client/verbs/aooc.dm b/code/modules/client/verbs/aooc.dm index bc32d3c222..1a019bba80 100644 --- a/code/modules/client/verbs/aooc.dm +++ b/code/modules/client/verbs/aooc.dm @@ -13,21 +13,38 @@ GLOBAL_VAR_INIT(normal_aooc_colour, "#ce254f") if(!mob) return + if(!(prefs.toggles & CHAT_OOC)) + to_chat(src, " You have OOC muted.") + return + if(jobban_isbanned(mob, "OOC")) + to_chat(src, "You have been banned from OOC.") + return + if(!holder) - if(mob.stat == DEAD) - to_chat(usr, "You cannot use AOOC while dead.") - return - if(!is_special_character(mob)) - to_chat(usr, "You aren't an antagonist!") - if(prefs.muted & MUTE_OOC) - to_chat(src, "You cannot use AOOC (muted).") - return - if(jobban_isbanned(src.mob, "OOC")) - to_chat(src, "You are banned from OOC.") - return if(!GLOB.aooc_allowed) to_chat(src, "AOOC is currently muted.") return + if(prefs.muted & MUTE_OOC) + to_chat(src, "You cannot use AOOC (muted).") + return + if(!is_special_character(mob)) + to_chat(usr, "You aren't an antagonist!") + if(handle_spam_prevention(msg,MUTE_OOC)) + return + if(findtext(msg, "byond://")) + to_chat(src, "Advertising other servers is not allowed.") + log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") + return + if(mob.stat) + to_chat(usr, "You cannot use AOOC while unconscious or dead.") + return + if(isdead(mob)) + to_chat(src, "You cannot use AOOC while ghosting.") + return + if(HAS_TRAIT(mob, TRAIT_AOOC_MUTE)) + to_chat(src, "You cannot use AOOC right now.") + return + if(QDELETED(src)) return diff --git a/code/modules/client/verbs/looc.dm b/code/modules/client/verbs/looc.dm index 075cabcbbb..da39eabc12 100644 --- a/code/modules/client/verbs/looc.dm +++ b/code/modules/client/verbs/looc.dm @@ -38,11 +38,15 @@ GLOBAL_VAR_INIT(normal_looc_colour, "#6699CC") log_admin("[key_name(src)] has attempted to advertise in LOOC: [msg]") return if(mob.stat) - to_chat(src, "You cannot salt in LOOC while unconscious or dead.") + to_chat(src, "You cannot use LOOC while unconscious or dead.") return - if(istype(mob, /mob/dead)) + if(isdead(mob)) to_chat(src, "You cannot use LOOC while ghosting.") return + if(HAS_TRAIT(mob, TRAIT_LOOC_MUTE)) + to_chat(src, "You cannot use LOOC right now.") + return + msg = emoji_parse(msg)