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 02:42:21 -05:00
committed by GitHub
parent d52535a041
commit eee8878024
149 changed files with 1358 additions and 1536 deletions
@@ -53,7 +53,7 @@ GLOBAL_DATUM_INIT(ghost_crew_monitor, /datum/ui_module/crew_monitor/ghost, new)
/mob/dead/observer/proc/open_spawners_menu))
// Our new boo spell.
AddSpell(new /obj/effect/proc_holder/spell/boo(null))
AddSpell(new /datum/spell/boo(null))
can_reenter_corpse = flags & GHOST_CAN_REENTER
started_as_observer = flags & GHOST_IS_OBSERVER
+3 -3
View File
@@ -9,7 +9,7 @@ GLOBAL_LIST_INIT(boo_phrases, list(
"It feels like someone's standing behind you.",
))
/obj/effect/proc_holder/spell/boo
/datum/spell/boo
name = "Boo!"
desc = "Fuck with the living."
selection_deactivated_message = "<span class='notice'>Your presence will not be known. For now.</span>"
@@ -29,13 +29,13 @@ GLOBAL_LIST_INIT(boo_phrases, list(
create_attack_logs = FALSE
/obj/effect/proc_holder/spell/boo/create_new_targeting()
/datum/spell/boo/create_new_targeting()
var/datum/spell_targeting/click/T = new()
T.allowed_type = /atom
T.try_auto_target = FALSE
return T
/obj/effect/proc_holder/spell/boo/cast(list/targets, mob/user = usr)
/datum/spell/boo/cast(list/targets, mob/user = usr)
var/atom/target = targets[1]
ASSERT(istype(target))
@@ -9,7 +9,7 @@
. = ..()
name = "alien drone ([rand(1, 1000)])"
real_name = name
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve_queen)
AddSpell(new /datum/spell/alien_spell/evolve_queen)
/mob/living/carbon/alien/humanoid/drone/get_caste_organs()
. = ..()
@@ -23,7 +23,7 @@
real_name = name
add_language("Xenomorph")
add_language("Hivemind")
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/regurgitate)
AddSpell(new /datum/spell/alien_spell/regurgitate)
. = ..()
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_CLAW, 0.5, -11)
@@ -16,7 +16,7 @@
/mob/living/carbon/alien/humanoid/queen/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_FORCE_DOORS, UNIQUE_TRAIT_SOURCE(src))
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/tail_lash)
AddSpell(new /datum/spell/alien_spell/tail_lash)
/mob/living/carbon/alien/humanoid/queen/get_caste_organs()
. = ..()
@@ -25,7 +25,7 @@
regenerate_icons()
add_language("Xenomorph")
add_language("Hivemind")
AddSpell(new /obj/effect/proc_holder/spell/alien_spell/evolve_larva)
AddSpell(new /datum/spell/alien_spell/evolve_larva)
var/datum/action/innate/hide/alien_larva_hide/hide = new()
hide.Grant(src)
+1 -1
View File
@@ -107,5 +107,5 @@
/mob/living/carbon/human/monkey/magic/mind_checks()
if(!..())
return FALSE
mind.AddSpell(new /obj/effect/proc_holder/spell/turf_teleport/blink(null))
mind.AddSpell(new /datum/spell/turf_teleport/blink(null))
mind.special_role = SPECIAL_ROLE_WIZARD
@@ -654,8 +654,8 @@
H.equip_to_slot_or_del(new /obj/item/reagent_containers/drinks/bottle/bottleofnothing(H), SLOT_HUD_RIGHT_STORE)
H.equip_to_slot_or_del(new /obj/item/cane(H), SLOT_HUD_LEFT_HAND)
if(H.mind)
H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe/conjure/build/mime_wall(null))
H.mind.AddSpell(new /obj/effect/proc_holder/spell/mime/speak(null))
H.mind.AddSpell(new /datum/spell/aoe/conjure/build/mime_wall(null))
H.mind.AddSpell(new /datum/spell/mime/speak(null))
H.mind.miming = TRUE
/datum/unarmed_attack/golem/tranquillite
+10 -10
View File
@@ -36,7 +36,7 @@
/datum/superheroes/proc/assign_spells(mob/living/carbon/human/H)
if(default_spells.len)
for(var/spell in default_spells)
var/obj/effect/proc_holder/spell/S = spell
var/datum/spell/S = spell
if(!S)
return
H.mind.AddSpell(new S(null))
@@ -82,7 +82,7 @@
/datum/superheroes/griffin
name = "The Griffin"
default_spells = list(/obj/effect/proc_holder/spell/recruit)
default_spells = list(/datum/spell/recruit)
class = "Supervillain"
desc = "You are The Griffin, the ultimate supervillain. You thrive on chaos and have no respect for the supposed authority \
of the command staff of this station. Along with your gang of dim-witted yet trusty henchmen, you will be able to execute \
@@ -106,7 +106,7 @@
desc = "You are LightnIan, the lord of lightning! A freak electrical accident while working in the station's kennel \
has given you mastery over lightning and a peculiar desire to sniff butts. Although you are a recent addition to the \
station's hero roster, you intend to leave your mark."
default_spells = list(/obj/effect/proc_holder/spell/charge_up/bounce/lightning/lightnian)
default_spells = list(/datum/spell/charge_up/bounce/lightning/lightnian)
/datum/superheroes/lightnian/equip(mob/living/carbon/human/H)
..()
@@ -125,7 +125,7 @@
desc = "You were a roboticist, once. Now you are Electro-Negmatic, a name this station will learn to fear. You designed \
your costume to resemble E-N, your faithful dog that some callous RD destroyed because it was sparking up the plasma. You \
intend to take your revenge and make them all pay thanks to your magnetic powers."
default_spells = list(/obj/effect/proc_holder/spell/charge_up/bounce/magnet)
default_spells = list(/datum/spell/charge_up/bounce/magnet)
/datum/superheroes/electro/equip(mob/living/carbon/human/H)
..()
@@ -143,7 +143,7 @@
//The Griffin's special recruit abilitiy
/obj/effect/proc_holder/spell/recruit
/datum/spell/recruit
name = "Recruit Greyshirt"
desc = "Allows you to recruit a conscious, non-braindead, non-catatonic human to be part of the Greyshirts, your personal henchmen. This works on Assistants only and you can recruit a maximum of 3!."
base_cooldown = 450
@@ -151,16 +151,16 @@
action_icon_state = "spell_greytide"
var/recruiting = 0
selection_activated_message = "<span class='notice'>You start preparing a mindblowing monologue. <B>Left-click to cast at a target!</B></span>"
selection_activated_message = "<span class='notice'>You start preparing a mindblowing monologue. <b>Left-click to cast at a target!</b></span>"
selection_deactivated_message = "<span class='notice'>You decide to save your brilliance for another day.</span>"
/obj/effect/proc_holder/spell/recruit/create_new_targeting()
/datum/spell/recruit/create_new_targeting()
var/datum/spell_targeting/click/T = new()
T.click_radius = -1
T.range = 1
return T
/obj/effect/proc_holder/spell/recruit/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
/datum/spell/recruit/can_cast(mob/user = usr, charge_check = TRUE, show_message = FALSE)
if(SSticker.mode.greyshirts.len >= 3)
if(show_message)
to_chat(user, "<span class='warning'>You have already recruited the maximum number of henchmen.</span>")
@@ -171,10 +171,10 @@
return FALSE
return ..()
/obj/effect/proc_holder/spell/recruit/valid_target(mob/living/carbon/human/target, user)
/datum/spell/recruit/valid_target(mob/living/carbon/human/target, user)
return target.ckey && !target.stat
/obj/effect/proc_holder/spell/recruit/cast(list/targets,mob/living/user = usr)
/datum/spell/recruit/cast(list/targets,mob/living/user = usr)
var/mob/living/carbon/human/target = targets[1]
if(target.mind.assigned_role != "Assistant")
to_chat(user, "<span class='warning'>You can only recruit Assistants.</span>")
+2 -2
View File
@@ -69,7 +69,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
//MALFUNCTION
var/datum/module_picker/malf_picker
var/datum/action/innate/ai/choose_modules/modules_action
var/datum/spell/ai_spell/choose_modules/modules_action
var/list/datum/AI_Module/current_modules = list()
var/can_dominate_mechs = FALSE
var/shunted = FALSE // TRUE if the AI is currently shunted. Used to differentiate between shunted and ghosted/braindead
@@ -1422,7 +1422,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
view_core() //A BYOND bug requires you to be viewing your core before your verbs update
malf_picker = new /datum/module_picker
modules_action = new(malf_picker)
modules_action.Grant(src)
AddSpell(modules_action)
///Removes all malfunction-related /datum/action's from the target AI.
/mob/living/silicon/ai/proc/remove_malf_abilities()
+5 -5
View File
@@ -103,8 +103,8 @@
add_language("Gutter")
add_language("Trinary")
AddSpell(new /obj/effect/proc_holder/spell/access_software_pai)
AddSpell(new /obj/effect/proc_holder/spell/unfold_chassis_pai)
AddSpell(new /datum/spell/access_software_pai)
AddSpell(new /datum/spell/unfold_chassis_pai)
//PDA
pda = new(src)
@@ -241,7 +241,7 @@
// mobile pai mob. This also includes handling some of the general shit that can occur
// to it. Really this deserves its own file, but for the moment it can sit here. ~ Z
/obj/effect/proc_holder/spell/unfold_chassis_pai
/datum/spell/unfold_chassis_pai
name = "Unfold/Fold Chassis"
desc = "Allows you to fold in/out of your mobile form."
clothes_req = FALSE
@@ -249,10 +249,10 @@
action_icon_state = "repairbot"
action_background_icon_state = "bg_tech_blue"
/obj/effect/proc_holder/spell/unfold_chassis_pai/create_new_targeting()
/datum/spell/unfold_chassis_pai/create_new_targeting()
return new /datum/spell_targeting/self
/obj/effect/proc_holder/spell/unfold_chassis_pai/cast(list/targets, mob/living/user = usr)
/datum/spell/unfold_chassis_pai/cast(list/targets, mob/living/user = usr)
var/mob/living/silicon/pai/pai_user = user
if(pai_user.loc != pai_user.card)
@@ -12,7 +12,7 @@ GLOBAL_LIST_INIT(pai_emotions, list(
GLOBAL_LIST_EMPTY(pai_software_by_key)
/obj/effect/proc_holder/spell/access_software_pai
/datum/spell/access_software_pai
name = "Software interface"
desc = "Allows you to access your downloaded software."
clothes_req = FALSE
@@ -20,10 +20,10 @@ GLOBAL_LIST_EMPTY(pai_software_by_key)
action_icon_state = "choose_module"
action_background_icon_state = "bg_tech_blue"
/obj/effect/proc_holder/spell/access_software_pai/create_new_targeting()
/datum/spell/access_software_pai/create_new_targeting()
return new /datum/spell_targeting/self
/obj/effect/proc_holder/spell/access_software_pai/cast(list/targets, mob/living/user = usr)
/datum/spell/access_software_pai/cast(list/targets, mob/living/user = usr)
var/mob/living/silicon/pai/pai_user = user
pai_user.ui_interact(pai_user)
@@ -155,7 +155,7 @@
construct_type = "juggernaut"
mob_size = MOB_SIZE_LARGE
move_resist = MOVE_FORCE_STRONG
construct_spells = list(/obj/effect/proc_holder/spell/night_vision, /obj/effect/proc_holder/spell/aoe/conjure/build/lesserforcewall)
construct_spells = list(/datum/spell/night_vision, /datum/spell/aoe/conjure/build/lesserforcewall)
force_threshold = 11
playstyle_string = "<b>You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
create shield walls, rip apart enemies and walls.</b>"
@@ -191,7 +191,7 @@
attacktext = "slashes"
attack_sound = 'sound/weapons/bladeslice.ogg'
construct_type = "wraith"
construct_spells = list(/obj/effect/proc_holder/spell/night_vision, /obj/effect/proc_holder/spell/ethereal_jaunt/shift)
construct_spells = list(/datum/spell/night_vision, /datum/spell/ethereal_jaunt/shift)
retreat_distance = 2 //AI wraiths will move in and out of combat
playstyle_string = "<b>You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</b>"
@@ -227,13 +227,13 @@
minimum_distance = 10 //AI artificers will flee like fuck
attack_sound = 'sound/weapons/punch2.ogg'
construct_type = "builder"
construct_spells = list(/obj/effect/proc_holder/spell/night_vision,
/obj/effect/proc_holder/spell/projectile/magic_missile/lesser,
/obj/effect/proc_holder/spell/aoe/conjure/construct/lesser,
/obj/effect/proc_holder/spell/aoe/conjure/build/wall,
/obj/effect/proc_holder/spell/aoe/conjure/build/floor,
/obj/effect/proc_holder/spell/aoe/conjure/build/pylon,
/obj/effect/proc_holder/spell/aoe/conjure/build/soulstone)
construct_spells = list(/datum/spell/night_vision,
/datum/spell/projectile/magic_missile/lesser,
/datum/spell/aoe/conjure/construct/lesser,
/datum/spell/aoe/conjure/build/wall,
/datum/spell/aoe/conjure/build/floor,
/datum/spell/aoe/conjure/build/pylon,
/datum/spell/aoe/conjure/build/soulstone)
playstyle_string = "<b>You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \
use magic missile, repair allied constructs (by clicking on them), \
@@ -334,10 +334,10 @@
environment_smash = ENVIRONMENT_SMASH_RWALLS
attack_sound = 'sound/weapons/tap.ogg'
construct_type = "harvester"
construct_spells = list(/obj/effect/proc_holder/spell/night_vision,
/obj/effect/proc_holder/spell/aoe/conjure/build/wall,
/obj/effect/proc_holder/spell/aoe/conjure/build/floor,
/obj/effect/proc_holder/spell/smoke/disable)
construct_spells = list(/datum/spell/night_vision,
/datum/spell/aoe/conjure/build/wall,
/datum/spell/aoe/conjure/build/floor,
/datum/spell/smoke/disable)
retreat_distance = 2 //AI harvesters will move in and out of combat, like wraiths, but shittier
playstyle_string = "<B>You are a Harvester. You are not strong, but your powers of domination will assist you in your role: \
Bring those who still cling to this world of illusion back to the master so they may know Truth.</B>"
@@ -56,9 +56,9 @@
/mob/living/simple_animal/hostile/statue/Initialize(mapload, mob/living/creator)
. = ..()
// Give spells
AddSpell(new /obj/effect/proc_holder/spell/aoe/flicker_lights(null))
AddSpell(new /obj/effect/proc_holder/spell/aoe/blindness(null))
AddSpell(new /obj/effect/proc_holder/spell/night_vision(null))
AddSpell(new /datum/spell/aoe/flicker_lights(null))
AddSpell(new /datum/spell/aoe/blindness(null))
AddSpell(new /datum/spell/night_vision(null))
// Set creator
if(creator)
@@ -160,7 +160,7 @@
// Statue powers
// Flicker lights
/obj/effect/proc_holder/spell/aoe/flicker_lights
/datum/spell/aoe/flicker_lights
name = "Flicker Lights"
desc = "You will trigger a large amount of lights around you to flicker."
@@ -168,18 +168,18 @@
clothes_req = FALSE
aoe_range = 14
/obj/effect/proc_holder/spell/aoe/flicker_lights/create_new_targeting()
/datum/spell/aoe/flicker_lights/create_new_targeting()
var/datum/spell_targeting/aoe/turf/targeting = new()
targeting.range = aoe_range
return targeting
/obj/effect/proc_holder/spell/aoe/flicker_lights/cast(list/targets, mob/user = usr)
/datum/spell/aoe/flicker_lights/cast(list/targets, mob/user = usr)
for(var/turf/T in targets)
for(var/obj/machinery/light/L in T)
L.forced_flicker()
//Blind AOE
/obj/effect/proc_holder/spell/aoe/blindness
/datum/spell/aoe/blindness
name = "Blindness"
desc = "Your prey will be momentarily blind for you to advance on them."
@@ -188,13 +188,13 @@
clothes_req = FALSE
aoe_range = 10
/obj/effect/proc_holder/spell/aoe/blindness/create_new_targeting()
/datum/spell/aoe/blindness/create_new_targeting()
var/datum/spell_targeting/aoe/targeting = new()
targeting.range = aoe_range
targeting.allowed_type = /mob/living
return targeting
/obj/effect/proc_holder/spell/aoe/blindness/cast(list/targets, mob/user = usr)
/datum/spell/aoe/blindness/cast(list/targets, mob/user = usr)
for(var/mob/living/L in targets)
if(istype(L, /mob/living/simple_animal/hostile/statue))
continue
@@ -118,21 +118,21 @@
/mob/living/simple_animal/hostile/hellhound/greater/Initialize(mapload)
. = ..()
// Movement
AddSpell(new /obj/effect/proc_holder/spell/ethereal_jaunt/shift)
var/obj/effect/proc_holder/spell/area_teleport/teleport/telespell = new
AddSpell(new /datum/spell/ethereal_jaunt/shift)
var/datum/spell/area_teleport/teleport/telespell = new
telespell.clothes_req = FALSE
telespell.invocation_type = "none"
AddSpell(telespell)
var/obj/effect/proc_holder/spell/aoe/knock/knockspell = new
var/datum/spell/aoe/knock/knockspell = new
knockspell.invocation_type = "none"
AddSpell(knockspell)
// Defense
var/obj/effect/proc_holder/spell/forcewall/wallspell = new
var/datum/spell/forcewall/wallspell = new
wallspell.clothes_req = FALSE
wallspell.invocation_type = "none"
AddSpell(wallspell)
// Offense
var/obj/effect/proc_holder/spell/aoe/conjure/creature/summonspell = new
var/datum/spell/aoe/conjure/creature/summonspell = new
summonspell.base_cooldown = 1
summonspell.invocation_type = "none"
summonspell.summon_type = list(/mob/living/simple_animal/hostile/hellhound)
@@ -619,7 +619,7 @@ Difficulty: Medium
attack_action_types = list()
/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/Initialize(mapload)
var/obj/effect/proc_holder/spell/aoe/repulse/spacedragon/repulse_action = new /obj/effect/proc_holder/spell/aoe/repulse/spacedragon(src)
var/datum/spell/aoe/repulse/spacedragon/repulse_action = new /datum/spell/aoe/repulse/spacedragon(src)
repulse_action.action.Grant(src)
mob_spell_list += repulse_action
. = ..()
@@ -638,7 +638,7 @@ Difficulty: Medium
ranged_cooldown = world.time + ranged_cooldown_time
fire_stream()
/obj/effect/proc_holder/spell/aoe/repulse/spacedragon
/datum/spell/aoe/repulse/spacedragon
name = "Tail Sweep"
desc = "Throw back attackers with a sweep of your tail."
sound = 'sound/magic/tail_swing.ogg'
@@ -651,7 +651,7 @@ Difficulty: Medium
action_background_icon_state = "bg_alien"
aoe_range = 1
/obj/effect/proc_holder/spell/aoe/repulse/spacedragon/cast(list/targets, mob/user = usr)
/datum/spell/aoe/repulse/spacedragon/cast(list/targets, mob/user = usr)
if(iscarbon(user))
var/mob/living/carbon/C = user
playsound(C.loc, 'sound/effects/hit_punch.ogg', 80, TRUE, TRUE)
@@ -28,7 +28,7 @@
/mob/living/simple_animal/hostile/retaliate/kangaroo/Initialize(mapload)
. = ..()
// Leap spell, player-only usage
AddSpell(new /obj/effect/proc_holder/spell/leap)
AddSpell(new /datum/spell/leap)
/mob/living/simple_animal/hostile/retaliate/kangaroo/AttackingTarget()
if(client && a_intent != INTENT_HARM)
@@ -46,18 +46,18 @@
/mob/living/simple_animal/hostile/poison/terror_spider/prince/Initialize(mapload)
. = ..()
if(mind)
var/obj/effect/proc_holder/spell/spell = new /obj/effect/proc_holder/spell/princely_charge()
var/datum/spell/spell = new /datum/spell/princely_charge()
mind.AddSpell(spell)
else
RegisterSignal(src, COMSIG_MOB_LOGIN, TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/terror_spider/prince, give_spell))
/mob/living/simple_animal/hostile/poison/terror_spider/prince/proc/give_spell()
SIGNAL_HANDLER
var/obj/effect/proc_holder/spell/spell = new /obj/effect/proc_holder/spell/princely_charge()
var/datum/spell/spell = new /datum/spell/princely_charge()
mind.AddSpell(spell)
UnregisterSignal(src, COMSIG_MOB_LOGIN)
/obj/effect/proc_holder/spell/princely_charge
/datum/spell/princely_charge
name = "Princely Charge"
desc = "You charge at wherever you click on screen, dealing large amounts of damage, stunning and destroying walls and other objects."
gain_desc = "You can now charge at a target on screen, dealing massive damage and destroying structures."
@@ -65,10 +65,10 @@
clothes_req = FALSE
action_icon_state = "terror_prince"
/obj/effect/proc_holder/spell/princely_charge/create_new_targeting()
/datum/spell/princely_charge/create_new_targeting()
return new /datum/spell_targeting/clicked_atom
/obj/effect/proc_holder/spell/princely_charge/cast(list/targets, mob/user)
/datum/spell/princely_charge/cast(list/targets, mob/user)
var/target = targets[1]
if(isliving(user))
var/mob/living/L = user
@@ -70,7 +70,7 @@
/mob/living/simple_animal/shade/sword/Initialize(mapload)
.=..()
AddSpell(new /obj/effect/proc_holder/spell/sentient_sword_lunge)
AddSpell(new /datum/spell/sentient_sword_lunge)
var/obj/item/nullrod/scythe/talking/host_sword = loc
if(istype(host_sword))
health = host_sword.obj_integrity
+1 -1
View File
@@ -77,7 +77,7 @@
if(mind)
for(var/S in mind.spell_list)
var/obj/effect/proc_holder/spell/spell = S
var/datum/spell/spell = S
spell.UpdateButtons()
return TRUE
+3 -3
View File
@@ -1158,14 +1158,14 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
visible_message("<span class='warning'>[src] pukes all over [p_themselves()]!</span>","<span class='warning'>You puke all over yourself!</span>")
add_vomit_floor(TRUE)
/mob/proc/AddSpell(obj/effect/proc_holder/spell/S)
/mob/proc/AddSpell(datum/spell/S)
mob_spell_list += S
S.action.Grant(src)
/mob/proc/RemoveSpell(obj/effect/proc_holder/spell/spell) //To remove a specific spell from a mind
/mob/proc/RemoveSpell(datum/spell/spell) //To remove a specific spell from a mind
if(!spell)
return
for(var/obj/effect/proc_holder/spell/S in mob_spell_list)
for(var/datum/spell/S in mob_spell_list)
if(istype(S, spell))
qdel(S)
mob_spell_list -= S
+1 -1
View File
@@ -197,7 +197,7 @@
var/registered_z
var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override
var/datum/spell/ranged_ability //Any ranged ability the mob has, as a click override
/// Overrides the health HUD element state if set.
var/health_hud_override = HEALTH_HUD_OVERRIDE_NONE