mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 02:34:00 +00:00
AnomalousWeatherUpdate 2.1 (#8808)
This commit is contained in:
@@ -9,7 +9,103 @@
|
|||||||
grab_resist = 100
|
grab_resist = 100
|
||||||
devourable = 0
|
devourable = 0
|
||||||
faction = "Weather_Boss"
|
faction = "Weather_Boss"
|
||||||
|
var/weatherprojectile = /obj/item/projectile/energy/phase/bolt
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_up(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x, src.y+2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_up_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-1, src.y+2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_up_left_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-2, src.y+2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_up_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+1, src.y+2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_up_right_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+2, src.y+2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_right_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+2, src.y+1, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/up_left_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-2, src.y+1, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/left_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-2, src.y, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/right_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+2, src.y, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_down(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x, src.y-2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_down_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-1, src.y-2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_down_left_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-2, src.y-2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_down_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+1, src.y-2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_down_right_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+2, src.y-2, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_right_right(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x+2, src.y-1, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/proc/down_left_left(atom/target)
|
||||||
|
var/obj/item/projectile/P = new weatherprojectile(get_turf(src))
|
||||||
|
var/turf = locate(src.x-2, src.y-1, src.z)
|
||||||
|
target = turf
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
|
||||||
//Sup, trying to be better with commenting of my code and explain the oddities behind myself. Several may seem off
|
//Sup, trying to be better with commenting of my code and explain the oddities behind myself. Several may seem off
|
||||||
//A bit ago I added rare anomalous weather with the intent to add some creatures to summon during them, and well here they are.
|
//A bit ago I added rare anomalous weather with the intent to add some creatures to summon during them, and well here they are.
|
||||||
@@ -22,8 +118,8 @@
|
|||||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm //slow but endless hunter
|
/mob/living/simple_mob/vore/weatherbeast/sandstorm //slow but endless hunter
|
||||||
name = "fossil tank"
|
name = "fossil tank"
|
||||||
desc = "A large metal tank."
|
desc = "A large metal tank."
|
||||||
health = 300 //15 laser shots
|
health = 800
|
||||||
maxHealth = 300 //15 laser shots, assuming no armor
|
maxHealth = 800
|
||||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //No thematics but I like boss critters to take a bit
|
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100) //No thematics but I like boss critters to take a bit
|
||||||
icon_state = "rex"
|
icon_state = "rex"
|
||||||
melee_attack_delay = 0.5 SECOND
|
melee_attack_delay = 0.5 SECOND
|
||||||
@@ -72,92 +168,28 @@
|
|||||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm/do_special_attack(atom/A)
|
/mob/living/simple_mob/vore/weatherbeast/sandstorm/do_special_attack(atom/A)
|
||||||
if(health < maxHealth*0.25)
|
if(health < maxHealth*0.25)
|
||||||
visible_message(span_orange("<B>The fossil tank begins self repairs!.</B>"))
|
visible_message(span_orange("<B>The fossil tank begins self repairs!.</B>"))
|
||||||
sleep(3)
|
sleep(30)
|
||||||
adjustBruteLoss(-40)
|
for(var/i =1 to 10)
|
||||||
adjustFireLoss(-40)
|
adjustBruteLoss(-100)
|
||||||
adjustToxLoss(-40)
|
adjustFireLoss(-100)
|
||||||
adjustOxyLoss(-40)
|
sleep(15)
|
||||||
adjustCloneLoss(-40)
|
adjustBruteLoss(-100)
|
||||||
sleep(1)
|
adjustFireLoss(-100)
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
sleep(1)
|
|
||||||
adjustBruteLoss(-40)
|
|
||||||
adjustFireLoss(-40)
|
|
||||||
adjustToxLoss(-40)
|
|
||||||
adjustOxyLoss(-40)
|
|
||||||
adjustCloneLoss(-40)
|
|
||||||
else
|
else
|
||||||
Beam(A, icon_state = "sat_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
|
Beam(A, icon_state = "sat_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
|
||||||
sleep(30)
|
sleep(30)
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/stun(get_turf(src))
|
var/obj/item/projectile/P = new /obj/item/projectile/beam/lightning(get_turf(src))
|
||||||
P.launch_projectile(A, BP_TORSO, src)
|
P.launch_projectile(A, BP_TORSO, src)
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/acidrain //acidrain
|
/mob/living/simple_mob/vore/weatherbeast/acidrain //acidrain
|
||||||
name = "toxic jellyfish"
|
name = "toxic jellyfish"
|
||||||
desc = "A glowing green jellyfish"
|
desc = "A glowing green jellyfish"
|
||||||
health = 300 //15 laser shots
|
health = 700 //15 laser shots
|
||||||
maxHealth = 300 //15 laser shots, assuming no armor
|
maxHealth = 700 //15 laser shots, assuming no armor
|
||||||
armor = list(melee = 60, bullet = 60, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 100) //So, it's made of jelly. Bullets and melee bounces off of it. The 20 laser and energy are for a smidge extra tankny because I savour endurance fights
|
armor = list(melee = 60, bullet = 60, laser = 20, energy = 20, bomb = 50, bio = 100, rad = 100) //So, it's made of jelly. Bullets and melee bounces off of it. The 20 laser and energy are for a smidge extra tankny because I savour endurance fights
|
||||||
icon_state = "jellyfish"
|
icon_state = "jellyfish"
|
||||||
|
icon_state = "jellyfish_dead"
|
||||||
movement_cooldown = -2
|
movement_cooldown = -2
|
||||||
damage_fatigue_mult = 0 //It's a mutant jellyfish boss mob.
|
damage_fatigue_mult = 0 //It's a mutant jellyfish boss mob.
|
||||||
glow_color = "#14ff20"
|
glow_color = "#14ff20"
|
||||||
@@ -182,10 +214,11 @@
|
|||||||
L.adjustHalLoss(20)
|
L.adjustHalLoss(20)
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/do_special_attack(atom/A)
|
/mob/living/simple_mob/vore/weatherbeast/acidrain/do_special_attack(atom/A)
|
||||||
if(nutrition > 400)
|
if(nutrition > 1100)
|
||||||
visible_message(span_orange("<B>The giant jellyfish begins to regenerate!.</B>"))
|
visible_message(span_orange("<B>The giant jellyfish begins to regenerate!.</B>"))
|
||||||
adjustBruteLoss(-300)
|
adjustBruteLoss(-300)
|
||||||
adjustFireLoss(-300)
|
adjustFireLoss(-300)
|
||||||
|
adjust_nutrition(-500)
|
||||||
else
|
else
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -193,10 +226,13 @@
|
|||||||
..()
|
..()
|
||||||
if(istype(P, /obj/item/projectile/energy))
|
if(istype(P, /obj/item/projectile/energy))
|
||||||
projectiletype = /obj/item/projectile/energy/declone
|
projectiletype = /obj/item/projectile/energy/declone
|
||||||
|
adjust_nutrition(-50)
|
||||||
if(istype(P, /obj/item/projectile/bullet))
|
if(istype(P, /obj/item/projectile/bullet))
|
||||||
projectiletype = /obj/item/projectile/energy/bolt
|
projectiletype = /obj/item/projectile/energy/bolt
|
||||||
|
adjust_nutrition(-50)
|
||||||
if(istype(P, /obj/item/projectile/beam))
|
if(istype(P, /obj/item/projectile/beam))
|
||||||
projectiletype = /obj/item/projectile/beam/gamma
|
projectiletype = /obj/item/projectile/beam/gamma
|
||||||
|
adjust_nutrition(-50)
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/handle_special()
|
/mob/living/simple_mob/vore/weatherbeast/acidrain/handle_special()
|
||||||
if(stat != DEAD)
|
if(stat != DEAD)
|
||||||
@@ -216,7 +252,7 @@
|
|||||||
L.add_modifier(/datum/modifier/poisoned/weak/acid, 12, src)
|
L.add_modifier(/datum/modifier/poisoned/weak/acid, 12, src)
|
||||||
|
|
||||||
/datum/modifier/poisoned/weak/acid //Getting multiple of this will destroy you swiftly.
|
/datum/modifier/poisoned/weak/acid //Getting multiple of this will destroy you swiftly.
|
||||||
incoming_tox_damage_percent = 1.2
|
incoming_tox_damage_percent = 1.5
|
||||||
|
|
||||||
/datum/ai_holder/simple_mob/intentional/dark_stranger
|
/datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||||
use_astar = TRUE
|
use_astar = TRUE
|
||||||
@@ -243,17 +279,19 @@
|
|||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist //the dark mist
|
/mob/living/simple_mob/vore/weatherbeast/darkmist //the dark mist
|
||||||
name = "strange figure"
|
name = "strange figure"
|
||||||
desc = "A figure cloaked in purple."
|
desc = "A figure cloaked in purple."
|
||||||
health = 300 //15 laser shots
|
health = 700
|
||||||
maxHealth = 300 //15 laser shots, assuming no armor
|
maxHealth = 700
|
||||||
armor = list(melee = 20, bullet = 20, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100) //Is use to manpulation of strange energies
|
armor = list(melee = 20, bullet = 20, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100) //Is use to manpulation of strange energies
|
||||||
icon_state = "stranger"
|
icon_state = "stranger"
|
||||||
|
icon_dead = "stranger_dead"
|
||||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||||
damage_fatigue_mult = 0
|
damage_fatigue_mult = 0
|
||||||
movement_cooldown = -1
|
movement_cooldown = -1
|
||||||
special_attack_min_range = 1
|
special_attack_min_range = 1
|
||||||
special_attack_max_range = 7
|
special_attack_max_range = 7
|
||||||
special_attack_cooldown = 10 SECONDS
|
special_attack_cooldown = 0.5 SECONDS
|
||||||
projectiletype = /obj/item/projectile/energy/mob/precursor
|
projectiletype = /obj/item/projectile/energy/mob/precursor
|
||||||
|
weatherprojectile = /obj/item/projectile/energy/mob/precursor
|
||||||
var/attack_cycle = 1
|
var/attack_cycle = 1
|
||||||
|
|
||||||
/obj/item/projectile/bullet/precursorburst
|
/obj/item/projectile/bullet/precursorburst
|
||||||
@@ -284,232 +322,230 @@
|
|||||||
|
|
||||||
|
|
||||||
//The way too many special attacks for one boss
|
//The way too many special attacks for one boss
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_range(atom/target)
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_range(atom/target) //when things are close, going to do pure lasers
|
||||||
|
weatherprojectile = /obj/item/projectile/beam/precursor
|
||||||
if(attack_cycle == 1)
|
if(attack_cycle == 1)
|
||||||
fake_pulse(target)
|
close_one(target)
|
||||||
else if(attack_cycle == 2)
|
else if(attack_cycle == 2)
|
||||||
cross_beam(target)
|
close_two(target)
|
||||||
else if(attack_cycle == 3)
|
else if(attack_cycle == 3)
|
||||||
x_beam(target)
|
close_three(target)
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/bullet_wave(atom/target)
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/normal_one(atom/target) //we attempt to be a machine gun
|
||||||
if(attack_cycle == 1)
|
icon_state = "stranger_one"
|
||||||
bullet_storm(target)
|
Beam(target, icon_state = "sat_beam", time = 5 SECONDS, maxdistance = INFINITY)
|
||||||
else if(attack_cycle == 2)
|
var/obj/item/projectile/P = new /obj/item/projectile/energy/mob/precursor(get_turf(src))
|
||||||
laser_grenade(target)
|
sleep(5)
|
||||||
else if(attack_cycle == 3)
|
for(var/i =1 to 5)
|
||||||
laser_shotgun(target)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/phase_two(atom/target)
|
|
||||||
if(attack_cycle == 1)
|
|
||||||
dodge_this(target)
|
|
||||||
else if(attack_cycle == 2)
|
|
||||||
pulse_spam(target)
|
|
||||||
else if(attack_cycle == 3)
|
|
||||||
influx_wave(target)
|
|
||||||
|
|
||||||
//close range attacks.
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/fake_pulse(atom/target)
|
|
||||||
Beam(target, icon_state = "sat_beam", time = 1.5 SECONDS, maxdistance = INFINITY)
|
|
||||||
sleep(20)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
sleep(5)
|
||||||
|
P.launch_projectile(, BP_TORSO, src)
|
||||||
attack_cycle = 2
|
attack_cycle = 2
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/cross_beam(atom/target) //Lasers in a cross
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/normal_two(atom/target) //Get up/down or to the side
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow red!"))
|
|
||||||
sleep(15)
|
|
||||||
down_left_laser(target)
|
|
||||||
down_right_laser(target)
|
|
||||||
up_left_laser(target)
|
|
||||||
up_right_laser(target)
|
|
||||||
attack_cycle = 3
|
attack_cycle = 3
|
||||||
|
icon_state = "stranger_three"
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/down_left_laser(atom/target)
|
sleep(10)
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x-1, src.y-1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/down_right_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x+1, src.y-1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/up_left_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x-1, src.y+1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/up_right_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x+1, src.y+1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/x_beam(atom/target) //Lasers in an X
|
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow blue!"))
|
|
||||||
sleep(15)
|
|
||||||
south_laser(target)
|
|
||||||
north_laser(target)
|
|
||||||
east_laser(target)
|
|
||||||
west_laser(target)
|
|
||||||
attack_cycle = 1
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/south_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x, src.y-1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/north_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x, src.y+1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/east_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x+1, src.y, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/west_laser(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
|
||||||
var/turf = locate(src.x-1, src.y, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
//BH based attacks
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/bullet_storm(atom/target) //Storm of lasers
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/bullet/precursorburst(get_turf(src))
|
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to widly spin!"))
|
|
||||||
sleep(20)
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
sleep(30)
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
sleep(30)
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
attack_cycle = 2
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/laser_grenade(atom/target)
|
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow green!"))
|
|
||||||
sleep(20)
|
|
||||||
if(prob(50))
|
if(prob(50))
|
||||||
north_laser(target)
|
up_up(target)
|
||||||
sleep(10)
|
up_up_left(target)
|
||||||
up_right_laser(target)
|
up_up_right(target)
|
||||||
sleep(10)
|
down_down(target)
|
||||||
east_laser(target)
|
down_down_right(target)
|
||||||
sleep(10)
|
down_down_left(target)
|
||||||
down_right_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
south_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
down_left_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
west_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
up_left_laser(target)
|
|
||||||
attack_cycle = 2
|
|
||||||
else
|
else
|
||||||
north_laser(target)
|
up_left_left(target)
|
||||||
sleep(10)
|
left_left(target)
|
||||||
up_left_laser(target)
|
down_left_left(target)
|
||||||
sleep(10)
|
down_right_right(target)
|
||||||
west_laser(target)
|
up_right_right(target)
|
||||||
sleep(10)
|
right_right(target)
|
||||||
down_left_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
south_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
down_right_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
east_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
up_right_laser(target)
|
|
||||||
attack_cycle = 3
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/laser_shotgun(atom/target)
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/normal_three(atom/target) //Yes
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/bullet/precursorburst/shotgun(get_turf(src))
|
icon_state = "stranger_five"
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow bright purple!"))
|
|
||||||
sleep(20) //A build up before the BH.
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
sleep(10)
|
sleep(10)
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
up_left_left(target)
|
||||||
sleep(10)
|
left_left(target)
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
down_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
up_right_right(target)
|
||||||
|
right_right(target)
|
||||||
|
up_up(target)
|
||||||
|
up_up_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
down_down(target)
|
||||||
|
down_down_right(target)
|
||||||
|
down_down_left(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
down_down_right_right(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
up_up_left_left(target)
|
||||||
attack_cycle = 1
|
attack_cycle = 1
|
||||||
|
|
||||||
//Phase two attacks. This names are from a previous draft and I laugh at them so they're staying.
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/bullet_wave(atom/target) //when long away, projectiles.
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/dodge_this(atom/target) //two spinny laser wheels of death
|
weatherprojectile = /obj/item/projectile/energy/mob/precursor
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow orange!"))
|
if(attack_cycle == 1)
|
||||||
sleep(20)
|
normal_one(target)
|
||||||
north_laser(target)
|
else if(attack_cycle == 2)
|
||||||
south_laser(target)
|
normal_two(target)
|
||||||
sleep(10)
|
else if(attack_cycle == 3)
|
||||||
down_right_laser(target)
|
normal_three(target)
|
||||||
up_left_laser(target)
|
|
||||||
sleep(10)
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_one(atom/target) //Firing a laser
|
||||||
west_laser(target)
|
icon_state = "stranger_two"
|
||||||
east_laser(target)
|
Beam(target, icon_state = "sat_beam", time = 5 SECONDS, maxdistance = INFINITY)
|
||||||
sleep(10)
|
var/obj/item/projectile/P = new /obj/item/projectile/beam/precursor(get_turf(src))
|
||||||
up_right_laser(target)
|
sleep(25)
|
||||||
down_left_laser(target)
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
sleep(10)
|
|
||||||
north_laser(target)
|
|
||||||
south_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
down_right_laser(target)
|
|
||||||
up_left_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
west_laser(target)
|
|
||||||
east_laser(target)
|
|
||||||
sleep(10)
|
|
||||||
up_right_laser(target)
|
|
||||||
down_left_laser(target)
|
|
||||||
attack_cycle = 2
|
attack_cycle = 2
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/pulse_spam(atom/target) //x laser, and cross laser followed by a flower.
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_two(atom/target) //Does either an X or a cross
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow silver!"))
|
attack_cycle = 3
|
||||||
sleep(20)
|
icon_state = "stranger_four"
|
||||||
south_laser(target)
|
sleep(10)
|
||||||
north_laser(target)
|
if(prob(50))
|
||||||
east_laser(target)
|
up_up_left_left(target)
|
||||||
west_laser(target)
|
up_up_right_right(target)
|
||||||
sleep(20)
|
down_down_left_left(target)
|
||||||
down_left_laser(target)
|
down_down_right_right(target)
|
||||||
down_right_laser(target)
|
else
|
||||||
up_left_laser(target)
|
up_up(target)
|
||||||
up_right_laser(target)
|
down_down(target)
|
||||||
sleep(20)
|
left_left(target)
|
||||||
south_laser(target)
|
right_right(target)
|
||||||
north_laser(target)
|
|
||||||
east_laser(target)
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_three(atom/target)
|
||||||
west_laser(target)
|
icon_state = "stranger_six"
|
||||||
down_left_laser(target)
|
sleep(10)
|
||||||
down_right_laser(target)
|
up_up_left_left(target)
|
||||||
up_left_laser(target)
|
down_down_right_right(target)
|
||||||
up_right_laser(target)
|
sleep(5)
|
||||||
|
up_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
left_left(target)
|
||||||
|
right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_left_left(target)
|
||||||
|
up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down(target)
|
||||||
|
up_up(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
attack_cycle = 1
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/phase_two(atom/target) //phase two we just mix and and match.
|
||||||
|
if(attack_cycle == 1)
|
||||||
|
phasetwo_one(target)
|
||||||
|
else if(attack_cycle == 2)
|
||||||
|
phasetwo_two(target)
|
||||||
|
else if(attack_cycle == 3)
|
||||||
|
phasetwo_three(target)
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/phasetwo_one(atom/target) //Lighting
|
||||||
|
icon_state = "stranger_eight"
|
||||||
|
Beam(target, icon_state = "sat_beam", time = 5 SECONDS, maxdistance = INFINITY)
|
||||||
|
var/obj/item/projectile/P = new /obj/item/projectile/beam/chain_lightning(get_turf(src))
|
||||||
|
sleep(5)
|
||||||
|
P.launch_projectile(target, BP_TORSO, src)
|
||||||
|
attack_cycle = 2
|
||||||
|
|
||||||
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/phasetwo_two(atom/target) //four spinny lasers. However lesser damage projectile
|
||||||
|
weatherprojectile = /obj/item/projectile/beam/inversion
|
||||||
|
icon_state = "stranger_seven"
|
||||||
|
sleep(10)
|
||||||
|
up_up_left_left(target)
|
||||||
|
down_down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down(target)
|
||||||
|
up_up(target)
|
||||||
|
left_left(target)
|
||||||
|
right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_left_left(target) //test
|
||||||
|
up_right_right(target)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_up_left_left(target)
|
||||||
|
down_down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down(target)
|
||||||
|
up_up(target)
|
||||||
|
left_left(target)
|
||||||
|
right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_left_left(target)
|
||||||
|
up_right_right(target)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
attack_cycle = 3
|
attack_cycle = 3
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/influx_wave(atom/target) //X and cross laser patterns paired with shotgun blasts
|
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/phasetwo_three(atom/target) //and reverse with a dangerous projectile
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/bullet/precursorburst/shotgun(get_turf(src))
|
weatherprojectile = /obj/item/projectile/beam/crippling_beam
|
||||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow pink!"))
|
icon_state = "stranger_nine"
|
||||||
sleep(20)
|
sleep(10)
|
||||||
down_left_laser(target)
|
down_left_left(target)
|
||||||
down_right_laser(target)
|
up_right_right(target)
|
||||||
up_left_laser(target)
|
down_down_left(target)
|
||||||
up_right_laser(target)
|
up_up_right(target)
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
sleep(5)
|
||||||
sleep(20)
|
down_down(target)
|
||||||
south_laser(target)
|
up_up(target)
|
||||||
north_laser(target)
|
left_left(target)
|
||||||
east_laser(target)
|
right_right(target)
|
||||||
west_laser(target)
|
sleep(5)
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
up_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_up_left_left(target)
|
||||||
|
down_down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_left_left(target)
|
||||||
|
up_right_right(target)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
sleep(5)
|
||||||
|
down_down(target)
|
||||||
|
up_up(target)
|
||||||
|
left_left(target)
|
||||||
|
right_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_left_left(target)
|
||||||
|
down_right_right(target)
|
||||||
|
down_down_left(target)
|
||||||
|
up_up_right(target)
|
||||||
|
sleep(5)
|
||||||
|
up_up_left_left(target)
|
||||||
|
down_down_right_right(target)
|
||||||
|
down_down_left_left(target)
|
||||||
|
up_up_right_right(target)
|
||||||
attack_cycle = 1
|
attack_cycle = 1
|
||||||
|
|
||||||
//Note to future self, alter this one later to match the one up above when energy returns.
|
//Note to future self, alter this one later to match the one up above when energy returns.
|
||||||
@@ -520,6 +556,7 @@
|
|||||||
maxHealth = 300
|
maxHealth = 300
|
||||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||||
icon_state = "astral_sniper"
|
icon_state = "astral_sniper"
|
||||||
|
icon_dead = "astral_sniper_dead"
|
||||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||||
damage_fatigue_mult = 0
|
damage_fatigue_mult = 0
|
||||||
movement_cooldown = -1
|
movement_cooldown = -1
|
||||||
@@ -527,6 +564,7 @@
|
|||||||
special_attack_max_range = 7
|
special_attack_max_range = 7
|
||||||
special_attack_cooldown = 10 SECONDS
|
special_attack_cooldown = 10 SECONDS
|
||||||
projectiletype = /obj/item/projectile/energy/astralrail
|
projectiletype = /obj/item/projectile/energy/astralrail
|
||||||
|
weatherprojectile = /obj/item/projectile/energy/astralrail
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/do_special_attack(atom/A)
|
/mob/living/simple_mob/vore/weatherbeast/starsky/do_special_attack(atom/A)
|
||||||
@@ -539,102 +577,6 @@
|
|||||||
if(I_GRAB)
|
if(I_GRAB)
|
||||||
phase_two(A)
|
phase_two(A)
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_up(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x, src.y+2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_up_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-1, src.y+2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_up_left_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-2, src.y+2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_up_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+1, src.y+2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_up_right_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+2, src.y+2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_right_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+2, src.y+1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/up_left_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-2, src.y+1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/left_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-2, src.y, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/right_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+2, src.y, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_down(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x, src.y-2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_down_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-1, src.y-2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_down_left_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-2, src.y-2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_down_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+1, src.y-2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_down_right_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+2, src.y-2, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_right_right(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x+2, src.y-1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/down_left_left(atom/target)
|
|
||||||
var/obj/item/projectile/P = new /obj/item/projectile/energy/astralrail(get_turf(src))
|
|
||||||
var/turf = locate(src.x-2, src.y-1, src.z)
|
|
||||||
target = turf
|
|
||||||
P.launch_projectile(target, BP_TORSO, src)
|
|
||||||
|
|
||||||
|
|
||||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/close_wave(atom/target) //bullet pattern when folks up close
|
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/close_wave(atom/target) //bullet pattern when folks up close
|
||||||
down_down_right_right(target)
|
down_down_right_right(target)
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 19 KiB |
Reference in New Issue
Block a user