Alien auto ranged attacks + intent fixes
@@ -314,7 +314,7 @@
|
||||
usr.hud_used.action_intent.icon_state = "intent_help"
|
||||
if("harm")
|
||||
usr.a_intent = "harm"
|
||||
usr.hud_used.action_intent.icon_state = "intent_hurt"
|
||||
usr.hud_used.action_intent.icon_state = "intent_harm"
|
||||
if("grab")
|
||||
usr.a_intent = "grab"
|
||||
usr.hud_used.action_intent.icon_state = "intent_grab"
|
||||
|
||||
@@ -98,6 +98,69 @@
|
||||
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/humanoid/RangedAttack(var/atom/A)
|
||||
if(!large && a_intent == "harm")
|
||||
Neurotox(A)
|
||||
return
|
||||
else if(large && a_intent == "harm")
|
||||
NeuroAOE(A)
|
||||
return
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/Neurotox(atom/A)
|
||||
if(world.time < next_attack)
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
var/turf/U = get_turf(A) // Get the tile infront of the move, based on their direction
|
||||
|
||||
if(!isturf(U) || !isturf(T))
|
||||
return
|
||||
|
||||
var/obj/item/projectile/bullet/neurotoxin/NT = new /obj/item/projectile/bullet/neurotoxin(loc)
|
||||
NT.firer = src
|
||||
// NT.def_zone = get_organ_target()
|
||||
NT.original = A
|
||||
NT.current = T
|
||||
NT.yo = U.y - T.y
|
||||
NT.xo = U.x - T.x
|
||||
spawn( 1)
|
||||
NT.process()
|
||||
next_attack = world.time + 50
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/NeuroAOE(atom/A)
|
||||
if(world.time < next_attack)
|
||||
return
|
||||
|
||||
var/direction = get_dir(src,A)
|
||||
var/turf/T = get_turf(A)
|
||||
var/turf/T1 = get_step(T,turn(direction, 90))
|
||||
var/turf/T2 = get_step(T,turn(direction, -90))
|
||||
|
||||
var/list/the_targets = list(T,T1,T2)
|
||||
|
||||
for(var/a=0, a<5, a++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/water/D = new /obj/effect/effect/water( get_turf(src) )
|
||||
D.color = "#00FF21"
|
||||
var/turf/my_target = pick(the_targets)
|
||||
for(var/b=0, b<5, b++)
|
||||
step_towards(D,my_target)
|
||||
if(!D) return
|
||||
// D.reagents.reaction(get_turf(D))
|
||||
for(var/atom/atm in get_turf(D))
|
||||
if(!D) return
|
||||
if(istype(atm, /mob/living/carbon))
|
||||
var/mob/living/carbon/C = atm
|
||||
C.Weaken(5)
|
||||
C.take_overall_damage(20)
|
||||
C << "You were drenched with neurotoxin!"
|
||||
// D.reagents.reaction(atm, TOUCH) // Touch, since we sprayed it.
|
||||
if(D.loc == my_target) break
|
||||
sleep(2)
|
||||
next_attack = world.time + 50
|
||||
|
||||
|
||||
// Babby aliens
|
||||
/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A)
|
||||
A.attack_larva(src)
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
var/fire_alert = 0
|
||||
|
||||
var/large = 0
|
||||
var/heat_protection = 0.5
|
||||
|
||||
/mob/living/carbon/alien/adjustToxLoss(amount)
|
||||
|
||||
@@ -112,23 +112,6 @@ Doesn't work on other aliens/AI.*/
|
||||
return
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/neurotoxin() // ok
|
||||
set name = "Spit Neurotoxin (50)"
|
||||
set desc = "Spits neurotoxin at someone, paralyzing them for a short time."
|
||||
set category = "Alien"
|
||||
if(powerc(50))
|
||||
adjustToxLoss(-50)
|
||||
src.visible_message("\red [src] spits neurotoxin!", "\green You spit neurotoxin.")
|
||||
var/turf/T = loc
|
||||
var/turf/U = get_step(src, dir) // Get the tile infront of the move, based on their direction
|
||||
if(!isturf(U) || !isturf(T))
|
||||
return
|
||||
var/obj/item/projectile/bullet/neurotoxin/A = new /obj/item/projectile/bullet/neurotoxin(usr.loc)
|
||||
A.current = U
|
||||
A.yo = U.y - T.y
|
||||
A.xo = U.x - T.x
|
||||
A.process()
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
|
||||
set name = "Secrete Resin (75)"
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if(name == "alien sentinel")
|
||||
name = text("alien sentinel ([rand(1, 1000)])")
|
||||
real_name = name
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin)
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid)
|
||||
..()
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel
|
||||
@@ -60,12 +60,15 @@
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/large
|
||||
name = "alien praetorian"
|
||||
icon = 'icons/mob/alienlarge.dmi'
|
||||
icon_state = "prat_s"
|
||||
pixel_x = -16
|
||||
maxHealth = 200
|
||||
health = 200
|
||||
move_delay_add = 1
|
||||
large = 1
|
||||
|
||||
|
||||
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
|
||||
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
icon_state = "empress_s"
|
||||
pixel_x = -32
|
||||
move_delay_add = 3
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/empress/large/update_icons()
|
||||
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
|
||||
@@ -41,7 +42,7 @@
|
||||
break
|
||||
|
||||
real_name = src.name
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin)
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/resin)
|
||||
verbs -= /mob/living/carbon/alien/verb/alien_ventcrawl
|
||||
..()
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
var/obj/item/weapon/r_store = null
|
||||
var/obj/item/weapon/l_store = null
|
||||
var/caste = ""
|
||||
var/next_attack = 0
|
||||
update_icon = 1
|
||||
|
||||
//This is fine right now, if we're adding organ specific damage this needs to be updated
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
break
|
||||
|
||||
real_name = src.name
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/neurotoxin,/mob/living/carbon/alien/humanoid/proc/resin)
|
||||
verbs.Add(/mob/living/carbon/alien/humanoid/proc/corrosive_acid,/mob/living/carbon/alien/humanoid/proc/resin)
|
||||
verbs -= /mob/living/carbon/alien/verb/alien_ventcrawl
|
||||
..()
|
||||
|
||||
@@ -76,6 +76,7 @@
|
||||
icon = 'icons/mob/alienlarge.dmi'
|
||||
icon_state = "queen_s"
|
||||
pixel_x = -16
|
||||
large = 1
|
||||
|
||||
/mob/living/carbon/alien/humanoid/queen/large/update_icons()
|
||||
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
|
||||
|
||||
|
Before Width: | Height: | Size: 139 KiB After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 126 KiB |
|
Before Width: | Height: | Size: 138 KiB After Width: | Height: | Size: 138 KiB |
|
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 112 KiB |