Files
GS13NG/code/modules/mob/living/simple_animal/hostile/wizard.dm
T
2018-09-11 07:51:01 -05:00

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 .