Merge pull request #14032 from kappa-sama/kaiowhat

two toggled self-buffing spells that have no relation to any anime or video game in particular
This commit is contained in:
silicons
2021-01-13 16:50:50 -07:00
committed by GitHub
12 changed files with 171 additions and 4 deletions

View File

@@ -40,6 +40,9 @@
#define STATUS_EFFECT_DETERMINED /datum/status_effect/determined //currently in a combat high from being seriously wounded
#define STATUS_EFFECT_MANTRA /datum/status_effect/mantra // a toggled self buff that makes you stronger and more resilient, but drains stamina over time
#define STATUS_EFFECT_ASURA /datum/status_effect/asura // like a weaker version of mantra, drains HP instead of stamina and has no armor
/////////////
// DEBUFFS //
/////////////

View File

@@ -651,3 +651,120 @@
if(D.severity == DISEASE_SEVERITY_POSITIVE)
continue
D.cure()
/datum/status_effect/mantra // available to wizards and admins alone, currently
id = "Mantra"
examine_text = "<span class='notice'>Their aura is filled with yellow energy!</span>"
alert_type = null
var/damageboost = 10
var/woundboost = 5
var/prev_hair_color
var/powerup
var/powerdown
/datum/status_effect/mantra/on_apply()
. = ..()
if(iscarbon(owner))
var/mob/living/carbon/human/H = owner
playsound(H, 'sound/magic/powerup.ogg', 50, 1)
H.add_filter("mantra_glow", 2, list("type" = "outline", "color" = "#edfa347a", "size" = 2))
prev_hair_color = H.hair_color
H.hair_color = "ffe11e"
H.update_hair()
ADD_TRAIT(H, TRAIT_PUGILIST, "Mantra")
ADD_TRAIT(H, TRAIT_NOSOFTCRIT, "Mantra")
ADD_TRAIT(H, TRAIT_STUNIMMUNE, "Mantra")
ADD_TRAIT(H, TRAIT_PUSHIMMUNE, "Mantra")
ADD_TRAIT(H, TRAIT_NOGUNS, "Mantra")
H.dna.species.punchdamagehigh += damageboost
H.dna.species.punchdamagelow += damageboost
H.dna.species.punchwoundbonus += woundboost
H.physiology.brute_mod *= 0.9 // slightly resilient against lethal damage, but...
H.physiology.burn_mod *= 0.9
H.physiology.stamina_mod *= 0.5 // very resistant to non-lethal damage, because they're already draining stamina every second
to_chat(H, "<span class='notice'>Your inner mantra coalesces around you, granting you incredible strength and durability - but at what cost?</span>")
/datum/status_effect/mantra/tick()
. = ..()
if(owner.health < HEALTH_THRESHOLD_FULLCRIT)
owner.remove_status_effect(STATUS_EFFECT_MANTRA)
return
if(owner.combat_flags & COMBAT_FLAG_HARD_STAMCRIT)
owner.remove_status_effect(STATUS_EFFECT_MANTRA)
return
if(iscarbon(owner))
var/mob/living/carbon/human/C = owner
C.adjustBruteLoss(-1) // slightly resilient against lethal damage
C.adjustFireLoss(-1)
C.adjustStaminaLoss(3) // in testing i personally found that 2/sec was too minimal and 4/sec was too much
/*if(SEND_SIGNAL(owner, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) // turning on combat mode flares up your aura
else*/
/datum/status_effect/mantra/on_remove()
. = ..()
if(iscarbon(owner))
var/mob/living/carbon/human/M = owner
playsound(M, 'sound/magic/powerdown.ogg', 50, 1)
M.remove_filter("mantra_glow")
M.hair_color = prev_hair_color
M.update_hair()
REMOVE_TRAIT(M, TRAIT_PUGILIST, "Mantra")
REMOVE_TRAIT(M, TRAIT_NOSOFTCRIT, "Mantra")
REMOVE_TRAIT(M, TRAIT_STUNIMMUNE, "Mantra")
REMOVE_TRAIT(M, TRAIT_PUSHIMMUNE, "Mantra")
REMOVE_TRAIT(M, TRAIT_NOGUNS, "Mantra")
M.dna.species.punchdamagehigh -= damageboost
M.dna.species.punchdamagelow -= damageboost
M.dna.species.punchwoundbonus -= woundboost
M.physiology.brute_mod /= 0.9
M.physiology.burn_mod /= 0.9
M.physiology.stamina_mod /= 0.5
to_chat(M, "<span class='notice'>Your inner mantra collapses, for now.</span>")
/datum/status_effect/asura // mfw miner gear
id = "Asura"
examine_text = "<span class='notice'>Their aura is filled with red-hot rage!</span>"
alert_type = null
var/damageboost = 10
var/woundboost = 5
/datum/status_effect/asura/on_apply()
. = ..()
if(iscarbon(owner))
var/mob/living/carbon/human/H = owner
playsound(H, 'sound/magic/powerup.ogg', 50, 1)
H.add_filter("asura_glow", 2, list("type" = "outline", "color" = "#fc21217a", "size" = 2))
ADD_TRAIT(H, TRAIT_PUGILIST, "Asura")
H.dna.species.punchdamagehigh += damageboost
H.dna.species.punchdamagelow += damageboost
H.dna.species.punchwoundbonus += woundboost
to_chat(H, "<span class='notice'>Your anger unleashes in a crimson blaze around you and corrosive power fills your muscles.</span>")
/datum/status_effect/asura/tick()
. = ..()
if(owner.health < HEALTH_THRESHOLD_CRIT)
owner.remove_status_effect(STATUS_EFFECT_ASURA)
return
if(owner.combat_flags & COMBAT_FLAG_HARD_STAMCRIT)
owner.remove_status_effect(STATUS_EFFECT_ASURA)
return
if(iscarbon(owner))
var/mob/living/carbon/human/C = owner
C.adjustBruteLoss(1) // drains 1 hp per second. You're gonna need some Senzu Cores.
C.adjustStaminaLoss(-2) // angry man punch a lot
/*if(SEND_SIGNAL(owner, COMSIG_COMBAT_MODE_CHECK, COMBAT_MODE_ACTIVE)) // turning on combat mode flares up your aura
else*/
/datum/status_effect/asura/on_remove()
. = ..()
if(iscarbon(owner))
var/mob/living/carbon/human/M = owner
playsound(M, 'sound/magic/powerdown.ogg', 50, 1)
M.remove_filter("asura_glow")
REMOVE_TRAIT(M, TRAIT_PUGILIST, "Asura")
M.dna.species.punchdamagehigh -= damageboost
M.dna.species.punchdamagelow -= damageboost
M.dna.species.punchwoundbonus -= woundboost
to_chat(M, "<span class='notice'>You calm yourself, and your unnatural strength dissipates.</span>")

