mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user