From 21d212767f24e3e39df042fea5fb9406aa26cba0 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Mon, 8 Apr 2019 21:45:09 +0200 Subject: [PATCH 01/32] Summon Ghosts spell --- code/game/gamemodes/wizard/spellbook.dm | 18 ++++++++++++++++ code/modules/events/wizard/ghost.dm | 5 +++++ code/modules/mob/dead/observer/observer.dm | 24 ++++++++++++++++++++++ paradise.dme | 1 + 4 files changed, 48 insertions(+) create mode 100644 code/modules/events/wizard/ghost.dm diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 66cdff69b3f..0a1340d885b 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -469,6 +469,24 @@ dat += "Already cast!
" return dat +/datum/spellbook_entry/summon/ghosts + name = "Summon Ghosts" + desc = "Spook the crew out by making them see dead people. Be warned, ghosts are capricious and occasionally vindicative, and some will use their incredibly minor abilities to frustrate you." + cost = 0 + +/datum/spellbook_entry/summon/ghosts/IsAvailible() + if(!ticker.mode) + return FALSE + else + return TRUE + +/datum/spellbook_entry/summon/ghosts/Buy(mob/living/carbon/human/user, obj/item/spellbook/book) + new /datum/event/wizard/ghost() + active = TRUE + to_chat(user, "You have cast summon ghosts!") + playsound(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) + return TRUE + /datum/spellbook_entry/summon/guns name = "Summon Guns" category = "Rituals" diff --git a/code/modules/events/wizard/ghost.dm b/code/modules/events/wizard/ghost.dm new file mode 100644 index 00000000000..11529e3080d --- /dev/null +++ b/code/modules/events/wizard/ghost.dm @@ -0,0 +1,5 @@ +/datum/event/wizard/ghost //The spook is real + +/datum/event/wizard/ghost/start() + var/msg = "You suddenly feel extremely obvious..." + set_observer_default_invisibility(0, msg) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 923c81c53b1..46ef4f54190 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -3,6 +3,8 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for things ghosts should still be able to see when they toggle darkness +GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) + /mob/dead/observer name = "ghost" desc = "It's a g-g-g-g-ghooooost!" //jinkies! @@ -28,6 +30,8 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi var/data_hud_seen = FALSE //this should one of the defines in __DEFINES/hud.dm /mob/dead/observer/New(var/mob/body=null, var/flags=1) + set_invisibility(GLOB.observer_default_invisibility) + sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF see_invisible = SEE_INVISIBLE_OBSERVER_AI_EYE see_in_dark = 100 @@ -729,6 +733,26 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/is_literate() return TRUE + +/mob/dead/observer/proc/set_invisibility(value) + invisibility = value + if(!value) + set_light(1, 2) + else + set_light(0, 0) + +/mob/dead/observer/vv_edit_var(var_name, var_value) + . = ..() + if(var_name == "invisibility") + set_invisibility(invisibility) // updates light + +/proc/set_observer_default_invisibility(amount, message=null) + for(var/mob/dead/observer/G in GLOB.player_list) + G.set_invisibility(amount) + if(message) + to_chat(G, message) + GLOB.observer_default_invisibility = amount + /mob/dead/observer/proc/open_spawners_menu() set name = "Mob spawners menu" set desc = "See all currently available ghost spawners" diff --git a/paradise.dme b/paradise.dme index 866048ed844..94689e147fa 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1450,6 +1450,7 @@ #include "code\modules\events\vent_clog.dm" #include "code\modules\events\wallrot.dm" #include "code\modules\events\wormholes.dm" +#include "code\modules\events\wizard\ghost.dm" #include "code\modules\examine\examine.dm" #include "code\modules\examine\descriptions\atmospherics.dm" #include "code\modules\examine\descriptions\engineering.dm" From c536c55b282ffa65f2804e1d207de12fae71a27b Mon Sep 17 00:00:00 2001 From: Fox McCloud Date: Wed, 10 Apr 2019 15:42:12 -0400 Subject: [PATCH 02/32] Emote Refactor --- code/game/gamemodes/blob/overmind.dm | 2 +- code/game/gamemodes/miniantags/borer/borer.dm | 20 +++++++------- .../objects/items/weapons/implants/implant.dm | 2 +- .../items/weapons/implants/implant_chem.dm | 4 +-- .../weapons/implants/implant_explosive.dm | 8 +++--- code/modules/mob/dead/observer/say.dm | 2 +- code/modules/mob/emote.dm | 17 +++++++----- .../mob/living/carbon/alien/humanoid/emote.dm | 6 ++--- .../mob/living/carbon/alien/larva/emote.dm | 2 +- code/modules/mob/living/carbon/brain/emote.dm | 4 +-- code/modules/mob/living/carbon/human/death.dm | 2 +- code/modules/mob/living/carbon/human/emote.dm | 24 ++++++++--------- code/modules/mob/living/carbon/slime/emote.dm | 2 +- code/modules/mob/living/death.dm | 2 +- code/modules/mob/living/say.dm | 7 ++--- code/modules/mob/living/silicon/emote.dm | 8 +++--- code/modules/mob/living/silicon/pai/emote.dm | 2 -- .../modules/mob/living/silicon/robot/death.dm | 2 +- .../modules/mob/living/silicon/robot/emote.dm | 8 +++--- code/modules/mob/living/silicon/say.dm | 2 +- .../mob/living/simple_animal/bot/emote.dm | 8 +++--- .../mob/living/simple_animal/friendly/cat.dm | 12 ++++----- .../living/simple_animal/friendly/corgi.dm | 8 +++--- .../living/simple_animal/friendly/diona.dm | 26 +++++++++---------- .../living/simple_animal/friendly/mouse.dm | 4 +-- .../mob/living/simple_animal/simple_animal.dm | 4 +-- code/modules/mob/say.dm | 4 +-- code/modules/reagents/chemistry/reagents.dm | 2 +- paradise.dme | 1 - 29 files changed, 99 insertions(+), 96 deletions(-) delete mode 100644 code/modules/mob/living/silicon/pai/emote.dm diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index ca1dffbfa74..7ec1ec3b3f0 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -98,7 +98,7 @@ if(isovermind(M) || isobserver(M)) M.show_message(rendered, 2) -/mob/camera/blob/emote(var/act,var/m_type=1,var/message = null) +/mob/camera/blob/emote(act, m_type = 1, message = null, force) return /mob/camera/blob/blob_act() diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 34d1f64f0d0..6948589aeec 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -32,7 +32,7 @@ return FALSE return B.host.say_understands(other, speaking) -/mob/living/captive_brain/emote(var/message) +/mob/living/captive_brain/emote(act, m_type = 1, message = null, force) return /mob/living/captive_brain/resist() @@ -157,7 +157,7 @@ if(!istype(S.speaking, /datum/language/corticalborer) && loc == host && !talk_inside_host) to_chat(src, "You've disabled audible speech while inside a host! Re-enable it under the borer tab, or stick to borer communications.") return - + . = ..() /mob/living/simple_animal/borer/verb/Communicate() @@ -475,7 +475,7 @@ set category = "Borer" set name = "Dominate Victim" set desc = "Freeze the limbs of a potential host with supernatural fear." - + if(world.time - used_dominate < 150) to_chat(src, "You cannot use that ability again so soon.") return @@ -487,22 +487,22 @@ if(stat) to_chat(src, "You cannot do that in your current state.") return - + if(attempting_to_dominate) to_chat(src, "You're already targeting someone!") return - + var/list/choices = list() for(var/mob/living/carbon/C in view(3,src)) if(C.stat != DEAD) choices += C - + if(world.time - used_dominate < 300) to_chat(src, "You cannot use that ability again so soon.") return - + attempting_to_dominate = TRUE - + var/mob/living/carbon/M = input(src,"Who do you wish to dominate?") in null|choices if(!M) @@ -519,8 +519,8 @@ if(incapacitated()) attempting_to_dominate = FALSE - return - + return + if(get_dist(src, M) > 7) //to avoid people remotely doing from across the map etc, 7 is the default view range to_chat(src, "You're too far away!") attempting_to_dominate = FALSE diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 9a7c3f0e27c..88dc4ed6542 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -14,7 +14,7 @@ flags = DROPDEL -/obj/item/implant/proc/trigger(emote, mob/source) +/obj/item/implant/proc/trigger(emote, mob/source, force) return /obj/item/implant/proc/activate() diff --git a/code/game/objects/items/weapons/implants/implant_chem.dm b/code/game/objects/items/weapons/implants/implant_chem.dm index 5f0fea79da9..f1c4dd4126b 100644 --- a/code/game/objects/items/weapons/implants/implant_chem.dm +++ b/code/game/objects/items/weapons/implants/implant_chem.dm @@ -33,8 +33,8 @@ -/obj/item/implant/chem/trigger(emote, mob/source) - if(emote == "deathgasp") +/obj/item/implant/chem/trigger(emote, mob/source, force) + if(force && emote == "deathgasp") activate(reagents.total_volume) /obj/item/implant/chem/activate(cause) diff --git a/code/game/objects/items/weapons/implants/implant_explosive.dm b/code/game/objects/items/weapons/implants/implant_explosive.dm index 30113ea4e96..f37e148bee6 100644 --- a/code/game/objects/items/weapons/implants/implant_explosive.dm +++ b/code/game/objects/items/weapons/implants/implant_explosive.dm @@ -20,8 +20,8 @@ "} return dat -/obj/item/implant/explosive/trigger(emote, mob/source) - if(emote == "deathgasp") +/obj/item/implant/explosive/trigger(emote, mob/source, force) + if(force && emote == "deathgasp") activate("death") /obj/item/implant/explosive/activate(cause) @@ -148,8 +148,8 @@ "} return dat -/obj/item/implant/dust/trigger(emote, mob/source) - if(emote == "deathgasp") +/obj/item/implant/dust/trigger(emote, mob/source, force) + if(force && emote == "deathgasp") activate("death") /obj/item/implant/dust/activate(cause) diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm index ab47a84ee76..41c1d89f603 100644 --- a/code/modules/mob/dead/observer/say.dm +++ b/code/modules/mob/dead/observer/say.dm @@ -17,7 +17,7 @@ . = src.say_dead(message) -/mob/dead/observer/emote(var/act, var/type, var/message) +/mob/dead/observer/emote(act, type, message, force) message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN)) if(!message) diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 0ec193c69e8..989decdb395 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -2,15 +2,20 @@ //Emote Cooldown System (it's so simple!) /mob/proc/handle_emote_CD(cooldown = EMOTE_COOLDOWN) - if(emote_cd == 2) return 1 // Cooldown emotes were disabled by an admin, prevent use - if(src.emote_cd == 1) return 1 // Already on CD, prevent use + if(emote_cd == 3) //Spam those emotes + return FALSE + if(emote_cd == 2) // Cooldown emotes were disabled by an admin, prevent use + return TRUE + if(emote_cd == 1) // Already on CD, prevent use + return TRUE - src.emote_cd = 1 // Starting cooldown + emote_cd = TRUE // Starting cooldown spawn(cooldown) - if(emote_cd == 2) return 1 // Don't reset if cooldown emotes were disabled by an admin during the cooldown - src.emote_cd = 0 // Cooldown complete, ready for more! + if(emote_cd == 2) + return TRUE // Don't reset if cooldown emotes were disabled by an admin during the cooldown + emote_cd = FALSE // Cooldown complete, ready for more! + return FALSE // Proceed with emote - return 0 // Proceed with emote //--FalseIncarnate /mob/proc/handle_emote_param(var/target, var/not_self, var/vicinity, var/return_mob) //Only returns not null if the target param is valid. diff --git a/code/modules/mob/living/carbon/alien/humanoid/emote.dm b/code/modules/mob/living/carbon/alien/humanoid/emote.dm index f159abebbe4..7412120cff0 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/emote.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/emote.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/alien/humanoid/emote(var/act,var/m_type=1,var/message = null) +/mob/living/carbon/alien/humanoid/emote(act, m_type = 1, message = null, force) var/param = null if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -25,7 +25,7 @@ if("flip") on_CD = handle_emote_CD() - if(on_CD) + if(!force && on_CD == 1) return switch(act) @@ -138,4 +138,4 @@ playsound(src.loc, 'sound/voice/hiss1.ogg', 30, 1, 1) if(act == "gnarl") playsound(src.loc, 'sound/voice/hiss4.ogg', 30, 1, 1) - ..(act, m_type, message) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/emote.dm b/code/modules/mob/living/carbon/alien/larva/emote.dm index 82ebcf943f6..3b18889176b 100644 --- a/code/modules/mob/living/carbon/alien/larva/emote.dm +++ b/code/modules/mob/living/carbon/alien/larva/emote.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/alien/larva/emote(var/act,var/m_type=1,var/message = null) +/mob/living/carbon/alien/larva/emote(act, m_type = 1, message = null, force) var/param = null if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) diff --git a/code/modules/mob/living/carbon/brain/emote.dm b/code/modules/mob/living/carbon/brain/emote.dm index bf7962464da..dd1876e223f 100644 --- a/code/modules/mob/living/carbon/brain/emote.dm +++ b/code/modules/mob/living/carbon/brain/emote.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/brain/emote(var/act,var/m_type=1,var/message = null) +/mob/living/carbon/brain/emote(act,m_type = 1, message = null, force) if(!(container && istype(container, /obj/item/mmi)))//No MMI, no emotes return @@ -48,4 +48,4 @@ to_chat(src, "alarm, alert, notice, flash,blink, whistle, beep, boop") if(message && !stat) - ..(act, m_type, message) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 7259a455154..6d245674fd1 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -93,7 +93,7 @@ /mob/living/carbon/human/death(gibbed) if(can_die() && !gibbed && deathgasp_on_death) - emote("deathgasp") //let the world KNOW WE ARE DEAD + emote("deathgasp", force = TRUE) //let the world KNOW WE ARE DEAD // Only execute the below if we successfully died . = ..(gibbed) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 442d7aaf044..416fd911777 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/human/emote(var/act,var/m_type=1,var/message = null,var/force) +/mob/living/carbon/human/emote(act, m_type = 1, message = null, force) if((stat == DEAD) || (status_flags & FAKEDEATH)) return // No screaming bodies @@ -13,22 +13,22 @@ if(muzzled) var/obj/item/clothing/mask/muzzle/M = wear_mask if(M.mute == MUZZLE_MUTE_NONE) - muzzled = 0 //Not all muzzles block sound + muzzled = FALSE //Not all muzzles block sound if(!can_speak()) - muzzled = 1 + muzzled = TRUE //var/m_type = 1 for(var/obj/item/implant/I in src) if(I.implanted) - I.trigger(act, src) + I.trigger(act, src, force) - var/miming = 0 + var/miming = FALSE if(mind) miming = mind.miming //Emote Cooldown System (it's so simple!) - // proc/handle_emote_CD() located in [code\modules\mob\emote.dm] - var/on_CD = 0 + //handle_emote_CD() located in [code\modules\mob\emote.dm] + var/on_CD = FALSE act = lowertext(act) switch(act) //Cooldown-inducing emotes @@ -61,16 +61,16 @@ else return if("squish", "squishes") - var/found_slime_bodypart = 0 + var/found_slime_bodypart = FALSE if(isslimeperson(src)) //Only Slime People can squish on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm' - found_slime_bodypart = 1 + found_slime_bodypart = TRUE else for(var/obj/item/organ/external/L in bodyparts) // if your limbs are squishy you can squish too! if(istype(L.dna.species, /datum/species/slime)) on_CD = handle_emote_CD() - found_slime_bodypart = 1 + found_slime_bodypart = TRUE break if(!found_slime_bodypart) //Everyone else fails, skip the emote attempt @@ -118,9 +118,9 @@ on_CD = handle_emote_CD() //Everything else, including typos of the above emotes else - on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown + on_CD = FALSE //If it doesn't induce the cooldown, we won't check for the cooldown - if(on_CD == 1) // Check if we need to suppress the emote attempt. + if(!force && on_CD == 1) // Check if we need to suppress the emote attempt. return // Suppress emote, you're still cooling off. switch(act) diff --git a/code/modules/mob/living/carbon/slime/emote.dm b/code/modules/mob/living/carbon/slime/emote.dm index a07f1ba3b2e..c938ac17214 100644 --- a/code/modules/mob/living/carbon/slime/emote.dm +++ b/code/modules/mob/living/carbon/slime/emote.dm @@ -1,4 +1,4 @@ -/mob/living/carbon/slime/emote(act, m_type = 1, message = null) +/mob/living/carbon/slime/emote(act, m_type = 1, message = null, force) if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) //param = copytext(act, t1 + 1, length(act) + 1) diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm index 003b5c3d4fe..37077881350 100644 --- a/code/modules/mob/living/death.dm +++ b/code/modules/mob/living/death.dm @@ -57,7 +57,7 @@ SetLoseBreath(0) if(!gibbed && deathgasp_on_death) - emote("deathgasp") + emote("deathgasp", force = TRUE) if(mind && suiciding) mind.suicided = TRUE diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index cf5fff66caa..95b44b15862 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -275,7 +275,7 @@ proc/get_radio_key_from_channel(var/channel) /mob/living/proc/GetVoice() return name -/mob/living/emote(var/act, var/type, var/message) //emote code is terrible, this is so that anything that isn't already snowflaked to shit can call the parent and handle emoting sanely +/mob/living/emote(act, type, message, force) //emote code is terrible, this is so that anything that isn't already snowflaked to shit can call the parent and handle emoting sanely if(client) if(client.prefs.muted & MUTE_IC) to_chat(src, "You cannot speak in IC (Muted).") @@ -284,7 +284,7 @@ proc/get_radio_key_from_channel(var/channel) if(stat) return 0 - if(..(act, type, message)) + if(..()) return 1 if(act && type && message) //parent call @@ -306,7 +306,8 @@ proc/get_radio_key_from_channel(var/channel) return 1 else //everything else failed, emote is probably invalid - if(act == "help") return //except help, because help is handled individually + if(act == "help") + return //except help, because help is handled individually to_chat(src, "Unusable emote '[act]'. Say *help for a list.") /mob/living/whisper(message as text) diff --git a/code/modules/mob/living/silicon/emote.dm b/code/modules/mob/living/silicon/emote.dm index 3385c4ce622..1b1ee4f7f48 100644 --- a/code/modules/mob/living/silicon/emote.dm +++ b/code/modules/mob/living/silicon/emote.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/emote(var/act, var/m_type=1, var/message = null) +/mob/living/silicon/emote(act, m_type=1, message = null, force) var/param = null if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -6,7 +6,7 @@ act = copytext(act, 1, t1) //Emote Cooldown System (it's so simple!) - // proc/handle_emote_CD() located in [code\modules\mob\emote.dm] + //handle_emote_CD() located in [code\modules\mob\emote.dm] var/on_CD = 0 act = lowertext(act) switch(act) @@ -20,7 +20,7 @@ else on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown - if(on_CD == 1) // Check if we need to suppress the emote attempt. + if(!force && on_CD == 1) // Check if we need to suppress the emote attempt. return // Suppress emote, you're still cooling off. //--FalseIncarnate @@ -78,4 +78,4 @@ if("help") to_chat(src, "yes, no, beep, ping, buzz, scream, buzz2") - ..(act, m_type, message) + ..() diff --git a/code/modules/mob/living/silicon/pai/emote.dm b/code/modules/mob/living/silicon/pai/emote.dm deleted file mode 100644 index a418c0972d5..00000000000 --- a/code/modules/mob/living/silicon/pai/emote.dm +++ /dev/null @@ -1,2 +0,0 @@ -/mob/living/silicon/pai/emote(var/act, var/m_type=1, var/message = null) - ..(act, m_type, message) diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm index 21a09eed8a8..7402c4a65c9 100644 --- a/code/modules/mob/living/silicon/robot/death.dm +++ b/code/modules/mob/living/silicon/robot/death.dm @@ -50,7 +50,7 @@ /mob/living/silicon/robot/death(gibbed) if(can_die()) if(!gibbed && deathgasp_on_death) - emote("deathgasp") + emote("deathgasp", force = TRUE) if(module) module.handle_death(gibbed) diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 9c130780d81..bec1e1ae668 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -1,4 +1,4 @@ -/mob/living/silicon/robot/emote(var/act, var/m_type=1, var/message = null) +/mob/living/silicon/robot/emote(act, m_type=1, message = null, force) var/param = null if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -6,7 +6,7 @@ act = copytext(act, 1, t1) //Emote Cooldown System (it's so simple!) - //proc/handle_emote_CD() located in [code\modules\mob\emote.dm] + //handle_emote_CD() located in [code\modules\mob\emote.dm] var/on_CD = 0 act = lowertext(act) switch(act) @@ -17,7 +17,7 @@ else on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown - if(on_CD == 1) // Check if we need to suppress the emote attempt. + if(!force && on_CD == 1) // Check if we need to suppress the emote attempt. return // Suppress emote, you're still cooling off. //--FalseIncarnate @@ -160,7 +160,7 @@ if("help") to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitches, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look,\n law, halt") - ..(act, m_type, message) + ..() /mob/living/silicon/robot/verb/powerwarn() set category = "Robot Commands" diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 17a7e67adf7..8092947919f 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -103,7 +103,7 @@ return return 1 -/mob/living/silicon/ai/emote(var/act, var/type, var/message) +/mob/living/silicon/ai/emote(act, type, message, force) var/obj/machinery/hologram/holopad/T = current if(istype(T) && T.masters[src])//Is the AI using a holopad? src.holopad_emote(message) diff --git a/code/modules/mob/living/simple_animal/bot/emote.dm b/code/modules/mob/living/simple_animal/bot/emote.dm index eb6a18e8657..c59e044cc67 100644 --- a/code/modules/mob/living/simple_animal/bot/emote.dm +++ b/code/modules/mob/living/simple_animal/bot/emote.dm @@ -1,4 +1,4 @@ -/mob/living/simple_animal/bot/emote(act, m_type=1, message = null) +/mob/living/simple_animal/bot/emote(act, m_type = 1, message = null, force) var/param = null if(findtext(act, "-", 1, null)) var/t1 = findtext(act, "-", 1, null) @@ -9,7 +9,7 @@ act = copytext(act,1,length(act)) //Emote Cooldown System (it's so simple!) - //proc/handle_emote_CD() located in [code\modules\mob\emote.dm] + //handle_emote_CD() located in [code\modules\mob\emote.dm] var/on_CD = 0 act = lowertext(act) switch(act) @@ -22,7 +22,7 @@ else on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown - if(on_CD == 1) // Check if we need to suppress the emote attempt. + if(!force && on_CD == 1) // Check if we need to suppress the emote attempt. return // Suppress emote, you're still cooling off. //--FalseIncarnate @@ -71,4 +71,4 @@ if("help") to_chat(src, "scream(s), yes, no, beep, buzz, ping") - ..(act, m_type, message) + ..() diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 9532daabab8..38787198a5f 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -147,7 +147,7 @@ stop_automated_movement = 1 walk_to(src,movement_target,0,3) -/mob/living/simple_animal/pet/cat/emote(act, m_type=1, message = null) +/mob/living/simple_animal/pet/cat/emote(act, m_type = 1, message = null, force) if(stat != CONSCIOUS) return @@ -163,9 +163,9 @@ else on_CD = 0 - if(on_CD == 1) + if(!force && on_CD == 1) return - + switch(act) if("meow") message = "[src] [pick(emote_hear)]!" @@ -225,9 +225,9 @@ maxHealth = 50 harm_intent_damage = 10 butcher_results = list( - /obj/item/organ/internal/brain = 1, - /obj/item/organ/internal/heart = 1, - /obj/item/reagent_containers/food/snacks/birthdaycakeslice = 3, + /obj/item/organ/internal/brain = 1, + /obj/item/organ/internal/heart = 1, + /obj/item/reagent_containers/food/snacks/birthdaycakeslice = 3, /obj/item/reagent_containers/food/snacks/meat/slab = 2 ) response_harm = "takes a bite out of" diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 832d92c9d8f..3ff26f7850c 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -368,7 +368,7 @@ name = "Definitely Not [real_name]" desc = "That's Definitely Not [real_name]" valid = 1 - + if(/obj/item/clothing/head/beret/centcom/officer, /obj/item/clothing/head/beret/centcom/officer/navy) name = "Blueshield [real_name]" desc = "Will stand by you until the bitter end." @@ -407,7 +407,7 @@ playsound(src, yelp_sound, 75, 1) ..() -/mob/living/simple_animal/pet/corgi/emote(act, m_type=1, message = null) +/mob/living/simple_animal/pet/corgi/emote(act, m_type = 1, message = null, force) if(stat != CONSCIOUS) return @@ -421,9 +421,9 @@ else on_CD = 0 - if(on_CD == 1) + if(!force && on_CD == 1) return - + switch(act) if("bark") message = "[src] [pick(src.speak_emote)]!" diff --git a/code/modules/mob/living/simple_animal/friendly/diona.dm b/code/modules/mob/living/simple_animal/friendly/diona.dm index 07a5fcf0131..355d756288b 100644 --- a/code/modules/mob/living/simple_animal/friendly/diona.dm +++ b/code/modules/mob/living/simple_animal/friendly/diona.dm @@ -60,7 +60,7 @@ /datum/action/innate/diona/merge/Activate() var/mob/living/simple_animal/diona/user = owner user.merge() - + /datum/action/innate/diona/evolve name = "Evolve" icon_icon = 'icons/obj/cloning.dmi' @@ -109,7 +109,7 @@ forceMove(M) else get_scooped(M) - else + else ..() /mob/living/simple_animal/diona/proc/merge() @@ -151,7 +151,7 @@ to_chat(loc, "You feel a pang of loss as [src] splits away from your biomass.") to_chat(src, "You wiggle out of the depths of [loc]'s biomass and plop to the ground.") forceMove(T) - + var/hasMobs = FALSE for(var/atom/A in D.contents) if(istype(A, /mob/) || istype(A, /obj/item/holder)) @@ -163,9 +163,9 @@ return TRUE /mob/living/simple_animal/diona/proc/evolve() - if(stat != CONSCIOUS) + if(stat != CONSCIOUS) return FALSE - + if(donors.len < evolve_donors) to_chat(src, "You need more blood in order to ascend to a new state of consciousness...") return FALSE @@ -176,7 +176,7 @@ if(isdiona(loc) && !split()) //if it's merged with diona, needs to able to split before evolving return FALSE - + visible_message("[src] begins to shift and quiver, and erupts in a shower of shed bark as it splits into a tangle of nearly a dozen new dionaea.","You begin to shift and quiver, feeling your awareness splinter. All at once, we consume our stored nutrients to surge with growth, splitting into a tangle of at least a dozen new dionaea. We have attained our gestalt form.") var/mob/living/carbon/human/diona/adult = new(get_turf(loc)) @@ -202,14 +202,14 @@ qdel(src) return TRUE -/mob/living/simple_animal/diona/proc/steal_blood() - if(stat != CONSCIOUS) +/mob/living/simple_animal/diona/proc/steal_blood() + if(stat != CONSCIOUS) return FALSE - + var/list/choices = list() for(var/mob/living/carbon/human/H in oview(1,src)) if(Adjacent(H) && H.dna && !(NO_BLOOD in H.dna.species.species_traits)) - choices += H + choices += H if(!choices.len) to_chat(src, "No suitable blood donors nearby.") @@ -260,7 +260,7 @@ to_chat(src, "You don't have any hands!") return -/mob/living/simple_animal/diona/emote(act, m_type=1, message = null) +/mob/living/simple_animal/diona/emote(act, m_type = 1, message = null, force) if(stat != CONSCIOUS) return @@ -272,7 +272,7 @@ else on_CD = 0 - if(on_CD == 1) + if(!force && on_CD == 1) return switch(act) //IMPORTANT: Emotes MUST NOT CONFLICT anywhere along the chain. @@ -283,4 +283,4 @@ if("help") to_chat(src, "scream, chirp") - ..(act, m_type, message) \ No newline at end of file + ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index c84947c7363..ae19106e1af 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -109,7 +109,7 @@ if(client) client.time_died_as_mouse = world.time -/mob/living/simple_animal/mouse/emote(act, m_type=1, message = null) +/mob/living/simple_animal/mouse/emote(act, m_type = 1, message = null, force) if(stat != CONSCIOUS) return @@ -121,7 +121,7 @@ else on_CD = 0 - if(on_CD == 1) + if(!force && on_CD == 1) return switch(act) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 02f15a59709..b4019cff988 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -258,7 +258,7 @@ adjustBruteLoss(20) return -/mob/living/simple_animal/emote(var/act, var/m_type=1, var/message = null) +/mob/living/simple_animal/emote(act, m_type = 1, message = null, force) if(stat) return act = lowertext(act) @@ -269,7 +269,7 @@ if("help") to_chat(src, "scream") - ..(act, m_type, message) + ..() /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) if(!Proj) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index aeb6d8f14bf..93eb035b187 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -98,7 +98,7 @@ return verb -/mob/proc/emote(var/act, var/type, var/message) +/mob/proc/emote(act, type, message, force) if(act == "me") return custom_emote(type, message) @@ -184,7 +184,7 @@ var/current = prefix_locations[i] // ["Common", keypos] // There are a few things that will make us want to ignore all other languages in - namely, HIVEMIND languages. - var/datum/language/L = current[1] + var/datum/language/L = current[1] if(L && L.flags & HIVEMIND) . = new /datum/multilingual_say_piece(L, trim(strip_prefixes(message))) break diff --git a/code/modules/reagents/chemistry/reagents.dm b/code/modules/reagents/chemistry/reagents.dm index a2ecc811e6a..d4199c3dcec 100644 --- a/code/modules/reagents/chemistry/reagents.dm +++ b/code/modules/reagents/chemistry/reagents.dm @@ -169,7 +169,7 @@ return if(M.mind && M.mind.changeling && M.mind.changeling.regenerating) //no messing with changeling's fake death return - M.visible_message("[M] seizes up and falls limp, [M.p_their()] eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary. + M.emote("deathgasp") M.status_flags |= FAKEDEATH M.update_stat("fakedeath reagent") M.med_hud_set_health() diff --git a/paradise.dme b/paradise.dme index a2faec5c589..bd9be3385bc 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1802,7 +1802,6 @@ #include "code\modules\mob\living\silicon\decoy\decoy.dm" #include "code\modules\mob\living\silicon\decoy\life.dm" #include "code\modules\mob\living\silicon\pai\death.dm" -#include "code\modules\mob\living\silicon\pai\emote.dm" #include "code\modules\mob\living\silicon\pai\life.dm" #include "code\modules\mob\living\silicon\pai\pai.dm" #include "code\modules\mob\living\silicon\pai\personality.dm" From 6a198b9c7f4754bd5c83fef265d4c8b85d52b418 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Wed, 10 Apr 2019 23:37:05 +0200 Subject: [PATCH 03/32] Adds Null Charge ability for the Shadowlings, replacing Drain Life --- .../shadowling/shadowling_abilities.dm | 87 ++++++++++-------- code/modules/power/apc.dm | 5 + icons/mob/actions/actions.dmi | Bin 92627 -> 93208 bytes 3 files changed, 55 insertions(+), 37 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 30c79798b2f..ea95f62af57 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -335,7 +335,7 @@ include_user = 1 var/blind_smoke_acquired var/screech_acquired - var/drainLifeAcquired + var/nullChargeAcquired var/reviveThrallAcquired action_icon_state = "collective_mind" @@ -370,10 +370,11 @@ It will create a choking cloud that will blind any non-thralls who enter.") target.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/blindness_smoke(null)) - if(thralls >= CEILING(7 * ticker.mode.thrall_ratio, 1) && !drainLifeAcquired) - drainLifeAcquired = 1 - to_chat(target, "The power of your thralls has granted you the Drain Life ability. You can now drain the health of nearby humans to heal yourself.") - target.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/drainLife(null)) + if(thralls >= CEILING(7 * ticker.mode.thrall_ratio, 1) && !nullChargeAcquired) + nullChargeAcquired = 1 + to_chat(user, "The power of your thralls has granted you the Null Charge ability. This ability will drain an APC's contents to the void, preventing it from recharging \ + or sending power until repaired.") + target.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/null_charge(null)) if(thralls >= CEILING(9 * ticker.mode.thrall_ratio, 1) && !reviveThrallAcquired) reviveThrallAcquired = 1 @@ -491,45 +492,57 @@ for(var/obj/structure/window/W in T.contents) W.take_damage(rand(80, 100)) -/obj/effect/proc_holder/spell/aoe_turf/drainLife - name = "Drain Life" - desc = "Damages nearby humans, draining their life and healing your own wounds." +/obj/effect/proc_holder/spell/aoe_turf/null_charge + name = "Null Charge" + desc = "Empties an APC, preventing it from recharging until fixed." panel = "Shadowling Abilities" - range = 3 - charge_max = 100 - clothes_req = 0 - var/targetsDrained - var/list/nearbyTargets - action_icon_state = "drain_life" + charge_max = 600 + clothes_req = FALSE + action_icon_state = "null_charge" -/obj/effect/proc_holder/spell/aoe_turf/drainLife/cast(list/targets, mob/user = usr) +/obj/effect/proc_holder/spell/aoe_turf/null_charge/cast(mob/user = usr) if(!shadowling_check(user)) charge_counter = charge_max return - var/mob/living/carbon/human/U = usr - targetsDrained = 0 - nearbyTargets = list() - for(var/turf/T in targets) - for(var/mob/living/carbon/M in T.contents) - if(M == src) - continue - targetsDrained++ - nearbyTargets.Add(M) - if(!targetsDrained) + + var/list/local_objs = view(1, user) + var/obj/machinery/power/apc/target_apc + for(var/object in local_objs) + if(istype(object, /obj/machinery/power/apc)) + target_apc = object + break + + if(!target_apc) + to_chat(user, "You must stand next to an APC to drain it!") charge_counter = charge_max - to_chat(U, "There were no nearby humans for you to drain.") return - for(var/mob/living/carbon/M in nearbyTargets) - U.heal_organ_damage(10, 10) - U.adjustToxLoss(-10) - U.adjustOxyLoss(-10) - U.adjustStaminaLoss(-20) - U.AdjustWeakened(-1) - U.AdjustStunned(-1) - M.adjustOxyLoss(20) - M.adjustStaminaLoss(20) - to_chat(M, "You feel a wave of exhaustion and a curious draining sensation directed towards [U]!") - to_chat(U, "You draw life from those around you to heal your wounds.") + + if(target_apc.cell?.charge == 0) + to_chat(user, "APC must have a power to drain!") + charge_counter = charge_max + return + + target_apc.operating = 0 + target_apc.update() + target_apc.update_icon() + target_apc.visible_message("The [target_apc] flickers and begins to grow dark.") + + to_chat(user, "You dim the APC's screen and carefully begin siphoning its power into the void.") + if(!do_after(user, 200, target=target_apc)) + //Whoops! The APC's powers back on + to_chat(user, "Your concentration breaks and the APC suddenly repowers!") + target_apc.operating = 1 + target_apc.update() + target_apc.update_icon() + target_apc.visible_message("The [target_apc] begins glowing brightly!") + else + //We did it! + to_chat(user, "You sent the APC's power to the void while overloading all it's lights!") + target_apc.cell?.charge = 0 //Sent to the shadow realm + target_apc.chargemode = 0 //Won't recharge either until an someone hits the button + target_apc.charging = 0 + target_apc.null_charge() + target_apc.update_icon() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 1f7af8e4204..b396849351c 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1352,6 +1352,11 @@ L.broken(0, 1) stoplag() +/obj/machinery/power/apc/proc/null_charge() + for(var/obj/machinery/light/L in area) + L.broken(0, 1) + stoplag() + /obj/machinery/power/apc/proc/setsubsystem(val) if(cell && cell.charge > 0) return (val==1) ? 0 : val diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi index d21323c80b1e697376d761ab9ae13ec647215c29..b4d8a34a6e0b807b6381a3c8b92e6418718498df 100644 GIT binary patch literal 93208 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ʰu6)tEyZSXmrX5^(A!7H7Oc{}o3c=}`} zUQP%Blfoo`Ki6KxcFQC?WDjXR`38_+S%;dN4;V*=uiL@jd52lKC!wVaqdf!@PxU}W zxkQB-nNeF#jo}+rIbJ*-_EQWI{`{h$5J(BbMIs4tmSg+Z*idH?pY@Dk{fx4QPIB&5 z=lLcYl&|%w8F;AzmB#X{H~b3BgZYClz_#*y#+wPM1^-<*vyohrwZaNv)+?K z{>xSxO_H1-Oz)9vlYs#9Db&f2QMUl51_l#dRYu5$OmBy&mq*6L^jmX%d*$XJDa!0N zC%uXqCF||$I3Ij17pRA#SzMD44~=c^ht4a=^%W%C)o*>~& z2C%_3s0A$#Tx6_`MTH!yyufsIx$n;Cn`xzO>%FdW9-&Q5)VEddrmJrpzG-HLJQtJ&*tU;^Ga&Qzn*X+@Ff4;n95>OEKE&5tJ4 z0Y(&3IM>(^?XGV4sVkzYePh^yU0B~C9L&-%F@g8)G$CqQS`IcgQ2>FJ%hhRkMY#bb z91&C`k*iGS;^KmWf|8JtLBL5vuhJ&QxZJGpc3TAfZ0K7?vp=)&wV0J1^Lsy<=t!Zx zu--3|rML?K*dAYlAgdeud4A`GKYzx367c-xaiW!@Yy|@E48=EEP31)n&YK!Q$9*Lw z=g2j5xV?MWa{uDoZYWO_K2)m}2|d5-c_C*Mai}^=PL0&n${!2*=9^2Js~oSeI2Bw? zRz4R(@z$jALd+iid}8;61LdW_93a}){`M!y`F!EF*+06Y6fd|tP33zjjD*lu=;<@j?kU{h!KsrWaX^-zz`gloF*NY}5#`e3i)Rqyp z2cUF?KBH&m8xTaO|M1YM+xheR<9nI)EKO))?iVpsOUw`!<#KGGa}KD$)efPs(9Kw} zht+5485tFfVwY0UXzAALCqdbvu^rQ;nbx|h5rLc3zuTfT{(-Z~1Fsx_zr}guq1f5G zyqABlDu#h=d$}HKKW!NMmLp*Y^GQ4SjZYo7fN89x+ye7Jwr71q20Ruuw`bBLR8S=# z2h+u(Od+Z}NHu2LOkiw5AjB^hFXKry){ymqpgf+AfgMT0A4~ZH{jc+M*603AiT+HX z<|TcD8b@NIpn&1Gtxd zc>hq_+S87X{*eE!Le5}UMTFCMt1Zn4*8ZUGc#zjs$F@e{G7lB+f6FMR3+~;g839da z3Bna3-Tj^Mkgvu3ZQTdEK=wFjm7mD#QnaFd`@wj(f`Ajx7E~91u%T7Ae^j2Y6)*I9 zJ15&B6qbWa2xOSe2e8>toY?Aj&N4h;KHmOwue)dK7K!sLtI^NEe|gXgr3JMI43n71 zphpCcbwSZWA_RE&$eXI3w?KsZHenPbIRJO9K8p)|?mP8S?G+Rj-dA}R{}kgIxB*olO=XT4SlvwUxNM4?|oLsi=g0$n6SUSv>c5K*xLLq?PYxP^D zg*Mt?Zih0fprB{x8k}!eU4E0?et{&od%^=H?+7+cDYRHH={tu_G&-n6mL78Da&_q8 z0`Ro|D8Y6zf%A`Zp+O=5NCL;mP``Cep5PdNh5Duzgz-}Ir*&w@nU9SC#oS7nyjzvx zOPA4w6%j7=p=U>G;MrA}Rz#E}^tbC*n^Z$;$mYkgt0x#LjbMc!i{17`mIDAn-Ep3? znNo+RroE5i%z#3YqyP7Za*3ki6P)-+3uU7xai55gxg%nJsQYrMyo6ZvXHpVR=@L9Cg-v_eTd7VF8{P)=7n!)lk8N%OD%f~{xMMw>U^0zJZ z%kbZ>mv~)1eSl;46(sf06w5845@sQl5a$?)k{0|>3~?e+h@6KX+uFpHhXF)@pu+Qi zrNBhvCYtRhl8~wBVpY|kO->h>K+MAJHjuyRh6&rIGvBvbC@GwZ9)!F73aqW>Xce(= z)q)G5)>treyNcoR))%L2N83s=B=KLYpxFP&Ai@E-kIdLOtfLrh#FeASU)1GmUpjtd z0JEQt>*SZJca;pW0Z&Z=GUK+ZZ()yPi*h1QM=E>i>ptJtF2GYSV=Oz_+Qt+8=pusK z4KhHsynW49q!s4L&a}D~g0dVN%1}F~gph&FEoWL;QTe_8pH;Bdgg)^Zc-FzV&tAAz z2@4NQAyidd?|-PO77KP7K&-D-jktRD=0=~kmL**9i^Y}Pj8SOJ6+G%A-=n){W^R_p z82@TfE9C%N!GlOUD<~>v3m*oZJ{Hkya!Do5yuE|lSblim%xAj$0Vh%!QyLfsm@|43 zvKT4enCMEKAnO_p`#^% zLbMGb?e}d<0;-zJ4t(0n&Az=$7;~#op5NI1un5l7Qb-v-P#Nb5(^l_@yv~q!YQL#Z zFVX=w=%IM;h7Oa)f6P!gg191akNyMeu#0!%jYs&^7Kh@()^w53G8Sw6mDGujV8}(? zmX!!(Il(OMbI&w^8(c=(k8V~pzaTQCbLcuB^|GJ>vPDr5$9QtlEreU4(4^Me%%L5v zsOd9O(Q6cPibMjZ9ury0g^ajU(lzka9Grt=0bb(nON2P}23YSspND}og*+qC{~gW4 zu??40d;#f`Co@Q@RyU+jQ@?;Q=R83ND7YW;^uGZ*Rni{yCqt@gI3kDldM#C|UL9jd zW*HP~eitmsTeGNC?UXYl9ic{gZHquVSTCm@8I*Q(YEwLA(|>gLdgS3tO$`wHHh2SX z^SzJSDH6#bL^bN(58b=o%e8;8G{;Mnsj0V1z12`EfyAlza@RD$x}`C5C&@!z;|#nKWU2WBC6RxV z3SK$$w^u{5I0eJl8W2CtLLJg0cZQyso;DbifcMyzoH8UAmEt{x^2%gX=ryAQccJp|94wC7cSgQ5P>~vkMj+>9@2i-L0bLe&&4JG zimYPz%;m7#+^=iB3SK0|Tit6lS(-dG3tLn)Wj(l?&2}I1DtGaa2A@}^xZvoW`z=~y z_h~8t>ze5!m35T&XG0FuZr%lrMDi}rj;N7z>2^q+s{@4zr+qXFhjvttBYojT(`Jsg zp$K(dIX91oY)@#|11}fIyQ>I}Awy@L$%$L~#*M`%DYo#qd$ZE&&}b3P$S!OsdLQS3 z$OgPVs3elpBjjgHp|RoA4aK@vIFHDk_D^n0{Zcf->+X>)G8G+E4Mjz2mH;S7088?h zdaSF0ft7;(4gc)Yfk1HisF>jxPaHo~obqMvC;*z3w3TboLMt1R2!#k{)Q7M|s`<=-E z$6CdS?t^2x*C!D|%uC9uE^lfiBwqRLjv>}%!%C>)kG6Aiq?f~+i7p)mfiXvUN|9wa zdd$ROaYLq3-l8za5gnDh)(6c&)F&exQEE3HaeB%yv7*{&Qu;n}rS&BIx4hiJ;ejfe? zJUi5tCfW@odj+@8E&p41Dr~bEOJR!kJ)HgE`bmk3pyZ-E3DTKVn#)jnRgvg6!Pe7d zVEKMTn5j*AubD}8kLd-~zL@{7a@=I5@}I#ly$d|Id_$IA=-4V{PhYQ9$&vD9xBT6%cB&|8jR~iHt^~>u->0?ngoGeUVI-l_ z-4g^2eYBcn9biMu0fwL-m+TOgKxjUR%u4RA_K`9TgwY5y<(kCm#MaVyPK#EPa7u*5gL1J1>rOizM zbb!r_X%*f6^|obz#rQcPq1$fqB{v|(rF);U&}$Z~=B90GfvW2IDQwO~O2^*nTC>`8 znrq)f^~o|UZTxWa?reM=Dec6dFlxotOkm8fHzGZMd3#<5woRf*Qb(wZ~94#Cv(1N_XM?ydF+Si97RjM zU|xn(QBlbbF-0SQqf70ZW3{uz7z`)eKVLHBiKq5|XRINMy#M$hbbkAY6USs|vHAtm zK6x2iVMJ77UcM)Y5PTQY=uCWaKb0;_$~=aLi6%i{bU%ac`&whSCm_9V^ZqlqL_1ow z_hKUA#}tKVVlugO4EJQP*{{1t=x@nasDsS|Q2Qvz^H zw5d`8(9R7zke>e&{Nv(%0;vnJWKmaBF+aoRv=cI;d}F0A8aQ(r^8ecbu#RTnX}ZRgY+3 zP4eAtMd){epV;;W=w*f>n^NfO5y;SZGo=_G%+T(P!?PB?-xAG2ROzPGg zDD`qknjc7E9TMV0NK~?MrBn)!-AXjt8)gQItMCFs+uymZsmU!uUTh?Iiou}AB^dA# z^Hn^6qzmYynz{qbl<%QOV(A1q6tA;gyh7L{HGgmQ%z1zi`&GBwN{g=*n1rmt{nNs* zmUZdEa6J$A&dJhCV&Brnj1e6pma&VNP?Hou^Ntz@S3(PeqpFs=?^E|sSy*168SS{hEYsH!!aIx(&shAQK(n3vD;ei>j2OyBi;HVkMZ z68P_-OW_H~i=BA{KTkFIyI#G6>JI}WBbIMg9hR0&Z!L%>dcWMs(0AaOuH_)=}@zu7$;ra~!Kn5CZH9bRXF&38!J7uCUIC?Ec2DIxHhOeMu ze$V9KjxpkEMNcVffDE)89ms|`tIQ{U!OHER+Qxz-mRNFr{n20}-LsC00`-(bLruy% zoyo>OUK{TDh;MFfg%7@%dG}&FdB50Z>;?A(wk_#zrwdwO#;jtn0pua7MO(De8v|8F z3XzE*wI-wfi*B-_getqg@HyL^1O$6-YYoGm|CH0K`;~`HVyj%b`ftU>{OmxXE@sL_ zwL5?40-kkub{HqN=MEdGbr28yf(2=Z`)PfWe6XHcoq-0sHZW%vy}~ds)WzfJ;hGOW zVn3Gr`~pw(eB1(rQ6bKJ?7 zyH(pczOQyRlJku2ae6s^^iMwajKr(ibO!vEALQetT+Qu*Z*2p z5YvIrbyR@QoV^96+McAvk%7S;>!gE2nl%_RWa3{!c~NT#V4+>)CW{<|`Tab+E@ZY8 zVh1%1o8snF{NRQbM}4)0CGuHk!}UaT(bNahs1INoHI!pXGXb`9oc_94CRLlhPwCEK z{bTBZS#8Iaf(mRZ9-?Yz8oDrJ$)F#StJ&Ia#&y>Zy%m%dceBOM(^FX{uQz2Onde1!eR+vvpDyMK{#2mQ{T7!DXFhd7} zcH@Qbd#STrDvFsa2e&Imz&I|%TA}5?Df~-&s(j1=E-fA)5F@80Y0{1G$^-nX!b98* z=Umn9BkJUZP?Cul3 z&SViM%|omFjdLkA*^+SwV`u?fO<=a)>m7eiVe5pZ@$Byu?uM}U3>j~AwVYSt4P0r+ zNys8tR{@=^Yqo-(5wZ9?3bBBxyOWf@={_!2cj_LCIcc4H8{s!m+NKC~!22x*(XaE5 z+)P1P^xtk?YwTFxaCD{NG@VgukKe!(c-TnKWk5#ckcHQpUxkUmga*#jGZ_+9X@9Gkwf`V%zpY7l z+EsnUmQpB?mQ#QD-s{)ClA>GKLyqLW+ymW#U{n_`TcJV)0$r&BwTC^A@UT)vMMdYc z9F8K|7Unh9a712|!B?ntG9OvcUQEsQ_mPYjv zrD@)pWqvg#Y@Oj2V3c4IEPtH0CvuSU*Q%%YM$PAIknQNi243_+*YNq zeO(^s9NXf@M!g9^#2UkL-yIo`(jbyES| zoUFVoXQIqQEj-7FWGpGT_bg)FJ^yi7ZN2**;=Pdkl9F<7>v!~jqXYf66HRZ8PTC4z ztS-`$DzXLHD_UlRmHLT1B->sw_wx3FHDJO58STQGVhmkj_jSMCG;J#fqav@TnnK_B zZ&>7=%Y&-gYAvuAw(pzbh4{+NB}{ZK&e+)3M*oa<#f*N-qS`od4S`k4R-)rBO}Cpn=8(&LiI|;7U{C)= zVkm`&6`%?gu_dIUC%F3XWuP9em_L^W{W)Z$*uFh?B)w$vp61Z`N8Fw7a$}HT9MtB3 z`G+Fqbw|gUDAPedUP`AD*maF=lyxS8%j}?aoR3Ml^UsK+p*kvc*W0RZ&3s-i*!&gK z57+E|*{Rj;_e7p8s;eDXr_bC0%&FR)UACX#_DruJpHcNs*>@UQ5u?zDi|$dF}d?Bn$lpD(LD#d+*eJ zrz7~`xd92f`N??Xm_*1!CLG@59eLe*cJ~(}JURCnP)^KS9?>Vlv#wm}C#yMla)bx(ZXs;hPttml!Xa8M|&rX!i}j+C!7%|(juEL`QlP8$DM+t3(X(V z2nbkr?g{UiJZN$Ussm7fMVs7%8(-!YVCR5MGq`UmY;JCb^=luY1^0Ewk#j|ORW|-- zm}iRPzmT0X3QVURzTq@jX2`V35_MxyYVv9{ztQq-e*IdkE0tYf#t!2i0|+CiCb*V*|Vcds1kB#FVu9~y`braR-w09z|U5yW%&I;z8CbdVGr z^Z_0teNckuFUV4_Oz`bqV3ypvgkp@2l^*x3yi3M#{;gDTGN6EuN@24rXh5`j<=q8J zJVMMXSh~lwt`m5c5E zdfadFn;M=_xjbI~L;*K^c+cK2f`Mwm{n=72pT3C;UCx#@HG;&+_nA|zU7i0YW7WnY z)6v_$VX8QLF2>ith&#p#mFu&`oRo%sT_PH%CaF6!;M>(55Bs-1ez5sK*erW>C#*RojtQpbg1!=11Ebw`UvM6gVj7RyGvD#nl2A`U9il8M?tq zi$l-i#wKa|t1DEtI$HLaxjJJWabV`4PH%NDK5vPxeCD5^_`(2@P+ZuW(>F0uT@%${ z4Gbj)Nya}exl;NcHzG2z3y6*PBXB?l7$zYPg2IS1mgT!eaNwzoxCb$>{3Q}!0i^MD zND(Ls{4;CQDN?P(8VZVPzeKtZBvvWNED~NPljc=;^j%0j~0w^L3_u?^7mC zg@UbE@*jD*F*qb>^FWL_|>C=;{&Nx}fKcCfSr@sn*xCrK&rV zmA(RHobE7-JM#AXZ~U%MPwD^KG*!lEKecFE^=6#st5vtXhFFID)l(lED!c2Rfxw#S zm!k8EFq}E{!ugCGP>er=s+)W^N;J|yS??-c-2dKiOEybTELm9GJ>2NzTJxLu?1d7| zDOYj8jc6!vT6hR$2pR0RKZgDo;2xO7@vf4xV(qrCd4K!XEPw)*koO3uRP#n(!7{m9 z4==N+X9OiwT`C%*|jtQzYDm`YXlH-Qj_{0@Es8eM1i+R2CT^gZD+Xy}(%&FeI zOb$PI2Q8;v*3f^6SkU+FM{4|s$G_7RT?!R{fMMZV^c=QA2eoOwFO2+_rN~ciZgdJ4 ziAm05(7*uto6*hSKC^}zO?Z_h<*F0V$lRwKNHG2`6_*B?Lv&uM=b=0qTHQVQM22Ep z$t7ZcGYD5I19P?%_fZtyIP&viw$&gv=La%HZDiMaEK&G5XB_$5#hS%@UOBx?A8irc z^sBUH;#UfjsX^6I%I82fWW;@IDctR=$nAEE~ z^gg+~GD5QTMt%+*`V2Z{&r`n%bu~8FR7aq+LSm%}OF*WA&VXq~^PvRi*>DaN`J2hB z@KT?%=NR>CO6coJD^*D!E2U3iG?jvp@NE&cp9hk|gJ{7u1b6B5vjb&!RV+}t8w0^3 z(Z4*lQJ-6dD6KhobtyG7(yFTq{Bg$bvi5b)^VP+&CK!zOy^Mm4 z#0W?-tE>R{Xr4zwBS^;3PvePd!?`{Z`+e3;q(PyLtf*7`dlcM*$Oxjm8NY1>!@Nv2 zwmFL${`uA4H!3Q#lFkNUun~onLi*AO5hjFRA>5**d!R`YiO3lg ziyCW`^7egGz5C=Zgm*f}sFFfXA|UH6O_7binptOyKn^5?&SDH%-;Ml?eNV+#SP@gC z7N(@2Z!JSt^tC53;^ZavcjF>!Os;+{T%7J`Bd})mg{?}Y(`zD`D=K=WSX3GUY}Q7V z_I8698&=<^uVT)5vUaeU1NY`G4Ub_NIy28z4@XpH3?})p^P%a*eP$nB=Wv(e+*l^Q1W89E+Z0$Mf8dbM9W0sf z2Nw|Ml?1`ih!uZ72vnkeROiyDulY}I*}l4C)*3geG&pnvnP;O=x{GLKFIbU*R(E_*vFD(cd2;0-glfK+lHVfTDf!yfu0$7W zZxl3DZx1!n<$S3_y5>n>8Q}K8i0IXLA@n1)hFBde)BfbRmMp^zd>o)>_zklY?uFqo zckPmY_PJphs|4h3n%};5O``L)^NLcb@>5S@0_7=G6xqeW+O1ZQMiChA7*476?_($V zJ%xvE$OX%zl=^Kw3_j0_n%XHiMe}D!SWj9Z)7~Zy41xX8^y8pzDt!@lQ#9Jy@6HAf zQ6k5tvms@(&LB{I6}->9&fS0!?cR<4ji?dUYH6kza=$FX^$C%kR78ox7wWP^Lf>)J zN`CdLpI#T^25#lDE)#-Wvv_B?e%~=|jR?oF_>+wIs>w2cg6T^nx-dm#Yo!z)L#)eRJ^V9DI z%>|g6Zk=Qi$!k-mC^GmtWmG&Jncde{!pE8$dwX<1o)S$9CgYRbcHj7FZ{T6fBk9?W zn91GVx+B@=obWlzr=CQP*!rgjWxg2QSlcpdG|conO1%+`25^tXQ}*#3^xvP!!avw- zp}~QFG8a7Dl>I3iV&6|i!!5d09YR(}*~^CcyeASAI`RB+A^7Rv?@D|bl+Vyj%>NtJ z$?ZG_Fc(lAu0#+8yAnzEIu_@54NK|y-Su~*Y2e( z(X^fdP!*mb5S+j7S#VE{^^)AK`9XZdyyN$hr|aLDGYL7|l%=2*Hi@f{nt@O@Wz3|5 zf0tXfoFIoEws>sZbg^^|UgcK4)(nEu@M8coa;l`gQ>0r6ZhN*-#3x5`W}jt`r>ERF zmEgrQU6UAver+Q3qnrEAOG#CpfcG~=e#^CU=U zH5lO5i$w+OHhZq?NO>KZvc1%;R5)7fARNWRa*S)`-9P_GUHiRbEnl+WwKcf~pvr5gpRG?r~uSX!1s@BD6bmo0>z zK_*^1qkQ1R)Cv3rCa}7NWtS$w=N~Fs^7Zk;-7sHZU!V;mks13_i((@9+r~EYx`iha z&sER*1(32BS!8u?7q{P@zV$M7R#b32>=h;)999}v&kiKIS+)Hq^a4y`zEf3{<345iW8|1XvxMfU?3(YHa_-@ZaCZ3e@B4U zo$UmkrE7O3MY1$JB>XlAW7I^U9m$Q3?^e|DV%bX8qZN5r`*Q;o=~-I(g!{b(T*tWy zFmszX2N_!I+<0J^q`bs8kh#tm z`S8=vwlfyheAjsVue)lwt^V{WG#fter5VwfYey5J^(3|8b zl&?&WoWfHHtoA8BkzIz$zAy$i5vuU`9Hh`mH$AY*ulfU(jn)qX!2qyet zc$soH)+%bT#Da~DP3G0BSN%5z(af{w4wqB^Ot3}D(zngtJPOtRFoMzJ{ewr%J%mjo zD}C}FPq=`ibJ)6J_36`-=+(y+=Z7N!n4Y=+^~`#}a}_IGT2Ybb5SNp2>5x+xkrbn> z40F4alK~Hv+QoBMpOZH|GG)-tWn{Hm-gIsfJodK}@5dZ`j+&eE+{pqQ=H{CijIzZ# z!tXp5*v;={+Gw*~#Xn@dz2^tP8gqd=eH7D7L)W|q@wA)xF1}s;WoqSk2pH$6+Ty#* zKpxN$w3(F@H0U&PyZQHi)v)@wHXEI=%3SsI_3N%LvUFYk+G!BTLJ`lW0!q0sUndvM z%1(Q-^-%fuyw$((UO^WMQ!JWM?Uz3N`J2C^!Ri?IX*oCT_qx|lSI}g>mLDU^nUSF( zv$#78Y;SHY^BMJga#9+GlNLej1Y`pmd({wI_EfxyhCZD~L5WJ3i6o@_k{Z>;A4*X4 zfVPQ5R_TOvp8bGjC@Lyqj0_J)%vDO`)$af+XZ2vLIm=oQYy2$zCm+xWZMLY{$IWw6 zzSpCH<2M4L3qIi9Emqt8f^z@UXyw=UjFl<0b7Uyg(cIZrM%9+z9#KvgmqRc&KXW&J zAHU&nV%B^-;deK)BtV>>r)#LOi^iiB3to2PrU#s_IIJ4-xYnkk1Ayq_22`7itxvqI zMNk4z_}0B-V~d(sB0>ioB2h;zBJ+IcZ)xE^QBB7QB`B|OiBuQG&!>T3s}jNhf>;{g>~;WMgx z6pnK~dq>BDf`YITwXk++9y97gzH&~{_ixYdqB-_a=(bq$C_4vA^qo&#Kho%&Msst~ zqJt_(nvu%PGC-3B03%IE(A7k6#aJ139E%P+CuAwz;YM(H!&FOwt* zKOxQhS5@}jqXpbwpv3dFRspO*JQssdEJ1$P!vndUNPND&%67OHnC`6v-2*AxCj|QV z*ww&n-02U^+Co`UL)eQKti0cOA->nFiMfXg%AeJIl$hryj%AfUE3cgndng=Ffo(m0 zn!_)4hSq)s0?iJ%OqwY}9@gfvK^LHGwMOlF@Y(N;9?_L~N;%j@jUI}US`f&91aD24 zY$7jwCjs=2im zc^2Fs6Si4C<=L{qCf+KMbUZw(nwYe<8vcG_vI4WfFrWg5QTFC-BsSnuJ%(0-Q@fRO z=rgNshmV!AFVCt!@LNxUl>EN8{@T=^a0b{SfFZ zL&-ylw+?`2#)y^U|7roe9!NW^+$j>!8K3w}R;{w==RdG_HZ}@>#p_Y!rDCQ$PRKl+ zUiJR^Ai*dLqTlYjX?oXecasS==cWi5U>;hls`9buuphwicrU3#hOy@!t%2=Gz8*HH zM%L8un@OgU%v$uG$`JC3AOZEoU}{uSY}uOepZWPmF4%X}o|#;nh(s%Y^w$Q{xbPqn}29-%=4 z0PzQkAZ9&0L;>Mie2?lgIYtx2Y>B{XYyLMeDqh(xDDO>*>Cy|4**;x!xyDjJA~Gk{ zIgsu!MwQQ8uapiC4|R=fb#^VH09U1%Q5ARul( zZM^1oVd`iVZY|p;F#K3+e%_6RmasXUis{yfI;02OWB*kQRQyc4Y79b4fxlHK zIz1Ez9bOEcHs0xK${aBc2pDYlCyPrK-B()3BZ$=4H7zkB*_(I}b7mL+fYN7? z@VQWL4D}2J1?>3$49KO%5bsoB+O7Ui z>6+x(*`zi`9o-kQ87t9qsf&KbhF`yEhSIsvK>x(;MUS_qeXXbMxYcu&O>1=y>Kr{v z%(7emRc(!w$>^t9Q|>b-pS}GtkOJwzjwvP2t|tm|U`;|yIq}xgJ(tlz;m4jbVp0gh z!eb{G#&f|7Mj;u}Jpb>P^-p%C&8f%J7@Fd>Q=BUe4^QPDVL z1NzMkilaO$dbd2Xo_&yz0qJ0)C$aD1lHmoX(q}HGs(r42&5@DkgFt3xI*D1&FKN1w zlp0ScvZSoA#3-G{uk6x|Cmy2fm-l)`Fcq{fuOxiZ`ue$5aQwz;wIa#6#$br{ z7zxC>i|kr89w?r88p*>Oh7YJrW^Qzr|D`=TDDNu9{T?L|Ea|%3e17=Z+-o3ftm6!R zz1F^Kd9)TXt_QU)I;0Ro;mWj=aU+10)qj-ga3R;Cl>&p;_pcA-3F&CcMo_rD@#_9) zL|E)wrLtrmiX>Apwx0Q5Z>zPSnj0GbY(vE^r@RE{cbB z%z$@ry=qK!7)sX#`JeYvY@GXhoc!D+`FxXTWoW1<{dA>&;3MvNyYkKs2pB5NU_q+i z9NAwD$k>SR#BF#hOOmBV@yN7a7W{-#$#UfUcIV~n3W}p&k-c4bAsurJA{o%+BY_%DEdFk zwG4O_Q8HTIDXx|D%yRg?fTK*!Lapa*tBDB-yTOPg5U}k(4_zCA+!1r`!QM|zh#g@X ziP=QGT%`!B4rg^`?{kWA!3m6jVb@_cFS^}+0!hEqwljap3PO)LZh!U9(hl;q4X+2s$UaoPgn)QBX^%ZjN#>HsYCm&WwBz=M-axCnmB*T38`_= z3{fya2Zx9Mkf}F(qU~^9;2(sCUSD6cadBw|RGt04ab`+)**Gdg?}xvo+S6^H8J6b)<(fj_=kC2S(PK!KW-~OpZ9ncC06~r4P9{eyrWHMqE6?7rkKz3`* zd2MSx=0yL*;`KD4GE7NDz3P}3%@atn45Wjmx^hTf(*d!CI=7rnR$#5;I|7Ed4-)DU z4mYG*Dnq4W_z419yJ2ZQnd*v4FrX+gKOs3@|aBD^;IB5HddBbTITjL zT6uM9>?QEZia~|H8NJA{;5SL9R`V+vUE+2U$M3FaI_a6wP$$Ptptyz28Hek4tJM{w z-rK=jf)_Ibgs|@{q1LEvR2Y;vO2}M3c3PcqYrU_89>#?ar(dM)Fn`0)6PDtDjbs=Y zq-qS-4mI_$6$Z&x?BNIGnK`~LpX zvJ1%^TG6iy9*z#c_ETsDYz6i8F91`jebaG(+Ym-XiL>b1=&MWsX;DjNB7|u<+j3Gx zg!r|`P7hHz*o$%vh2tp~Eq8`0G!)Fu1VNd?Rl~e@NAn+VW=Led(z3h1MIn+Bnh_l4 z=rl&2&NUw&0GpdFe!0!3tERD=6rI}2xJOjFPolnp>C`)EIzOKZH;XVK&T;jN3YB3J zaIX7M9~Y$t^P1ASLTv&2*vIvx5mx+uHb6G0kxPgORK&i&7C!#4+#pc?NtnSLho407 z;YrlVMs6FcEW)0t>nvzka4`Wc7daV=A#;MQfgij{5Rt%voXdW8I@SPg$vgR5>qAy!Q>obtJkk_ z=;zUNqY~&>Ny`HDl)lra*=ktQZ>LmHrKYLZ%c1ZKl+I0kicQ9&ahJrbE)`**7yr5d zm_J<%L-wev&#g~>WhJhgn_C924eGBP%Wt=q+dHO)ntV|}#t#Sf>V0v93HWS89EIF? zEph;huzPJDoBhZHN5)DO=iz%hen3IE+f5&GO#JdA*yX70EiiPMhgrSAwWHDrfJghqOE&yS35Dpk6#$fI(**|YJP_RwNWYbZT!7s2X5u#J8XkphuQrr%^=Hr{HOp+>N_3v_>R zn|~%PL;|YnIN*4w>I*m2V*P%9XeD2wQ{nS-kE4{-6bcPh7l(@9 zMYX5EiXFCy(BR!)F@QwDmDgs@OG0My*L3?p#Uv-tCU;iI>~N z#OTZk&3gTe_MjDS>AAw$*N=SX)6X;x#iL^Ju<}OY`gtorq{_jFR~Ztwm}VCEdZwnz z65@X&?hpWfPInW+3Pp1Lx}3;rKIuNSJ`AlcEJUMk@A!t*9)HNaY+sHlXv;>v=Aq2- zp}vqLPs?XGtoJjT08jLL{-^jMb}X;Ag5EDmh>~F54RfHp$-IYoe#Y82hzDam{B>&i z$A3uKxP5PlIoK{EW&n=-b$H5EP|TN}f7bn4Csr50O-nE8f_g^Z)c}(kRf{)Cywck= zHzE}!;~$vGyN`U|xGM2`^gTgy0`Bce!y+`ZUuo?pn*f)aF>*5Ezjh>9)1b11h&hTx1&|{Bl&5%r*oWR3v_fz0R z<16vtYdk&E`)6MPY{1j>02Gp~?wFYp?+8Z5LU7BIAw-YJCZ8Lm?IDT~2-6?;{@#86 zfCqTnP}&+>vNFSmdMK3iqiO85v4tW9ra|dGhf_`SWw#8d`G_A3N?8rbrA(u_q@o>P zq>ldHQV}D$=cQZ1-7^D`FJkS-mspcEGD`n`0VD?M>gsq|s)ZlapY?8b#+#&rc#6xhy_&=FZ+Y`;6|3GRw#Av)TRmwY1S z3E)Ls8Ku5Ek~ee2Ow639)~qwM9v(jLTg00dRH+TK#!Q9-v7}Ji-zeO`sGU5J?psx% z%nNbxx1GyBUBJUKcPNIFXy04UBus7-)^7kaAXw+}@mYqwlWsu)UG0rKQyL<}(ds|c zs~V>6n=A2&Hvf+({7>lhQGqFivTJ>zO%|=qz-m2kLv}|r(_hO!EFGUTLDRwi=s=K+ zXSvxH|LUDlk0|0zHNr+k{W$X;PQ|nuANl%oAx}NsCc?-4c?rz|D2qmdlyTxPp#))D zEQ@E)AIL;Pv)8Y!6b6jJhxq3ua1)768mcc(h_(AYO$BPG`F*V)s6Z)#pmYtn5U-0N z8rzAWOtLlzIBNUm<~{vX`=I6suSY5Qj_g!Ys1%<H)1*N#?N;!ozL!1%LhFE?a$^9pxLsEadX}y%B6bVR{=_81`%jtk0my*EAc4-K(w6QlFOdHu_ zbktIqM30dN%DdbhgD?;4;^8uB!kXHBixG^775otG`-Ggm zk<-HPtm}xg``%Bav@Z=ws*e0&M!T{_gvVQ88{Ss(|l$b@}dS=>XNCkU(1f% zT@%YGsFmZ%&`0#^;3Q10$M%9j#IR3c_p#u}eHImbHk6?<)f5-Wpd4cp>ck)`7g+s6-$E1@JM*vcT{i-<&@tdYOK z_9)t8{rw(ilBaYLdpv687P@4idV~6EVscT#p5{D#p247CwQ?0~VjOxDxhM#%j4eik z-H=Q%Uq`*ih^qWzryyh^Y4IIZCJmGQW-`^Nn*vA)eupN5?{o5KVDvVQSd!{ZT`MprS5wz6N$uK+b3X zoLdsP|Hu^2Rg$MEu+bG%lU=_sT%9h|E60?grqJ{GX-vfO$XraLl&?w&g6lYGYNZ&|=N0Ff7xfDf!H-(PIsD(y z?Shbe{nbpaQY76==yO8AhD54FpgvC;_ok&OblH9*GG^uU9Sud@Nxbbo>_iZ#I2CAt z34F&dh~v;3=trUeW4sa2uCALJzq-0go6tA)GNwR*Jx(HEb-VMq&+u=W`D_7LiwFt- z=Vv2#sPS_U)V$FYAu$iXBx?tUnm{|>A3x>bj@C>a(4&>mSAV%?*RWF1Ay$tBJJ~e+ zeSbUuU>zRmvG$TyR~IHM+vlK@8o@%^$Kx-``S;dfz9NgBD{H7G?=oLJ_MLaKmYWI< z6X{nk#l==}!q*>K&-*(%N>Z%uXadkMN*=n`zU{p)iwT-Hm;fcR z6$jDu5z7*xx2~LQi*hf$Z4%K{d$s)bT`uR4(wa3?gW#8}FUcFJh+#k$#hvr|fB|SW z9MSlehvoC=@AC(FwlC)x4bx8o*V<0#U22oKAC1Y9*s+^!W&=UvYi*k_vj!COXr9&@ zB6Re{Q!Z?ppBw+H-o>j@qC^bbW(R?$7Elag-1EFo;a9FvM0Z0~#W|()z9%6$Ypa z)RR-Sum?~Q2RySi?S!Ax|JK5;J(q;6i;iLmQL+HujsjyEs;j6LKWvFc6OjP0@u(*A5Mi@Pjx7OkUtS`IM9%BT@4bqGVbz{(f`o9TJUQ!v{*|i^qM)TE6KhgNFj6Fz(hz(i;?1nbiPPdoHlijqdhW z*1bo}MJ#L(sT!^PUwCl~Dmtu1;75t!y3X1j<31wPOPFiT7 zi$1OKr^1dW)1zQO-Qz=6dAboS^B0MhSVyQ6K2xGzIh^kY3J}g3xt~cBvAg~L!dNx= zs$^*Ap@N*Lj1A1HnoOsfyz;hbDIllGo5pD?AO}lEu(cR4Ahw}874{G5BF?N4*r|FF zeV&b0hN`Hm zaqIpCb6n+rA`iULdls_Q2OgQNp;D{Rg+P5Msj}9VP}sxqV;)ZKRaUpd{s4B;fH;| z-zoKaV9%AYOFcRw7?bMw1qKdi(33`0UA_KI1ohnO-zpk}krRpOLhJ{8!M8YH*_gF0 zu!&2+O0Z<6jrPZrp35<4!atO@{=|hR(R>60R>hzg!fy{ootJ)zW<&cv;Kc})G5QCU zvuod;OkI#_*6ZFsRLv@k^13&Lw;I}VNqHsMyd?MMnMr+=t&;btQO;nPVo35NMoULE zu)euPe(2~M!lgNQ9wf;tM2V|$Pqp+n;cFfiPTEL0wr-e))Ee^YQT1hwFQmif0AAf{ z?J)cl9S?c=AVA|-AluWYExI6OSVTjtmah}@H{HnGd*w5b#PpSt(PNMWTDhTx!tiFQ z*j1C6IAR#QX_Up{(Z();UF{^tE@K=CMkd2d(VfTEX!>;3%KslxUl|lv*K|8rfC(0y z;0}YkySqamL4v!xTX2Wq?oNUScMtAPaCf)wJXQCtOVv~j^J}J0@9y5cy4M=JZtJ;j zBlHL2SUC-tEglk#2Cq(eEQMr*t!6`C1%-gVL5{i>M4hcu(8N(K^tO}uaM_DWef>$i z|3BwRpzN06N_|X>&zT}(e ziIw$TO(iM52%LxCPHc?T8%2As%Wr&eL$YE*^VYw zdXx~2@CYb-cq8jxOewOAQ-!;|MSi$zzyH@c|FY-#_-jq*f3pB29+ceQdtj?eN(T3? z9}#BD8CZ*w)G&X{BrNh&O-I6V7|xDg^XDZMe-fQWAO%vSgbJpej!rsIsq!F@2IkWc zNfs*8_5NxT9XG8@6I8+;Go%m!x&JHU`0w>99bYCyH$xmlEL5GiwlkclqNj&avw-jL zZjd`|BJDOwwcMx!_jx#0!e0_*#SRPcZD;&=2&3lhrzxg!#m>H(21#zYK<5UsD1!B& z5eTF%v&v(>4C`sC2J+Z1!#NiuA+>V7P;MMIL(5#k6lPbm;O|o8kLqYA_{O1Gr(pG2@qTmarOVz!@p4fmfsDptvX*I1a7L6oc8~sxNFRXUpIe zA>3D>cMUoYfd&qRu)No2qa9UA;CAOWIPM(|&4X$l0LlMS0!5T0t->~UOd^HM6tq5U z_Wo%gi9O()1cN}H=%kQ|&_oQ`=Z;y(7x0MLHWooky18*yOx|UerDYm*tjVXDyn?p@ zog}G>s9+k_^>@DFz6Jn_q2C8yWJtvayBY;9XForzQKSFyo&iKQP)M6?RvN#rw|S`C zqq3J*l!wK`;(Z`PwFippR4yAGdFYcwN^i#llKeE;!~jiQRKXl-Y2Vq{jt<+Gm4zBA zrMJVH?xfF_>-U3b*EmD7`nkHN&DR*8mac7vXtugf)a3V0=9PGwag%r66d zv&3rrQLuQ9PEIa882=ylmu};gXYIp6Jb4g*;#+g)w(SIBqo@W^E;$n)6VdX`sw!3|QS*~C)6M*ajzqjs`bGm6 zAtzcO)C-jK#>!yn1al9U)Gb74QIIU{XCc0TlI%A;-#SWk6T!}!H!w@{!vBA!5xnd0x2P&G8O`Ie5;4jvi?rNi|SZWlu_Un7HxOa!6CSMBw{X z!Ga;gzzB)7HO4FWOHY3NrA*g9fLM+dOh=%WcY z)mylMD;V^A$$;8#-R6*s>p~Dz`%(R#vfL_?IPH&o8u5xrQFinl^{GLJG4HZ8(Qrw3 zl3@FzE%m&lS}+qqhO#KR48A|RXjqTKH{OZs!&>^4y#A9k2?x?{pmHYN8@InQ8U=Dw zrghPQUxp$PK*FZV_c1gYEa@ve`NE^T=(U3|T^fY@(LhSJ2hpgEEbD!F=9OGU`K0Q6X0{v7X*+e>_&|HLpeobTw ztbIH~U{N#~mQUj=p+ZqL)G*|b8Lc{kzH1_iFnHaD3`r}#=2x=j#2*9{#vvUY)B-Ml;ji_(P!=w+<_$Q41->5;d2{%DZFqSZD@u;-) z-UA}#jM3S>hk(fLVD-i(Jb%j@R+0tmAZwK(7ZJ)6sKH0d%8L0kedSpJ!RnvA8=CP%)1jbX$b|u}Fs0lxE=nzzgPMFjej@oyxOb_Coe^U* zv@r9*4_bk{arr!yP#D1+ro)V^G?J7rHVLHT(sR0Gr{@n3YnzhMXncacI40>9saww5 z-x=(faS@#A8>#YWl^J{%gjS{wmiY6vpFxp6%GNy!31~wuHzN#J% zh)lZ(mSb@n=ezgwiyURC|7)OaYNe`GsI?rH1n)??N>; zGyuZEc)CSh)olaP?;TOQX$^7@0wape~9jx{QZU{Jo?eum{%;!Sza$sPYf$emy{|Ql{Fb0 zRr1giUkVL7d!R_74iz&@C!XO9=0x!HGOALp1OF;7PjALXHDufb1YbrANRZ}^7|=_*8PyXb!5|`t zO0C82sSa&DyC_1ui8c}}v>^#vE=nl*6Cz%hX$WW*gkwbJ&CW(sfoe(V=;)YB16Irt zjGie`+J3m)24>p8OLp`VsgRJslb&u>eBe$xss0QE@uZ|A61|2T@$N9Dml>0lM9Q92 zSaT%r@1u7t1kk786QjUK|AE^JBXpj$3w#VUrh(lThiw-CbbJTRrTjPBu;}CnFRs$} zk9Hr`sx~sj9qXI#b6rM(Rv=!IStDOlJ=|Yf2#Qh8ir4Jy@)~ zb|#opb2xZXaj5KS8)P0TiNf+#dM%&HAt|(z#g11abzmgA>P3`y&Xg@sR?i|G-5CSW z@uP{LA9a;bApr8>-?1|09yLq}RZNK~Xx%TW{8NF(i%964vSkVh6vOBDk$~)ytfHb~ z6x$JMhSLWkzpLRe(}|1QfSy3O^49Oqcc(y&@gbM0v(85Id+um@8dSyeaPn)P)FAJ) z!@vR#I^y#5bReL;P~Xsy=XLa0c)7?4Hiu%t?veI|3$ZD~{k9G1GN%~0dL6e0ldSHi zSku-^D;>-K7GE}#_vO0#&3`_Ux{aiz%CGY^=sCw%$d;Yv8f%aI0RJyBpGa&>^g=9F zgK#v2Df^$CiT8Wirl6?*Wz4X7qT=CE?CvYpB2|x{tc@8zRs1FLuVrHk4Sgt3Rsw~` zy7xARnU7Deeiexj2)G-FC!6F`mYJEy=h?<=BNWY6OLzdyVEbBn7-4@jGK&t8@={JU zGK4_ux-txDbJ!uPYZy@#Op#<0GMNMd1lROaz{mMq{}{QwsdLau4M8o`7u z5vw(%LRdU?Rm7CYppfCzPPR!>l}^}c0xpmsYSLi1R+?IRxd7qZSXBr(u*-@T6-?SU zaoq;%G7sj&N{~lDL=&Yr{i2d=B11k^N|S%C3Nk0vio4iMkp{ekMj4b`ECTu!wK`_l z`~d3hHVs&;w_^fBjsDFtHTapwQ^bx?@Mi{0!HeI0^+zlJsVgM-S$bEJnCQiDH@Mk! zeC=Su=vFxTdF+Nw)hviPaQB5LqBn+ZOEZGgmjE3WJp(PJ>Z^orX?Zz1lykpLDt8zO z0>LZ^mWm2yPCiXrK8-rL7@ogUP?gtFY;Z| zfm`CZWei9*A8NW>!IP%Wo3up)MYB@0rwJx$kcb`?SsoQk+Cc|F(J+b#!`zyhiR0@> z3JDc=nS^QX25=({f@n_fma;YHSDH@-C1^a3ole{edseL@Ex3h4#@I&joROk(?!ygo((9_4M-c;h&%jBx&a1 zP@gTKk!_-ovC*q(8a}>#l2F+}mkAa!yF~te{JTWV5Lnq%{K2k{OWAJlcgEaw0vbsf z^T2={4{nHHivH54R6`zud*noX2H-1d|8?wo*Hc(>%ay1_K;QS2Kd^z7`wbgT?J0$X zl_>M+Q~OQp9-(LwC@uqpK|nksAPqKeHPKGyku8G}<}I52;E(3A@G~gdTxhOp{~7Q4Z9sl(3Tul- zkeEi;Z$rPF_P#d)6ws&MmD(n{`5zcQcB#3#lLoF=ePuza2S>WS_Ih}~({g~-wY*T~ z;LT03-Rrj5n0q1;h|S0Ad7?COKDoALp^H+KTK+`^5eyDTw<_F^HW zA}GzciNtxo{Y7VJz&F?CX>bVtlzqXNrdZZf4+b`u_O@98^k1J%ZP;y-d-My z&!`J1IQb2V(KvIHMeBHxdk`u{yC?<7y(xZimI1<)1lsSiec^^eyv^G8uTYjmikh0( zuI$z`O~{xZL|>6PSaMFcrGnyzM2DCaSK?ts&?rE*qSC^VN9w>)AptCB+ms=j(3h}- zx3yI77PvWvB0fr7n52s6kKkgcD-j7U0wq0O?^EkF`eBNNNVD}w^)r+I)CGnt>{Y0Q+6oB`2%Mp}oW1*gu&*_B|^Qi_9$8du}^l$u`JWe6d zXxCR)6xzvYJc*`eX5@Td?~8^305TqpqCG6V%zB^J5fqR*kT!6z&3r=h*PbfP{q6b|co$$=ENO%`^4YXhOz->2X$@#AIj%tSOc76;2*a0#_%tUuc^p)CD9wf-!m zVfYz|`HBt#W`KA7b!T^Ttr$2rC;n8KH^t{hyE*2%p3u8u3!KVn(Y(V3y&5-bTkR#9 z$0GkUZJyWJtT{Ap6b**cPxn8l|469?S|{AB3w(`-g56jP_j@e>Geg6YA_F>(uhOx3 zl_vz&D~-sYi@#~M-q-v3a3JfxbNe&Dy9pt6YG#GwrZxI?-%A@vTx9wH!wev|U-eZ*nR+B-X3XPMnkhUjqV$$n&7!@YO2vK~w(C$wr5 z3JFm6L%M?}b-yOQ;Xu>-DQM$X zEzn;!@bq+;C(Z3-F@V-Dld#3%w)e~RvA)siC{s}9w-qi1jO~H)AF@Op*Q53BjscY7 z&W%w*=$M<`I=6!Q%BkT&4SdX20nah8XRNO0KXl2{Yv!!^Tq-T0bK=n9-k;pK z=Sq%g;>etre{FQ1h>o7V-Z*gcOKE9oZdzIzFwp@5HGWf5Ga7b73ondXTOXr@sxL6%GOV69EIgn9}r=WYy5t3z*-A!~d3YH;t*6aOBvcKssU7*X&jNJ^oBp z47s`998fenY)iJ)av^hJ*Z05+^Is8ZzN`nVwhcL5Q&fO*ydQ0@Ue7m#_1(ANd{*kq z)Pl|jV}R-Y{a0g#j_0-We}DF~$^9*PjbRhOjnY2gtOU`seeNk9Pt z65e3jmh`zP6eC+(6lqYIPB^4_DyQh*+g@&5@ceQL)vxP6D2fiHg z;yzD-0!_&cP{Q2qz5BFSEil%zmra#f>HFe&alGSz03qMa7{2qqw;=e-o{vnMtsAe5 zKEP@Kf|^*tc1ADosQk;JTU!G%GqIP~bj1agcACz&?+3;pId7;x@||rR_QYE}uHX51 z2JU(-oUq@#gcE*5pT81XxI)FSLt#Y7ZJr$toDt>#TGcbrFLj!5v%U_VPYHbLCcco_9-y$DE&snb0fAy3OANBwZ`B(oBr}E}1j2 z3_52+pVo#zfyQ5m+lVR9kw0rdg*-n;9ocOU#6p2m^gKoSZX=vVm9H(#v$OE@a~)pD z?}|uw%)FT(JX*jO^T!mSu;`5J0nx#!=IuT)dN^)VYewITAmYv6gG9YHO=}_ej&D%? zGvMz4rPEdWJqSeSyP*$N9DXQ6Crm!y@xm(jJe|^Ix!4OtjkfkDmiYd81TfUKZ4YX!D;QBMeTdCiPw7jK z3Y`y^aa(Ca9|SBCabvH6LGGxXGqbs$_GT?8fEjBzfH6Gf_ufLMq@J%JQQ3hI8}P=r z(?&C1>ES{0A6~>Io*t_=O6PpOqZ*!HGoZRHtkv8%t*kClVweSzCh| z3TRJinji;^YcgW*ujtox+5gjRUH|$m=N0)WQr(!t>BO+Pj*fMF^eTzMz z+tQq0SSYBJ$AWg-@Zp*_4;TgrsZsU3FC{=-Qw37LfxVCxV7n$s@cqI7Thc$^ZU{Ug zC^2TYdtEyIkq8V;E;DpO&d- z_8HgDIu6G0%r=)zlZ?rEyY=NKsZVU>UHOP6{)^#=YD^+ZD^S+fqO!8g3D9GsT1{Dg zZ;uZWybzA|Q zb%TLR{RrVMrI%B?AkL1pvp&Tq_teqp$i!ps6q0gii(lNAe`-sE&uuI zAFQGTrPrQU!_d`zbE`(;dyilCW@q^9d$cYCX{pdA#->{)Nr)t^PbW}*ZJ7%VI- z?s<3czI=LcPdLWZ)J&vBj5C6GclUDp(8&0Yg=2}{yk+*`eH+C){%ByO1{k;G{Lrcl zYQ7x6ACBf)$6XLlMQ@reo)=7W#LHb@al&fi7~NJR4iK1)#cM`Gs30w5&9zva&b z+fkoiG+qCm=E+)GLe!7b8!b;@Ct(s)I_h)2badJl7|nlRK%SP8aEjO= zfQ#`P4G;qH)7+N&t(Sglv_18F23gv0YU-YB504Df4=*q6HDBDB5L?N}$!zV9CWlLD zRasu!PyeY1|Bu~+hUO4MarIZ#jY%N+bqsHus zL^&7}7oQ!WSW{yD%&Bh4;86VV$-!Y@1FGrvCY@3S9iP+MV7^jY_o(xG?*|GQbkQ)P zP7?77E^|u39|#HzdPj{qqB|ud>9DpOvgi2fTp6iF78s6Z)Bvctt?@BhR%t{a)gNE2-W|K`M-9BBv@iCP=90Q zihAo*B?Ihf7cbWnPBUT)tOXLUOObkH-$%#-$1Mp$0Wu9k6lCHGF0lRHSQ<+woic&= z-Ps1Q%H(

