mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
Anomalous Weather Update 2.0 (#8602)
This commit is contained in:
49
modular_chomp/code/game/objects/structures/weathersignal.dm
Normal file
49
modular_chomp/code/game/objects/structures/weathersignal.dm
Normal file
@@ -0,0 +1,49 @@
|
||||
/obj/structure/prop/weather_signal
|
||||
name = "odd device"
|
||||
desc = "A strange machine that has a button but no clear purpose. Seems to hum during certian weathers."
|
||||
icon = 'modular_chomp/icons/mob/starbeast.dmi'
|
||||
icon_state = "machine_working"
|
||||
density = FALSE //Anti-cheese purposes.
|
||||
anchored = TRUE
|
||||
var/uses = 1
|
||||
|
||||
/obj/structure/prop/weather_signal/proc/get_planet()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
|
||||
if(!T.is_outdoors())
|
||||
return
|
||||
|
||||
var/datum/planet/P = SSplanets.z_to_planet[T.z]
|
||||
if(!P)
|
||||
return
|
||||
return P
|
||||
|
||||
/obj/structure/prop/weather_signal/attack_hand(mob/living/user)
|
||||
var/datum/planet/P = get_planet()
|
||||
if(user.is_incorporeal())
|
||||
return
|
||||
to_chat(user, "You push on the [src].")
|
||||
if(uses == 0)
|
||||
to_chat(user, "The machine is destroyed.")
|
||||
|
||||
if(P.weather_holder == /datum/weather/sif/sandstorm)
|
||||
visible_message(span_orange("<B>The [src] begins to tremble before something emerges!.</B>"))
|
||||
uses = 0
|
||||
new /mob/living/simple_mob/vore/weatherbeast/sandstorm (src.loc)
|
||||
|
||||
if(P.weather_holder == /datum/weather/sif/toxinrain)
|
||||
visible_message(span_orange("<B>The [src] begins to tremble before something emerges!.</B>"))
|
||||
uses = 0
|
||||
new /mob/living/simple_mob/vore/weatherbeast/acidrain (src.loc)
|
||||
|
||||
if(P.weather_holder == /datum/weather/sif/midnightfog)
|
||||
visible_message(span_orange("<B>The [src] begins to tremble before something emerges!.</B>"))
|
||||
uses = 0
|
||||
new /mob/living/simple_mob/vore/weatherbeast/darkmist (src.loc)
|
||||
|
||||
if(P.weather_holder == /datum/weather/sif/starryrift)
|
||||
visible_message(span_orange("<B>The [src] begins to tremble before something emerges!.</B>"))
|
||||
uses = 0
|
||||
new /mob/living/simple_mob/vore/weatherbeast/starsky (src.loc)
|
||||
173
modular_chomp/code/modules/exploration/bossloots.dm
Normal file
173
modular_chomp/code/modules/exploration/bossloots.dm
Normal file
@@ -0,0 +1,173 @@
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/death()
|
||||
new /obj/item/weapon/melee/jellyfishwhip (src.loc)
|
||||
new /obj/item/weapon/cell/slime/jellyfish (src.loc)
|
||||
.=..()
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/starsky/death()
|
||||
new /obj/item/weapon/gun/energy/astarrail (src.loc)
|
||||
new /obj/item/weapon/weldingtool/silver (src.loc)
|
||||
.=..()
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/death()
|
||||
new /obj/item/weapon/melee/midnightblade (src.loc)
|
||||
new /obj/item/weapon/reagent_containers/glass/beaker/gilded (src.loc)
|
||||
.=..()
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm/death()
|
||||
new /obj/item/weapon/gun/magnetic/matfed/phoronbore/modified (src.loc)
|
||||
new /obj/item/device/personal_shield_generator/belt/magnetbelt (src.loc)
|
||||
.=..()
|
||||
|
||||
//Acid Rain Boss
|
||||
/obj/item/weapon/melee/jellyfishwhip
|
||||
name = "dettached jellyfish tendril"
|
||||
desc = "The detatched limb of a titan jellyfish."
|
||||
sharp = FALSE
|
||||
edge = FALSE
|
||||
force = 28
|
||||
armor_penetration = 50
|
||||
flags = NOCONDUCT | NOBLOODY
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_SMALL
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "whip"
|
||||
item_state = "chain"
|
||||
|
||||
/obj/item/weapon/melee/jellyfishwhip/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
if(user.a_intent == I_HURT) //Healy mode
|
||||
. = ..()
|
||||
target.adjustFireLoss(10)
|
||||
user.adjustFireLoss(-7)
|
||||
user.adjustBruteLoss(-7)
|
||||
else if(user.a_intent == I_DISARM) //DoT mode
|
||||
. = ..()
|
||||
target.add_modifier(/datum/modifier/poisoned/weak/acid, 20)
|
||||
else if(user.a_intent == I_GRAB) //weaken mode
|
||||
. = ..()
|
||||
target.add_modifier(/datum/modifier/hivebot_weaken, 20)
|
||||
|
||||
/obj/item/weapon/cell/slime/jellyfish //Less max charge then slime but faster recharge
|
||||
name = "Jellyfish Cell Core"
|
||||
desc = "An energezied core of a toxic jellyfish titan."
|
||||
description_info = "This 'cell' holds a max charge of 10k and self recharges over time."
|
||||
maxcharge = 10000
|
||||
charge_amount = 1000
|
||||
|
||||
//Starry Nights
|
||||
/obj/item/weapon/gun/energy/astarrail
|
||||
name = "Astral Slicer"
|
||||
desc = "A strange gun pulsing with energy, it feeling oddly lightweight."
|
||||
icon = 'modular_chomp/icons/obj/guns/precursor/eclipse.dmi'
|
||||
icon_state = "star_revolver"
|
||||
item_state = "star_revolver"
|
||||
wielded_item_state = "cryogun-wielded"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
origin_tech = list(TECH_COMBAT = 6, TECH_POWER = 5, TECH_PRECURSOR = 3)
|
||||
|
||||
|
||||
charge_cost = 600 //How much energy is needed to fire.
|
||||
|
||||
accept_cell_type = /obj/item/weapon/cell/device
|
||||
cell_type = /obj/item/weapon/cell/device/weapon
|
||||
projectile_type = /obj/item/projectile/energy/astralrail
|
||||
|
||||
recoil_mode = 0
|
||||
charge_meter = 1
|
||||
|
||||
reload_time = 1 //Stupidly low recharge. Revolvery weapon.
|
||||
|
||||
move_delay = 0
|
||||
|
||||
|
||||
/obj/item/projectile/energy/astralrail
|
||||
name = "odd mist"
|
||||
icon = 'modular_chomp/icons/mob/starbeast.dmi'
|
||||
icon_state = "mist"
|
||||
fire_sound='sound/weapons/gauss_shoot.ogg'
|
||||
damage = 0
|
||||
nodamage = 1
|
||||
modifier_type_to_apply = /datum/modifier/astralkarma
|
||||
modifier_duration = 0.1 MINUTE
|
||||
|
||||
/datum/modifier/astralkarma
|
||||
name = "starfall"
|
||||
desc = "You feel dead."
|
||||
mob_overlay_state = "red_electricity_constant"
|
||||
stacks = MODIFIER_STACK_EXTEND
|
||||
|
||||
/datum/modifier/astralkarma/tick()
|
||||
holder.adjustBruteLoss(2.5)
|
||||
holder.adjustFireLoss(2.5)
|
||||
|
||||
/obj/item/weapon/weldingtool/silver
|
||||
name = "strange welding tool"
|
||||
desc = "A strange welding tool. Whilst slower then advanced gear of RnD and precursor technolgy, has benefits from both courses."
|
||||
icon_state = "hybwelder"
|
||||
toolspeed = 0.5
|
||||
flame_color = "#C2C2C2" // Light bluish.
|
||||
color = "#C2C2C2"
|
||||
eye_safety_modifier = 1
|
||||
always_process = TRUE
|
||||
reach = 2
|
||||
|
||||
/obj/item/weapon/weldingtool/silver/process()
|
||||
if(get_fuel() <= get_max_fuel())
|
||||
reagents.add_reagent("fuel", 1)
|
||||
..()
|
||||
|
||||
//Midnightfog
|
||||
//funny melee weapon
|
||||
/obj/item/weapon/melee/midnightblade
|
||||
name = "midnight blade"
|
||||
icon_state = "katana"
|
||||
slot_flags = SLOT_BELT | SLOT_BACK //should make a proper sprite some time but spriting energy is hard
|
||||
desc = "A sword where the blade appears to be wreathed in rippling shadows."
|
||||
force = 32 //I don't think weakning melee/speed, or weaking healing is quite the same vaule as 50% block/deflect chance.
|
||||
armor_penetration = 50
|
||||
|
||||
/obj/item/weapon/melee/midnightblade/apply_hit_effect(mob/living/target, mob/living/user, var/hit_zone)
|
||||
if(user.a_intent == I_HURT) //Anti-Heal mode
|
||||
. = ..()
|
||||
target.add_modifier(/datum/modifier/grievous_wounds, 20)
|
||||
else if(user.a_intent == I_DISARM) //weaken mode
|
||||
. = ..()
|
||||
target.add_modifier(/datum/modifier/berserk_exhaustion, 3)
|
||||
else if(user.a_intent == I_GRAB) //The meme mode. 1/1000000 to apply an instant kill debuff....that takes 2 mins to kill.
|
||||
. = ..()
|
||||
if(prob(0.0001))
|
||||
target.add_modifier(/datum/modifier/doomed, 120)
|
||||
|
||||
//A wierd beaker
|
||||
/obj/item/weapon/reagent_containers/glass/beaker/gilded //Soo technically a good item but cumbersome to use.
|
||||
name = "golden beaker"
|
||||
desc = "An odd gold beaker, light seeming to bend around it, it's shadow dancing.."
|
||||
icon_state = "beakergold_unused"
|
||||
center_of_mass_x = 16
|
||||
center_of_mass_y= 13
|
||||
matter = list(MAT_GLASS = 500)
|
||||
volume = 400
|
||||
amount_per_transfer_from_this = 10
|
||||
flags = OPENCONTAINER | NOREACT
|
||||
|
||||
//Sandstorm
|
||||
//Sticking with the mining theme
|
||||
/obj/item/weapon/gun/magnetic/matfed/phoronbore/modified
|
||||
name = "modified portable phoron bore"
|
||||
mat_cost = 100 //more unwieldy ammo better effiency
|
||||
ammo_material = MAT_TRITIUM
|
||||
|
||||
//Mining tool
|
||||
/obj/item/device/personal_shield_generator/belt/magnetbelt
|
||||
name = "magnet generator belt"
|
||||
desc = "A belt that will pull in minerals torwards you."
|
||||
generator_hit_cost = 0
|
||||
generator_active_cost = 0
|
||||
damage_cost = 0
|
||||
modifier_type = /datum/modifier/magnet
|
||||
|
||||
/datum/modifier/magnet //you are now a magnet
|
||||
name = "Magnet Pull"
|
||||
|
||||
/datum/modifier/magnet/tick()
|
||||
for(var/obj/item/weapon/ore/O in orange(4, holder))
|
||||
step_towards(O, get_turf(holder))
|
||||
@@ -0,0 +1,797 @@
|
||||
/mob/living/simple_mob/vore/weatherbeast //Mostly so mappers don't have to scroll through even more things
|
||||
icon = 'modular_chomp/icons/mob/starbeast.dmi'
|
||||
melee_damage_lower = 25
|
||||
melee_damage_upper = 25
|
||||
attack_armor_pen = 30
|
||||
heat_resist = 1
|
||||
cold_resist = 1
|
||||
melee_attack_delay = 1 SECOND
|
||||
grab_resist = 100
|
||||
devourable = 0
|
||||
faction = "Weather_Boss"
|
||||
|
||||
|
||||
//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.
|
||||
//The device to summon them, and a potential anomalous weather summoner is a diffrent file/pr.
|
||||
//Now the design goals.
|
||||
//The dark mist boss, a strange cloaked furball. Bullet hellish with a fair bit of tell.
|
||||
//The star sky boss, a mechanical worm. Trying to alter the work on the old worm code to make it function. May need it's own file.
|
||||
//The sandstorm boss. Dinosaur.
|
||||
//The acidrain boss. Either summoner, or ranged.
|
||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm //slow but endless hunter
|
||||
name = "fossil tank"
|
||||
desc = "A large metal tank."
|
||||
health = 300 //15 laser shots
|
||||
maxHealth = 300 //15 laser shots, assuming no armor
|
||||
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"
|
||||
melee_attack_delay = 0.5 SECOND
|
||||
melee_damage_lower = 40 //Will murder you if you get within melee.
|
||||
melee_damage_upper = 40
|
||||
attack_armor_pen = 40
|
||||
damage_fatigue_mult = 1 //Does slowly pick up speed.
|
||||
injury_enrages = TRUE
|
||||
movement_cooldown = 3 //Kind of slow.
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/fossiltank
|
||||
movement_shake_radius = 8
|
||||
taser_kill = FALSE
|
||||
poison_resist = 1.0
|
||||
shock_resist = -0.2
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 14 //The special attacks are more meant to pin you down or provide a healing to this tank.
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
|
||||
/datum/ai_holder/simple_mob/fossiltank
|
||||
use_astar = TRUE
|
||||
hostile = TRUE
|
||||
retaliate = TRUE
|
||||
mauling = TRUE
|
||||
unconscious_vore = TRUE
|
||||
vision_range = 100 //The entire gimmick of this thing is a slow moving, endless hunter. You shall not escape.
|
||||
respect_alpha = FALSE
|
||||
destructive = TRUE
|
||||
forgive_resting = FALSE
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm/updatehealth()
|
||||
. = ..()
|
||||
|
||||
if(health < maxHealth*0.25)
|
||||
icon_state = "rex_25"
|
||||
icon_living = "rex_25"
|
||||
else if(health < maxHealth*0.5)
|
||||
icon_state = "rex_50"
|
||||
icon_living = "rex_50"
|
||||
else if (health < maxHealth*0.75)
|
||||
icon_state = "rex_75"
|
||||
icon_living = "rex_75"
|
||||
else if (health > maxHealth*0.75)
|
||||
icon_state = "rex"
|
||||
icon_living = "rex"
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/sandstorm/do_special_attack(atom/A)
|
||||
if(health < maxHealth*0.25)
|
||||
visible_message(span_orange("<B>The fossil tank begins self repairs!.</B>"))
|
||||
sleep(3)
|
||||
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)
|
||||
sleep(1)
|
||||
adjustBruteLoss(-40)
|
||||
adjustFireLoss(-40)
|
||||
adjustToxLoss(-40)
|
||||
adjustOxyLoss(-40)
|
||||
adjustCloneLoss(-40)
|
||||
else
|
||||
Beam(A, icon_state = "sat_beam", time = 2.5 SECONDS, maxdistance = INFINITY)
|
||||
sleep(30)
|
||||
var/obj/item/projectile/P = new /obj/item/projectile/beam/stun(get_turf(src))
|
||||
P.launch_projectile(A, BP_TORSO, src)
|
||||
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain //acidrain
|
||||
name = "toxic jellyfish"
|
||||
desc = "A glowing green jellyfish"
|
||||
health = 300 //15 laser shots
|
||||
maxHealth = 300 //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
|
||||
icon_state = "jellyfish"
|
||||
movement_cooldown = -2
|
||||
damage_fatigue_mult = 0 //It's a mutant jellyfish boss mob.
|
||||
glow_color = "#14ff20"
|
||||
light_color = "#14ff20"
|
||||
glow_range = 7
|
||||
glow_intensity = 3
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
special_attack_cooldown = 30 SECONDS
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive/jellyfish
|
||||
//So this guy is gonna be funky. Their special attacks depend on their nutrition.
|
||||
nutrition = 250
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/L = A
|
||||
if(L.nutrition)
|
||||
L.adjust_nutrition(-250)
|
||||
adjust_nutrition(250)
|
||||
if(prob(25))
|
||||
L.adjustHalLoss(20)
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/do_special_attack(atom/A)
|
||||
if(nutrition > 400)
|
||||
visible_message(span_orange("<B>The giant jellyfish begins to regenerate!.</B>"))
|
||||
adjustBruteLoss(-300)
|
||||
adjustFireLoss(-300)
|
||||
else
|
||||
return
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/bullet_act(obj/item/projectile/P)
|
||||
..()
|
||||
if(istype(P, /obj/item/projectile/energy))
|
||||
projectiletype = /obj/item/projectile/energy/declone
|
||||
if(istype(P, /obj/item/projectile/bullet))
|
||||
projectiletype = /obj/item/projectile/energy/bolt
|
||||
if(istype(P, /obj/item/projectile/beam))
|
||||
projectiletype = /obj/item/projectile/beam/gamma
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/handle_special()
|
||||
if(stat != DEAD)
|
||||
acid_aura()
|
||||
..()
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/acidrain/proc/acid_aura()
|
||||
for(var/mob/living/L in view(7, src))
|
||||
if(L.stat == DEAD)
|
||||
continue
|
||||
if(IIsAlly(L))
|
||||
continue
|
||||
if(ishuman(L))
|
||||
var/mob/living/carbon/human/H = L
|
||||
if(H.isSynthetic())
|
||||
continue
|
||||
L.add_modifier(/datum/modifier/poisoned/weak/acid, 12, src)
|
||||
|
||||
/datum/modifier/poisoned/weak/acid //Getting multiple of this will destroy you swiftly.
|
||||
incoming_tox_damage_percent = 1.2
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||
use_astar = TRUE
|
||||
var/closest_desired_distance = 4
|
||||
var/close_range_radius = 3
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/dark_stranger/on_engagement(atom/A)
|
||||
if(get_dist(holder, A) > closest_desired_distance)
|
||||
holder.IMove(get_step_towards(holder, A))
|
||||
|
||||
/datum/ai_holder/simple_mob/intentional/dark_stranger/pre_special_attack(atom/A)
|
||||
if(isliving(A))
|
||||
var/mob/living/target = A
|
||||
if(flee_when_dying && (holder.health / holder.getMaxHealth()) <= 0.4) //Phase two baby lets ago
|
||||
holder.a_intent = I_GRAB
|
||||
|
||||
if(get_dist(target, holder) <= close_range_radius) //So doing a BH tradditonally when they're super close would feel a smidge unfair so get away attacks
|
||||
holder.a_intent = I_DISARM
|
||||
|
||||
else
|
||||
holder.a_intent = I_HURT
|
||||
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist //the dark mist
|
||||
name = "strange figure"
|
||||
desc = "A figure cloaked in purple."
|
||||
health = 300 //15 laser shots
|
||||
maxHealth = 300 //15 laser shots, assuming no armor
|
||||
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"
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||
damage_fatigue_mult = 0
|
||||
movement_cooldown = -1
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
projectiletype = /obj/item/projectile/energy/mob/precursor
|
||||
var/attack_cycle = 1
|
||||
|
||||
/obj/item/projectile/bullet/precursorburst
|
||||
use_submunitions = 1
|
||||
only_submunitions = 1
|
||||
range = 0
|
||||
embed_chance = 0
|
||||
submunition_spread_max = 1200
|
||||
submunition_spread_min = 500
|
||||
submunitions = list(/obj/item/projectile/energy/mob/precursor = 4)
|
||||
|
||||
/obj/item/projectile/bullet/precursorburst/on_range()
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/precursorburst/shotgun
|
||||
submunition_spread_max = 600
|
||||
submunition_spread_min = 100
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/do_special_attack(atom/A)
|
||||
. = TRUE
|
||||
switch(a_intent)
|
||||
if(I_DISARM)
|
||||
close_range(A)
|
||||
if(I_HURT) //
|
||||
bullet_wave(A)
|
||||
if(I_GRAB)
|
||||
phase_two(A)
|
||||
|
||||
|
||||
//The way too many special attacks for one boss
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/close_range(atom/target)
|
||||
if(attack_cycle == 1)
|
||||
fake_pulse(target)
|
||||
else if(attack_cycle == 2)
|
||||
cross_beam(target)
|
||||
else if(attack_cycle == 3)
|
||||
x_beam(target)
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/bullet_wave(atom/target)
|
||||
if(attack_cycle == 1)
|
||||
bullet_storm(target)
|
||||
else if(attack_cycle == 2)
|
||||
laser_grenade(target)
|
||||
else if(attack_cycle == 3)
|
||||
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)
|
||||
attack_cycle = 2
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/cross_beam(atom/target) //Lasers in a cross
|
||||
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
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/down_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/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))
|
||||
north_laser(target)
|
||||
sleep(10)
|
||||
up_right_laser(target)
|
||||
sleep(10)
|
||||
east_laser(target)
|
||||
sleep(10)
|
||||
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
|
||||
north_laser(target)
|
||||
sleep(10)
|
||||
up_left_laser(target)
|
||||
sleep(10)
|
||||
west_laser(target)
|
||||
sleep(10)
|
||||
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)
|
||||
var/obj/item/projectile/P = new /obj/item/projectile/bullet/precursorburst/shotgun(get_turf(src))
|
||||
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)
|
||||
P.launch_projectile(target, BP_TORSO, src)
|
||||
sleep(10)
|
||||
P.launch_projectile(target, BP_TORSO, src)
|
||||
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/dodge_this(atom/target) //two spinny laser wheels of death
|
||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow orange!"))
|
||||
sleep(20)
|
||||
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)
|
||||
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
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/pulse_spam(atom/target) //x laser, and cross laser followed by a flower.
|
||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow silver!"))
|
||||
sleep(20)
|
||||
south_laser(target)
|
||||
north_laser(target)
|
||||
east_laser(target)
|
||||
west_laser(target)
|
||||
sleep(20)
|
||||
down_left_laser(target)
|
||||
down_right_laser(target)
|
||||
up_left_laser(target)
|
||||
up_right_laser(target)
|
||||
sleep(20)
|
||||
south_laser(target)
|
||||
north_laser(target)
|
||||
east_laser(target)
|
||||
west_laser(target)
|
||||
down_left_laser(target)
|
||||
down_right_laser(target)
|
||||
up_left_laser(target)
|
||||
up_right_laser(target)
|
||||
attack_cycle = 3
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/darkmist/proc/influx_wave(atom/target) //X and cross laser patterns paired with shotgun blasts
|
||||
var/obj/item/projectile/P = new /obj/item/projectile/bullet/precursorburst/shotgun(get_turf(src))
|
||||
visible_message(span("warning", "\The [src] pulls out a strange cube. It begins to glow pink!"))
|
||||
sleep(20)
|
||||
down_left_laser(target)
|
||||
down_right_laser(target)
|
||||
up_left_laser(target)
|
||||
up_right_laser(target)
|
||||
P.launch_projectile(target, BP_TORSO, src)
|
||||
sleep(20)
|
||||
south_laser(target)
|
||||
north_laser(target)
|
||||
east_laser(target)
|
||||
west_laser(target)
|
||||
P.launch_projectile(target, BP_TORSO, src)
|
||||
attack_cycle = 1
|
||||
|
||||
//Note to future self, alter this one later to match the one up above when energy returns.
|
||||
/mob/living/simple_mob/vore/weatherbeast/starsky //starry skies
|
||||
name = "guardian unit"
|
||||
desc = "A strange robotic being."
|
||||
health = 300
|
||||
maxHealth = 300
|
||||
armor = list(melee = 40, bullet = 40, laser = 40, energy = 40, bomb = 50, bio = 100, rad = 100)
|
||||
icon_state = "astral_sniper"
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/intentional/dark_stranger
|
||||
damage_fatigue_mult = 0
|
||||
movement_cooldown = -1
|
||||
special_attack_min_range = 1
|
||||
special_attack_max_range = 7
|
||||
special_attack_cooldown = 10 SECONDS
|
||||
projectiletype = /obj/item/projectile/energy/astralrail
|
||||
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/starsky/do_special_attack(atom/A)
|
||||
. = TRUE
|
||||
switch(a_intent)
|
||||
if(I_DISARM)
|
||||
close_wave(A)
|
||||
if(I_HURT) //
|
||||
far_wave(A)
|
||||
if(I_GRAB)
|
||||
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
|
||||
down_down_right_right(target)
|
||||
down_down_left_left(target)
|
||||
up_up_left_left(target)
|
||||
up_up_left_left(target)
|
||||
sleep(20)
|
||||
right_right(target)
|
||||
left_left(target)
|
||||
up_up(target)
|
||||
down_down(target)
|
||||
sleep(20)
|
||||
down_down_left(target)
|
||||
down_down_right(target)
|
||||
down_left_left(target)
|
||||
down_right_right(target)
|
||||
up_up_right(target)
|
||||
up_up_left(target)
|
||||
up_left_left(target)
|
||||
up_right_right(target)
|
||||
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/far_wave(atom/target) //Bullet pattern when folks are far away
|
||||
down_down_left_left(target)
|
||||
down_down_left(target)
|
||||
down_down(target)
|
||||
down_down_right(target)
|
||||
down_down_right_right(target)
|
||||
up_up_left_left(target)
|
||||
up_up_left(target)
|
||||
up_up(target)
|
||||
up_up_right(target)
|
||||
up_up_right_right(target)
|
||||
sleep(20)
|
||||
up_up_right_right(target)
|
||||
up_right_right(target)
|
||||
right_right(target)
|
||||
down_right_right(target)
|
||||
down_down_right_right(target)
|
||||
up_up_left_left(target)
|
||||
up_left_left(target)
|
||||
left_left(target)
|
||||
down_left_left(target)
|
||||
down_down_left_left(target)
|
||||
sleep(20)
|
||||
down_down_left_left(target)
|
||||
down_down_left(target)
|
||||
down_down(target)
|
||||
down_down_right(target)
|
||||
down_down_right_right(target)
|
||||
up_up_left_left(target)
|
||||
up_up_left(target)
|
||||
up_up(target)
|
||||
up_up_right(target)
|
||||
up_up_right_right(target)
|
||||
sleep(20)
|
||||
up_up_right_right(target)
|
||||
up_right_right(target)
|
||||
right_right(target)
|
||||
down_right_right(target)
|
||||
down_down_right_right(target)
|
||||
up_up_left_left(target)
|
||||
up_left_left(target)
|
||||
left_left(target)
|
||||
down_left_left(target)
|
||||
down_down_left_left(target)
|
||||
|
||||
/mob/living/simple_mob/vore/weatherbeast/starsky/proc/phase_two(atom/target) //Phase two bullet pattern
|
||||
up_up_left_left(target)
|
||||
down_down_right_right(target)
|
||||
sleep(10)
|
||||
up_up_left(target)
|
||||
down_down_right(target)
|
||||
sleep(10)
|
||||
up_up(target)
|
||||
down_down(target)
|
||||
sleep(10)
|
||||
up_up_right(target)
|
||||
down_down_left(target)
|
||||
sleep(10)
|
||||
up_up_right_right(target)
|
||||
down_down_left_left(target)
|
||||
sleep(10)
|
||||
up_right_right(target)
|
||||
down_left_left(target)
|
||||
sleep(10)
|
||||
right_right(target)
|
||||
left_left(target)
|
||||
sleep(10)
|
||||
down_right_right(target)
|
||||
up_left_left(target)
|
||||
sleep(10)
|
||||
down_down_right_right(target)
|
||||
up_up_left_left(target)
|
||||
sleep(30)
|
||||
up_up_right(target)
|
||||
up_up(target)
|
||||
up_up_left(target)
|
||||
down_down_right(target)
|
||||
down_down(target)
|
||||
down_down_left(target)
|
||||
left_left(target)
|
||||
up_left_left(target)
|
||||
down_left_left(target)
|
||||
right_right(target)
|
||||
up_right_right(target)
|
||||
down_right_right(target)
|
||||
sleep(30)
|
||||
up_up_left_left(target)
|
||||
up_up_left(target)
|
||||
up_up(target)
|
||||
up_up_right(target)
|
||||
up_up_right_right(target)
|
||||
down_down_left_left(target)
|
||||
down_down_left(target)
|
||||
down_down(target)
|
||||
down_down_right(target)
|
||||
down_down_right_right(target)
|
||||
sleep(30)
|
||||
up_up_left_left(target)
|
||||
up_up_right_right(target)
|
||||
down_down_right_right(target)
|
||||
down_down_left_left(target)
|
||||
sleep(10)
|
||||
up_left_left(target)
|
||||
up_up_right(target)
|
||||
down_down_left(target)
|
||||
down_right_right(target)
|
||||
sleep(10)
|
||||
left_left(target)
|
||||
up_up(target)
|
||||
down_down(target)
|
||||
right_right(target)
|
||||
sleep(10)
|
||||
down_left_left(target)
|
||||
up_up_left(target)
|
||||
down_down_right(target)
|
||||
up_right_right(target)
|
||||
sleep(10)
|
||||
up_up_left_left(target)
|
||||
up_up_right_right(target)
|
||||
down_down_right_right(target)
|
||||
down_down_left_left(target)
|
||||
sleep(50) //False sense of security for the finale
|
||||
up_up_left_left(target)
|
||||
up_up_left(target)
|
||||
up_up(target)
|
||||
up_up_right(target)
|
||||
up_up_right_right(target)
|
||||
up_right_right(target)
|
||||
up_left_left(target)
|
||||
right_right(target)
|
||||
left_left(target)
|
||||
down_right_right(target)
|
||||
down_left_left(target)
|
||||
down_down_left_left(target)
|
||||
down_down_left(target)
|
||||
down_down(target)
|
||||
down_down_right(target)
|
||||
down_down_right_right(target)
|
||||
Reference in New Issue
Block a user