From a2601c014294513073f0ff7c5d01d66175e6a186 Mon Sep 17 00:00:00 2001 From: Aurorablade Date: Wed, 10 Jan 2018 00:34:50 -0500 Subject: [PATCH] heh --- code/__DEFINES/mob.dm | 3 - code/__DEFINES/status_effects.dm | 78 ++++++++++++ code/controllers/Processes/effect_process.dm | 0 code/datums/status_effects/buffs.dm | 41 ++++++ code/datums/status_effects/debuffs.dm | 10 ++ code/datums/status_effects/neutral.dm | 6 + code/datums/status_effects/status_effect.dm | 120 ++++++++++++++++++ .../mob/living/carbon/carbon_defines.dm | 1 - code/modules/mob/living/carbon/human/emote.dm | 28 ++-- code/modules/mob/living/living.dm | 7 + code/modules/mob/living/living_defines.dm | 3 + icons/mob/screen_alert.dmi | Bin 37433 -> 40571 bytes paradise.dme | 6 + 13 files changed, 281 insertions(+), 22 deletions(-) create mode 100644 code/__DEFINES/status_effects.dm create mode 100644 code/controllers/Processes/effect_process.dm create mode 100644 code/datums/status_effects/buffs.dm create mode 100644 code/datums/status_effects/debuffs.dm create mode 100644 code/datums/status_effects/neutral.dm create mode 100644 code/datums/status_effects/status_effect.dm diff --git a/code/__DEFINES/mob.dm b/code/__DEFINES/mob.dm index 3121f35b13c..5312cba6e14 100644 --- a/code/__DEFINES/mob.dm +++ b/code/__DEFINES/mob.dm @@ -171,6 +171,3 @@ #define hasorgans(A) (ishuman(A)) #define is_admin(user) (check_rights(R_ADMIN, 0, (user)) != 0) - -//effects -#define EFFECT_HIGHFIVE "highfiving" diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm new file mode 100644 index 00000000000..b38b2666863 --- /dev/null +++ b/code/__DEFINES/status_effects.dm @@ -0,0 +1,78 @@ +//These are all the different status effects. Use the paths for each effect in the defines. + +#define STATUS_EFFECT_MULTIPLE 0 //if it allows multiple instances of the effect + +#define STATUS_EFFECT_UNIQUE 1 //if it allows only one, preventing new instances + +#define STATUS_EFFECT_REPLACE 2 //if it allows only one, but new instances replace + +#define BASIC_STATUS_EFFECT /datum/status_effect //Has no effect. + +/////////// +// BUFFS // +/////////// + +#define STATUS_EFFECT_SHADOW_MEND /datum/status_effect/shadow_mend //Quick, powerful heal that deals damage afterwards. Heals 15 brute/burn every second for 3 seconds. +#define STATUS_EFFECT_VOID_PRICE /datum/status_effect/void_price //The price of healing yourself with void energy. Deals 3 brute damage every 3 seconds for 30 seconds. + +//#define STATUS_EFFECT_VANGUARD /datum/status_effect/vanguard_shield //Grants temporary stun absorption, but will stun the user based on how many stuns they absorbed. +//#define STATUS_EFFECT_INATHNEQS_ENDOWMENT /datum/status_effect/inathneqs_endowment //A 15-second invulnerability and stun absorption, granted by Inath-neq. +//#define STATUS_EFFECT_WRAITHSPECS /datum/status_effect/wraith_spectacles + +//#define STATUS_EFFECT_POWERREGEN /datum/status_effect/cyborg_power_regen //Regenerates power on a given cyborg over time + +//#define STATUS_EFFECT_HISGRACE /datum/status_effect/his_grace //His Grace. + +//#define STATUS_EFFECT_WISH_GRANTERS_GIFT /datum/status_effect/wish_granters_gift //If you're currently resurrecting with the Wish Granter + +//#define STATUS_EFFECT_BLOODDRUNK /datum/status_effect/blooddrunk //Stun immunity and greatly reduced damage taken + +///////////// +// DEBUFFS // +///////////// + +//#define STATUS_EFFECT_STUN /datum/status_effect/incapacitating/stun //the affected is stunned + +//#define STATUS_EFFECT_KNOCKDOWN /datum/status_effect/incapacitating/knockdown //the affected is knocked down + +//#define STATUS_EFFECT_UNCONSCIOUS /datum/status_effect/incapacitating/unconscious //the affected is unconscious + +//#define STATUS_EFFECT_SLEEPING /datum/status_effect/incapacitating/sleeping //the affected is asleep + +//#define STATUS_EFFECT_BELLIGERENT /datum/status_effect/belligerent //forces the affected to walk, doing damage if they try to run + +//#define STATUS_EFFECT_GEISTRACKER /datum/status_effect/geis_tracker //if you're using geis, this tracks that and keeps you from using scripture + +//#define STATUS_EFFECT_MANIAMOTOR /datum/status_effect/maniamotor //disrupts, damages, and confuses the affected as long as they're in range of the motor +//#define MAX_MANIA_SEVERITY 100 //how high the mania severity can go +//#define MANIA_DAMAGE_TO_CONVERT 90 //how much damage is required before it'll convert affected targets + +//#define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath. + +//#define STATUS_EFFECT_SUMMONEDGHOST /datum/status_effect/cultghost //is a cult ghost and can't use manifest runes + +//#define STATUS_EFFECT_CRUSHERMARK /datum/status_effect/crusher_mark //if struck with a proto-kinetic crusher, takes a ton of damage + +//#define STATUS_EFFECT_SAWBLEED /datum/status_effect/saw_bleed //if the bleed builds up enough, takes a ton of damage + +//#define STATUS_EFFECT_NECROPOLIS_CURSE /datum/status_effect/necropolis_curse +//#define CURSE_BLINDING 1 //makes the edges of the target's screen obscured +//#define CURSE_SPAWNING 2 //spawns creatures that attack the target only +//#define CURSE_WASTING 4 //causes gradual damage +//#define CURSE_GRASPING 8 //hands reach out from the sides of the screen, doing damage and stunning if they hit the target + +//#define STATUS_EFFECT_KINDLE /datum/status_effect/kindle //A knockdown reduced by 1 second for every 3 points of damage the target takes. + +//#define STATUS_EFFECT_ICHORIAL_STAIN /datum/status_effect/ichorial_stain //Prevents a servant from being revived by vitality matrices for one minute. + +///////////// +// NEUTRAL // +///////////// + +#define STATUS_EFFECT_HIGHFIVE /datum/status_effect/high_five + +//#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark + +//#define STATUS_EFFECT_CRUSHERDAMAGETRACKING /datum/status_effect/crusher_damage //tracks total kinetic crusher damage on a target + +//#define STATUS_EFFECT_SYPHONMARK /datum/status_effect/syphon_mark //tracks kills for the KA death syphon module \ No newline at end of file diff --git a/code/controllers/Processes/effect_process.dm b/code/controllers/Processes/effect_process.dm new file mode 100644 index 00000000000..e69de29bb2d diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm new file mode 100644 index 00000000000..26d8ec67ef0 --- /dev/null +++ b/code/datums/status_effects/buffs.dm @@ -0,0 +1,41 @@ +//Largely beneficial effects go here, even if they have drawbacks. An example is provided in Shadow Mend. + +/datum/status_effect/shadow_mend + id = "shadow_mend" + duration = 30 + alert_type = /obj/screen/alert/status_effect/shadow_mend + +/obj/screen/alert/status_effect/shadow_mend + name = "Shadow Mend" + desc = "Shadowy energies wrap around your wounds, sealing them at a price. After healing, you will slowly lose health every three seconds for thirty seconds." + icon_state = "shadow_mend" + +/datum/status_effect/shadow_mend/on_apply() + owner.visible_message("Violet light wraps around [owner]'s body!", "Violet light wraps around your body!") + playsound(owner, 'sound/magic/teleport_app.ogg', 50, 1) + return ..() + +/datum/status_effect/shadow_mend/tick() + owner.adjustBruteLoss(-15) + owner.adjustFireLoss(-15) + +/datum/status_effect/shadow_mend/on_remove() + owner.visible_message("The violet light around [owner] glows black!", "The tendrils around you cinch tightly and reap their toll...") + playsound(owner, 'sound/magic/teleport_diss.ogg', 50, 1) + owner.apply_status_effect(STATUS_EFFECT_VOID_PRICE) + + +/datum/status_effect/void_price + id = "void_price" + duration = 300 + tick_interval = 30 + alert_type = /obj/screen/alert/status_effect/void_price + +/obj/screen/alert/status_effect/void_price + name = "Void Price" + desc = "Black tendrils cinch tightly against you, digging wicked barbs into your flesh." + icon_state = "shadow_mend" + +/datum/status_effect/void_price/tick() + playsound(owner, 'sound/weapons/bite.ogg', 50, 1) + owner.adjustBruteLoss(3) \ No newline at end of file diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm new file mode 100644 index 00000000000..cfafa912b64 --- /dev/null +++ b/code/datums/status_effects/debuffs.dm @@ -0,0 +1,10 @@ +//OTHER DEBUFFS + +/datum/status_effect/cultghost //is a cult ghost and can't use manifest runes + id = "cult_ghost" + duration = -1 + alert_type = null + +/datum/status_effect/cultghost/tick() + if(owner.reagents) + owner.reagents.del_reagent("holywater") //can't be deconverted \ No newline at end of file diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm new file mode 100644 index 00000000000..270dbc71cdc --- /dev/null +++ b/code/datums/status_effects/neutral.dm @@ -0,0 +1,6 @@ +//entirely neutral or internal status effects go here + +/datum/status_effect/high_five + id = "high_five" + duration = 25 + alert_type = null \ No newline at end of file diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm new file mode 100644 index 00000000000..8bb5a0429d6 --- /dev/null +++ b/code/datums/status_effects/status_effect.dm @@ -0,0 +1,120 @@ + +//Status effects are used to apply temporary or permanent effects to mobs. Mobs are aware of their status effects at all times. +//This file contains their code, plus code for applying and removing them. +//When making a new status effect, add a define to status_effects.dm in __DEFINES for ease of use! + +/datum/status_effect + var/id = "effect" //Used for screen alerts. + var/duration = -1 //How long the status effect lasts in DECISECONDS. Enter -1 for an effect that never ends unless removed through some means. + var/tick_interval = 10 //How many deciseconds between ticks, approximately. Leave at 10 for every second. + var/mob/living/owner //The mob affected by the status effect. + var/status_type = STATUS_EFFECT_UNIQUE //How many of the effect can be on one mob, and what happens when you try to add another + var/on_remove_on_mob_delete = FALSE //if we call on_remove() when the mob is deleted + var/examine_text //If defined, this text will appear when the mob is examined - to use he, she etc. use "SUBJECTPRONOUN" and replace it in the examines themselves + var/alert_type = /obj/screen/alert/status_effect //the alert thrown by the status effect, contains name and description + var/obj/screen/alert/status_effect/linked_alert = null //the alert itself, if it exists + +/datum/status_effect/New(list/arguments) + on_creation(arglist(arguments)) + +/datum/status_effect/proc/on_creation(mob/living/new_owner, ...) + if(new_owner) + owner = new_owner + if(owner) + LAZYADD(owner.status_effects, src) + if(!owner || !on_apply()) + qdel(src) + return + if(duration != -1) + duration = world.time + duration + tick_interval = world.time + tick_interval + if(alert_type) + var/obj/screen/alert/status_effect/A = owner.throw_alert(id, alert_type) + A.attached_effect = src //so the alert can reference us, if it needs to + linked_alert = A //so we can reference the alert, if we need to + processing_objects.Add(src) + fast_processing.Add(src) + return TRUE + +/datum/status_effect/Destroy() + processing_objects.Remove(src) + fast_processing.Remove(src) + if(owner) + owner.clear_alert(id) + LAZYREMOVE(owner.status_effects, src) + on_remove() + owner = null + return ..() + +/datum/status_effect/proc/process() + if(!owner) + qdel(src) + return + if(tick_interval < world.time) + tick() + tick_interval = world.time + initial(tick_interval) + if(duration != -1 && duration < world.time) + qdel(src) + +/datum/status_effect/proc/on_apply() //Called whenever the buff is applied; returning FALSE will cause it to autoremove itself. + return TRUE +/datum/status_effect/proc/tick() //Called every tick. +/datum/status_effect/proc/on_remove() //Called whenever the buff expires or is removed; do note that at the point this is called, it is out of the owner's status_effects but owner is not yet null +/datum/status_effect/proc/be_replaced() //Called instead of on_remove when a status effect is replaced by itself or when a status effect with on_remove_on_mob_delete = FALSE has its mob deleted + owner.clear_alert(id) + LAZYREMOVE(owner.status_effects, src) + owner = null + qdel(src) + +//////////////// +// ALERT HOOK // +//////////////// + +/obj/screen/alert/status_effect + name = "Curse of Mundanity" + desc = "You don't feel any different..." + var/datum/status_effect/attached_effect + +////////////////// +// HELPER PROCS // +////////////////// + +/mob/living/proc/apply_status_effect(effect, ...) //applies a given status effect to this mob, returning the effect if it was successful + . = FALSE + var/datum/status_effect/S1 = effect + LAZYINITLIST(status_effects) + for(var/datum/status_effect/S in status_effects) + if(S.id == initial(S1.id) && S.status_type) + if(S.status_type == STATUS_EFFECT_REPLACE) + S.be_replaced() + else + return + var/list/arguments = args.Copy() + arguments[1] = src + S1 = new effect(arguments) + . = S1 + +/mob/living/proc/remove_status_effect(effect) //removes all of a given status effect from this mob, returning TRUE if at least one was removed + . = FALSE + if(status_effects) + var/datum/status_effect/S1 = effect + for(var/datum/status_effect/S in status_effects) + if(initial(S1.id) == S.id) + qdel(S) + . = TRUE + +/mob/living/proc/has_status_effect(effect) //returns the effect if the mob calling the proc owns the given status effect + . = FALSE + if(status_effects) + var/datum/status_effect/S1 = effect + for(var/datum/status_effect/S in status_effects) + if(initial(S1.id) == S.id) + return S + +/mob/living/proc/has_status_effect_list(effect) //returns a list of effects with matching IDs that the mod owns; use for effects there can be multiple of + . = list() + if(status_effects) + var/datum/status_effect/S1 = effect + for(var/datum/status_effect/S in status_effects) + if(initial(S1.id) == S.id) + . += S \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 7ed39d78382..728733420b9 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -24,7 +24,6 @@ var/wetlevel = 0 //how wet the mob is var/failed_last_breath = FALSE //This is used to determine if the mob failed a breath. If they did fail a brath, they will attempt to breathe each tick, otherwise just once per 4 ticks. - var/list/active_effect = list() var/co2overloadtime = null blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index a9fde120c44..dac421e444f 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -840,14 +840,13 @@ if("highfive") if(restrained()) return - if(EFFECT_HIGHFIVE in active_effect) - to_chat(src, "You give up on the high-five.") - active_effect -= EFFECT_HIGHFIVE - return - active_effect |= EFFECT_HIGHFIVE - for(var/mob/living/carbon/C in orange(1)) - if(EFFECT_HIGHFIVE in C.active_effect) - if((C.mind.special_role == SPECIAL_ROLE_WIZARD) && (mind.special_role == SPECIAL_ROLE_WIZARD)) + visible_message("[name] requests a highfive.", "You request a highfive.") + if(!has_status_effect(STATUS_EFFECT_HIGHFIVE)) + apply_status_effect(STATUS_EFFECT_HIGHFIVE) + + if(has_status_effect(STATUS_EFFECT_HIGHFIVE)) + for(var/mob/living/carbon/C in orange(1)) + if((mind.special_role == SPECIAL_ROLE_WIZARD) && (C.mind && (C.mind.special_role == SPECIAL_ROLE_WIZARD))) visible_message("[name] and [C.name] high-five EPICALLY!") status_flags |= GODMODE C.status_flags |= GODMODE @@ -855,16 +854,9 @@ status_flags &= ~GODMODE C.status_flags &= ~GODMODE break - visible_message("[name] and [C.name] high-five!") - C.active_effect -= EFFECT_HIGHFIVE - active_effect -= EFFECT_HIGHFIVE - playsound('sound/effects/snap.ogg', 50) - break - if(EFFECT_HIGHFIVE in active_effect) - visible_message("[name] requests a highfive.", "You request a highfive.") - if(do_after(src, 25, target = src)) - visible_message("[name] was left hanging. Embarrassing.", "You are left hanging. How embarrassing!") - active_effect -= EFFECT_HIGHFIVE + visible_message("[name] and [C.name] high-five!") + playsound('sound/effects/snap.ogg', 50) + break if("help") var/emotelist = "aflap(s), airguitar, blink(s), blink(s)_r, blush(es), bow(s)-(none)/mob, burp(s), choke(s), chuckle(s), clap(s), collapse(s), cough(s),cry, cries, custom, dance, dap(s)(none)/mob," \ diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 42e461b6e03..b2cfeb66825 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -2,6 +2,13 @@ /mob/living/Destroy() if(ranged_ability) ranged_ability.remove_ranged_ability(src) + if(LAZYLEN(status_effects)) + for(var/s in status_effects) + var/datum/status_effect/S = s + if(S.on_remove_on_mob_delete) //the status effect calls on_remove when its mob is deleted + qdel(S) + else + S.be_replaced() return ..() /mob/living/ghostize(can_reenter_corpse = 1) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 5aaf02688d3..bb95742ac62 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -64,3 +64,6 @@ var/list/recent_tastes = list() var/blood_volume = 0 //how much blood the mob has + + var/list/status_effects //a list of all status effects the mob has + diff --git a/icons/mob/screen_alert.dmi b/icons/mob/screen_alert.dmi index aa3916b07d6a3f8e1abe473c05de8cc43442c0cb..56c1730fd3a3ecdedd394259cb85549421674389 100644 GIT binary patch delta 20282 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 delta 17119 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