mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 18:22:39 +00:00
Co-authored-by: Changelogs <action@github.com> Co-authored-by: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Co-authored-by: Guti <32563288+TheCaramelion@users.noreply.github.com> Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com> Co-authored-by: Kashargul <KashL@t-online.de>
136 lines
4.0 KiB
Plaintext
136 lines
4.0 KiB
Plaintext
/datum/technomancer/spell/aspect_aura
|
|
name = "Aspect Aura"
|
|
desc = "This aura function takes on the properties of other functions based on which aspect is introduced to it, applying \
|
|
it to everyone nearby."
|
|
cost = 200
|
|
obj_path = /mob/living/carbon/human/proc/technomancer_aspect_aura
|
|
|
|
/mob/living/carbon/human/proc/technomancer_aspect_aura()
|
|
place_spell_in_hand(/obj/item/spell/aspect_aura)
|
|
|
|
/obj/item/spell/aspect_aura
|
|
name = "aspect aura"
|
|
desc = "Combine this with another spell to finish the function."
|
|
icon_state = "aspect_bolt"
|
|
cast_methods = CAST_COMBINE
|
|
aspect = ASPECT_CHROMATIC
|
|
|
|
/obj/item/spell/aspect_aura/on_combine_cast(obj/item/W, var/mob/living/carbon/human/user)
|
|
if(istype(W, /obj/item/spell))
|
|
var/obj/item/spell/spell = W
|
|
if(!spell.aspect || spell.aspect == ASPECT_CHROMATIC)
|
|
to_chat(user, "<span class='warning'>You cannot combine \the [spell] with \the [src], as the aspects are incompatible.</span>")
|
|
return
|
|
user.drop_item(src)
|
|
src.loc = null
|
|
spawn(1)
|
|
switch(spell.aspect)
|
|
if(ASPECT_FIRE)
|
|
user.place_spell_in_hand(/obj/item/spell/aura/fire)
|
|
if(ASPECT_FROST)
|
|
user.place_spell_in_hand(/obj/item/spell/aura/frost)
|
|
if(ASPECT_BIOMED)
|
|
user.place_spell_in_hand(/obj/item/spell/aura/biomed)
|
|
qdel(src)
|
|
|
|
/obj/item/spell/aura
|
|
name = "aura template"
|
|
desc = "If you can read me, the game broke! Yay!"
|
|
icon_state = "generic"
|
|
cast_methods = null
|
|
aspect = ASPECT_CHROMATIC
|
|
var/glow_color = "#FFFFFF"
|
|
|
|
/obj/item/spell/aura/New()
|
|
..()
|
|
set_light(7, 4, l_color = glow_color)
|
|
START_PROCESSING(SSobj, src)
|
|
|
|
/obj/item/spell/aura/Destroy()
|
|
STOP_PROCESSING(SSobj, src)
|
|
..()
|
|
|
|
/obj/item/spell/aura/process()
|
|
return
|
|
|
|
/obj/item/spell/aura/fire
|
|
name = "heat aura"
|
|
desc = "Things are starting to heat up."
|
|
icon_state = "generic"
|
|
cast_methods = null
|
|
aspect = ASPECT_FIRE
|
|
glow_color = "#FF6A00"
|
|
|
|
/obj/item/spell/aura/fire/process()
|
|
if(!pay_energy(100))
|
|
qdel(src)
|
|
var/list/nearby_mobs = range(4,owner)
|
|
for(var/mob/living/carbon/human/H in nearby_mobs)
|
|
if(H == owner || H.mind && technomancers.is_antagonist(H.mind)) //Don't heat up allies.
|
|
continue
|
|
|
|
//We use hotspot_expose() to allow firesuits to protect from this aura.
|
|
var/turf/location = get_turf(H)
|
|
location.hotspot_expose(1000, 50, 1)
|
|
|
|
adjust_instability(1)
|
|
|
|
/obj/item/spell/aura/frost
|
|
name = "chilling aura"
|
|
desc = "Your enemies will find it hard to chase you if they freeze to death."
|
|
icon_state = "generic"
|
|
cast_methods = null
|
|
aspect = ASPECT_FROST
|
|
glow_color = "#FF6A00"
|
|
|
|
/obj/item/spell/aura/frost/process()
|
|
if(!pay_energy(100))
|
|
qdel(src)
|
|
var/list/nearby_mobs = range(4,owner)
|
|
for(var/mob/living/carbon/human/H in nearby_mobs)
|
|
if(H == owner || H.mind && technomancers.is_antagonist(H.mind)) //Don't chill allies.
|
|
continue
|
|
|
|
//We use hotspot_expose() to allow firesuits to protect from this aura.
|
|
var/turf/location = get_turf(H)
|
|
location.hotspot_expose(1, 50, 1)
|
|
|
|
adjust_instability(1)
|
|
|
|
|
|
|
|
/obj/item/spell/aura/biomed
|
|
name = "restoration aura"
|
|
desc = "Allows everyone, or just your allies, to slowly regenerate."
|
|
icon_state = "generic"
|
|
cast_methods = null
|
|
aspect = ASPECT_BIOMED
|
|
glow_color = "#0000FF"
|
|
var/regen_tick = 0
|
|
var/heal_allies_only = 1
|
|
|
|
/obj/item/spell/aura/biomed/process()
|
|
if(!pay_energy(75))
|
|
qdel(src)
|
|
regen_tick++
|
|
if(regen_tick % 5 == 0)
|
|
var/list/nearby_mobs = range(4,owner)
|
|
var/list/mobs_to_heal = list()
|
|
if(heal_allies_only)
|
|
for(var/mob/living/carbon/human/H in nearby_mobs) //Heal our apprentices
|
|
if(H.mind && technomancers.is_antagonist(H.mind))
|
|
mobs_to_heal |= H
|
|
for(var/mob/living/simple_mob/hostile/SAH in nearby_mobs) //Heal our controlled mobs
|
|
if(owner in SAH.friends)
|
|
mobs_to_heal |= SAH
|
|
else
|
|
mobs_to_heal = nearby_mobs //Heal everyone!
|
|
for(var/mob/living/L in mobs_to_heal)
|
|
L.adjustBruteLoss(-5)
|
|
L.adjustFireLoss(-5)
|
|
adjust_instability(2)
|
|
|
|
/obj/item/spell/aura/biomed/on_use_cast(mob/living/user)
|
|
heal_allies_only = !heal_allies_only
|
|
to_chat(user, "Your aura will now heal [heal_allies_only ? "your allies" : "everyone"] near you.")
|