His Grace is a better item and less globally-announced (#23951)

* His Grace is a better item and less globally-announced

* grace

* graceful

* tiny eyes!

* tiny eeeeyes

* less lethal

* You must have His Grace.

* You just need to compile His Grace.

* highly lethal grace

* ding ding ding you're super fucked

* rrr

* His Grace
This commit is contained in:
Joan Lung
2017-02-16 09:18:45 -05:00
committed by AnturK
parent 1423fd3afa
commit db94a3d83b
12 changed files with 304 additions and 221 deletions

View File

@@ -128,4 +128,13 @@
#define IS_SHARP 1
#define IS_SHARP_ACCURATE 2
//His Grace.
#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
#define HIS_GRACE_PECKISH 20 //Slightly hungry.
#define HIS_GRACE_HUNGRY 60 //Getting closer. Increases damage up to a minimum of 20.
#define HIS_GRACE_FAMISHED 100 //Dangerous. Increases damage up to a minimum of 25 and cannot be dropped.
#define HIS_GRACE_STARVING 120 //Incredibly close to breaking loose. Increases damage up to a minimum of 30.
#define HIS_GRACE_CONSUME_OWNER 140 //His Grace consumes His owner at this point and becomes aggressive.
#define HIS_GRACE_FALL_ASLEEP 160 //If it reaches this point, He falls asleep and resets.
#define HIS_GRACE_FORCE_BONUS 4 //How much force is gained per kill.

View File

@@ -16,8 +16,12 @@
#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.
/////////////
// DEBUFFS //
/////////////
#define STATUS_EFFECT_SIGILMARK /datum/status_effect/sigil_mark
#define STATUS_EFFECT_HISWRATH /datum/status_effect/his_wrath //His Wrath.

View File

@@ -151,3 +151,53 @@
return
playsound(cyborg, 'sound/effects/light_flicker.ogg', 50, 1)
cyborg.cell.give(power_to_give)
/datum/status_effect/his_grace
id = "his_grace"
duration = -1
tick_interval = 4
alert_type = /obj/screen/alert/status_effect/his_grace
var/bloodlust = 0
/obj/screen/alert/status_effect/his_grace
name = "His Grace"
desc = "His Grace hungers, and you must feed Him."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
/obj/screen/alert/status_effect/his_grace/MouseEntered(location,control,params)
desc = initial(desc)
var/datum/status_effect/his_grace/HG = attached_effect
desc += "<br><font size=3><b>Current Bloodthirst: [HG.bloodlust]</b></font>\
<br>Becomes undroppable at <b>[HIS_GRACE_FAMISHED]</b>\
<br>Will consume you at <b>[HIS_GRACE_CONSUME_OWNER]</b>"
..()
/datum/status_effect/his_grace/on_apply()
add_logs(owner, null, "gained His Grace's stun immunity")
owner.add_stun_absorption("hisgrace", INFINITY, 3, null, "His Grace protects you from the stun!")
/datum/status_effect/his_grace/tick()
bloodlust = 0
var/graces = 0
for(var/obj/item/weapon/his_grace/HG in owner.held_items)
if(HG.bloodthirst > bloodlust)
bloodlust = HG.bloodthirst
if(HG.awakened)
graces++
if(!graces)
owner.apply_status_effect(STATUS_EFFECT_HISWRATH)
qdel(src)
return
var/grace_heal = bloodlust * 0.05
owner.adjustBruteLoss(-grace_heal)
owner.adjustFireLoss(-grace_heal)
owner.adjustToxLoss(-grace_heal, TRUE, TRUE)
owner.adjustOxyLoss(-(grace_heal * 2))
owner.adjustCloneLoss(-grace_heal)
/datum/status_effect/his_grace/on_remove()
add_logs(owner, null, "lost His Grace's stun immunity")
if(islist(owner.stun_absorption) && owner.stun_absorption["hisgrace"])
owner.stun_absorption -= "hisgrace"

View File

@@ -9,3 +9,23 @@
/datum/status_effect/sigil_mark/tick()
if(owner.stat < stat_allowed)
qdel(src)
/datum/status_effect/his_wrath //does minor damage over time unless holding His Grace
id = "his_wrath"
duration = -1
tick_interval = 4
alert_type = /obj/screen/alert/status_effect/his_wrath
/obj/screen/alert/status_effect/his_wrath
name = "His Wrath"
desc = "You fled from His Grace instead of feeding Him, and now you suffer."
icon_state = "his_grace"
alerttooltipstyle = "hisgrace"
/datum/status_effect/his_wrath/tick()
for(var/obj/item/weapon/his_grace/HG in owner.held_items)
qdel(src)
return
owner.adjustBruteLoss(0.1)
owner.adjustFireLoss(0.1)
owner.adjustToxLoss(0.2, TRUE, TRUE)

View File

@@ -0,0 +1,206 @@
//His Grace is a very special weapon granted only to traitor chaplains.
//When awakened, He thirsts for blood and begins ticking a "bloodthirst" counter.
//The wielder of His Grace is immune to stuns and gradually heals.
//If the wielder fails to feed His Grace in time, He will devour them and become incredibly aggressive.
//Leaving His Grace alone for some time will reset His thirst and put Him to sleep.
//Using His Grace effectively requires extreme speed and care.
/obj/item/weapon/his_grace
name = "artistic toolbox"
desc = "A toolbox painted bright green. Looking at it makes you feel uneasy."
icon_state = "green"
item_state = "artistic_toolbox"
icon = 'icons/obj/storage.dmi'
w_class = WEIGHT_CLASS_GIGANTIC
origin_tech = "combat=4;engineering=4;syndicate=2"
force = 12
attack_verb = list("robusted")
hitsound = 'sound/weapons/smash.ogg'
var/awakened = 0
var/bloodthirst = HIS_GRACE_SATIATED
var/prev_bloodthirst = HIS_GRACE_SATIATED
var/force_bonus = 0
var/list/warning_messages = list("peckish", "hungry", "famished", "starving", "consume") //Messages that have NOT been shown
/obj/item/weapon/his_grace/New()
..()
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/his_grace/Destroy()
STOP_PROCESSING(SSprocessing, src)
for(var/mob/living/L in src)
L.forceMove(get_turf(src))
return ..()
/obj/item/weapon/his_grace/attack_self(mob/living/user)
if(!awakened)
INVOKE_ASYNC(src, .proc/awaken, user)
/obj/item/weapon/his_grace/attack(mob/living/M, mob/user)
if(awakened && M.stat)
consume(M)
else
..()
/obj/item/weapon/his_grace/CtrlClick(mob/user) //you can't pull his grace
attack_hand(user)
/obj/item/weapon/his_grace/examine(mob/user)
..()
if(awakened)
switch(bloodthirst)
if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH)
user << "<span class='his_grace'>[src] isn't very hungry. Not yet.</span>"
if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY)
user << "<span class='his_grace'>[src] would like a snack.</span>"
if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED)
user << "<span class='his_grace'>[src] is quite hungry now.</span>"
if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING)
user << "<span class='his_grace'>[src] is openly salivating at the sight of you. Be careful.</span>"
if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER)
user << "<span class='his_grace bold'>You walk a fine line. [src] is very close to devouring you.</span>"
if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP)
user << "<span class='his_grace bold'>[src] is shaking violently and staring directly at you.</span>"
else
user << "<span class='his_grace'>[src] is latched closed.</span>"
/obj/item/weapon/his_grace/relaymove(mob/living/user) //Allows changelings, etc. to climb out of Him after they revive, provided He isn't active
if(!awakened)
user.forceMove(get_turf(src))
user.visible_message("<span class='warning'>[user] scrambles out of [src]!</span>", "<span class='notice'>You climb out of [src]!</span>")
/obj/item/weapon/his_grace/process()
if(!bloodthirst)
drowse()
return
if(bloodthirst < HIS_GRACE_CONSUME_OWNER)
adjust_bloodthirst(1 + Floor(LAZYLEN(contents) * 0.5)) //Maybe adjust this?
else
adjust_bloodthirst(1) //don't cool off rapidly once we're at the point where His Grace consumes all.
var/mob/living/master = get_atom_on_turf(src, /mob/living)
if(istype(master) && (src in master.held_items))
switch(bloodthirst)
if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP)
master.visible_message("<span class='boldwarning'>[src] turns on [master]!</span>", "<span class='his_grace big bold>[src] turns on you!</span>")
do_attack_animation(master, null, src)
master.emote("scream")
master.remove_status_effect(STATUS_EFFECT_HISGRACE)
flags &= ~NODROP
master.Weaken(3)
master.adjustBruteLoss(master.maxHealth)
playsound(master, 'sound/effects/splat.ogg', 100, 0)
else
master.apply_status_effect(STATUS_EFFECT_HISGRACE)
return
forceMove(get_turf(src)) //no you can't put His Grace in a locker you just have to deal with Him
if(bloodthirst < HIS_GRACE_CONSUME_OWNER)
return
if(bloodthirst >= HIS_GRACE_FALL_ASLEEP)
drowse()
return
var/list/targets = list()
for(var/mob/living/L in oview(2, src))
targets += L
if(!LAZYLEN(targets))
return
var/mob/living/L = pick(targets)
step_to(src, L)
if(Adjacent(L))
if(!L.stat)
L.visible_message("<span class='warning'>[src] lunges at [L]!</span>", "<span class='his_grace big bold'>[src] lunges at you!</span>")
do_attack_animation(L, null, src)
playsound(L, 'sound/weapons/smash.ogg', 50, 1)
playsound(L, 'sound/misc/desceration-01.ogg', 50, 1)
L.adjustBruteLoss(force)
adjust_bloodthirst(-5) //Don't stop attacking they're right there!
else
consume(L)
/obj/item/weapon/his_grace/proc/awaken(mob/user) //Good morning, Mr. Grace.
if(awakened)
return
awakened = TRUE
user.visible_message("<span class='boldwarning'>[src] begins to rattle. He thirsts.</span>", "<span class='his_grace'>You flick [src]'s latch up. You hope this is a good idea.</span>")
name = "His Grace"
desc = "A bloodthirsty artefact created by a profane rite."
gender = MALE
adjust_bloodthirst(1)
force_bonus = HIS_GRACE_FORCE_BONUS * LAZYLEN(contents)
playsound(user, 'sound/effects/pope_entry.ogg', 100)
icon_state = "green_awakened"
/obj/item/weapon/his_grace/proc/drowse() //Good night, Mr. Grace.
if(!awakened)
return
var/turf/T = get_turf(src)
T.visible_message("<span class='boldwarning'>[src] slowly stops rattling and falls still, His latch snapping closed.</span>")
playsound(loc, 'sound/weapons/batonextend.ogg', 100, 1)
name = initial(name)
desc = initial(desc)
icon_state = initial(icon_state)
gender = initial(gender)
force = initial(force)
force_bonus = initial(force_bonus)
awakened = FALSE
bloodthirst = 0
/obj/item/weapon/his_grace/proc/consume(mob/living/meal) //Here's your dinner, Mr. Grace.
if(!meal)
return
meal.visible_message("<span class='warning'>[src] swings open and devours [meal]!</span>", "<span class='his_grace big bold'>[src] consumes you!</span>")
meal.adjustBruteLoss(200)
playsound(meal, 'sound/misc/desceration-02.ogg', 75, 1)
playsound(src, 'sound/items/eatfood.ogg', 100, 1)
meal.forceMove(src)
force_bonus += HIS_GRACE_FORCE_BONUS
prev_bloodthirst = bloodthirst
if(prev_bloodthirst < HIS_GRACE_CONSUME_OWNER)
bloodthirst = max(LAZYLEN(contents), 1) //Never fully sated, and His hunger will only grow.
else
bloodthirst = HIS_GRACE_CONSUME_OWNER
update_stats()
/obj/item/weapon/his_grace/proc/adjust_bloodthirst(amt)
prev_bloodthirst = bloodthirst
if(prev_bloodthirst < HIS_GRACE_CONSUME_OWNER)
bloodthirst = Clamp(bloodthirst + amt, HIS_GRACE_SATIATED, HIS_GRACE_CONSUME_OWNER)
else
bloodthirst = Clamp(bloodthirst + amt, HIS_GRACE_CONSUME_OWNER, HIS_GRACE_FALL_ASLEEP)
update_stats()
/obj/item/weapon/his_grace/proc/update_stats()
flags &= ~NODROP
var/mob/living/master = get_atom_on_turf(src, /mob/living)
switch(bloodthirst)
if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP)
if(HIS_GRACE_CONSUME_OWNER > prev_bloodthirst)
master.visible_message("<span class='userdanger'>[src] enters a frenzy!</span>")
if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER)
flags |= NODROP
if(HIS_GRACE_STARVING > prev_bloodthirst)
master.visible_message("<span class='boldwarning'>[src] is starving!</span>", "<span class='his_grace big'>[src]'s bloodlust overcomes you. [src] must be fed, or you will become His meal.\
[force_bonus < 15 ? " And still, His power grows.":""]</span>")
force_bonus = max(force_bonus, 15)
if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING)
flags |= NODROP
if(HIS_GRACE_FAMISHED > prev_bloodthirst)
master.visible_message("<span class='warning'>[src] is very hungry!</span>", "<span class='his_grace big'>Spines sink into your hand. [src] must feed immediately.\
[force_bonus < 10 ? " His power grows.":""]</span>")
force_bonus = max(force_bonus, 10)
if(prev_bloodthirst >= HIS_GRACE_STARVING)
master.visible_message("<span class='warning'>[src] is now only very hungry!</span>", "<span class='his_grace big'>Your bloodlust recedes.</span>")
if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED)
if(HIS_GRACE_HUNGRY > prev_bloodthirst)
master.visible_message("<span class='warning'>[src] is getting hungry.</span>", "<span class='his_grace big'>You feel [src]'s hunger within you.\
[force_bonus < 5 ? " His power grows.":""]</span>")
force_bonus = max(force_bonus, 5)
if(prev_bloodthirst >= HIS_GRACE_FAMISHED)
master.visible_message("<span class='warning'>[src] is now only somewhat hungry.</span>", "<span class='his_grace'>[src]'s hunger recedes a little...</span>")
if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY)
if(HIS_GRACE_PECKISH > prev_bloodthirst)
master.visible_message("<span class='warning'>[src] is feeling snackish.</span>", "<span class='his_grace'>[src] begins to hunger.</span>")
if(prev_bloodthirst >= HIS_GRACE_HUNGRY)
master.visible_message("<span class='warning'>[src] is now only a little peckish.</span>", "<span class='his_grace big'>[src]'s hunger recedes somewhat...</span>")
if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH)
if(prev_bloodthirst >= HIS_GRACE_PECKISH)
master.visible_message("<span class='warning'>[src] is satiated.</span>", "<span class='his_grace big'>[src]'s hunger recedes...</span>")
force = initial(force) + force_bonus

