New Sif POIs: Dual Boss (#11043)

This commit is contained in:
FluffMedic
2025-06-10 17:36:47 -04:00
committed by GitHub
parent 36164d40f4
commit 3150ecb27f
9 changed files with 3573 additions and 25 deletions

View File

@@ -1402,6 +1402,19 @@
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/miniburst_b(atom/target, var/next_cycle) /mob/living/simple_mob/mechanical/mecha/eclipse/proc/miniburst_b(atom/target, var/next_cycle)
if(!target) if(!target)
return return
upfour(target)
rightfour(target)
downfour(target)
leftfour(target)
attackcycle = next_cycle
/mob/living/simple_mob/mechanical/mecha/eclipse/proc/miniburst_c(atom/target, var/next_cycle)
if(!target)
return
upfour(target)
rightfour(target)
downfour(target)
leftfour(target)
upfour_leftfour(target) upfour_leftfour(target)
upfour_rightfour(target) upfour_rightfour(target)
downfour_rightfour(target) downfour_rightfour(target)

View File

@@ -39,11 +39,11 @@
armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 0, bio = 100, rad = 100) armor = list(melee = 80, bullet = 80, laser = 80, energy = 80, bomb = 0, bio = 100, rad = 100)
/mob/living/simple_mob/mechanical/hivebot/nanoevent/orange //missiles! /mob/living/simple_mob/mechanical/hivebot/nanoevent/orange //knockback
name = "nanoweave artillery hivebot" name = "nanoweave artillery hivebot"
icon_state = "orange" icon_state = "orange"
icon_living = "orange" icon_living = "orange"
projectiletype = /obj/item/projectile/energy/burninglaser projectiletype = /obj/item/projectile/knockback
movement_cooldown = 1 movement_cooldown = 1
@@ -76,21 +76,15 @@
/obj/item/projectile/beam/midlaser/veryshortrange /obj/item/projectile/beam/midlaser/veryshortrange
range = 2 range = 2
/obj/item/projectile/energy/burninglaser
name = "energy bolt"
icon_state = "heavylaser"
damage = 25
armor_penetration = 20
penetrating = 5
speed = 3
/obj/item/projectile/energy/burninglaser/Move() /obj/item/projectile/energy/lightingspark/nanoweave
. = ..() damage = 15
new /obj/fire(src.loc) armor_penetration = 40
damage_type = BURN
/obj/item/projectile/energy/burninglaser/boss nodamage = 0
armor_penetration = 50 penetrating = 10
speed = 10 icon_state = "tesla_projectile"
speed = 15
/obj/item/projectile/knockback /obj/item/projectile/knockback
name = "sonic blast" name = "sonic blast"
@@ -146,6 +140,21 @@
maxHealth = 5000 maxHealth = 5000
health = 5000 health = 5000
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/boss/sifpoi
maxHealth = 600
health = 600
loot_list = list(/obj/item/prop/alien/junk = 100,
/obj/item/multitool/alien = 20,
/obj/item/stack/cable_coil/alien = 20,
/obj/item/tool/crowbar/alien = 20,
/obj/item/tool/screwdriver/alien = 20,
/obj/item/weldingtool/alien = 20,
/obj/item/tool/wirecutters/alien = 20,
/obj/item/tool/wrench/alien = 20,
/obj/item/cell/device/weapon/recharge/alien = 30,
/obj/item/perfect_tele/alien = 100
)
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/boss/do_special_attack(atom/A) /mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/boss/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well. . = TRUE // So we don't fire a bolt as well.
switch(a_intent) switch(a_intent)
@@ -202,8 +211,8 @@
else else
addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 10), 2 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(miniburst_b), A, 10), 2 SECONDS, TIMER_DELETE_ME)
else if(attackcycle == 10) else if(attackcycle == 10)
say("PROTOCOL: FIREWALL.") say("PROTOCOL: DISCHARGE.")
specialattackprojectile = /obj/item/projectile/energy/burninglaser/boss specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
attackcycle = 0 attackcycle = 0
if(prob(50)) if(prob(50))
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 2 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 2 SECONDS, TIMER_DELETE_ME)
@@ -268,8 +277,8 @@
addtimer(CALLBACK(src, PROC_REF(burst), A, 7), 3 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(burst), A, 7), 3 SECONDS, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
else if(attackcycle == 7) else if(attackcycle == 7)
say("PROTOCOL: FIREWALL.") say("PROTOCOL: DISCHARGE.")
specialattackprojectile = /obj/item/projectile/energy/burninglaser/boss specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
attackcycle = 0 attackcycle = 0
if(prob(50)) if(prob(50))
addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 3 SECONDS, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(miniburst_a), A, 1), 3 SECONDS, TIMER_DELETE_ME)
@@ -321,7 +330,7 @@
say("PROTOCOL: TELEPORT.") say("PROTOCOL: TELEPORT.")
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 1), 1 SECOND, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 1), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
/*
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/green /mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/green
name = "command hivebot" name = "command hivebot"
desc = "A large, very important looking robot." desc = "A large, very important looking robot."
@@ -396,7 +405,7 @@
say("PROTOCOL: TELEPORT.") say("PROTOCOL: TELEPORT.")
addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 1), 1 SECOND, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(teleport_attack), A, 1), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
*/
@@ -420,7 +429,7 @@
icon_state = "orangedisc" icon_state = "orangedisc"
/obj/item/prop/nanoweave/terraformers /obj/item/prop/nanoweave/terraformers
catalogue_data = list(/datum/category_item/catalogue/anomalous/orangedisc) catalogue_data = list(/datum/category_item/catalogue/anomalous/terraformers)
icon_state = "orangedisc" icon_state = "orangedisc"