View File

@@ -38,7 +38,7 @@
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_ROBELESS]'>Robeless</A><BR>"
dat += "<I>Your apprentice is training to cast spells without their robes. They know Knock and Mindswap.</I><BR>"
dat += "<A href='byond://?src=[REF(src)];school=[APPRENTICE_MARTIAL]'>Martial Artist</a><BR>"
dat += "<I>Your apprentice is training in ancient martial arts. They know the Plasmafist and Nuclear Fist.</I><BR>"
dat += "<I>Your apprentice is training in ancient martial arts. They know an Inner Mantra and the Nuclear Fist technique.</I><BR>"
user << browse(dat, "window=radio")
onclose(user, "radio")
return

View File

@@ -189,6 +189,10 @@
name = "Mutate"
spell_type = /obj/effect/proc_holder/spell/targeted/genetic/mutate
/datum/spellbook_entry/mantra
name = "Inner Mantra"
spell_type = /obj/effect/proc_holder/spell/self/mantra
/datum/spellbook_entry/jaunt
name = "Ethereal Jaunt"
spell_type = /obj/effect/proc_holder/spell/targeted/ethereal_jaunt

View File

@@ -181,8 +181,8 @@
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned stealthy, robeless spells. You are able to cast knock and mindswap.")
if(APPRENTICE_MARTIAL)
owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/touch/nuclear_fist(null))
H.put_in_hands(new /obj/item/book/granter/martial/plasma_fist(H))
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned mystical martial abilities. You are also able to use the Nuclear Fist at will.")
owner.AddSpell(new /obj/effect/proc_holder/spell/self/mantra(null))
to_chat(owner, "<B>Your service has not gone unrewarded, however. Studying under [master.current.real_name], you have learned to control your Inner Mantra. You are also able to use the Nuclear Fist at will.")
/datum/antagonist/wizard/apprentice/create_objectives()
var/datum/objective/protect/new_objective = new /datum/objective/protect

