mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-12 16:38:18 +01:00
Merge pull request #9610 from Ghommie/Ghommie-cit273
ports anti-magic component code updates (holymelon sold separately).
This commit is contained in:
@@ -115,6 +115,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
var/nonabstract_req = 0 //spell can only be cast by mobs that are physical entities
|
||||
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/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
|
||||
@@ -147,27 +148,36 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
if(player_lock)
|
||||
if(!user.mind || !(src in user.mind.spell_list) && !(src in user.mob_spell_list))
|
||||
to_chat(user, "<span class='warning'>You shouldn't have this spell! Something's wrong.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
if(!(src in user.mob_spell_list))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/turf/T = get_turf(user)
|
||||
if(is_centcom_level(T.z) && !centcom_cancast) //Certain spells are not allowed on the centcom zlevel
|
||||
to_chat(user, "<span class='notice'>You can't cast this spell here.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!skipcharge)
|
||||
if(!charge_check(user))
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(user.stat && !stat_allowed)
|
||||
to_chat(user, "<span class='notice'>Not when you're incapacitated.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(!antimagic_allowed)
|
||||
var/antimagic = user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE)
|
||||
if(antimagic)
|
||||
if(isitem(antimagic))
|
||||
to_chat(user, "<span class='notice'>[antimagic] is interfering with your magic.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Magic seems to flee from you, you can't gather enough power to cast this spell.</span>")
|
||||
return FALSE
|
||||
|
||||
if(!phase_allowed && istype(user.loc, /obj/effect/dummy))
|
||||
to_chat(user, "<span class='notice'>[name] cannot be cast unless you are completely manifested in the material plane.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -175,7 +185,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
|
||||
if((invocation_type == "whisper" || invocation_type == "shout") && !H.can_speak_vocal())
|
||||
to_chat(user, "<span class='notice'>You can't get the words out!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
var/list/casting_clothes = typecacheof(list(/obj/item/clothing/suit/wizrobe,
|
||||
/obj/item/clothing/suit/space/hardsuit/wizard,
|
||||
@@ -187,24 +197,24 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
if(clothes_req) //clothes check
|
||||
if(!is_type_in_typecache(H.wear_suit, casting_clothes))
|
||||
to_chat(H, "<span class='notice'>I don't feel strong enough without my robe.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!is_type_in_typecache(H.head, casting_clothes))
|
||||
to_chat(H, "<span class='notice'>I don't feel strong enough without my hat.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(cult_req) //CULT_REQ CLOTHES CHECK
|
||||
if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/cult))
|
||||
to_chat(H, "<span class='notice'>I don't feel strong enough without my armor.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/cult))
|
||||
to_chat(H, "<span class='notice'>I don't feel strong enough without my helmet.</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
else
|
||||
if(clothes_req || human_req)
|
||||
to_chat(user, "<span class='notice'>This spell can only be cast by humans!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
if(nonabstract_req && (isbrain(user) || ispAI(user)))
|
||||
to_chat(user, "<span class='notice'>This spell can only be cast by physical beings!</span>")
|
||||
return 0
|
||||
return FALSE
|
||||
|
||||
|
||||
if(!skipcharge)
|
||||
@@ -499,6 +509,9 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
|
||||
if(user.stat && !stat_allowed)
|
||||
return FALSE
|
||||
|
||||
if(!antimagic_allowed && user.anti_magic_check(TRUE, FALSE, chargecost = 0, self = TRUE))
|
||||
return FALSE
|
||||
|
||||
if(!ishuman(user))
|
||||
if(clothes_req || human_req)
|
||||
return FALSE
|
||||
|
||||
Reference in New Issue
Block a user