@@ -120,7 +120,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
var/list/mobs_blacklist //The opposite of the above.
|
||||
var/stat_allowed = 0 //see if it requires being conscious/alive, need to set to 1 for ghostpells
|
||||
var/phase_allowed = 0 // If true, the spell can be cast while phased, eg. blood crawling, ethereal jaunting
|
||||
var/antimagic_allowed = TRUE // If false, the spell cannot be cast while under the effect of antimagic
|
||||
var/antimagic_allowed = FALSE // If false, the spell cannot be cast while under the effect of antimagic
|
||||
var/invocation = "HURP DURP" //what is uttered when the wizard casts the spell
|
||||
var/invocation_emote_self = null
|
||||
var/invocation_type = "none" //can be none, whisper, emote and shout
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
GLOBAL_VAR_INIT(curse_of_madness_triggered, FALSE)
|
||||
|
||||
/proc/curse_of_madness(mob/user, message)
|
||||
if(user) //in this case either someone holding a spellbook or a badmin
|
||||
to_chat(user, "<span class='warning'>You sent a curse of madness with the message \"[message]\"!</span>")
|
||||
message_admins("[ADMIN_LOOKUPFLW(user)] sent a curse of madness with the message \"[message]\"!")
|
||||
log_game("[key_name(user)] sent a curse of madness with the message \"[message]\"!")
|
||||
|
||||
GLOB.curse_of_madness_triggered = message // So latejoiners are also afflicted.
|
||||
|
||||
deadchat_broadcast("<span class='deadsay'>A <span class='name'>Curse of Madness</span> has stricken the station, shattering their minds with the awful secret: \"<span class='big hypnophrase'>[message]</span>\"</span>")
|
||||
|
||||
for(var/mob/living/carbon/human/H in GLOB.player_list)
|
||||
if(H.stat == DEAD)
|
||||
continue
|
||||
var/turf/T = get_turf(H)
|
||||
if(T && !is_station_level(T.z))
|
||||
continue
|
||||
if(H.anti_magic_check(TRUE, FALSE, TRUE))
|
||||
to_chat(H, "<span class='notice'>You have a strange feeling for a moment, but then it passes.</span>")
|
||||
continue
|
||||
give_madness(H, message)
|
||||
|
||||
/proc/give_madness(mob/living/carbon/human/H, message)
|
||||
H.playsound_local(H,'sound/magic/curse.ogg',40,1)
|
||||
to_chat(H, "<span class='reallybig hypnophrase'>[message]</span>")
|
||||
to_chat(H, "<span class='warning'>Your mind shatters!</span>")
|
||||
switch(rand(1,10))
|
||||
if(1 to 3)
|
||||
H.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
H.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
if(4 to 6)
|
||||
H.gain_trauma_type(BRAIN_TRAUMA_SEVERE, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
if(7 to 8)
|
||||
H.gain_trauma_type(BRAIN_TRAUMA_MAGIC, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
if(9 to 10)
|
||||
H.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, TRAUMA_RESILIENCE_LOBOTOMY)
|
||||
@@ -5,7 +5,7 @@
|
||||
include_user = 1
|
||||
range = -1
|
||||
clothes_req = NONE
|
||||
item_type = /obj/item/twohanded/pitchfork/demonic
|
||||
item_type = /obj/item/pitchfork/demonic
|
||||
|
||||
school = "conjuration"
|
||||
charge_max = 150
|
||||
@@ -15,10 +15,10 @@
|
||||
action_background_icon_state = "bg_demon"
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/greater
|
||||
item_type = /obj/item/twohanded/pitchfork/demonic/greater
|
||||
item_type = /obj/item/pitchfork/demonic/greater
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/conjure_item/summon_pitchfork/ascended
|
||||
item_type = /obj/item/twohanded/pitchfork/demonic/ascended
|
||||
item_type = /obj/item/pitchfork/demonic/ascended
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/conjure_item/violin
|
||||
item_type = /obj/item/instrument/violin/golden
|
||||
@@ -118,14 +118,14 @@
|
||||
revert_cast()
|
||||
return ..()
|
||||
else
|
||||
user.notransform = TRUE
|
||||
user.mob_transforming = TRUE
|
||||
user.fakefire()
|
||||
to_chat(src, "<span class='warning'>You begin to phase back into sinful flames.</span>")
|
||||
if(do_mob(user,user,150))
|
||||
user.infernalphaseout()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You must remain still while exiting.</span>")
|
||||
user.notransform = FALSE
|
||||
user.mob_transforming = FALSE
|
||||
user.fakefireextinguish()
|
||||
start_recharge()
|
||||
return
|
||||
@@ -149,11 +149,11 @@
|
||||
ExtinguishMob()
|
||||
forceMove(holder)
|
||||
holder = holder
|
||||
notransform = 0
|
||||
mob_transforming = 0
|
||||
fakefireextinguish()
|
||||
|
||||
/mob/living/proc/infernalphasein()
|
||||
if(notransform)
|
||||
if(mob_transforming)
|
||||
to_chat(src, "<span class='warning'>You're too busy to jaunt in.</span>")
|
||||
return FALSE
|
||||
fakefire()
|
||||
|
||||
@@ -22,14 +22,14 @@
|
||||
INVOKE_ASYNC(src, .proc/do_jaunt, target)
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/do_jaunt(mob/living/target)
|
||||
target.notransform = 1
|
||||
target.mob_transforming = 1
|
||||
var/turf/mobloc = get_turf(target)
|
||||
var/obj/effect/dummy/phased_mob/spell_jaunt/holder = new /obj/effect/dummy/phased_mob/spell_jaunt(mobloc)
|
||||
new jaunt_out_type(mobloc, target.dir)
|
||||
target.ExtinguishMob()
|
||||
target.forceMove(holder)
|
||||
target.reset_perspective(holder)
|
||||
target.notransform=0 //mob is safely inside holder now, no need for protection.
|
||||
target.mob_transforming=0 //mob is safely inside holder now, no need for protection.
|
||||
jaunt_steam(mobloc)
|
||||
|
||||
sleep(jaunt_duration)
|
||||
@@ -102,4 +102,4 @@
|
||||
return
|
||||
|
||||
/obj/effect/dummy/phased_mob/spell_jaunt/bullet_act(blah)
|
||||
return BULLET_ACT_FORCE_PIERCE
|
||||
return BULLET_ACT_FORCE_PIERCE
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
range = 0
|
||||
cast_sound = null
|
||||
mobs_whitelist = list(/mob/living/carbon/human)
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
action_icon_state = "mime"
|
||||
action_background_icon_state = "bg_mime"
|
||||
@@ -40,6 +41,7 @@
|
||||
|
||||
action_icon_state = "mime"
|
||||
action_background_icon_state = "bg_mime"
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/mime/speak/Trigger(mob/user, skip_can_cast = TRUE)
|
||||
if(user.mind?.miming)
|
||||
@@ -76,6 +78,7 @@
|
||||
|
||||
action_icon_state = "mime"
|
||||
action_background_icon_state = "bg_mime"
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/forcewall/mime/Trigger(mob/user, skip_can_cast = TRUE)
|
||||
if(user.mind)
|
||||
@@ -107,6 +110,7 @@
|
||||
action_icon_state = "mime"
|
||||
action_background_icon_state = "bg_mime"
|
||||
base_icon_state = "mime"
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
|
||||
/obj/effect/proc_holder/spell/aimed/finger_guns/Trigger(mob/user, skip_can_cast = TRUE)
|
||||
@@ -137,6 +141,7 @@
|
||||
action_icon_state = "mime"
|
||||
action_background_icon_state = "bg_mime"
|
||||
hand_path = /obj/item/melee/touch_attack/mimerope
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/touch/mimerope/Trigger(mob/user, skip_can_cast = TRUE)
|
||||
if(user.mind)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
W.damage_bonus += spell_level * 20 //You do more damage when you upgrade the spell
|
||||
W.start_turf = start
|
||||
M.forceMove(W)
|
||||
M.notransform = 1
|
||||
M.mob_transforming = 1
|
||||
M.status_flags |= GODMODE
|
||||
|
||||
//Wizard Version of the Immovable Rod
|
||||
@@ -37,7 +37,7 @@
|
||||
/obj/effect/immovablerod/wizard/Destroy()
|
||||
if(wizard)
|
||||
wizard.status_flags &= ~GODMODE
|
||||
wizard.notransform = 0
|
||||
wizard.mob_transforming = 0
|
||||
wizard.forceMove(get_turf(src))
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -13,3 +13,4 @@
|
||||
summon_type = list("/obj/item/a_gift")
|
||||
summon_lifespan = 0
|
||||
summon_amt = 5
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
action_icon = 'icons/mob/actions/actions_minor_antag.dmi'
|
||||
action_icon_state = "ninja_cloak"
|
||||
action_background_icon_state = "bg_alien"
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/shadowwalk/cast(list/targets,mob/living/user = usr)
|
||||
var/L = user.loc
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
if(stored.mind)
|
||||
stored.mind.transfer_to(shape)
|
||||
stored.forceMove(src)
|
||||
stored.notransform = TRUE
|
||||
stored.mob_transforming = TRUE
|
||||
if(source.convert_damage)
|
||||
var/damage_percent = (stored.maxHealth - stored.health)/stored.maxHealth;
|
||||
var/damapply = damage_percent * shape.maxHealth;
|
||||
@@ -148,7 +148,7 @@
|
||||
restoring = TRUE
|
||||
qdel(slink)
|
||||
stored.forceMove(get_turf(src))
|
||||
stored.notransform = FALSE
|
||||
stored.mob_transforming = FALSE
|
||||
if(shape.mind)
|
||||
shape.mind.transfer_to(stored)
|
||||
if(death)
|
||||
|
||||
@@ -76,20 +76,6 @@
|
||||
break
|
||||
M.dropItemToGround(item_to_retrieve)
|
||||
|
||||
if(iscarbon(M)) //Edge case housekeeping
|
||||
var/mob/living/carbon/C = M
|
||||
if(C.stomach_contents && (item_to_retrieve in C.stomach_contents))
|
||||
C.stomach_contents -= item_to_retrieve
|
||||
for(var/X in C.bodyparts)
|
||||
var/obj/item/bodypart/part = X
|
||||
if(item_to_retrieve in part.embedded_objects)
|
||||
part.embedded_objects -= item_to_retrieve
|
||||
to_chat(C, "<span class='warning'>The [item_to_retrieve] that was embedded in your [L] has mysteriously vanished. How fortunate!</span>")
|
||||
if(!C.has_embedded_objects())
|
||||
C.clear_alert("embeddedobject")
|
||||
SEND_SIGNAL(C, COMSIG_CLEAR_MOOD_EVENT, "embedded")
|
||||
break
|
||||
|
||||
else
|
||||
if(istype(item_to_retrieve.loc, /obj/machinery/portable_atmospherics/)) //Edge cases for moved machinery
|
||||
var/obj/machinery/portable_atmospherics/P = item_to_retrieve.loc
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
cooldown_min = 30
|
||||
action_icon = 'icons/obj/food/piecake.dmi'
|
||||
action_icon_state = "pie"
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -24,6 +25,7 @@
|
||||
range = 7
|
||||
selection_type = "view"
|
||||
projectile_type = null
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
active_msg = "You focus, your mind reaching to the clown dimension, ready to make a peel matrialize wherever you want!"
|
||||
deactive_msg = "You relax, the peel remaining right in the \"thin air\" it would appear out of."
|
||||
@@ -62,6 +64,7 @@
|
||||
charge_max = 100
|
||||
clothes_req = NONE
|
||||
cooldown_min = 100
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
action_icon = 'icons/mecha/mecha_equipment.dmi'
|
||||
action_icon_state = "mecha_honker"
|
||||
@@ -76,6 +79,7 @@
|
||||
charge_max = 450
|
||||
clothes_req = NONE
|
||||
cooldown_min = 450
|
||||
antimagic_allowed = TRUE
|
||||
|
||||
action_icon = 'icons/obj/food/piecake.dmi'
|
||||
action_icon_state = "frostypie"
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
action_icon = 'icons/mob/actions/actions_revenant.dmi'
|
||||
action_icon_state = "r_transmit"
|
||||
action_background_icon_state = "bg_spell"
|
||||
antimagic_allowed = TRUE
|
||||
var/notice = "notice"
|
||||
var/boldnotice = "boldnotice"
|
||||
var/magic_check = FALSE
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
cooldown_min = 0
|
||||
level_max = 1
|
||||
clothes_req = NONE
|
||||
antimagic_allowed = TRUE
|
||||
action_icon = 'icons/mob/actions/actions_items.dmi'
|
||||
action_icon_state = "voice_of_god"
|
||||
var/command
|
||||
|
||||
@@ -306,6 +306,7 @@
|
||||
sound = 'sound/magic/tail_swing.ogg'
|
||||
charge_max = 150
|
||||
clothes_req = NONE
|
||||
antimagic_allowed = TRUE
|
||||
range = 2
|
||||
cooldown_min = 150
|
||||
invocation_type = "none"
|
||||
|
||||
Reference in New Issue
Block a user