View File

@@ -151,7 +151,7 @@
item_state = "artistic_toolbox"
max_combined_w_class = 20
storage_slots = 10
w_class = 5 //Holds more than a regular toolbox!
w_class = WEIGHT_CLASS_GIGANTIC //Holds more than a regular toolbox!
/obj/item/weapon/storage/toolbox/artistic/New()
..()
@@ -165,216 +165,3 @@
new/obj/item/stack/cable_coil/orange(src)
new/obj/item/stack/cable_coil/cyan(src)
new/obj/item/stack/cable_coil/white(src)
#define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep.
#define HIS_GRACE_PECKISH 30 //Slightly hungry. Slightly increased damage and nothing else.
#define HIS_GRACE_HUNGRY 60 //Getting closer. Increased danage and slight healing. It also starts eating anyone around it if it's left on the ground.
#define HIS_GRACE_FAMISHED 90 //Dangerous. Highly increased damage, good healing, and stun resist. It also becomes nodrop at this point.
#define HIS_GRACE_STARVING 110 //Incredibly close to breaking loose. Extreme damage and healing, and stun immunity.
#define HIS_GRACE_CONSUME_OWNER 120 //You're dead, kiddo. The toolbox consumes its owner at this point and resets to zero.
#define HIS_GRACE_FALL_ASLEEP 150 //If it reaches this point, it falls asleep and resets to zero.
//His Grace is a very special weapon granted only to traitor chaplains.
//When awakened through sacrifice, it thirsts for blood and begins ticking a "bloodthirst" counter.
//As His Grace grows hungrier, it grants its wielder various benefits.
//If the wielder fails to feed His Grace in time, it will devour them.
//Leaving His Grace alone for some time will reset its timer and put it to sleep.
//Using His Grace effectively is a delicate balancing act of keeping it hungry enough to induce benefits but sated enough to let you live.
/obj/item/weapon/storage/toolbox/artistic/his_grace
name = "artistic toolbox"
desc = "A toolbox painted bright green. Looking at it makes you feel uneasy."
origin_tech = "combat=4;engineering=4;syndicate=2"
var/awakened = 0
var/bloodthirst = HIS_GRACE_SATIATED
var/victims = 0
var/list/warning_messages = list("peckish", "hungry", "famished", "starving", "consume") //Messages that have NOT been shown
/obj/item/weapon/storage/toolbox/artistic/his_grace/Destroy()
for(var/mob/living/L in src)
L.forceMove(get_turf(src))
return ..()
/obj/item/weapon/storage/toolbox/artistic/his_grace/attack_self(mob/living/user)
if(!awakened)
user << "<span class='notice'>[src] begins to vibrate...</span>"
addtimer(CALLBACK(src, .proc/awaken), 50)
/obj/item/weapon/storage/toolbox/artistic/his_grace/attack(mob/living/M, mob/user)
if(awakened && M.stat)
consume(M)
else
..()
/obj/item/weapon/storage/toolbox/artistic/his_grace/examine(mob/user)
..()
if(awakened)
if(victims)
user << "You hear the distant murmuring of [victims] victims to [src]."
switch(bloodthirst)
if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH)
user << "<span class='danger'>[src] isn't very hungry. Not yet.</span>"
if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY)
user << "<span class='danger'>[src] would like a snack.</span>"
if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED)
user << "<span class='warning'>[src] is quite hungry now...</span>"
if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING)
user << "<span class='boldannounce'>[src] is openly salivating at the sight of you. Be careful.</span>"
if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER)
user << "<span class='boldwarning'>You walk a fine line. [src] is very close to devouring you.</span>"
if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP)
user << "<span class='boldwarning'>[src] is shaking violently and staring directly at you.</span>"
/obj/item/weapon/storage/toolbox/artistic/his_grace/relaymove(mob/living/user) //Allows changelings, etc. to climb out of the box after they revive
user.forceMove(get_turf(src))
user.visible_message("<span class='warning'>[user] scrambles out of [src]!</span>", "<span class='notice'>You climb out of [src]!</span>")
/obj/item/weapon/storage/toolbox/artistic/his_grace/process()
if(!awakened)
return
adjust_bloodthirst(1 + victims) //Maybe adjust this?
change_phases()
if(ishuman(loc))
var/mob/living/carbon/human/master = loc
switch(bloodthirst) //Handles benefits outside of stun absorbs, which are in change_phases()
if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED)
master.adjustBruteLoss(-1)
master.adjustFireLoss(-1)
master.adjustToxLoss(-0.5)
master.adjustOxyLoss(-5)
master.adjustCloneLoss(-0.5)
if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING)
master.adjustBruteLoss(-2)
master.adjustFireLoss(-2)
master.adjustToxLoss(-1)
master.adjustOxyLoss(-10)
master.adjustCloneLoss(-1)
master.AdjustStunned(-1)
master.AdjustWeakened(-1)
if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER)
master.adjustBruteLoss(-20) //The biggest danger at this point is the toolbox itself
master.adjustFireLoss(-20)
master.adjustToxLoss(-10)
master.setOxyLoss(0)
master.adjustCloneLoss(-5)
master.add_stun_absorption("his_grace", 15, 1, null, null, "[src] shields them from harm!")
if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP)
master.visible_message("<span class='boldwarning'>[src] turns on its master!</span>", "<span class='userdanger'>[src] turns on you!</span>")
playsound(src, 'sound/effects/tendril_destroyed.ogg', 100, 0)
master.Weaken(3)
master.adjustBruteLoss(100)
playsound(master, 'sound/misc/desceration-03.ogg', 100, )
playsound(master, 'sound/effects/splat.ogg', 100, 0)
master.emote("scream")
consume(master) //Y O U H A V E F A I L E D M E
if(HIS_GRACE_FALL_ASLEEP to INFINITY)
drowse()
else
if(bloodthirst >= HIS_GRACE_CONSUME_OWNER)
if(bloodthirst >= HIS_GRACE_FALL_ASLEEP)
drowse()
return
for(var/mob/living/L in range(1, src))
if(L.loc == src)
continue
if(!L.stat)
L.visible_message("<span class='warning'>[src] lunges at [L]!</span>", "<span class='userdanger'>[src] lunges at you!</span>")
playsound(L, 'sound/effects/splat.ogg', 50, 1)
playsound(L, 'sound/misc/desceration-01.ogg', 50, 1)
L.adjustBruteLoss(force)
return //Only one at a tome
else
consume(L)
return
/obj/item/weapon/storage/toolbox/artistic/his_grace/proc/awaken() //Attempts to awaken. This can only occur if organs fill the box, and gives out a global warning.
if(awakened)
return
var/organ_count = 0
for(var/obj/item/organ/O in src) //Doesn't have to be any kind, we're not picky
organ_count++
if(organ_count < 5)
if(isliving(loc))
loc = get_turf(src)
visible_message("<span class='warning'>[src] stops shaking. It needs more organs.</span>")
else
for(var/obj/item/organ/O in src)
qdel(O) //delicious flesh
name = "His Grace"
desc = "A bloodthirsty artefact created by a profane rite."
gender = MALE
visible_message("<span class='boldwarning'>[src] begins to rattle. It thirsts.</span>") //rattle me bones capn
adjust_bloodthirst(1)
awakened = 1
send_to_playing_players("<span class='boldannounce'><font size=6>HIS GRACE THIRSTS FOR BLOOD</font></span>")
send_to_playing_players('sound/effects/his_grace_awaken.ogg')
icon_state = "green_awakened"
START_PROCESSING(SSprocessing, src)
/obj/item/weapon/storage/toolbox/artistic/his_grace/proc/drowse() //Falls asleep, spitting out all victims and resetting to zero.
if(!awakened)
return
visible_message("<span class='boldwarning'>[src] slowly stops rattling and falls still... but it still lurks in its sleep.</span>")
name = initial(name)
desc = initial(desc)
icon_state = initial(icon_state)
gender = initial(gender)
awakened = 0
victims = 0
warning_messages = initial(warning_messages)
adjust_bloodthirst(-bloodthirst)
STOP_PROCESSING(SSprocessing, src)
send_to_playing_players("<span class='boldannounce'><font size=6>HIS GRACE HAS RETURNED TO SLUMBER</font></span>")
send_to_playing_players('sound/effects/pope_entry.ogg')
for(var/mob/living/L in src)
L.forceMove(get_turf(src))
/obj/item/weapon/storage/toolbox/artistic/his_grace/proc/adjust_bloodthirst(amt)
bloodthirst = min(max(1, bloodthirst + amt), HIS_GRACE_FALL_ASLEEP)
/obj/item/weapon/storage/toolbox/artistic/his_grace/proc/consume(mob/living/meal)
if(!meal)
return
meal.adjustBruteLoss(200)
meal.visible_message("<span class='warning'>[src] pulls [meal] into itself!</span>", "<span class='userdanger'>[src] consumes you!</span>")
playsound(meal, 'sound/misc/desceration-02.ogg', 75, 1)
playsound(src, 'sound/items/eatfood.ogg', 100, 1)
meal.forceMove(src)
adjust_bloodthirst(-(bloodthirst - victims)) //Never fully sated, and it starts off higher as it eats
victims++
/obj/item/weapon/storage/toolbox/artistic/his_grace/proc/change_phases()
switch(bloodthirst)
if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH)
force = 15 //Constantly keep its power low if it's this full
if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY)
if(is_string_in_list("peckish", warning_messages))
remove_strings_from_list("peckish", warning_messages)
loc.visible_message("<span class='warning'>[src] is feeling snackish.</span>", "<span class='danger'>[src] begins to hunger. Its damage has been increased.</span>")
force = 20
spawn(400) //To prevent spam
if(src)
warning_messages += "peckish"
if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED)
if(is_string_in_list("hungry", warning_messages))
remove_strings_from_list("hungry", warning_messages)
loc.visible_message("<span class='warning'>[src] is getting hungry. Its power grows.</span>", "<span class='boldannounce'>You feel a sense of hunger come over you. [src]'s damage has increased.</span>")
force = 25
spawn(400)
if(src)
warning_messages += "hungry"
if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING)
if(is_string_in_list("famished", warning_messages))
remove_strings_from_list("famished", warning_messages)
loc.visible_message("<span class='warning'>[src] is very hungry...</span>", "<span class='boldwarning'>Bloodlust overcomes you. You are now resistant to stuns.</span>")
force = 30
spawn(400)
if(src)
warning_messages += "famished"
if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER)
if(is_string_in_list("starving", warning_messages))
remove_strings_from_list("starving", warning_messages)
loc.visible_message("<span class='boldwarning'>[src] is starving!</span>", "<span class='userdanger'>[src] is at its full power! Feed it quickly or you will be consumed!</span>")
force = 40
spawn(400)
if(src)
warning_messages += "starving"