&`c62NdNd1&n`fI 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 literal 92627 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%0Dgo?YBtZawyv|ftR2VUvjme zRJAYYG&uPreQIZ>E#(;2Z-C*b1+4|J=P~zHMA<`tX3FOCYE(?;7+Qp`(`?18Fa@Ao z!REzj#pcA~^U7PXhzfbc9F@2qNk2+uIjhu9j_lNWbHxX+1C^JmKxiee{&Uyo5Ul|B zt@xd&F?pmz4>~wjJw#JQu*dK{S~Ur!OxrL%wZe^mzcUW7 zKUymZE!!*^_*MxxV-F$76(Uzluv-CeA6H+g*3pxdNCOv)T)sHP-lVQZT2kYXY12Z& zD7LUi`I(=@N;~7ys9Op2aLgBEEy=}r)G3xG=L@-dv^ado9E5VU@Cs==p91%~;!5~G zvf7c2?%Q&!Ea}ojW-x_Mq>?qmZyp7O<`c1w-&{NhQvo7>S!@#$pI&Z@GUW-X5H9sT z!sUzTmiMb#^|8nH!Yswown6PhysBPs3a#NCpRju9BH~mqb_2mi(>C zg|-p4K1m2NX_${%1=Xi2SOtQf@&OWCrT*oJ=tHDS+R!A~{fguxfUv$9yOu~H#d zkbuU1n=QnI1#n6rvrz&xQqrO$TFi*Q7=B5hXH<@z1{=kxf#)-gw%6pNWssd4+ok&>bwROe8q4qJPIkCo(q10 zFIy`fbP*l=ALQQv+Z9Hy!fwu4#mZ)lV7TF32%qlxy4Nb!)(?OnMeN`UEsj)dlo8SO zVz3s=HYB+VG5hkhLB^tNvb(C9^SeyTj8&sF`~xv=?zpri`LU2y+OFT2HvG*zNs=ef zxfbuQTIQ|PMIy^{^)L;>$hD00bek`DBd+Hil>9XH2x{i=RhBV0S~6SGSI}#JKC-)8 z_G?U{^pCyRd`4jmm=d&R&#*(*(wdsN$7t4$7rdG^1^Tu11YcZ2qRmT_?@ht6p_0?o zf&8mik8B^gbkBump#)4>IL!+8(`{93=$T550?)Ymi0OgV%e*Sx(>A33@}%*Vm(iEw zfbbVR6ZgqCPT`7$SGIty?U=CttEAcX#r-XBuXBgB!Q;_RR|Zv8)#Utq&34opLDHol zG=rm?<2z?qdo6^-(OdyQTrd2R`Xk5b6ahS;4_ya#2k<{&H~KD!t}pK`^h5{x-O*`8 zuF!_{4%rq5zC%_8^EZOeuIJWe{^bw<7-F?CxaAGg18k~Lep)QRil3R#ag2)ascm-ZtjrzmdLKucdx02a)xn~3)4;Y_~u*($3>^zD_7 zscF2J`(`qaNqwVdg-K1dGFgZupM}-kdn_}Rr0V>Ue#8*#k9vO-uqYm?_pbNy9~m5g zf;Q!?_oo^&ZQ$X9vsqW4<`=fO1#(YjOMa)6u`$-;8IXY!wD`>I-j}I%@sr@!j&dd)$aN3j&TCc##mxt# zY16}1*HhE(c2lY@xt!-@Y7-Q(Ou+h9OwG(UyAAOIN$*r_J3sRXz{Y0t>PADwOE}x( zHxw5bV~`xcXx+XO-LCFnX3?-C2v${l4y<^0`ac!KwmFYfB< zDj2ewL2U2ZNBdq%ared-Qt=5VsUH=xB{XpFr%F7XwX0>?9<`VNC1b@lBV%F|_0sUf z?EH@2am~xs;|#=1u5>U9C7k8(rA>;hnp%_hVy)^77$pqM)fNZz)iV0v=W$h4l{tkB zK2-;LSjcR~L_uS=1x=V+McUST03Q+b|0HC-v^ovDT)+l_cd#=B2F@@I;5wnMgX6UY zaP6yszMSc3+$sppm%KTh0zyE>NMUm`-I&zXW8aHKZ^zpk69T`g+64x@_ig(I-^Y2L zb23gz)cR7<&clgg6AdDipb|D-7K+cgYGN?s(UO^>&**gA&rq|jzH|{Bd*zUV6e8Sz1ykB zlYG3b!@}P3-{JuAtI2O1cGII>5#ue8VgN<%KmDaHFtqssYl$?nqF)?KI4OX78I}=nQNo)wGtJ0)R(twa z7Mh&nt^7N#7}4D3)z&et^a``1ZpaynL+|=wUVVN2l7v zb*5V%K-T1^bMljHfiY@BLh&TXX4TJs!-$nKSHhLZo95)i&cA6TpfXmg@TvqN3xwGa zPUv*hpPNW=*p9OQZo61w+ZxT2d-jaVX`vAVoEAt?hR_WpzkM6_^QZm;c6J%w%scE} z$Mp$;W}bLtax!VIsB8CL01FGt00?Hx6?6ZF=nCV#nH&CBL*0o9Vq}`PZ$J1jkg0~h z01AV3S?Nq9j+fpAthtjB3P!NnCCofjXXay++yu%= z(y}rcB_&*0Ik}X)yo843AbRlC^2dPqZxh)q`@;AVXzyVv zpVr#oU~%EL-P2Ff3l6M?paMp?MD`i(6@yH^(<$0*pZp2|`0Mq+Q78APzCJ}#+2rKp z5U`QZo8`%_vVkpZy}*;KqwQ)8v0R_6$Ssg{%n4QG468r)cMDRo+Zw#(B0k5oUVE|`;(%~oHWbWoFG2)ScZwtPb57fmGiWgMCkV!4 z&AWxuVOm}@LflmzZ<-b0lF+#W81BdJ)bFqK?Ec~PU+g7Z%po_w(4T@3OY5PuN807T z8r?Qx=dzgkUHb|KYwAs?I$$QY(qBbJWJO+0J_tDb_561z?tN&pcSyfZVScj&?INzf zli~3GC}amhaCLEbM?>=gBiZfOrz$^y5)t)+J zDWNIVlT}oq2wChhlQ1QH!`C?vN;X{z{+m!1AjBlqD&QryTk((A!Nv!FIWpF8kHkWL z{@VGB!mGM>v_=xq6qm6c^rC9^Gcq-{fL*tYGXJ;i<=etaNDtK9Pxt%I^6j}uT4p92 z47S*)@lp4ERTUXX-z)w6Sr%*(V2~jI@Lq7mg|hG(g@RRnw#Js^{9rK-#1y75O6)~D zm^`d*akp3^Osk@VbNQ^2=`^~XiMLDXIXbABytH-ABif2aVp{mP{Eq1<|$QOI;=|AjSp zl=#>kM*h z5su466MMdr>yY$|)xI9^OwCFE!{(+2fq~8nX6Sq9Xk7EEr-ac$%-*oRdNu)WL&0kl2B zAou)XGzn85sD41~ExvjdKZX|Uj1q^4E&|lHzqhv5)1RAnfkd{v=E}W22ZwOqE_?q2 z&F7}?6X)r^$VZQx!i_KVCMIGzIFh>4%V&<4K;WB+QMAI;R11_DF#YUwuKJ7yOc3Sz zaO1*J`S4K%^m6K?cs=La*BLqMHx6}~e{6}=$n?wf?Owlj-(kp@rGm%O zvu=B_({!H4_3A?Q>pXGQ$W9tikmg{PMc=&vjRb(V4cGO zYHMo?TU!}S>K(f39g#lA)x@bs zK;S33!+kKGHDq1mOFEn_0;e^Lw_uc5=8d!bxN)bNmd$+as|CR;DXiwm!-O0@CQ_R&CIbOUn z)aLgNZ5J07hIxl9B_bl4ZT93o`TJMEYtIm54zGdt=)0qt1uV z75BJ;)hAwAqjPRZyx`3Fv1{L4B7ps)M7es4%abZNZuze6Xboi=ot({FExH9ydf>j^ zTMX_qr2lCkO~V2qkwO)gFJ4kLaCgo2%x5L@ng0yE?@r)>h8bOlrOa3aGu~O;6aT}F z64DD3YDpeL?gt#n5Hd+IC?(zRU25~c8{)Jawj=-CNZ>~ud)+b-1-)`A6#xT`#}&o3 z{B2JeG=qG5uMj$TL40B^9-(l+RCluNmRWDk6+^8&oRqliYehKz?2|@L-~K{Vs^s~s z)ru&wecikr#=)F;52ug*wL_E2&Mg>0uAwsA&3cZ7*Z-*ndW!2T3UXr%yB5URe!Ry% zvi)dpwkq7D$&Ec_c!TrNBN=;pE>Qj4*$5zt41vDA8UJ&ZB^B7Lww0%6JT%80vx$}K z6^zLryPW?u2+~QAPr8dqwHCKFD=Sj+l)>mtCAso31x}9-`2Q+L!?mxb8bKR49tcRe zuo=#fDVYMFt0^4bV5oQJRrIuDlM+TT)Ne0Qs(Oz!vu(+1P;9<0-ThJ@@c)ded!Em} zFQ}I`T{!Df8!dk};7{~qG=BA;JA((fqHO`>vkZDK2S&H~Ule`#00H%$oxQzmK!D`t zNKQ1UKGq3jtZnK635T#lh4GINq4!trmsoP&UQSK$PUqJh!(V3U zxmWAiv`Jq;S5_7cXqmByiO~)Y4nheCYWy@qsqF6gV^`;S1~(OB#sho<8?6yQND*7gK#c7kL&RqidD=`aC|BT zaQg4*)hvIH<7*$l=p4RZ>ULGQnX zi(h6{t6XXwcz`}6tEl^?y3^*5%4d84q9=;zLs1bXBO@boL}6tmF-UY)R#laK`SM|Y z(B-SUak2EwksG{G*32!?{IipA&dnlSMiIw#tN!9%-A+pUdf;ga-X>azo@q~JP3gVt z%P~3!d;62@BO_hVi?BdRKt|c^%3#rwzW%0Rq2NH~$3`mCS0h3;emU@$N<3?ty7XP+mZL#rO|Qb+9*nXCcnkm@Vqcnho<8Uh>^y1cx|= zH!Wn1a*T=r;x55Xn5ORj#wVcBjCrI`xn5)~tf0jiv{ZXr&CnQ?Aj|pf)-;cbb+-3w zi)^rWD0T0TFOOe53Ib{XTEdRMgB%425UdAs(!4>t*0C<3ll=4nf1ec?6PL33V)}Qg znv2tCHs?`@r2zzqpApJe8M_R64pew3;02_1tHp*C@DM!ECFSjRaWLYDtS7qbp6Vf_ z{CJrPF7Z_ZbqUS+IggVrs6%sqPp3e27qUsdWvpkR7C(To{^-9wfhrb~##*MV>KRT= zA&c%gh>~|9szhlP!$SxV1_lPwSGN2#gnc71$U13or6st|bCe&$`tFnl9)&b`j95tf z|0iOQn1dxjm%|9y{K$H65$6V_>gtImSfeo0SI6XO{RM?kW z7hbe~FCD=8-P&qT1^z1z@Zr-Zzx7M-3UG}no@R-RwhToxtYXy;{=Yi_<)FhF%)=b= zOzdw>WrM{xcUK}HSiCcsHzP#~ox8sb%<@JwG*IBdW1_JC@*rs#bGF3UqP5nZ%Ko+e z58eAXBn;cX2(11SB(w1;y}YI-F;ECvZ6)X%_y?FziGcE^b7bUFi}-)(4~Uq;G&C}L zWx7=NI@2|K6L(VZ)%3j3oseV>jg%1g(`}t~4zo{d7gJ;K8ZQ1jk+y{!({YY>Viii~ zP*pmRNaX)3G>Ojij12L`SvLcyiTXQ1?9oyDg7owa5A=WO@FBt*v6vauE{~>(c^I`;#9_+r5au5uEq@<$uXx({B8Y`H_;6 zlGNnNlnTBHdU|OH6`5VQNs^6x{*&wA+l$$|4~>s3F$eyal@CMycj6z~m?%+?Ub|xe P03Rv}n(~#hh_L?yjzp4B From 55282f15d6af3c5279e1b6cba389c00aee18b421 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 12 Apr 2019 22:58:11 +0200 Subject: [PATCH 04/32] less puke related lag --- code/game/atoms.dm | 10 ++++++---- code/game/gamemodes/miniantags/borer/borer.dm | 6 ++---- code/game/machinery/computer/arcade.dm | 2 +- code/modules/mining/equipment_locker.dm | 3 +-- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/mob.dm | 5 ++--- code/modules/reagents/chemistry/reagents/food.dm | 6 ++---- 7 files changed, 15 insertions(+), 19 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 024b2a924cf..733d12dbf78 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -642,14 +642,16 @@ var/list/blood_splatter_icons = list() update_icons() //apply the now updated overlays to the mob -/atom/proc/add_vomit_floor(mob/living/carbon/M as mob, var/toxvomit = 0) - if( istype(src, /turf/simulated) ) - var/obj/effect/decal/cleanable/vomit/this = new /obj/effect/decal/cleanable/vomit(src) +/atom/proc/add_vomit_floor(toxvomit = 0, type = /obj/effect/decal/cleanable/vomit) + if(istype(src, /turf/simulated)) + if(locate(type) in get_turf(src)) + return //Performance improvement + var/obj/effect/decal/cleanable/vomit/this = new type(src) // Make toxins vomit look different if(toxvomit) this.icon_state = "vomittox_[pick(1,4)]" - + playsound(src, 'sound/effects/splat.ogg', 50, 1) /atom/proc/get_global_map_pos() if(!islist(global_map) || isemptylist(global_map)) return diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 34d1f64f0d0..3b97ecd5a62 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -760,10 +760,8 @@ to_chat(src, "Your host twitches and quivers as you rapdly excrete several larvae from your sluglike body.") visible_message("[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!") B.chemicals -= 100 - - new /obj/effect/decal/cleanable/vomit(get_turf(src)) - playsound(loc, 'sound/effects/splat.ogg', 50, 1) - new /mob/living/simple_animal/borer(get_turf(src),B.generation + 1) + var/turf/T = get_turf(src) + T.add_vomit_floor() else to_chat(src, "You need 100 chemicals to reproduce!") diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 6d360a2ddb3..54841a78a08 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -470,7 +470,7 @@ M.nutrition -= 50 //lose a lot of food var/turf/location = usr.loc if(istype(location, /turf/simulated)) - location.add_vomit_floor(src, 1) + location.add_vomit_floor(TRUE) if(ORION_TRAIL_FLUX) if(prob(75)) M.Weaken(3) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index b0eafcbc8bb..38d5436ecfb 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -701,8 +701,7 @@ H.nutrition -= 20 H.adjustToxLoss(-3) var/turf/T = get_turf(H) - T.add_vomit_floor(H) - playsound(H, 'sound/effects/splat.ogg', 50, 1) + T.add_vomit_floor() else visible_message("[src] flickers and fails, due to bluespace interference!") qdel(src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 0f1c5d91df1..9122647c201 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -109,7 +109,7 @@ adjustBruteLoss(3) else if(T) - T.add_vomit_floor(src) + T.add_vomit_floor() nutrition -= lost_nutrition if(stun) adjustToxLoss(-3) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ee04e624f02..15c88318d0a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1176,12 +1176,11 @@ var/list/slot_equipment_priority = list( \ if(green) if(!no_text) visible_message("[src] vomits up some green goo!","You vomit up some green goo!") - new /obj/effect/decal/cleanable/vomit/green(location) + location.add_vomit_floor(FALSE, /obj/effect/decal/cleanable/vomit/green) else if(!no_text) visible_message("[src] pukes all over [p_them()]self!","You puke all over yourself!") - location.add_vomit_floor(src, 1) - playsound(location, 'sound/effects/splat.ogg', 50, 1) + location.add_vomit_floor(TRUE) /mob/proc/AddSpell(obj/effect/proc_holder/spell/S) mob_spell_list += S diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index 9b1aca91f8d..fe2ea7a692e 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -905,8 +905,7 @@ /datum/reagent/vomit/reaction_turf(turf/T, volume) if(volume >= 5 && !isspaceturf(T)) - new /obj/effect/decal/cleanable/vomit(T) - playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) + T.add_vomit_floor() /datum/reagent/greenvomit name = "Green vomit" @@ -918,8 +917,7 @@ /datum/reagent/greenvomit/reaction_turf(turf/T, volume) if(volume >= 5 && !isspaceturf(T)) - new /obj/effect/decal/cleanable/vomit/green(T) - playsound(T, 'sound/effects/splat.ogg', 50, 1, -3) + T.add_vomit_floor(FALSE, /obj/effect/decal/cleanable/vomit/green) ////Lavaland Flora Reagents//// From e7bc1e8e7630ba8b7b893ddc40543490c4fb57ec Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 12 Apr 2019 22:58:44 +0200 Subject: [PATCH 05/32] gross spacing --- code/game/gamemodes/miniantags/borer/borer.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 3b97ecd5a62..1285b49c65a 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -762,6 +762,7 @@ B.chemicals -= 100 var/turf/T = get_turf(src) T.add_vomit_floor() + new /mob/living/simple_animal/borer(T, B.generation + 1) else to_chat(src, "You need 100 chemicals to reproduce!") From 824f26d0f45f1eeb86fc1d50c236ba715a89733b Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 12 Apr 2019 22:59:49 +0200 Subject: [PATCH 06/32] let me hear that puking though --- code/game/atoms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 733d12dbf78..2f4ca842ba1 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -644,6 +644,7 @@ var/list/blood_splatter_icons = list() /atom/proc/add_vomit_floor(toxvomit = 0, type = /obj/effect/decal/cleanable/vomit) if(istype(src, /turf/simulated)) + playsound(src, 'sound/effects/splat.ogg', 50, 1) if(locate(type) in get_turf(src)) return //Performance improvement var/obj/effect/decal/cleanable/vomit/this = new type(src) @@ -651,7 +652,6 @@ var/list/blood_splatter_icons = list() // Make toxins vomit look different if(toxvomit) this.icon_state = "vomittox_[pick(1,4)]" - playsound(src, 'sound/effects/splat.ogg', 50, 1) /atom/proc/get_global_map_pos() if(!islist(global_map) || isemptylist(global_map)) return From 244bdf131e535c585be5edad526315bdf1446da3 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 12 Apr 2019 23:00:25 +0200 Subject: [PATCH 07/32] also in space... --- code/game/atoms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 2f4ca842ba1..bc580e34716 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -643,8 +643,8 @@ var/list/blood_splatter_icons = list() /atom/proc/add_vomit_floor(toxvomit = 0, type = /obj/effect/decal/cleanable/vomit) + playsound(src, 'sound/effects/splat.ogg', 50, 1) if(istype(src, /turf/simulated)) - playsound(src, 'sound/effects/splat.ogg', 50, 1) if(locate(type) in get_turf(src)) return //Performance improvement var/obj/effect/decal/cleanable/vomit/this = new type(src) From 9166de2a3d2582dff4e59cae0aa22be5497aa4ec Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sat, 13 Apr 2019 10:56:30 +0200 Subject: [PATCH 08/32] puke update --- code/game/atoms.dm | 14 +++++++++++--- code/modules/mob/mob.dm | 2 +- code/modules/reagents/chemistry/reagents/food.dm | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index bc580e34716..afbb7f8f9c8 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -642,11 +642,19 @@ var/list/blood_splatter_icons = list() update_icons() //apply the now updated overlays to the mob -/atom/proc/add_vomit_floor(toxvomit = 0, type = /obj/effect/decal/cleanable/vomit) +/atom/proc/add_vomit_floor(toxvomit = 0, green = FALSE) playsound(src, 'sound/effects/splat.ogg', 50, 1) + var/type = green ? /obj/effect/decal/cleanable/vomit/green : /obj/effect/decal/cleanable/vomit + var/vomit_reagent = green ? "green_vomit" : "vomit" if(istype(src, /turf/simulated)) - if(locate(type) in get_turf(src)) - return //Performance improvement + for(var/obj/effect/decal/cleanable/vomit/V in get_turf(src)) + if(V.type == type) + if(V.scoop_reagents[vomit_reagent]) + V.scoop_reagents[vomit_reagent] += 5 + else + V.scoop_reagents[vomit_reagent] = 5 + return + var/obj/effect/decal/cleanable/vomit/this = new type(src) // Make toxins vomit look different diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 15c88318d0a..0398687d24d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1176,7 +1176,7 @@ var/list/slot_equipment_priority = list( \ if(green) if(!no_text) visible_message("[src] vomits up some green goo!","You vomit up some green goo!") - location.add_vomit_floor(FALSE, /obj/effect/decal/cleanable/vomit/green) + location.add_vomit_floor(FALSE, TRUE) else if(!no_text) visible_message("[src] pukes all over [p_them()]self!","You puke all over yourself!") diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index fe2ea7a692e..bf2417a192e 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -917,7 +917,7 @@ /datum/reagent/greenvomit/reaction_turf(turf/T, volume) if(volume >= 5 && !isspaceturf(T)) - T.add_vomit_floor(FALSE, /obj/effect/decal/cleanable/vomit/green) + T.add_vomit_floor(FALSE, TRUE) ////Lavaland Flora Reagents//// From c077d8051459b91a9a79ddb8facaa938caf40921 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sat, 13 Apr 2019 10:58:25 +0200 Subject: [PATCH 09/32] no puke in space alone --- code/game/atoms.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index afbb7f8f9c8..33109095096 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -644,9 +644,9 @@ var/list/blood_splatter_icons = list() /atom/proc/add_vomit_floor(toxvomit = 0, green = FALSE) playsound(src, 'sound/effects/splat.ogg', 50, 1) - var/type = green ? /obj/effect/decal/cleanable/vomit/green : /obj/effect/decal/cleanable/vomit - var/vomit_reagent = green ? "green_vomit" : "vomit" - if(istype(src, /turf/simulated)) + if(!isspaceturf(src)) + var/type = green ? /obj/effect/decal/cleanable/vomit/green : /obj/effect/decal/cleanable/vomit + var/vomit_reagent = green ? "green_vomit" : "vomit" for(var/obj/effect/decal/cleanable/vomit/V in get_turf(src)) if(V.type == type) if(V.scoop_reagents[vomit_reagent]) From 56176727dfece9749576d69050ff85a6bedf9b53 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Sat, 13 Apr 2019 12:56:05 +0200 Subject: [PATCH 10/32] Initial commit --- code/_onclick/hud/_defines.dm | 7 +++ code/_onclick/hud/ghost.dm | 84 ++++++++++++++++++++++++++++++++++ icons/mob/screen_ghost.dmi | Bin 0 -> 20940 bytes paradise.dme | 1 + 4 files changed, 92 insertions(+) create mode 100644 code/_onclick/hud/ghost.dm create mode 100644 icons/mob/screen_ghost.dmi diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 24a2442faeb..a9231c56581 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -154,6 +154,13 @@ #define ui_bot_radio "EAST-1:28,SOUTH:7" #define ui_bot_pull "EAST-2:26,SOUTH:7" +//Ghosts +#define ui_ghost_jumptomob "SOUTH:6,CENTER-2:24" +#define ui_ghost_orbit "SOUTH:6,CENTER-1:24" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24" +#define ui_ghost_teleport "SOUTH:6,CENTER+1:24" +#define ui_ghost_pai "SOUTH: 6, CENTER+2:24" + //HUD styles. Please ensure HUD_VERSIONS is the same as the maximum index. Index order defines how they are cycled in F12. #define HUD_STYLE_STANDARD 1 #define HUD_STYLE_REDUCED 2 diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm new file mode 100644 index 00000000000..d4923d1446f --- /dev/null +++ b/code/_onclick/hud/ghost.dm @@ -0,0 +1,84 @@ +/obj/screen/ghost + icon = 'icons/mob/screen_ghost.dmi' + +/obj/screen/ghost/MouseEntered() + flick(icon_state + "_anim", src) + +/obj/screen/ghost/jumptomob + name = "Jump to mob" + icon_state = "jumptomob" + +/obj/screen/ghost/jumptomob/Click() + var/mob/dead/observer/G = usr + G.jumptomob() + +/obj/screen/ghost/orbit + name = "Orbit" + icon_state = "orbit" + +/obj/screen/ghost/orbit/Click() + var/mob/dead/observer/G = usr + G.follow() + +/obj/screen/ghost/reenter_corpse + name = "Reenter corpse" + icon_state = "reenter_corpse" + +/obj/screen/ghost/reenter_corpse/Click() + var/mob/dead/observer/G = usr + G.reenter_corpse() + +/obj/screen/ghost/teleport + name = "Teleport" + icon_state = "teleport" + +/obj/screen/ghost/teleport/Click() + var/mob/dead/observer/G = usr + G.dead_tele() + +/obj/screen/ghost/pai + name = "pAI Candidate" + icon_state = "pai" + +///obj/screen/ghost/pai/Click() +// var/mob/dead/observer/G = usr + +/datum/hud/ghost/New(mob/owner, var/ui_style = 'icons/mob/screen_white.dmi') + ..() + var/obj/screen/using + + using = new /obj/screen/ghost/jumptomob() + using.screen_loc = ui_ghost_jumptomob + static_inventory += using + + using = new /obj/screen/ghost/orbit() + using.screen_loc = ui_ghost_orbit + static_inventory += using + + using = new /obj/screen/ghost/reenter_corpse() + using.screen_loc = ui_ghost_reenter_corpse + static_inventory += using + + using = new /obj/screen/ghost/teleport() + using.screen_loc = ui_ghost_teleport + static_inventory += using + + using = new /obj/screen/ghost/pai() + using.screen_loc = ui_ghost_pai + static_inventory += using + + using = new /obj/screen/language_menu + using.icon = ui_style + static_inventory += using + +/datum/hud/ghost/show_hud(version = 0, mob/viewmob) + // don't show this HUD if observing; show the HUD of the observee + var/mob/dead/observer/O = mymob + if (istype(O)) + return FALSE + + . = ..() + if(!.) + return + var/mob/screenmob = viewmob || mymob + screenmob.client.screen += static_inventory diff --git a/icons/mob/screen_ghost.dmi b/icons/mob/screen_ghost.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6519d00aa978e24b65fe47dc5cde86aa5b0d3780 GIT binary patch literal 20940 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 Date: Sat, 13 Apr 2019 22:56:09 +0200 Subject: [PATCH 11/32] Adds Ghost HUD and refactors some ghost verbs --- code/_onclick/hud/ghost.dm | 35 ++++------------------ code/modules/mob/dead/observer/observer.dm | 29 +++++++++++------- 2 files changed, 24 insertions(+), 40 deletions(-) diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index d4923d1446f..4e92395f4cc 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -1,3 +1,7 @@ +/mob/dead/observer/create_mob_hud() + if(client && !hud_used) + hud_used = new /datum/hud/ghost(src) + /obj/screen/ghost icon = 'icons/mob/screen_ghost.dmi' @@ -21,7 +25,7 @@ G.follow() /obj/screen/ghost/reenter_corpse - name = "Reenter corpse" + name = "Re-enter corpse" icon_state = "reenter_corpse" /obj/screen/ghost/reenter_corpse/Click() @@ -36,14 +40,7 @@ var/mob/dead/observer/G = usr G.dead_tele() -/obj/screen/ghost/pai - name = "pAI Candidate" - icon_state = "pai" - -///obj/screen/ghost/pai/Click() -// var/mob/dead/observer/G = usr - -/datum/hud/ghost/New(mob/owner, var/ui_style = 'icons/mob/screen_white.dmi') +/datum/hud/ghost/New(mob/owner) ..() var/obj/screen/using @@ -62,23 +59,3 @@ using = new /obj/screen/ghost/teleport() using.screen_loc = ui_ghost_teleport static_inventory += using - - using = new /obj/screen/ghost/pai() - using.screen_loc = ui_ghost_pai - static_inventory += using - - using = new /obj/screen/language_menu - using.icon = ui_style - static_inventory += using - -/datum/hud/ghost/show_hud(version = 0, mob/viewmob) - // don't show this HUD if observing; show the HUD of the observee - var/mob/dead/observer/O = mymob - if (istype(O)) - return FALSE - - . = ..() - if(!.) - return - var/mob/screenmob = viewmob || mymob - screenmob.client.screen += static_inventory diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index dfd4e1e3332..c4a1bb438ad 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -384,7 +384,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(usr, "AntagHud Toggled OFF") M.antagHUD = 0 -/mob/dead/observer/proc/dead_tele(A in ghostteleportlocs) +/mob/dead/observer/proc/dead_tele() set category = "Ghost" set name = "Teleport" set desc= "Teleport to a location" @@ -397,6 +397,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp spawn(30) usr.verbs += /mob/dead/observer/proc/dead_tele + var/area/A = input("Area to jump to", "BOOYEA") as null|anything in ghostteleportlocs var/area/thearea = ghostteleportlocs[A] if(!thearea) return @@ -410,13 +411,14 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp usr.forceMove(pick(L)) following = null -/mob/dead/observer/verb/follow(input in getmobs()) +/mob/dead/observer/verb/follow() set category = "Ghost" set name = "Orbit" // "Haunt" set desc = "Follow and orbit a mob." - var/target = getmobs()[input] - if(!target) return + var/list/mobs = getpois(skip_mindless=1) + var/input = input("Please, select a mob!", "Haunt", null, null) as null|anything in mobs + var/mob/target = mobs[input] ManualFollow(target) // This is the ghost's follow verb with an argument @@ -484,24 +486,29 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp update_following() return ..() -/mob/dead/observer/verb/jumptomob(target in getmobs()) //Moves the ghost instead of just changing the ghosts's eye -Nodrak +/mob/dead/observer/verb/jumptomob() //Moves the ghost instead of just changing the ghosts's eye -Nodrak set category = "Ghost" set name = "Jump to Mob" set desc = "Teleport to a mob" - if(istype(usr, /mob/dead/observer)) //Make sure they're an observer! + if(isobserver(usr)) //Make sure they're an observer! + var/list/dest = list() //List of possible destinations (mobs) + var/target = null //Chosen target. - if(!target)//Make sure we actually have a target + dest += getpois(mobs_only=1) //Fill list, prompt user with list + target = input("Please, select a mob!", "Jump to Mob", null, null) as null|anything in dest + + if (!target)//Make sure we actually have a target return else - var/mob/M = getmobs()[target] //Destination mob + var/mob/M = dest[target] //Destination mob + var/mob/A = src //Source mob var/turf/T = get_turf(M) //Turf of the destination mob if(T && isturf(T)) //Make sure the turf exists, then move the source to that destination. - forceMove(T) - following = null + A.forceMove(T) else - to_chat(src, "This mob is not located in the game world.") + to_chat(A, "This mob is not located in the game world.") /* Now a spell. See spells.dm From 424432d3c08465c0249b75efc1ffcd9968c2aaad Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Sat, 13 Apr 2019 23:15:45 +0200 Subject: [PATCH 12/32] Code improvement --- code/_onclick/hud/_defines.dm | 1 - code/modules/mob/dead/observer/observer.dm | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index a9231c56581..e3d423130e5 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -159,7 +159,6 @@ #define ui_ghost_orbit "SOUTH:6,CENTER-1:24" #define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24" #define ui_ghost_teleport "SOUTH:6,CENTER+1:24" -#define ui_ghost_pai "SOUTH: 6, CENTER+2:24" //HUD styles. Please ensure HUD_VERSIONS is the same as the maximum index. Index order defines how they are cycled in F12. #define HUD_STYLE_STANDARD 1 diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index c4a1bb438ad..573b675fd2a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -498,7 +498,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp dest += getpois(mobs_only=1) //Fill list, prompt user with list target = input("Please, select a mob!", "Jump to Mob", null, null) as null|anything in dest - if (!target)//Make sure we actually have a target + if (!target) //Make sure we actually have a target return else var/mob/M = dest[target] //Destination mob From 5ef674f4db8eea77318d6dff183bb05f2e0ca7e9 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Sat, 13 Apr 2019 23:20:58 +0200 Subject: [PATCH 13/32] Code improvement, for real this time --- code/modules/mob/dead/observer/observer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 573b675fd2a..8bb146aee08 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -498,7 +498,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp dest += getpois(mobs_only=1) //Fill list, prompt user with list target = input("Please, select a mob!", "Jump to Mob", null, null) as null|anything in dest - if (!target) //Make sure we actually have a target + if(!target) //Make sure we actually have a target return else var/mob/M = dest[target] //Destination mob From d102e7f80dc3565cb5f9600201fa5ca3a20c73c2 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sun, 14 Apr 2019 09:57:48 +0200 Subject: [PATCH 14/32] dm is smurt(ish) --- code/game/atoms.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 33109095096..afb0bfd064a 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -649,10 +649,7 @@ var/list/blood_splatter_icons = list() var/vomit_reagent = green ? "green_vomit" : "vomit" for(var/obj/effect/decal/cleanable/vomit/V in get_turf(src)) if(V.type == type) - if(V.scoop_reagents[vomit_reagent]) - V.scoop_reagents[vomit_reagent] += 5 - else - V.scoop_reagents[vomit_reagent] = 5 + V.scoop_reagents[vomit_reagent] += 5 return var/obj/effect/decal/cleanable/vomit/this = new type(src) From 3fba7c7aa7ddd97081bb022b5ad8d4b938fbb0ca Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Sun, 14 Apr 2019 18:02:13 +0200 Subject: [PATCH 15/32] add_reagent --- code/game/atoms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index afb0bfd064a..0a1aa19bcf7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -649,7 +649,7 @@ var/list/blood_splatter_icons = list() var/vomit_reagent = green ? "green_vomit" : "vomit" for(var/obj/effect/decal/cleanable/vomit/V in get_turf(src)) if(V.type == type) - V.scoop_reagents[vomit_reagent] += 5 + V.reagents.add_reagent(vomit_reagent, 5) return var/obj/effect/decal/cleanable/vomit/this = new type(src) From 89b0ffae6adf0499734c472fb1bbedc3d945c0fb Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 19 Apr 2019 14:31:46 +0200 Subject: [PATCH 16/32] Admins can now see the mhelp tickets --- code/controllers/subsystem/tickets/mentor_tickets.dm | 2 +- code/modules/admin/admin_verbs.dm | 6 ++++-- code/modules/admin/tickets/mentorticketsverbs.dm | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/tickets/mentor_tickets.dm b/code/controllers/subsystem/tickets/mentor_tickets.dm index 708bc682634..32f7faf4abb 100644 --- a/code/controllers/subsystem/tickets/mentor_tickets.dm +++ b/code/controllers/subsystem/tickets/mentor_tickets.dm @@ -9,7 +9,7 @@ GLOBAL_REAL(SSmentor_tickets, /datum/controller/subsystem/tickets/mentor_tickets ticket_system_name = "Mentor Tickets" ticket_name = "Mentor Ticket" span_text = "" - close_rights = R_MENTOR + close_rights = R_MENTOR | R_ADMIN /datum/controller/subsystem/tickets/mentor_tickets/message_staff(var/msg) message_mentorTicket(msg) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 08ef6797811..407da9980e5 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -224,6 +224,8 @@ var/list/admin_verbs_snpc = list( var/list/admin_verbs_ticket = list( /client/proc/openAdminTicketUI, /client/proc/toggleticketlogs, + /client/proc/openMentorTicketUI, + /client/proc/toggleMentorTicketLogs, /client/proc/resolveAllAdminTickets, /client/proc/resolveAllMentorTickets ) @@ -944,10 +946,10 @@ var/list/admin_verbs_ticket = list( to_chat(usr, "You now will get admin log messages.") /client/proc/toggleMentorTicketLogs() - set name = "Toggle Mentor Ticket Messgaes" + set name = "Toggle Mentor Ticket Messages" set category = "Preferences" - if(!check_rights(R_MENTOR)) + if(!check_rights(R_MENTOR|R_ADMIN)) return prefs.toggles ^= CHAT_NO_MENTORTICKETLOGS diff --git a/code/modules/admin/tickets/mentorticketsverbs.dm b/code/modules/admin/tickets/mentorticketsverbs.dm index 765a1afb9da..1122b770107 100644 --- a/code/modules/admin/tickets/mentorticketsverbs.dm +++ b/code/modules/admin/tickets/mentorticketsverbs.dm @@ -5,7 +5,7 @@ set name = "Open Mentor Ticket Interface" set category = "Admin" - if(!holder || !check_rights(R_MENTOR)) + if(!holder || !check_rights(R_MENTOR|R_ADMIN)) return SSmentor_tickets.showUI(usr) From 2f0d30e821ced7cf215132b1a55e40f652c5eee7 Mon Sep 17 00:00:00 2001 From: joep van der velden Date: Fri, 19 Apr 2019 14:36:43 +0200 Subject: [PATCH 17/32] Vampire glare is logged now --- code/game/gamemodes/vampire/vampire_powers.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index f78520ac7eb..5e7b8f9a237 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -226,6 +226,7 @@ target.Weaken(5) target.stuttering = 20 to_chat(target, "You are blinded by [user]'s glare.") + add_attack_logs(user, target, "(Vampire) Glared at") /obj/effect/proc_holder/spell/vampire/self/shapeshift name = "Shapeshift (50)" From b0182639b2a9c1e223bead03c09192a651300198 Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Fri, 19 Apr 2019 16:54:59 +0200 Subject: [PATCH 18/32] Adds an option to grant Martial Arts via Var menu --- code/datums/datumvars.dm | 27 +++++++++++++++++++++++++++ code/modules/mob/mob.dm | 1 + 2 files changed, 28 insertions(+) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 674557bc839..87bb1df7cb0 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -621,6 +621,33 @@ src.give_spell(M) href_list["datumrefresh"] = href_list["give_spell"] + else if(href_list["givemartialart"]) + if(!check_rights(R_SERVER|R_EVENT)) return + + var/mob/living/carbon/C = locateUID(href_list["givemartialart"]) + if(!istype(C)) + to_chat(usr, "This can only be done to instances of type /mob/living/carbon") + return + + var/list/artpaths = subtypesof(/datum/martial_art) + var/list/artnames = list() + for(var/i in artpaths) + var/datum/martial_art/M = i + artnames[initial(M.name)] = M + + var/result = input(usr, "Choose the martial art to teach","JUDO CHOP") as null|anything in artnames + if(!usr) + return + if(QDELETED(C)) + to_chat(usr, "Mob doesn't exist anymore") + return + + if(result) + var/chosenart = artnames[result] + var/datum/martial_art/MA = new chosenart + MA.teach(C) + + href_list["datumrefresh"] = href_list["givemartialart"] else if(href_list["give_disease"]) if(!check_rights(R_SERVER|R_EVENT)) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ee04e624f02..c6079abba78 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1299,6 +1299,7 @@ var/list/slot_equipment_priority = list( \ .["Show player panel"] = "?_src_=vars;mob_player_panel=[UID()]" .["Give Spell"] = "?_src_=vars;give_spell=[UID()]" + .["Give Martial Art"] = "?_src_=vars;givemartialart=[UID()]" .["Give Disease"] = "?_src_=vars;give_disease=[UID()]" .["Toggle Godmode"] = "?_src_=vars;godmode=[UID()]" .["Toggle Build Mode"] = "?_src_=vars;build_mode=[UID()]" From cb8e49274666f0f5303510b10c544750f54df6ce Mon Sep 17 00:00:00 2001 From: Arkatos1 Date: Fri, 19 Apr 2019 17:41:25 +0200 Subject: [PATCH 19/32] Code improvement --- code/datums/datumvars.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 87bb1df7cb0..6fdb8a359c2 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -635,7 +635,7 @@ var/datum/martial_art/M = i artnames[initial(M.name)] = M - var/result = input(usr, "Choose the martial art to teach","JUDO CHOP") as null|anything in artnames + var/result = input(usr, "Choose the martial art to teach", "JUDO CHOP") as null|anything in artnames if(!usr) return if(QDELETED(C)) From 1b9fe80d4fde232fbf6e9e79b8ac0f25f6f9c940 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 22 Apr 2019 07:03:55 -0700 Subject: [PATCH 20/32] Fixes/refactors unspawnable ERT alert --- code/modules/response_team/ert.dm | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/code/modules/response_team/ert.dm b/code/modules/response_team/ert.dm index 8cb29ecf3b4..0bac5824780 100644 --- a/code/modules/response_team/ert.dm +++ b/code/modules/response_team/ert.dm @@ -90,22 +90,13 @@ var/ert_request_answered = FALSE return 0 var/index = 1 - var/ert_spawn_seconds = 120 - spawn(ert_spawn_seconds * 10) // to account for spawn() using deciseconds - var/list/unspawnable_ert = list() - for(var/mob/M in response_team_members) - if(M) - unspawnable_ert |= M - if(unspawnable_ert.len) - message_admins("ERT SPAWN: The following ERT members could not be spawned within [ert_spawn_seconds] seconds:") - for(var/mob/M in unspawnable_ert) - message_admins("- Unspawned ERT: [ADMIN_FULLMONTY(M)]") for(var/mob/M in response_team_members) if(index > emergencyresponseteamspawn.len) index = 1 if(!M || !M.client) continue + log_debug("Spawning as ERT: [M.ckey] ([M])") var/client/C = M.client var/mob/living/new_commando = C.create_response_team(emergencyresponseteamspawn[index]) if(!M || !new_commando) From e1fe8b3196d44b92491cdf2c06232b28d3e46c6b Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 22 Apr 2019 07:35:58 -0700 Subject: [PATCH 21/32] Fixes href warning --- code/modules/mob/living/silicon/pai/recruit.dm | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/silicon/pai/recruit.dm b/code/modules/mob/living/silicon/pai/recruit.dm index fec27db5df8..989dcba3783 100644 --- a/code/modules/mob/living/silicon/pai/recruit.dm +++ b/code/modules/mob/living/silicon/pai/recruit.dm @@ -57,12 +57,6 @@ var/datum/paiController/paiController // Global handler for pAI candidates usr << browse(null, "window=findPai") - if(candidate) - if(candidate.key && usr.key && candidate.key != usr.key) - message_admins("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)") - log_debug("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)") - return - if("signup" in href_list) var/mob/dead/observer/O = locate(href_list["signup"]) if(!O) @@ -75,6 +69,11 @@ var/datum/paiController/paiController // Global handler for pAI candidates recruitWindow(O) return + if(candidate) + if(candidate.key && usr.key && candidate.key != usr.key) + message_admins("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)") + log_debug("Warning: possible href exploit by [key_name(usr)] (paiController/Topic, candidate and usr are different mobs)") + return if(href_list["new"]) var/option = href_list["option"] From 563a951975016d759adb879de00ecf1bfd11a797 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Tue, 23 Apr 2019 10:55:36 +0100 Subject: [PATCH 22/32] SSevents & SSholiday --- code/__DEFINES/subsystems.dm | 1 + code/__HELPERS/names.dm | 4 +- code/_globalvars/misc.dm | 2 - code/controllers/Processes/event.dm | 15 -- .../subsystem/events.dm} | 161 +++--------------- code/controllers/subsystem/holiday.dm | 31 ++++ code/controllers/verbs.dm | 2 +- code/game/gamemodes/gameticker.dm | 8 +- code/modules/events/event.dm | 6 +- code/modules/events/event_procs.dm | 120 +++++++++++++ code/modules/events/false_alarm.dm | 2 +- code/modules/holiday/holiday.dm | 6 +- code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paperbin.dm | 2 +- code/modules/station_goals/shield.dm | 2 +- paradise.dme | 5 +- 16 files changed, 196 insertions(+), 173 deletions(-) rename code/{modules/events/event_manager.dm => controllers/subsystem/events.dm} (73%) create mode 100644 code/controllers/subsystem/holiday.dm create mode 100644 code/modules/events/event_procs.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 5ade3b0baef..515186642fe 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -61,6 +61,7 @@ #define INIT_ORDER_LANGUAGE 6 #define INIT_ORDER_MACHINES 5 #define INIT_ORDER_CIRCUIT 4 +#define INIT_ORDER_HOLIDAY 3 #define INIT_ORDER_TIMER 1 #define INIT_ORDER_DEFAULT 0 #define INIT_ORDER_AIR -1 diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index 930a8ee9de5..5b90cda376e 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -49,10 +49,10 @@ var/religion_name = null name = "" // Prefix - for(var/holiday_name in holiday_master.holidays) + for(var/holiday_name in SSholiday.holidays) if(holiday_name == "Friday the 13th") random = 13 - var/datum/holiday/holiday = holiday_master.holidays[holiday_name] + var/datum/holiday/holiday = SSholiday.holidays[holiday_name] name = holiday.getStationPrefix() //get normal name if(!name) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index f0bb813a336..0b8c8d58a95 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -1,8 +1,6 @@ var/global/obj/effect/overlay/plmaster = null var/global/obj/effect/overlay/slmaster = null -// Event Manager, the manager for events. -var/datum/event_manager/event_manager = new() // Announcer intercom, because too much stuff creates an intercom for one message then hard del()s it. var/global/obj/item/radio/intercom/global_announcer = create_global_announcer() var/global/obj/item/radio/intercom/command/command_announcer = create_command_announcer() diff --git a/code/controllers/Processes/event.dm b/code/controllers/Processes/event.dm index 42e8c4bcc1d..ee3e1310f1c 100644 --- a/code/controllers/Processes/event.dm +++ b/code/controllers/Processes/event.dm @@ -1,18 +1,3 @@ -/datum/controller/process/event/setup() - name = "event" - schedule_interval = 20 // every 2 seconds - if(!holiday_master) - holiday_master = new - holiday_master.Setup() - -/datum/controller/process/event/doWork() - event_manager.process() - holiday_master.process() - -///////// -//Holiday controller -///////// - var/global/datum/controller/holiday/holiday_master //This has to be defined before world. /datum/controller/holiday diff --git a/code/modules/events/event_manager.dm b/code/controllers/subsystem/events.dm similarity index 73% rename from code/modules/events/event_manager.dm rename to code/controllers/subsystem/events.dm index 1545ddbbdf0..7d0b20b129d 100644 --- a/code/modules/events/event_manager.dm +++ b/code/controllers/subsystem/events.dm @@ -1,19 +1,25 @@ -/datum/event_manager +SUBSYSTEM_DEF(events) + name = "Events" + init_order = INIT_ORDER_EVENTS + runlevels = RUNLEVEL_GAME + // Report events at the end of the rouund + var/report_at_round_end = 0 + + // UI vars var/window_x = 700 var/window_y = 600 - var/report_at_round_end = 0 var/table_options = " align='center'" var/head_options = " style='font-weight:bold;'" var/row_options1 = " width='85px'" var/row_options2 = " width='260px'" var/row_options3 = " width='150px'" + + // Event vars var/datum/event_container/selected_event_container = null - - var/list/datum/event/active_events = list() - var/list/datum/event/finished_events = list() - - var/list/datum/event/allEvents - var/list/datum/event_container/event_containers = list( + var/list/active_events = list() + var/list/finished_events = list() + var/list/allEvents + var/list/event_containers = list( EVENT_LEVEL_MUNDANE = new/datum/event_container/mundane, EVENT_LEVEL_MODERATE = new/datum/event_container/moderate, EVENT_LEVEL_MAJOR = new/datum/event_container/major @@ -21,18 +27,19 @@ var/datum/event_meta/new_event = new -/datum/event_manager/New() +/datum/controller/subsystem/events/Initialize() allEvents = subtypesof(/datum/event) + ..() -/datum/event_manager/proc/process() - for(var/datum/event/E in event_manager.active_events) +/datum/controller/subsystem/events/fire() + for(var/datum/event/E in active_events) E.process() for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR) var/list/datum/event_container/EC = event_containers[i] EC.process() -/datum/event_manager/proc/event_complete(var/datum/event/E) +/datum/controller/subsystem/events/proc/event_complete(var/datum/event/E) if(!E.event_meta) // datum/event is used here and there for random reasons, maintaining "backwards compatibility" log_debug("Event of '[E.type]' with missing meta-data has completed.") return @@ -57,11 +64,11 @@ log_debug("Event '[EM.name]' has completed at [station_time_timestamp()].") -/datum/event_manager/proc/delay_events(var/severity, var/delay) +/datum/controller/subsystem/events/proc/delay_events(var/severity, var/delay) var/list/datum/event_container/EC = event_containers[severity] EC.next_event_time += delay -/datum/event_manager/proc/Interact(var/mob/living/user) +/datum/controller/subsystem/events/proc/Interact(var/mob/living/user) var/html = GetInteractWindow() @@ -69,7 +76,7 @@ popup.set_content(html) popup.open() -/datum/event_manager/proc/RoundEnd() +/datum/controller/subsystem/events/proc/RoundEnd() if(!report_at_round_end) return @@ -89,7 +96,7 @@ to_chat(world, message) -/datum/event_manager/proc/GetInteractWindow() +/datum/controller/subsystem/events/proc/GetInteractWindow() var/html = "Refresh" if(selected_event_container) @@ -197,7 +204,7 @@ return html -/datum/event_manager/Topic(href, href_list) +/datum/controller/subsystem/events/Topic(href, href_list) if(..()) return @@ -290,123 +297,3 @@ EC.next_event = null Interact(usr) - -/client/proc/forceEvent(var/type in event_manager.allEvents) - set name = "Trigger Event (Debug Only)" - set category = "Debug" - - if(!holder) - return - - if(ispath(type)) - new type(new /datum/event_meta(EVENT_LEVEL_MAJOR)) - message_admins("[key_name_admin(usr)] has triggered an event. ([type])", 1) - -/client/proc/event_manager_panel() - set name = "Event Manager Panel" - set category = "Event" - if(event_manager) - event_manager.Interact(usr) - feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - return - -/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! - var/area/candidate = null - - var/list/safe_areas = list( - /area/turret_protected/ai, - /area/turret_protected/ai_upload, - /area/engine, - /area/solar, - /area/holodeck, - /area/shuttle/arrival, - /area/shuttle/escape, - /area/shuttle/escape_pod1/station, - /area/shuttle/escape_pod2/station, - /area/shuttle/escape_pod3/station, - /area/shuttle/escape_pod5/station, - /area/shuttle/specops/station, - /area/shuttle/prison/station, - /area/shuttle/administration/station - ) - - //These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up. - var/list/danger_areas = list( - /area/engine/break_room, - /area/engine/chiefs_office) - - var/list/event_areas = list() - - for(var/areapath in the_station_areas) - event_areas += typesof(areapath) - for(var/areapath in safe_areas) - event_areas -= typesof(areapath) - for(var/areapath in danger_areas) - event_areas += typesof(areapath) - - while(event_areas.len > 0) - var/list/event_turfs = null - candidate = locate(pick_n_take(event_areas)) - event_turfs = get_area_turfs(candidate) - if(event_turfs.len > 0) - break - - return candidate - -/datum/event/proc/num_players() - var/players = 0 - for(var/mob/living/carbon/human/P in GLOB.player_list) - if(P.client) - players++ - return players - -// Returns how many characters are currently active(not logged out, not AFK for more than 10 minutes) -// with a specific role. -// Note that this isn't sorted by department, because e.g. having a roboticist shouldn't make meteors spawn. -/proc/number_active_with_role() - var/list/active_with_role = list() - active_with_role["Engineer"] = 0 - active_with_role["Medical"] = 0 - active_with_role["Security"] = 0 - active_with_role["Scientist"] = 0 - active_with_role["AI"] = 0 - active_with_role["Cyborg"] = 0 - active_with_role["Janitor"] = 0 - active_with_role["Botanist"] = 0 - active_with_role["Any"] = GLOB.player_list.len - - for(var/mob/M in GLOB.player_list) - if(!M.mind || !M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive - continue - - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module") - active_with_role["Engineer"]++ - if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer")) - active_with_role["Engineer"]++ - - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module") - active_with_role["Medical"]++ - if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor")) - active_with_role["Medical"]++ - - if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module") - active_with_role["Security"]++ - if(M.mind.assigned_role in security_positions) - active_with_role["Security"]++ - - if(M.mind.assigned_role in list("Research Director", "Scientist")) - active_with_role["Scientist"]++ - - if(M.mind.assigned_role == "AI") - active_with_role["AI"]++ - - if(M.mind.assigned_role == "Cyborg") - active_with_role["Cyborg"]++ - - if(M.mind.assigned_role == "Janitor") - active_with_role["Janitor"]++ - - if(M.mind.assigned_role == "Botanist") - active_with_role["Botanist"]++ - - return active_with_role diff --git a/code/controllers/subsystem/holiday.dm b/code/controllers/subsystem/holiday.dm new file mode 100644 index 00000000000..a5eb957a80f --- /dev/null +++ b/code/controllers/subsystem/holiday.dm @@ -0,0 +1,31 @@ +SUBSYSTEM_DEF(holiday) + name = "Holiday" + init_order = INIT_ORDER_HOLIDAY // 3 + flags = SS_NO_FIRE + var/list/holidays + +/datum/controller/subsystem/holiday/Initialize(start_timeofday) + if(!config.allow_holidays) + return ..() //Holiday stuff was not enabled in the config! + + var/YY = text2num(time2text(world.timeofday, "YY")) // get the current year + var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month + var/DD = text2num(time2text(world.timeofday, "DD")) // get the current day + + for(var/H in subtypesof(/datum/holiday)) + var/datum/holiday/holiday = new H() + if(holiday.shouldCelebrate(DD, MM, YY)) + holiday.celebrate() + if(!holidays) + holidays = list() + holidays[holiday.name] = holiday + + if(holidays) + holidays = shuffle(holidays) + world.update_status() + for(var/datum/holiday/H in holidays) + if(H.eventChance) + if(prob(H.eventChance)) + H.handle_event() + + ..() \ No newline at end of file diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 6d077ee5173..525d00399fa 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -60,7 +60,7 @@ debug_variables(cameranet) feedback_add_details("admin_verb","DCameras") if("Event") - debug_variables(event_manager) + debug_variables(SSevents) feedback_add_details("admin_verb","DEvent") if("Alarm") debug_variables(alarm_manager) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index c2268063822..a68f2db4e53 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -172,10 +172,10 @@ var/round_start_time = 0 to_chat(world, "Enjoy the game!") world << sound('sound/AI/welcome.ogg')// Skie - if(holiday_master.holidays) + if(SSholiday.holidays) to_chat(world, "and...") - for(var/holidayname in holiday_master.holidays) - var/datum/holiday/holiday = holiday_master.holidays[holidayname] + for(var/holidayname in SSholiday.holidays) + var/datum/holiday/holiday = SSholiday.holidays[holidayname] to_chat(world, "

