80 lines
2.4 KiB
Plaintext
80 lines
2.4 KiB
Plaintext
/mob/living/simple_animal/hostile/wizard
|
|
name = "Space Wizard"
|
|
desc = "EI NATH?"
|
|
icon = 'icons/mob/simple_human.dmi'
|
|
icon_state = "wizard"
|
|
icon_living = "wizard"
|
|
icon_dead = "wizard_dead"
|
|
mob_biotypes = list(MOB_ORGANIC, MOB_HUMANOID)
|
|
speak_chance = 0
|
|
turns_per_move = 3
|
|
response_help = "pokes"
|
|
response_disarm = "shoves"
|
|
response_harm = "hits"
|
|
speed = 0
|
|
maxHealth = 100
|
|
health = 100
|
|
harm_intent_damage = 5
|
|
melee_damage_lower = 5
|
|
melee_damage_upper = 5
|
|
attacktext = "punches"
|
|
attack_sound = 'sound/weapons/punch1.ogg'
|
|
a_intent = INTENT_HARM
|
|
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
|
|
unsuitable_atmos_damage = 15
|
|
faction = list(ROLE_WIZARD)
|
|
status_flags = CANPUSH
|
|
|
|
retreat_distance = 3 //out of fireball range
|
|
minimum_distance = 3
|
|
del_on_death = 1
|
|
loot = list(/obj/effect/mob_spawn/human/corpse/wizard,
|
|
/obj/item/staff)
|
|
|
|
var/obj/effect/proc_holder/spell/aimed/fireball/fireball = null
|
|
var/obj/effect/proc_holder/spell/targeted/turf_teleport/blink/blink = null
|
|
var/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/mm = null
|
|
|
|
var/next_cast = 0
|
|
|
|
do_footstep = TRUE
|
|
|
|
/mob/living/simple_animal/hostile/wizard/Initialize()
|
|
. = ..()
|
|
fireball = new /obj/effect/proc_holder/spell/aimed/fireball
|
|
fireball.clothes_req = 0
|
|
fireball.human_req = 0
|
|
fireball.player_lock = 0
|
|
AddSpell(fireball)
|
|
implants += new /obj/item/implant/exile(src)
|
|
|
|
mm = new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile
|
|
mm.clothes_req = 0
|
|
mm.human_req = 0
|
|
mm.player_lock = 0
|
|
AddSpell(mm)
|
|
|
|
blink = new /obj/effect/proc_holder/spell/targeted/turf_teleport/blink
|
|
blink.clothes_req = 0
|
|
blink.human_req = 0
|
|
blink.player_lock = 0
|
|
blink.outer_tele_radius = 3
|
|
AddSpell(blink)
|
|
|
|
/mob/living/simple_animal/hostile/wizard/handle_automated_action()
|
|
. = ..()
|
|
if(target && next_cast < world.time)
|
|
if((get_dir(src,target) in list(SOUTH,EAST,WEST,NORTH)) && fireball.cast_check(0,src)) //Lined up for fireball
|
|
src.setDir(get_dir(src,target))
|
|
fireball.perform(list(target), user = src)
|
|
next_cast = world.time + 10 //One spell per second
|
|
return .
|
|
if(mm.cast_check(0,src))
|
|
mm.choose_targets(src)
|
|
next_cast = world.time + 10
|
|
return .
|
|
if(blink.cast_check(0,src)) //Spam Blink when you can
|
|
blink.choose_targets(src)
|
|
next_cast = world.time + 10
|
|
return .
|