diff --git a/code/__DEFINES/clockcult.dm b/code/__DEFINES/clockcult.dm index 776e5e9d94d..1a21c8e0b19 100644 --- a/code/__DEFINES/clockcult.dm +++ b/code/__DEFINES/clockcult.dm @@ -98,3 +98,5 @@ var/global/list/all_scripture = list() //a list containing scripture instances; #define PROSELYTIZER_REPAIR_PER_TICK 4 //how much a proselytizer repairs each tick, and also how many deciseconds each tick is #define OCULAR_WARDEN_EXCLUSION_RANGE 3 //the range at which ocular wardens cannot be placed near other ocular wardens + +#define RATVARIAN_SPEAR_DURATION 1800 //how long ratvarian spears last; defaults to 3 minutes diff --git a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm index e1ed8444bb7..beed0778b94 100644 --- a/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm +++ b/code/game/gamemodes/clock_cult/clock_items/judicial_visor.dm @@ -196,7 +196,7 @@ targetsjudged++ L.adjustBruteLoss(10) add_logs(user, L, "struck with a judicial blast") - user << "[targetsjudged ? "Successfully judged [targetsjudged]":"Judged no"] heretic[!targetsjudged || targetsjudged > 1 ? "s":""]." + user << "[targetsjudged ? "Successfully judged [targetsjudged]":"Judged no"] heretic[targetsjudged == 1 ? "":"s"]." sleep(3) //so the animation completes properly qdel(src) diff --git a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm index 8e92246ed17..280593234cb 100644 --- a/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm +++ b/code/game/gamemodes/clock_cult/clock_items/ratvarian_spear.dm @@ -36,7 +36,8 @@ throwforce = initial(throwforce) armour_penetration = 0 clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long." - timerid = addtimer(CALLBACK(src, .proc/break_spear), 600, TIMER_STOPPABLE) + deltimer(timerid) + timerid = addtimer(CALLBACK(src, .proc/break_spear), RATVARIAN_SPEAR_DURATION, TIMER_STOPPABLE) /obj/item/clockwork/ratvarian_spear/cyborg/ratvar_act() //doesn't break! if(ratvar_awakens) diff --git a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm b/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm index 36700c86361..5bc680f84e6 100644 --- a/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm +++ b/code/game/gamemodes/clock_cult/clock_items/soul_vessel.dm @@ -52,9 +52,12 @@ ..() /obj/item/device/mmi/posibrain/soul_vessel/attack(mob/living/target, mob/living/carbon/human/user) - if(!is_servant_of_ratvar(user) || !ishuman(target) || used || (brainmob && brainmob.key)) + if(!is_servant_of_ratvar(user) || !ishuman(target)) ..() return + if(used || (brainmob && brainmob.key)) + user << "\"This vessel is filled, friend. Provide it with a body.\"" + return if(is_servant_of_ratvar(target)) user << "\"It would be more wise to revive your allies, friend.\"" return diff --git a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm index 051b24d6340..b6298ca1d5e 100644 --- a/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm +++ b/code/game/gamemodes/clock_cult/clock_scriptures/scripture_scripts.dm @@ -166,7 +166,7 @@ check_flags = AB_CHECK_RESTRAINED|AB_CHECK_STUNNED|AB_CHECK_CONSCIOUS buttontooltipstyle = "clockcult" var/cooldown = 0 - var/base_cooldown = 1800 + var/base_cooldown = RATVARIAN_SPEAR_DURATION /datum/action/innate/function_call/IsAvailable() if(!is_servant_of_ratvar(owner) || cooldown > world.time) @@ -181,9 +181,7 @@ var/obj/item/clockwork/ratvarian_spear/R = new(get_turf(usr)) owner.put_in_hands(R) if(!ratvar_awakens) - R.clockwork_desc = "A powerful spear of Ratvarian making. It's more effective against enemy cultists and silicons, though it won't last for long." owner << "Your spear begins to break down in this plane of existence. You can't use it for long!" - R.timerid = addtimer(CALLBACK(R, /obj/item/clockwork/ratvarian_spear.proc/break_spear), base_cooldown, TIMER_STOPPABLE) cooldown = base_cooldown + world.time owner.update_action_buttons_icon() addtimer(CALLBACK(src, .proc/update_actions), base_cooldown) diff --git a/code/modules/mob/living/carbon/alien/status_procs.dm b/code/modules/mob/living/carbon/alien/status_procs.dm index 065dd0184a8..653b05ae5a8 100644 --- a/code/modules/mob/living/carbon/alien/status_procs.dm +++ b/code/modules/mob/living/carbon/alien/status_procs.dm @@ -5,10 +5,16 @@ /////////////////////////////////// STUNNED //////////////////////////////////// /mob/living/carbon/alien/Stun(amount, updating = 1, ignore_canstun = 0) - if(status_flags & CANSTUN || ignore_canstun) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - if(updating) - update_canmove() - else - // add some movement delay - move_delay_add = min(move_delay_add + round(amount / 2), 10) // a maximum delay of 10 + . = ..() + if(!.) + move_delay_add = min(move_delay_add + round(amount / 2), 10) //a maximum delay of 10 + +/mob/living/carbon/alien/SetStunned(amount, updating = 1, ignore_canstun = 0) + . = ..() + if(!.) + move_delay_add = min(move_delay_add + round(amount / 2), 10) + +/mob/living/carbon/alien/AdjustStunned(amount, updating = 1, ignore_canstun = 0) + . = ..() + if(!.) + move_delay_add = min(move_delay_add + round(amount / 2), 10) diff --git a/code/modules/mob/living/carbon/human/status_procs.dm b/code/modules/mob/living/carbon/human/status_procs.dm index 3a99dda7b06..5ee8591fc62 100644 --- a/code/modules/mob/living/carbon/human/status_procs.dm +++ b/code/modules/mob/living/carbon/human/status_procs.dm @@ -1,11 +1,11 @@ /mob/living/carbon/human/Stun(amount, updating = 1, ignore_canstun = 0) amount = dna.species.spec_stun(src,amount) - ..() + return ..() /mob/living/carbon/human/Weaken(amount, updating = 1, ignore_canstun = 0) amount = dna.species.spec_stun(src,amount) - ..() + return ..() /mob/living/carbon/human/cure_husk() . = ..() diff --git a/code/modules/mob/living/silicon/status_procs.dm b/code/modules/mob/living/silicon/status_procs.dm index b3e0a088f36..c14e6c254f9 100644 --- a/code/modules/mob/living/silicon/status_procs.dm +++ b/code/modules/mob/living/silicon/status_procs.dm @@ -6,42 +6,36 @@ /////////////////////////////////// STUNNED //////////////////////////////////// /mob/living/silicon/Stun(amount, updating = 1, ignore_canstun = 0) - if(status_flags & CANSTUN || ignore_canstun) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - if(updating) - update_stat() + . = ..() + if(. && updating) + update_stat() + +/mob/living/silicon/SetStunned(amount, updating = 1, ignore_canstun = 0) + . = ..() + if(. && updating) + update_stat() /mob/living/silicon/AdjustStunned(amount, updating = 1, ignore_canstun = 0) - if(status_flags & CANSTUN || ignore_canstun) - stunned = max(stunned + amount,0) - if(updating) - update_stat() - -/mob/living/silicon/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN || ignore_canstun) - stunned = max(amount,0) - if(updating) - update_stat() + . = ..() + if(. && updating) + update_stat() /////////////////////////////////// WEAKENED //////////////////////////////////// /mob/living/silicon/Weaken(amount, updating = 1, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(max(weakened,amount),0) - if(updating) - update_stat() - -/mob/living/silicon/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(weakened + amount,0) - if(updating) - update_stat() + . = ..() + if(. && updating) + update_stat() /mob/living/silicon/SetWeakened(amount, updating = 1, ignore_canweaken = 0) - if(status_flags & CANWEAKEN || ignore_canweaken) - weakened = max(amount,0) - if(updating) - update_stat() + . = ..() + if(. && updating) + update_stat() + +/mob/living/silicon/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) + . = ..() + if(. && updating) + update_stat() /////////////////////////////////// EAR DAMAGE //////////////////////////////////// diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm index 0545bd03b00..fee790ffe3d 100644 --- a/code/modules/mob/living/status_procs.dm +++ b/code/modules/mob/living/status_procs.dm @@ -32,7 +32,7 @@ "visible_message" = message, "self_message" = self_message, "examine_message" = examine_message) /mob/living/Stun(amount, updating = 1, ignore_canstun = 0) - if(!stat && islist(stun_absorption)) + if(!stat && islist(stun_absorption) && (status_flags & CANSTUN || ignore_canstun)) var/priority_absorb_key var/highest_priority for(var/i in stun_absorption) @@ -49,12 +49,12 @@ src << "[priority_absorb_key["self_message"]]" priority_absorb_key["stuns_absorbed"] += amount return 0 - ..() + return ..() ///////////////////////////////// WEAKEN ///////////////////////////////////// /mob/living/Weaken(amount, updating = 1, ignore_canweaken = 0) - if(!stat && islist(stun_absorption)) + if(!stat && islist(stun_absorption) && (status_flags & CANWEAKEN || ignore_canweaken)) var/priority_absorb_key var/highest_priority for(var/i in stun_absorption) @@ -71,4 +71,4 @@ src << "[priority_absorb_key["self_message"]]" priority_absorb_key["stuns_absorbed"] += amount return 0 - ..() \ No newline at end of file + return ..() \ No newline at end of file diff --git a/code/modules/mob/status_procs.dm b/code/modules/mob/status_procs.dm index dfbe6250533..77398e53eef 100644 --- a/code/modules/mob/status_procs.dm +++ b/code/modules/mob/status_procs.dm @@ -3,7 +3,6 @@ //The effects include: stunned, weakened, paralysis, sleeping, resting, jitteriness, dizziness, ear damage, // eye damage, eye_blind, eye_blurry, druggy, BLIND disability, and NEARSIGHT disability. - /////////////////////////////////// STUNNED //////////////////////////////////// /mob/proc/Stun(amount, updating = 1, ignore_canstun = 0) @@ -11,18 +10,21 @@ stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun if(updating) update_canmove() + return TRUE /mob/proc/SetStunned(amount, updating = 1, ignore_canstun = 0) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" if(status_flags & CANSTUN || ignore_canstun) stunned = max(amount,0) if(updating) update_canmove() + return TRUE /mob/proc/AdjustStunned(amount, updating = 1, ignore_canstun = 0) if(status_flags & CANSTUN || ignore_canstun) stunned = max(stunned + amount,0) if(updating) update_canmove() + return TRUE /////////////////////////////////// WEAKENED //////////////////////////////////// @@ -31,18 +33,21 @@ weakened = max(max(weakened,amount),0) if(updating) update_canmove() //updates lying, canmove and icons + return TRUE /mob/proc/SetWeakened(amount, updating = 1, ignore_canweaken = 0) if(status_flags & CANWEAKEN) weakened = max(amount,0) if(updating) update_canmove() //updates lying, canmove and icons + return TRUE /mob/proc/AdjustWeakened(amount, updating = 1, ignore_canweaken = 0) if((status_flags & CANWEAKEN) || ignore_canweaken) weakened = max(weakened + amount,0) if(updating) update_canmove() //updates lying, canmove and icons + return TRUE /////////////////////////////////// PARALYSIS //////////////////////////////////// @@ -53,6 +58,7 @@ if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) if(updating) update_stat() + return TRUE /mob/proc/SetParalysis(amount, updating = 1, ignore_canparalyse = 0) if(status_flags & CANPARALYSE || ignore_canparalyse) @@ -61,6 +67,7 @@ if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) if(updating) update_stat() + return TRUE /mob/proc/AdjustParalysis(amount, updating = 1, ignore_canparalyse = 0) if(status_flags & CANPARALYSE || ignore_canparalyse) @@ -69,6 +76,7 @@ if((!old_paralysis && paralysis) || (old_paralysis && !paralysis)) if(updating) update_stat() + return TRUE /////////////////////////////////// SLEEPING ////////////////////////////////////