[holiday.greet()]

") spawn(0) // Forking dynamic room selection @@ -506,7 +506,7 @@ var/round_start_time = 0 mode.declare_station_goal_completion() //Ask the event manager to print round end information - event_manager.RoundEnd() + SSevents.RoundEnd() return 1 diff --git a/code/modules/events/event.dm b/code/modules/events/event.dm index 0f5c43059e8..a5e07840d34 100644 --- a/code/modules/events/event.dm +++ b/code/modules/events/event.dm @@ -137,12 +137,12 @@ end() endedAt = world.time - event_manager.active_events -= src - event_manager.event_complete(src) + SSevents.active_events -= src + SSevents.event_complete(src) /datum/event/New(var/datum/event_meta/EM) // event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons - event_manager.active_events += src + SSevents.active_events += src if(!EM) EM = new /datum/event_meta(EVENT_LEVEL_MAJOR, "Unknown, Most likely admin called", src.type) diff --git a/code/modules/events/event_procs.dm b/code/modules/events/event_procs.dm new file mode 100644 index 00000000000..02ae1454597 --- /dev/null +++ b/code/modules/events/event_procs.dm @@ -0,0 +1,120 @@ + +/client/proc/forceEvent(var/type in SSevents.allEvents) + set name = "Trigger Event (Debug Only)" + set category = "Debug" + + if(!holder) + return + + if(ispath(type)) + new type(new /datum/event_meta(EVENT_LEVEL_MAJOR)) + message_admins("[key_name_admin(usr)] has triggered an event. ([type])", 1) + +/client/proc/event_manager_panel() + set name = "Event Manager Panel" + set category = "Event" + if(SSevents) + SSevents.Interact(usr) + feedback_add_details("admin_verb","EMP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + return + +/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! + var/area/candidate = null + + var/list/safe_areas = list( + /area/turret_protected/ai, + /area/turret_protected/ai_upload, + /area/engine, + /area/solar, + /area/holodeck, + /area/shuttle/arrival, + /area/shuttle/escape, + /area/shuttle/escape_pod1/station, + /area/shuttle/escape_pod2/station, + /area/shuttle/escape_pod3/station, + /area/shuttle/escape_pod5/station, + /area/shuttle/specops/station, + /area/shuttle/prison/station, + /area/shuttle/administration/station + ) + + //These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up. + var/list/danger_areas = list( + /area/engine/break_room, + /area/engine/chiefs_office) + + var/list/event_areas = list() + + for(var/areapath in the_station_areas) + event_areas += typesof(areapath) + for(var/areapath in safe_areas) + event_areas -= typesof(areapath) + for(var/areapath in danger_areas) + event_areas += typesof(areapath) + + while(event_areas.len > 0) + var/list/event_turfs = null + candidate = locate(pick_n_take(event_areas)) + event_turfs = get_area_turfs(candidate) + if(event_turfs.len > 0) + break + + return candidate + +// Returns how many characters are currently active(not logged out, not AFK for more than 10 minutes) +// with a specific role. +// Note that this isn't sorted by department, because e.g. having a roboticist shouldn't make meteors spawn. +/proc/number_active_with_role() + var/list/active_with_role = list() + active_with_role["Engineer"] = 0 + active_with_role["Medical"] = 0 + active_with_role["Security"] = 0 + active_with_role["Scientist"] = 0 + active_with_role["AI"] = 0 + active_with_role["Cyborg"] = 0 + active_with_role["Janitor"] = 0 + active_with_role["Botanist"] = 0 + active_with_role["Any"] = GLOB.player_list.len + + for(var/mob/M in GLOB.player_list) + if(!M.mind || !M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive + continue + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module") + active_with_role["Engineer"]++ + if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer")) + active_with_role["Engineer"]++ + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module") + active_with_role["Medical"]++ + if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor")) + active_with_role["Medical"]++ + + if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module") + active_with_role["Security"]++ + if(M.mind.assigned_role in security_positions) + active_with_role["Security"]++ + + if(M.mind.assigned_role in list("Research Director", "Scientist")) + active_with_role["Scientist"]++ + + if(M.mind.assigned_role == "AI") + active_with_role["AI"]++ + + if(M.mind.assigned_role == "Cyborg") + active_with_role["Cyborg"]++ + + if(M.mind.assigned_role == "Janitor") + active_with_role["Janitor"]++ + + if(M.mind.assigned_role == "Botanist") + active_with_role["Botanist"]++ + + return active_with_role + +/datum/event/proc/num_players() + var/players = 0 + for(var/mob/living/carbon/human/P in GLOB.player_list) + if(P.client) + players++ + return players diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index e63805d6a1d..a0aa17596fd 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -4,7 +4,7 @@ /datum/event/falsealarm/announce() var/weight = pickweight(list(EVENT_LEVEL_MUNDANE = 60, EVENT_LEVEL_MODERATE = 30, EVENT_LEVEL_MAJOR = 10)) - var/datum/event_container/container = event_manager.event_containers[weight] + var/datum/event_container/container = SSevents.event_containers[weight] var/datum/event/E = container.acquire_event() var/datum/event/Event = new E message_admins("False Alarm: [Event]") diff --git a/code/modules/holiday/holiday.dm b/code/modules/holiday/holiday.dm index 414df7f7589..f87422e2ad1 100644 --- a/code/modules/holiday/holiday.dm +++ b/code/modules/holiday/holiday.dm @@ -345,9 +345,9 @@ if(!istype(H)) return H.celebrate() - if(!holiday_master.holidays) - holiday_master.holidays = list() - holiday_master.holidays[H.name] = H + if(!SSholiday.holidays) + SSholiday.holidays = list() + SSholiday.holidays[H.name] = H //update our hub status world.update_status() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index d5ca6b0b0f8..528864b18a6 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -108,7 +108,7 @@ /obj/item/paper/attack_self(mob/living/user as mob) user.examinate(src) - if(rigged && (holiday_master.holidays && holiday_master.holidays[APRIL_FOOLS])) + if(rigged && (SSholiday.holidays && SSholiday.holidays[APRIL_FOOLS])) if(spam_flag == 0) spam_flag = 1 playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index e8643c97cff..c9169a09757 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -72,7 +72,7 @@ papers.Remove(P) else P = new /obj/item/paper - if(holiday_master.holidays && holiday_master.holidays[APRIL_FOOLS]) + if(SSholiday.holidays && SSholiday.holidays[APRIL_FOOLS]) if(prob(30)) P.info = "HONK HONK HONK HONK HONK HONK HONK
HOOOOOOOOOOOOOOOOOOOOOONK
APRIL FOOLS
" P.rigged = 1 diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index a4444938d96..09ccb3ce36b 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -175,7 +175,7 @@ change_meteor_chance(0.5) /obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod) - for(var/datum/event_container/container in event_manager.event_containers) + for(var/datum/event_container/container in SSevents.event_containers) for(var/datum/event_meta/M in container.available_events) if(M.event_type == /datum/event/meteor_wave) M.weight *= mod diff --git a/paradise.dme b/paradise.dme index e478048e4d8..a3e0c872707 100644 --- a/paradise.dme +++ b/paradise.dme @@ -198,7 +198,6 @@ #include "code\controllers\subsystem.dm" #include "code\controllers\verbs.dm" #include "code\controllers\Processes\alarm.dm" -#include "code\controllers\Processes\event.dm" #include "code\controllers\Processes\fast_process.dm" #include "code\controllers\Processes\lighting.dm" #include "code\controllers\Processes\npcai.dm" @@ -209,8 +208,10 @@ #include "code\controllers\subsystem\air.dm" #include "code\controllers\subsystem\assets.dm" #include "code\controllers\subsystem\atoms.dm" +#include "code\controllers\subsystem\events.dm" #include "code\controllers\subsystem\fires.dm" #include "code\controllers\subsystem\garbage.dm" +#include "code\controllers\subsystem\holiday.dm" #include "code\controllers\subsystem\icon_smooth.dm" #include "code\controllers\subsystem\jobs.dm" #include "code\controllers\subsystem\machinery.dm" @@ -1418,7 +1419,7 @@ #include "code\modules\events\electrical_storm.dm" #include "code\modules\events\event.dm" #include "code\modules\events\event_container.dm" -#include "code\modules\events\event_manager.dm" +#include "code\modules\events\event_procs.dm" #include "code\modules\events\false_alarm.dm" #include "code\modules\events\floorcluwne.dm" #include "code\modules\events\grid_check.dm" From fb40516301091ef4d4e2399dae765f8c4a337f54 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 06:52:04 -0400 Subject: [PATCH 23/32] Automatic changelog generation for PR #11278 [ci skip] --- html/changelogs/AutoChangeLog-pr-11278.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11278.yml diff --git a/html/changelogs/AutoChangeLog-pr-11278.yml b/html/changelogs/AutoChangeLog-pr-11278.yml new file mode 100644 index 00000000000..24f9c3ab4cc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11278.yml @@ -0,0 +1,4 @@ +author: "Arkatos" +delete-after: True +changes: + - rscadd: "Added new Wizard Spell - Summon Ghosts! This nefarious spell will make all ghosts visible to the living. Be careful though, as while they cannot harm you in any way, they might prove a bit.. annoying. Costs 0 points in the Wizard's spellbook." From 2aa1805d7c1b2275859bf4b3c67b0b6bece781ab Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 07:44:28 -0400 Subject: [PATCH 24/32] Automatic changelog generation for PR #11283 [ci skip] --- html/changelogs/AutoChangeLog-pr-11283.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11283.yml diff --git a/html/changelogs/AutoChangeLog-pr-11283.yml b/html/changelogs/AutoChangeLog-pr-11283.yml new file mode 100644 index 00000000000..9056578d68b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11283.yml @@ -0,0 +1,4 @@ +author: "Fox McCloud" +delete-after: True +changes: + - bugfix: "Fixes a few potential exploits with forcing chem, dust, and explosive implants activating with the deathgasp emote, prior to death" From 36045ecfc8f2eebe971137bc881cba180bc78fc6 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 07:45:04 -0400 Subject: [PATCH 25/32] Automatic changelog generation for PR #11292 [ci skip] --- html/changelogs/AutoChangeLog-pr-11292.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11292.yml diff --git a/html/changelogs/AutoChangeLog-pr-11292.yml b/html/changelogs/AutoChangeLog-pr-11292.yml new file mode 100644 index 00000000000..814c8530858 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11292.yml @@ -0,0 +1,5 @@ +author: "farie82" +delete-after: True +changes: + - tweak: "Makes puke less lag inducing" + - tweak: "Puke can now appear on all kinds of turfs except spess" From 649396e47d930a39261c1eafd888f7d8e0af2eeb Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 08:42:12 -0400 Subject: [PATCH 26/32] Automatic changelog generation for PR #11355 [ci skip] --- html/changelogs/AutoChangeLog-pr-11355.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11355.yml diff --git a/html/changelogs/AutoChangeLog-pr-11355.yml b/html/changelogs/AutoChangeLog-pr-11355.yml new file mode 100644 index 00000000000..934e85808ba --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11355.yml @@ -0,0 +1,4 @@ +author: "Kyep" +delete-after: True +changes: + - bugfix: "Fixed an error message being inappropriately generated for admins when someone signs up as a pAI." From 7489cc51c3dd4c9169e3e38806c27be1a238e47a Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 08:46:11 -0400 Subject: [PATCH 27/32] Automatic changelog generation for PR #11329 [ci skip] --- html/changelogs/AutoChangeLog-pr-11329.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11329.yml diff --git a/html/changelogs/AutoChangeLog-pr-11329.yml b/html/changelogs/AutoChangeLog-pr-11329.yml new file mode 100644 index 00000000000..e25e56b8828 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11329.yml @@ -0,0 +1,4 @@ +author: "farie82" +delete-after: True +changes: + - bugfix: "Vampiric glaring is logged now" From ecce2b62fc0eec50d3f4b66a97ee457b4df5424e Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 08:46:36 -0400 Subject: [PATCH 28/32] Automatic changelog generation for PR #11328 [ci skip] --- html/changelogs/AutoChangeLog-pr-11328.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11328.yml diff --git a/html/changelogs/AutoChangeLog-pr-11328.yml b/html/changelogs/AutoChangeLog-pr-11328.yml new file mode 100644 index 00000000000..e91103f07cd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11328.yml @@ -0,0 +1,5 @@ +author: "farie82" +delete-after: True +changes: + - bugfix: "Admins can now use all mhelp related things again" + - spellcheck: "Fixed the toggle mentor ticket messages text" From dcb1acb8b3d6413b4e1683b9d14bd04024f6b6e3 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 08:47:04 -0400 Subject: [PATCH 29/32] Automatic changelog generation for PR #11332 [ci skip] --- html/changelogs/AutoChangeLog-pr-11332.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11332.yml diff --git a/html/changelogs/AutoChangeLog-pr-11332.yml b/html/changelogs/AutoChangeLog-pr-11332.yml new file mode 100644 index 00000000000..f76e2e2b48b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11332.yml @@ -0,0 +1,4 @@ +author: "Arkatos" +delete-after: True +changes: + - rscadd: "Added an option to grant Martial Arts via administrative Var menu" From 1b78dc8d5d1685fccc178e0391daf9949c450974 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 09:02:13 -0400 Subject: [PATCH 30/32] Automatic changelog generation for PR #11284 [ci skip] --- html/changelogs/AutoChangeLog-pr-11284.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11284.yml diff --git a/html/changelogs/AutoChangeLog-pr-11284.yml b/html/changelogs/AutoChangeLog-pr-11284.yml new file mode 100644 index 00000000000..433a7fb3f68 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11284.yml @@ -0,0 +1,6 @@ +author: "Arkatos" +delete-after: True +changes: + - rscadd: "Added new Shadowling Ability - Null Charge! This new ability allows Shadowling to completely drain an APC of it's power after a moderate delay. Shadowling must not be interrupted, or the whole process will fail." + - imageadd: "Added custom icon for the Null Charge ability" + - rscdel: "Shadowling Drain Life ability removed" From dcf80fba2b082818a76df3b5eae2b6a3c3efa848 Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 14:25:58 -0400 Subject: [PATCH 31/32] Automatic changelog generation for PR #11360 [ci skip] --- html/changelogs/AutoChangeLog-pr-11360.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11360.yml diff --git a/html/changelogs/AutoChangeLog-pr-11360.yml b/html/changelogs/AutoChangeLog-pr-11360.yml new file mode 100644 index 00000000000..3fb01b5b8f9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11360.yml @@ -0,0 +1,6 @@ +author: "AffectedArc07" +delete-after: True +changes: + - rscadd: "SSevents" + - rscadd: "SSholiday" + - tweak: "We no longer check if its Christmas every tick. Dont ask." From 89278aaa0e4c9e8300f9a398b660b797a55f8bbd Mon Sep 17 00:00:00 2001 From: ParadiseSS13-Bot Date: Tue, 23 Apr 2019 15:11:17 -0400 Subject: [PATCH 32/32] Automatic changelog generation for PR #11300 [ci skip] --- html/changelogs/AutoChangeLog-pr-11300.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-11300.yml diff --git a/html/changelogs/AutoChangeLog-pr-11300.yml b/html/changelogs/AutoChangeLog-pr-11300.yml new file mode 100644 index 00000000000..b949b7f91f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-11300.yml @@ -0,0 +1,5 @@ +author: "Arkatos" +delete-after: True +changes: + - rscadd: "Added Observer HUD buttons for Jump to Mob, Orbit, Re-enter corpse, and Teleport" + - imageadd: "Added custom icons for Observer HUD buttons"