Datumizes spells (#24242)

* datumized spells

* finished

* last changes

* conflict

* Update code/datums/spells/alien_spells/transfer_plasma.dm

* conflicts

* shitty runtime fix until i get to this tomorrow

* Update code/datums/spell.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spell_handler/alien_spell_handler.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/alien_spells/regurgitate.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/alien_spells/regurgitate.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/bloodcrawl.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/bloodcrawl.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/antagonists/vampire/vampire_powers/hemomancer_powers.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/antagonists/vampire/vampire_powers/vampire_powers.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/awaymissions/mission_code/ruins/wizardcrash.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/research/xenobiology/xenobiology.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/modules/mob/living/carbon/superheroes.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/conjure.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/ethereal_jaunt.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/emplosion.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/turf_teleport.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/wizard_spells.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/wizard_spells.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/game/dna/mutations/mutation_powers.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/wizard_spells.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/datums/spells/wizard_spells.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/game/dna/mutations/mutation_powers.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* Update code/game/gamemodes/miniantags/revenant/revenant_abilities.dm

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>

* guess who just rework the entire malf ai actionsf ai

* gc better

---------

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
GDN
2024-04-01 07:42:21 +00:00
committed by GitHub
co-authored by Burzah
parent d52535a041
commit eee8878024
149 changed files with 1358 additions and 1536 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
desc = "High Five?"
var/catchphrase = "High Five!"
var/on_use_sound = null
var/obj/effect/proc_holder/spell/touch/attached_spell
var/datum/spell/touch/attached_spell
icon = 'icons/obj/weapons/magical_weapons.dmi'
icon_state = "disintegrate"
item_state = null
+3 -3
View File
@@ -400,9 +400,9 @@
if(SS.purified)
make_holy()
// Replace regular soulstone summoning with purified soulstones
if(is_type_in_list(/obj/effect/proc_holder/spell/aoe/conjure/build/soulstone, mob_spell_list))
RemoveSpell(/obj/effect/proc_holder/spell/aoe/conjure/build/soulstone)
AddSpell(new /obj/effect/proc_holder/spell/aoe/conjure/build/soulstone/holy)
if(is_type_in_list(/datum/spell/aoe/conjure/build/soulstone, mob_spell_list))
RemoveSpell(/datum/spell/aoe/conjure/build/soulstone)
AddSpell(new /datum/spell/aoe/conjure/build/soulstone/holy)
else if(mind.has_antag_datum(/datum/antagonist/cultist)) // Re-grant cult actions, lost in the transfer
var/datum/action/innate/cult/comm/CC = new
+58 -58
View File
@@ -6,7 +6,7 @@
var/category = "Offensive"
var/cost = 2
var/refundable = TRUE
var/obj/effect/proc_holder/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell
var/datum/spell/S = null //Since spellbooks can be used by only one person anyway we can track the actual spell
var/buy_word = "Learn"
var/limit //used to prevent a spellbook_entry from being bought more than X times with one wizard spellbook
@@ -21,8 +21,8 @@
return LearnSpell(user, book, S)
/datum/spellbook_entry/proc/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell)
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
/datum/spellbook_entry/proc/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, datum/spell/newspell)
for(var/datum/spell/aspell in user.mind.spell_list)
if(initial(newspell.name) == initial(aspell.name)) // Not using directly in case it was learned from one spellbook then upgraded in another
if(aspell.spell_level >= aspell.level_max)
to_chat(user, "<span class='warning'>This spell cannot be improved further.</span>")
@@ -59,7 +59,7 @@
return FALSE
if(!S)
S = new spell_type()
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
for(var/datum/spell/aspell in user.mind.spell_list)
if(initial(S.name) == initial(aspell.name))
return TRUE
return FALSE
@@ -72,7 +72,7 @@
if(!S) //This happens when the spell's source is from another spellbook, from loadouts, or adminery, this create a new template temporary spell
S = new spell_type()
var/spell_levels = 0
for(var/obj/effect/proc_holder/spell/aspell in user.mind.spell_list)
for(var/datum/spell/aspell in user.mind.spell_list)
if(initial(S.name) == initial(aspell.name))
spell_levels = aspell.spell_level
user.mind.spell_list.Remove(aspell)
@@ -97,126 +97,126 @@
//Offensive
/datum/spellbook_entry/blind
name = "Blind"
spell_type = /obj/effect/proc_holder/spell/trigger/blind
spell_type = /datum/spell/genetic/blind
category = "Offensive"
cost = 1
/datum/spellbook_entry/lightningbolt
name = "Lightning Bolt"
spell_type = /obj/effect/proc_holder/spell/charge_up/bounce/lightning
spell_type = /datum/spell/charge_up/bounce/lightning
category = "Offensive"
cost = 1
/datum/spellbook_entry/cluwne
name = "Curse of the Cluwne"
spell_type = /obj/effect/proc_holder/spell/touch/cluwne
spell_type = /datum/spell/touch/cluwne
category = "Offensive"
/datum/spellbook_entry/banana_touch
name = "Banana Touch"
spell_type = /obj/effect/proc_holder/spell/touch/banana
spell_type = /datum/spell/touch/banana
cost = 1
/datum/spellbook_entry/mime_malaise
name = "Mime Malaise"
spell_type = /obj/effect/proc_holder/spell/touch/mime_malaise
spell_type = /datum/spell/touch/mime_malaise
cost = 1
/datum/spellbook_entry/horseman
name = "Curse of the Horseman"
spell_type = /obj/effect/proc_holder/spell/horsemask
spell_type = /datum/spell/horsemask
category = "Offensive"
/datum/spellbook_entry/disintegrate
name = "Disintegrate"
spell_type = /obj/effect/proc_holder/spell/touch/disintegrate
spell_type = /datum/spell/touch/disintegrate
category = "Offensive"
/datum/spellbook_entry/fireball
name = "Fireball"
spell_type = /obj/effect/proc_holder/spell/fireball
spell_type = /datum/spell/fireball
category = "Offensive"
/datum/spellbook_entry/summon_toolbox
name = "Homing Toolbox"
spell_type = /obj/effect/proc_holder/spell/fireball/toolbox
spell_type = /datum/spell/fireball/toolbox
category = "Offensive"
cost = 1
/datum/spellbook_entry/fleshtostone
name = "Flesh to Stone"
spell_type = /obj/effect/proc_holder/spell/touch/flesh_to_stone
spell_type = /datum/spell/touch/flesh_to_stone
category = "Offensive"
/datum/spellbook_entry/mutate
name = "Mutate"
spell_type = /obj/effect/proc_holder/spell/genetic/mutate
spell_type = /datum/spell/genetic/mutate
category = "Offensive"
/datum/spellbook_entry/rod_form
name = "Rod Form"
spell_type = /obj/effect/proc_holder/spell/rod_form
spell_type = /datum/spell/rod_form
category = "Offensive"
/datum/spellbook_entry/infinite_guns
name = "Lesser Summon Guns"
spell_type = /obj/effect/proc_holder/spell/infinite_guns
spell_type = /datum/spell/infinite_guns
category = "Offensive"
//Defensive
/datum/spellbook_entry/disabletech
name = "Disable Tech"
spell_type = /obj/effect/proc_holder/spell/emplosion/disable_tech
spell_type = /datum/spell/emplosion/disable_tech
category = "Defensive"
cost = 1
/datum/spellbook_entry/forcewall
name = "Force Wall"
spell_type = /obj/effect/proc_holder/spell/forcewall
spell_type = /datum/spell/forcewall
category = "Defensive"
cost = 1
/datum/spellbook_entry/rathens
name = "Rathen's Secret"
spell_type = /obj/effect/proc_holder/spell/rathens
spell_type = /datum/spell/rathens
category = "Defensive"
cost = 2
/datum/spellbook_entry/repulse
name = "Repulse"
spell_type = /obj/effect/proc_holder/spell/aoe/repulse
spell_type = /datum/spell/aoe/repulse
category = "Defensive"
cost = 1
/datum/spellbook_entry/smoke
name = "Smoke"
spell_type = /obj/effect/proc_holder/spell/smoke
spell_type = /datum/spell/smoke
category = "Defensive"
cost = 1
/datum/spellbook_entry/lichdom
name = "Bind Soul"
spell_type = /obj/effect/proc_holder/spell/lichdom
spell_type = /datum/spell/lichdom
category = "Defensive"
is_ragin_restricted = TRUE
/datum/spellbook_entry/magicm
name = "Magic Missile"
spell_type = /obj/effect/proc_holder/spell/projectile/magic_missile
spell_type = /datum/spell/projectile/magic_missile
category = "Defensive"
/datum/spellbook_entry/timestop
name = "Time Stop"
spell_type = /obj/effect/proc_holder/spell/aoe/conjure/timestop
spell_type = /datum/spell/aoe/conjure/timestop
category = "Defensive"
/datum/spellbook_entry/sacred_flame
name = "Sacred Flame and Fire Immunity"
spell_type = /obj/effect/proc_holder/spell/sacred_flame
spell_type = /datum/spell/sacred_flame
cost = 1
category = "Defensive"
/datum/spellbook_entry/sacred_flame/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell)
/datum/spellbook_entry/sacred_flame/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, datum/spell/newspell)
to_chat(user, "<span class='notice'>You feel fireproof.</span>")
ADD_TRAIT(user, TRAIT_RESISTHEAT, MAGIC_TRAIT)
ADD_TRAIT(user, TRAIT_RESISTHIGHPRESSURE, MAGIC_TRAIT)
@@ -230,11 +230,11 @@
/datum/spellbook_entry/summon_supermatter
name = "Summon Supermatter Crystal"
spell_type = /obj/effect/proc_holder/spell/aoe/conjure/summon_supermatter
spell_type = /datum/spell/aoe/conjure/summon_supermatter
cost = 3
category = "Defensive"
/datum/spellbook_entry/summon_supermatter/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, obj/effect/proc_holder/spell/newspell)
/datum/spellbook_entry/summon_supermatter/LearnSpell(mob/living/carbon/human/user, obj/item/spellbook/book, datum/spell/newspell)
to_chat(user, "<span class='notice'>You feel a little bit of supermatter enter your body.</span>")
ADD_TRAIT(user, TRAIT_RADIMMUNE, MAGIC_TRAIT)
ADD_TRAIT(user, SM_HALLUCINATION_IMMUNE, MAGIC_TRAIT)
@@ -249,64 +249,64 @@
//Mobility
/datum/spellbook_entry/knock
name = "Knock"
spell_type = /obj/effect/proc_holder/spell/aoe/knock
spell_type = /datum/spell/aoe/knock
category = "Mobility"
cost = 1
/datum/spellbook_entry/blink
name = "Blink"
spell_type = /obj/effect/proc_holder/spell/turf_teleport/blink
spell_type = /datum/spell/turf_teleport/blink
category = "Mobility"
/datum/spellbook_entry/jaunt
name = "Ethereal Jaunt"
spell_type = /obj/effect/proc_holder/spell/ethereal_jaunt
spell_type = /datum/spell/ethereal_jaunt
category = "Mobility"
/datum/spellbook_entry/spacetime_dist
name = "Spacetime Distortion"
spell_type = /obj/effect/proc_holder/spell/spacetime_dist
spell_type = /datum/spell/spacetime_dist
cost = 1 //Better defence than greater forcewall (maybe) but good luck hitting anyone, so 1 point.
category = "Mobility"
/datum/spellbook_entry/greaterknock
name = "Greater Knock"
spell_type = /obj/effect/proc_holder/spell/aoe/knock/greater
spell_type = /datum/spell/aoe/knock/greater
category = "Mobility"
refundable = 0 //global effect on cast
/datum/spellbook_entry/mindswap
name = "Mindswap"
spell_type = /obj/effect/proc_holder/spell/mind_transfer
spell_type = /datum/spell/mind_transfer
category = "Mobility"
/datum/spellbook_entry/teleport
name = "Teleport"
spell_type = /obj/effect/proc_holder/spell/area_teleport/teleport
spell_type = /datum/spell/area_teleport/teleport
category = "Mobility"
//Assistance
/datum/spellbook_entry/charge
name = "Charge"
spell_type = /obj/effect/proc_holder/spell/charge
spell_type = /datum/spell/charge
category = "Assistance"
cost = 1
/datum/spellbook_entry/summonitem
name = "Summon Item"
spell_type = /obj/effect/proc_holder/spell/summonitem
spell_type = /datum/spell/summonitem
category = "Assistance"
cost = 1
/datum/spellbook_entry/disguiseself
name = "Disguise Self"
spell_type = /obj/effect/proc_holder/spell/disguise_self
spell_type = /datum/spell/disguise_self
category = "Assistance"
cost = 1
/datum/spellbook_entry/noclothes
name = "Remove Clothes Requirement"
spell_type = /obj/effect/proc_holder/spell/noclothes
spell_type = /datum/spell/noclothes
category = "Assistance"
cost = 1
@@ -433,7 +433,7 @@
/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user, obj/item/spellbook/book)
. = ..()
if(.)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe/conjure/construct(null))
user.mind.AddSpell(new /datum/spell/aoe/conjure/construct(null))
return .
/datum/spellbook_entry/item/wands
@@ -676,7 +676,7 @@
new path(B)
user.put_in_hands(B)
for(var/path in spells_path)
var/obj/effect/proc_holder/spell/S = new path()
var/datum/spell/S = new path()
LearnSpell(user, book, S)
OnBuy(user, book)
return TRUE
@@ -946,7 +946,7 @@
//Single Use Spellbooks
/obj/item/spellbook/oneuse
var/spell = /obj/effect/proc_holder/spell/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
var/spell = /datum/spell/projectile/magic_missile //just a placeholder to avoid runtimes if someone spawned the generic
var/spellname = "sandbox"
var/used = FALSE
name = "spellbook of "
@@ -961,8 +961,8 @@
return
/obj/item/spellbook/oneuse/attack_self(mob/user)
var/obj/effect/proc_holder/spell/S = new spell
for(var/obj/effect/proc_holder/spell/knownspell in user.mind.spell_list)
var/datum/spell/S = new spell
for(var/datum/spell/knownspell in user.mind.spell_list)
if(knownspell.type == S.type)
if(user.mind)
if(user.mind.special_role == SPECIAL_ROLE_WIZARD_APPRENTICE || user.mind.special_role == SPECIAL_ROLE_WIZARD)
@@ -990,7 +990,7 @@
return
/obj/item/spellbook/oneuse/fireball
spell = /obj/effect/proc_holder/spell/fireball
spell = /datum/spell/fireball
spellname = "fireball"
icon_state = "bookfireball"
desc = "This book feels warm to the touch."
@@ -1001,7 +1001,7 @@
qdel(src)
/obj/item/spellbook/oneuse/smoke
spell = /obj/effect/proc_holder/spell/smoke
spell = /datum/spell/smoke
spellname = "smoke"
icon_state = "booksmoke"
desc = "This book is overflowing with the dank arts."
@@ -1012,7 +1012,7 @@
user.adjust_nutrition(-200)
/obj/item/spellbook/oneuse/blind
spell = /obj/effect/proc_holder/spell/trigger/blind
spell = /datum/spell/genetic/blind
spellname = "blind"
icon_state = "bookblind"
desc = "This book looks blurry, no matter how you look at it."
@@ -1025,7 +1025,7 @@
L.EyeBlind(20 SECONDS)
/obj/item/spellbook/oneuse/mindswap
spell = /obj/effect/proc_holder/spell/mind_transfer
spell = /datum/spell/mind_transfer
spellname = "mindswap"
icon_state = "bookmindswap"
desc = "This book's cover is pristine, though its pages look ragged and torn."
@@ -1049,7 +1049,7 @@
to_chat(user, "<span class='notice'>You stare at the book some more, but there doesn't seem to be anything else to learn...</span>")
return
var/obj/effect/proc_holder/spell/mind_transfer/swapper = new
var/datum/spell/mind_transfer/swapper = new
swapper.cast(user, stored_swap)
to_chat(stored_swap, "<span class='warning'>You're suddenly somewhere else... and someone else?!</span>")
@@ -1057,7 +1057,7 @@
stored_swap = null
/obj/item/spellbook/oneuse/forcewall
spell = /obj/effect/proc_holder/spell/forcewall
spell = /datum/spell/forcewall
spellname = "forcewall"
icon_state = "bookforcewall"
desc = "This book has a dedication to mimes everywhere inside the front cover."
@@ -1070,7 +1070,7 @@
user.drop_item()
/obj/item/spellbook/oneuse/knock
spell = /obj/effect/proc_holder/spell/aoe/knock
spell = /datum/spell/aoe/knock
spellname = "knock"
icon_state = "bookknock"
desc = "This book is hard to hold closed properly."
@@ -1081,7 +1081,7 @@
user.Weaken(40 SECONDS)
/obj/item/spellbook/oneuse/horsemask
spell = /obj/effect/proc_holder/spell/horsemask
spell = /datum/spell/horsemask
spellname = "horses"
icon_state = "bookhorses"
desc = "This book is more horse than your mind has room for."
@@ -1101,7 +1101,7 @@
to_chat(user, "<span class='notice'>I say thee neigh</span>")
/obj/item/spellbook/oneuse/charge
spell = /obj/effect/proc_holder/spell/charge
spell = /datum/spell/charge
spellname = "charging"
icon_state = "bookcharge"
desc = "This book is made of 100% post-consumer wizard."
@@ -1112,7 +1112,7 @@
empulse(src, 1, 1)
/obj/item/spellbook/oneuse/summonitem
spell = /obj/effect/proc_holder/spell/summonitem
spell = /datum/spell/summonitem
spellname = "instant summons"
icon_state = "booksummons"
desc = "This book is bright and garish, very hard to miss."
@@ -1123,13 +1123,13 @@
qdel(src)
/obj/item/spellbook/oneuse/fake_gib
spell = /obj/effect/proc_holder/spell/touch/fake_disintegrate
spell = /datum/spell/touch/fake_disintegrate
spellname = "disintegrate"
icon_state = "bookfireball"
desc = "This book feels like it will rip stuff apart."
/obj/item/spellbook/oneuse/sacredflame
spell = /obj/effect/proc_holder/spell/sacred_flame
spell = /datum/spell/sacred_flame
spellname = "sacred flame"
icon_state = "booksacredflame"
desc = "Become one with the flames that burn within... and invite others to do so as well."
+2 -2
View File
@@ -122,13 +122,13 @@
/mob/proc/spellremove()
if(!mind)
return
for(var/obj/effect/proc_holder/spell/spell_to_remove in mind.spell_list)
for(var/datum/spell/spell_to_remove in mind.spell_list)
qdel(spell_to_remove)
mind.spell_list -= spell_to_remove
//To batch-remove mob spells.
/mob/proc/mobspellremove()
for(var/obj/effect/proc_holder/spell/spell_to_remove in mob_spell_list)
for(var/datum/spell/spell_to_remove in mob_spell_list)
qdel(spell_to_remove)
mob_spell_list -= spell_to_remove
+17 -17
View File
@@ -7,8 +7,8 @@
Ethereal Jaunt and Blink provide escape and mobility, while Magic Missile and Disintegrate can be used together for dangerous or key targets. <br> \
As this set lacks any form of healing or resurrection, healing items should be acquired from the station, and you should be careful to avoid being hurt in the first place. <br><br> \
</i>Provides Mutate, Ethereal Jaunt, Blink, Magic Missile, and Disintegrate.<i>"
spells_path = list(/obj/effect/proc_holder/spell/genetic/mutate, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \
/obj/effect/proc_holder/spell/projectile/magic_missile, /obj/effect/proc_holder/spell/touch/disintegrate)
spells_path = list(/datum/spell/genetic/mutate, /datum/spell/ethereal_jaunt, /datum/spell/turf_teleport/blink, \
/datum/spell/projectile/magic_missile, /datum/spell/touch/disintegrate)
/datum/spellbook_entry/loadout/lich
name = "Defense Focus - Lich"
@@ -16,8 +16,8 @@
Ethereal Jaunt provides escape, Fireball and Rod Form are your offensive spells, and Disable Tech and Forcewall provides utility in disabling sec equipment or blocking their path. <br> \
Care should be taken in hiding the item you choose as your phylactery after using Bind Soul, as you cannot revive if it destroyed or too far from your body! <br><br> \
</i>Provides Bind Soul, Ethereal Jaunt, Fireball, Rod Form, Disable Tech, and Greater Forcewall.<i>"
spells_path = list(/obj/effect/proc_holder/spell/lichdom, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/fireball, \
/obj/effect/proc_holder/spell/rod_form, /obj/effect/proc_holder/spell/emplosion/disable_tech, /obj/effect/proc_holder/spell/forcewall)
spells_path = list(/datum/spell/lichdom, /datum/spell/ethereal_jaunt, /datum/spell/fireball, \
/datum/spell/rod_form, /datum/spell/emplosion/disable_tech, /datum/spell/forcewall)
is_ragin_restricted = TRUE
/datum/spellbook_entry/loadout/wands
@@ -27,8 +27,8 @@
Do not lose any of your wands to the station's crew, as they are extremely deadly even in their hands. Remember that the Revive wand can be used on yourself for a full heal! <br><br> \
</i>Provides a Belt of Wands, Charge, Ethereal Jaunt, Blink, Repulse, and Disintegrate.<i>"
items_path = list(/obj/item/storage/belt/wands/full)
spells_path = list(/obj/effect/proc_holder/spell/charge, /obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \
/obj/effect/proc_holder/spell/aoe/repulse, /obj/effect/proc_holder/spell/touch/disintegrate)
spells_path = list(/datum/spell/charge, /datum/spell/ethereal_jaunt, /datum/spell/turf_teleport/blink, \
/datum/spell/aoe/repulse, /datum/spell/touch/disintegrate)
//Unique loadouts, which are more gimmicky. Should contain some unique spell or item that separates it from just buying standard wiz spells, and be balanced around a 10 spell point cost.
/datum/spellbook_entry/loadout/mimewiz
@@ -37,14 +37,14 @@
</i>Provides Finger Gun and Invisible Greater Wall manuals, Mime Robes, a Cane and Duct Tape, Ethereal Jaunt, Blink, Teleport, Mime Malaise, Knock, and Stop Time.<i>"
items_path = list(/obj/item/spellbook/oneuse/mime/fingergun, /obj/item/spellbook/oneuse/mime/greaterwall, /obj/item/clothing/suit/wizrobe/mime, /obj/item/clothing/head/wizard/mime, \
/obj/item/clothing/mask/gas/mime/wizard, /obj/item/clothing/shoes/sandal/marisa, /obj/item/cane, /obj/item/stack/tape_roll)
spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, /obj/effect/proc_holder/spell/area_teleport/teleport, \
/obj/effect/proc_holder/spell/touch/mime_malaise, /obj/effect/proc_holder/spell/aoe/knock, /obj/effect/proc_holder/spell/aoe/conjure/timestop)
spells_path = list(/datum/spell/ethereal_jaunt, /datum/spell/turf_teleport/blink, /datum/spell/area_teleport/teleport, \
/datum/spell/touch/mime_malaise, /datum/spell/aoe/knock, /datum/spell/aoe/conjure/timestop)
category = "Unique"
destroy_spellbook = TRUE
/datum/spellbook_entry/loadout/mimewiz/OnBuy(mob/living/carbon/human/user, obj/item/spellbook/book)
if(user.mind)
user.mind.AddSpell(new /obj/effect/proc_holder/spell/mime/speak(null))
user.mind.AddSpell(new /datum/spell/mime/speak(null))
user.mind.miming = TRUE
/datum/spellbook_entry/loadout/gunreaper
@@ -54,13 +54,13 @@
You will likely need to scavenge additional ammo or weapons aboard the station. <br><br>\
</i>Provides a .357 Revolver, 4 speedloaders of ammo, Ethereal Jaunt, Blink, Summon Item, No Clothes, and Bind Soul, with a unique outfit.<i>"
items_path = list(/obj/item/gun/projectile/revolver, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/ammo_box/a357, /obj/item/clothing/under/syndicate)
spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/turf_teleport/blink, \
/obj/effect/proc_holder/spell/summonitem, /obj/effect/proc_holder/spell/noclothes, /obj/effect/proc_holder/spell/lichdom/gunslinger)
spells_path = list(/datum/spell/ethereal_jaunt, /datum/spell/turf_teleport/blink, \
/datum/spell/summonitem, /datum/spell/noclothes, /datum/spell/lichdom/gunslinger)
category = "Unique"
destroy_spellbook = TRUE
is_ragin_restricted = TRUE
/obj/effect/proc_holder/spell/lichdom/gunslinger/equip_lich(mob/living/carbon/human/H)
/datum/spell/lichdom/gunslinger/equip_lich(mob/living/carbon/human/H)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(H), SLOT_HUD_OUTER_SUIT)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), SLOT_HUD_SHOES)
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(H), SLOT_HUD_GLOVES)
@@ -74,8 +74,8 @@
</i>Provides His Grace, an Ancient Jumpsuit, an Assistant ID, a Gas Mask and Shoes, Insulated Gloves, a full Toolbelt, Ethereal Jaunt, Force Wall, Homing Toolbox, Knock and No Clothes.<i>"
items_path = list(/obj/item/his_grace, /obj/item/clothing/under/color/grey/glorf, /obj/item/clothing/mask/gas, /obj/item/clothing/shoes/black, \
/obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/full/multitool)
spells_path = list(/obj/effect/proc_holder/spell/ethereal_jaunt, /obj/effect/proc_holder/spell/forcewall, \
/obj/effect/proc_holder/spell/aoe/knock, /obj/effect/proc_holder/spell/noclothes, /obj/effect/proc_holder/spell/fireball/toolbox)
spells_path = list(/datum/spell/ethereal_jaunt, /datum/spell/forcewall, \
/datum/spell/aoe/knock, /datum/spell/noclothes, /datum/spell/fireball/toolbox)
category = "Unique"
destroy_spellbook = TRUE
@@ -111,8 +111,8 @@
items_path = list(/obj/item/supermatter_halberd, /obj/item/clothing/gloves/color/white/supermatter_immune, \
/obj/item/clothing/suit/hooded/oblivion, /obj/item/clothing/mask/gas/voice_modulator/oblivion, /obj/item/tank/internals/emergency_oxygen/double, \
/obj/item/clothing/under/color/white/enforcer, /obj/item/clothing/shoes/white/enforcer)
spells_path = list(/obj/effect/proc_holder/spell/summonitem, /obj/effect/proc_holder/spell/charge_up/bounce/lightning, \
/obj/effect/proc_holder/spell/aoe/conjure/summon_supermatter)
spells_path = list(/datum/spell/summonitem, /datum/spell/charge_up/bounce/lightning, \
/datum/spell/aoe/conjure/summon_supermatter)
category = "Unique"
destroy_spellbook = TRUE
@@ -125,7 +125,7 @@
name = "Fireball. Fireball. Fireball."
desc = "Who cares about the rest of the spells. Become an expert in fire magic. Devote yourself to the craft. The only spell you need anyways is <b>Fireball.</b><br>\
</i>Provides fire immunity, homing fireballs, rapid-fire fireballs, and some fireball wands. Provides no mobility spells. Replaces your robes with infernal versions.<i>"
spells_path = list(/obj/effect/proc_holder/spell/sacred_flame, /obj/effect/proc_holder/spell/fireball/homing, /obj/effect/proc_holder/spell/infinite_guns/fireball)
spells_path = list(/datum/spell/sacred_flame, /datum/spell/fireball/homing, /datum/spell/infinite_guns/fireball)
category = "Unique"
destroy_spellbook = TRUE