View File

@@ -1104,7 +1104,7 @@
if(1)
new /obj/item/mayhem(src)
if(2)
new /obj/item/gun/ballistic/revolver/doublebarrel/super(src)
new /obj/item/book/granter/spell/asura(src)
if(3)
new /obj/item/guardiancreator(src)
@@ -1187,6 +1187,13 @@
unique_reskin = null
sawn_off = TRUE
/obj/item/book/granter/spell/asura
spell = /obj/effect/proc_holder/spell/self/asura
spellname = "asuras wrath"
icon_state = "bookasura"
desc = "This crimson novel emanates rage incarnate."
remarks = list("Kaio-What?", "It can only be sustained for a short time...", "It's like a massive upsurge of energy...", "Takes a heavy toll on the user's body...?", "Extra arms not included...", "There's stronger levels? Why aren't they in the book...")
//Colossus
/obj/structure/closet/crate/necropolis/colossus
name = "colossus chest"

View File

@@ -0,0 +1,35 @@
/obj/effect/proc_holder/spell/self/mantra
name = "Inner Mantra"
desc = "Control your Inner Mantra, gaining strength and durability for a cost."
clothes_req = NONE
mobs_whitelist = list(/mob/living/carbon/human)
charge_max = 100
antimagic_allowed = TRUE
invocation = "SU'UP'AH S'EI YEN"
invocation_type = "shout"
level_max = 0
cooldown_min = 100
/obj/effect/proc_holder/spell/self/mantra/cast(mob/living/carbon/human/user)
if(user.has_status_effect(STATUS_EFFECT_MANTRA))
user.remove_status_effect(STATUS_EFFECT_MANTRA)
else
user.apply_status_effect(STATUS_EFFECT_MANTRA)
/obj/effect/proc_holder/spell/self/asura
name = "Asura's Wrath"
desc = "Unleash your rage as corrosive power fills your muscles."
clothes_req = NONE
mobs_whitelist = list(/mob/living/carbon/human)
charge_max = 100
antimagic_allowed = TRUE
invocation = "KYE Y'O'KEN"
invocation_type = "shout"
level_max = 0
cooldown_min = 100
/obj/effect/proc_holder/spell/self/asura/cast(mob/living/carbon/human/user)
if(user.has_status_effect(STATUS_EFFECT_ASURA))
user.remove_status_effect(STATUS_EFFECT_ASURA)
else
user.apply_status_effect(STATUS_EFFECT_ASURA)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 20 KiB

BIN
sound/magic/powerdown.ogg Normal file

Binary file not shown.

BIN
sound/magic/powerup.ogg Normal file

Binary file not shown.

View File

@@ -3402,6 +3402,7 @@
#include "code\modules\spells\spell_types\taeclowndo.dm"
#include "code\modules\spells\spell_types\telepathy.dm"
#include "code\modules\spells\spell_types\the_traps.dm"
#include "code\modules\spells\spell_types\togglebuff.dm"
#include "code\modules\spells\spell_types\touch_attacks.dm"
#include "code\modules\spells\spell_types\trigger.dm"
#include "code\modules\spells\spell_types\turf_teleport.dm"