View File

@@ -63,6 +63,9 @@
.colo-pod .wrap {border-color: #256fb9;}
.colo-pod .content {border-color: #000000; background-color: #000000;}
.hisgrace .wrap {border-color: #7C1414;}
.hisgrace .content {color: #15D512; border-color: #9D1414; background-color: #861414;}
/* TG: Themes */
/* ScreenUI */
.midnight .wrap {border-color: #2B2B33;}

View File

@@ -1193,11 +1193,11 @@ var/list/uplink_items = list() // Global list so we only initialize this once.
/datum/uplink_item/role_restricted/his_grace
name = "His Grace"
desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, it will thirst for blood and must be used to kill in order to sate that thirst. \
His Grace grants benefits to its wielder, with a more intense hunger equaling more benefits, but be wary: if it gets too hungry, it will kill you and destroy your body. \
If you leave His Grace alone for some time, it will eventually return to its inactive state. \
To activate His Grace, place five assorted organs inside of it and use it in your hand."
item = /obj/item/weapon/storage/toolbox/artistic/his_grace
desc = "An incredibly dangerous weapon recovered from a station overcome by the grey tide. Once activated, He will thirst for blood and must be used to kill to sate that thirst. \
His Grace grants gradual regeneration and complete stun immunity to His wielder, but be wary: if He gets too hungry, He will become impossible to drop and eventually kill you if not fed. \
However, if left alone for long enough, He will fall back to slumber. \
To activate His Grace, simply unlatch Him."
item = /obj/item/weapon/his_grace
cost = 20
restricted_roles = list("Chaplain")
surplus = 5 //Very low chance to get it in a surplus crate even without being the chaplain

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -13,6 +13,8 @@ em {font-style: normal; font-weight: bold;}
.italics { font-style: italic;}
.bold { font-weight: bold;}
.prefix { font-weight: bold;}
.ooc { font-weight: bold;}
@@ -135,6 +137,7 @@ h1.alert, h2.alert {color: #000000;}
.greentext {color: #00FF00; font-size: 3;}
.redtext {color: #FF0000; font-size: 3;}
.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
BIG IMG.icon {width: 32px; height: 32px;}

View File

@@ -749,6 +749,7 @@
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
#include "code\game\objects\items\weapons\his_grace.dm"
#include "code\game\objects\items\weapons\holosign_creator.dm"
#include "code\game\objects\items\weapons\holy_weapons.dm"
#include "code\game\objects\items\weapons\kitchen.dm"