View File

@@ -33,6 +33,7 @@
desc = "A large, very important looking ai. Plating appears similiar to albative plating." desc = "A large, very important looking ai. Plating appears similiar to albative plating."
icon_state = "powertower" icon_state = "powertower"
icon_living = "powertower" icon_living = "powertower"
faction = FACTION_HIVEBOT
movement_cooldown = 7 movement_cooldown = 7
size_multiplier = 2 size_multiplier = 2
maxHealth = 500 maxHealth = 500
@@ -84,3 +85,69 @@
armor_penetration = 60 armor_penetration = 60
speed = 10 speed = 10
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower
name = "ai control center"
desc = "A large, very important looking ai."
icon_state = "bluetower"
icon_living = "bluetower"
faction = FACTION_HIVEBOT
movement_cooldown = 7
size_multiplier = 2
maxHealth = 500
health = 500
wreckage = /obj/structure/loot_pile/surface/alien/engineering
ai_holder_type = /datum/ai_holder/simple_mob/intentional/three_phases/nomove
anchored = 1
armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 50, bio = 100, rad = 100)
loot_list = list(/obj/item/prop/alien/junk = 100,
/obj/item/multitool/alien = 10,
/obj/item/stack/cable_coil/alien = 10,
/obj/item/tool/crowbar/alien = 10,
/obj/item/tool/screwdriver/alien = 10,
/obj/item/weldingtool/alien = 10,
/obj/item/tool/wirecutters/alien = 10,
/obj/item/tool/wrench/alien = 10,
/obj/item/cell/device/weapon/recharge/alien = 20,
/obj/item/prop/nanoweave/terraformers = 30,
/obj/item/prop/nanoweave/cyan = 30,
/obj/item/prop/nanoweave/lime = 30,
/obj/item/perfect_tele/alien = 50
)
/mob/living/simple_mob/mechanical/mecha/eclipse/hivebot/nanoweavetower/do_special_attack(atom/A)
. = TRUE // So we don't fire a bolt as well.
var/rng_cycle
if(attackcycle == 1)
specialattackprojectile = /obj/item/projectile/beam/burstlaser
rng_cycle = rand(1,5)
say("PROTOCOL: CROSS X.")
addtimer(CALLBACK(src, PROC_REF(miniburst_c), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 2)
specialattackprojectile = /obj/item/projectile/energy/wallbreaker/boss
rng_cycle = rand(1,5)
say("PROTOCOL: PRECISION. SWEEP.")
addtimer(CALLBACK(src, PROC_REF(zone_control_one), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 3)
specialattackprojectile = /obj/item/projectile/energy/lightingspark/nanoweave
rng_cycle = rand(1,5)
say("PROTOCOL: DISCHARGE.")
addtimer(CALLBACK(src, PROC_REF(spin_to_win), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 4)
specialattackprojectile = /obj/item/projectile/knockback
rng_cycle = rand(1,5)
Beam(A, icon_state = "r_beam", time = 2 SECONDS, maxdistance = INFINITY)
say("PROTOCOL: AIRCANNON.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0
else if(attackcycle == 5)
specialattackprojectile = /obj/item/projectile/arc/explosive_rocket/big
rng_cycle = rand(1,5)
Beam(A, icon_state = "r_beam", time = 1 SECOND, maxdistance = INFINITY)
say("PROTOCOL: MISSILE.")
addtimer(CALLBACK(src, PROC_REF(singleproj), A, rng_cycle), 2 SECONDS, TIMER_DELETE_ME)
attackcycle = 0

View File

@@ -331,7 +331,7 @@
submunition_spread_max = 900 submunition_spread_max = 900
submunition_spread_min = 150 submunition_spread_min = 150
spread_submunition_damage = FALSE spread_submunition_damage = FALSE
submunitions = list(/obj/item/projectile/energy/hazardmover/omni = 1, /obj/item/projectile/energy/wallbreaker/boss = 1, /obj/item/projectile/energy/burninglaser/boss = 1) submunitions = list(/obj/item/projectile/energy/hazardmover/omni = 1, /obj/item/projectile/energy/wallbreaker/boss = 1)
/obj/item/projectile/bullet/nanodyson/on_range() /obj/item/projectile/bullet/nanodyson/on_range()
qdel(src) qdel(src)
@@ -369,7 +369,6 @@
addtimer(CALLBACK(src, PROC_REF(omega), A, 3), 1 SECOND, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(omega), A, 3), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
else if(attackcycle == 3) else if(attackcycle == 3)
projectiletype = /obj/item/projectile/energy/burninglaser/boss
addtimer(CALLBACK(src, PROC_REF(alpha_slash), A, 4), 1 SECOND, TIMER_DELETE_ME) addtimer(CALLBACK(src, PROC_REF(alpha_slash), A, 4), 1 SECOND, TIMER_DELETE_ME)
attackcycle = 0 attackcycle = 0
else if(attackcycle == 4) else if(attackcycle == 4)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,8 @@
#include "syndisniperAlt.dmm" #include "syndisniperAlt.dmm"
#include "wolfden.dmm" #include "wolfden.dmm"
#include "xenohive.dmm" #include "xenohive.dmm"
#include "XenoWeaveMajor.dmm"
#include "XenoWeaveMinour.dmm"
#endif #endif
// The 'wilderness' is the endgame for Explorers. Extremely dangerous and far away from help, but with vast shinies. // The 'wilderness' is the endgame for Explorers. Extremely dangerous and far away from help, but with vast shinies.
@@ -533,6 +535,18 @@
mappath = "modular_chomp/maps/submaps/surface_submaps/wilderness/PirateLake.dmm" mappath = "modular_chomp/maps/submaps/surface_submaps/wilderness/PirateLake.dmm"
cost = 20 cost = 20
/datum/map_template/surface/wilderness/deep/XenoWeaveMajor
name = "Assimilated Engine"
desc = "An engine fallen off a precursor structure, stolen by a diffrent breed."
mappath = "modular_chomp/maps/submaps/surface_submaps/wilderness/XenoWeaveMajor.dmm"
cost = 45
/datum/map_template/surface/wilderness/deep/XenoWeaveMinour
name = "Assimilated Building"
desc = "A building claimed and assimilated into the xenoweave."
mappath = "modular_chomp/maps/submaps/surface_submaps/wilderness/XenoWeaveMinour.dmm"
cost = 30
/*==Disabled==/ /*==Disabled==/
/datum/map_template/surface/wilderness/deep/Boombase //YW Edit remove boombase /datum/map_template/surface/wilderness/deep/Boombase //YW Edit remove boombase

View File

@@ -235,6 +235,16 @@
name = "POI Wilderness - Xeno Hive" name = "POI Wilderness - Xeno Hive"
ambience = AMBIENCE_RUINS ambience = AMBIENCE_RUINS
/area/submap/XenoWeaveMajor
name = "POI Wilderness - Assimilated Engine"
ambience = AMBIENCE_HOLY
requires_power = FALSE
/area/submap/XenoWeaveMinour
name = "POI Wilderness - Assimilated Building"
ambience = AMBIENCE_HOLY
requires_power = FALSE
/area/submap/VolcanicFissure /area/submap/VolcanicFissure
name = "POI Wilderness - Volcanic Fissure" name = "POI Wilderness - Volcanic Fissure"
ambience = AMBIENCE_RUINS ambience = AMBIENCE_RUINS