several improvements: WIP

This commit is contained in:
Sypsoti
2022-04-16 09:24:33 -08:00
committed by atermonera
parent 2774f7dd50
commit 2fae0d653d
5 changed files with 111 additions and 4 deletions
@@ -21,13 +21,68 @@
turn_sound = "skathari_chitter"
harm_intent_damage = 5
melee_damage_lower = 25
melee_damage_upper = 25
melee_damage_upper = 35
attack_armor_pen = 15
attack_sharp = TRUE
attack_edge = TRUE
attacktext = list("slashed")
attack_sound = 'sound/weapons/bladeslice.ogg'
ai_holder_type = /datum/ai_holder/simple_mob/xeno_alien /// Found in xeno_alien_ai.dm
special_attack_min_range = 3
special_attack_max_range = 7
var/special_attack_distance = 1 /// Special cases for drone subtype that doesn't want to get close.
special_attack_cooldown = 5 SECONDS
/mob/living/simple_mob/animal/space/alien/do_special_attack(atom/A)
/// Copied MOSTLY from bluespace slime's do_special_attack
if(!A)
to_chat(src, span("warning", "There's nothing to teleport to."))
return FALSE
var/list/nearby_things = range(special_attack_distance, A)
var/list/valid_turfs = list()
// Check tile density and distance.
for(var/turf/potential_turf in nearby_things)
var/valid_turf = TRUE
if(potential_turf.density)
continue
for(var/atom/movable/AM in potential_turf)
if(AM.density)
valid_turf = FALSE
if(get_dist(potential_turf, A) != special_attack_distance) /// We want to maintain an acceptable distance.
valid_turf = FALSE
if(!can_see(src, potential_turf, 7)) /// We don't want to teleport out of sight!
valid_turf = FALSE
if(valid_turf)
valid_turfs.Add(potential_turf)
var/turf/T = get_turf(src)
var/turf/target_turf = pick(valid_turfs)
if(!target_turf)
to_chat(src, span("warning", "There wasn't an unoccupied spot to teleport to."))
return FALSE
var/datum/effect_system/spark_spread/s1 = new /datum/effect_system/spark_spread
s1.set_up(5, 1, T)
var/datum/effect_system/spark_spread/s2 = new /datum/effect_system/spark_spread
s2.set_up(5, 1, target_turf)
T.visible_message(span("notice", "\The [src] vanishes!"))
s1.start()
forceMove(target_turf)
playsound(target_turf, 'sound/effects/phasein.ogg', 50, 1)
to_chat(src, span("notice", "You teleport to \the [target_turf]."))
target_turf.visible_message(span("warning", "\The [src] appears!"))
s2.start()
if(Adjacent(A))
attack_target(A)
/mob/living/simple_mob/animal/space/alien/death()
var/turf/center = get_turf(src)
@@ -51,10 +106,14 @@
icon_living = "aliend_running"
icon_dead = "aliend_l"
icon_rest = "aliend_sleep"
maxHealth = 80
health = 80
melee_damage_lower = 15
melee_damage_upper = 15
melee_damage_upper = 20
projectiletype = /obj/item/projectile/energy/skathari
ai_holder_type = /datum/ai_holder/simple_mob/xeno_alien/ranged
special_attack_min_range = 1 /// We want to move away quickly!
special_attack_distance = 5 /// Puts us right in the middle of our acceptable range.
/mob/living/simple_mob/animal/space/alien/queen/empress/mother
@@ -77,6 +136,8 @@
icon_expected_width = 96
icon_expected_height = 96
special_attack_distance = 3 /// Will encourage mix of ranged and melee attacks.
/decl/mob_organ_names/skathari
hit_zones = list("carapace", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "head")