Adds a new mecha-fauna to lavaland. Ready to TM (#17999)

* pain

* more progress

* progress continues

* more progress™️

* saving progress while I swap brances

* leg moving working for real, woo

* more saving as power goes out

* eeven more

* fix transfer

* More changes, closer to pr ready

* final stuff for night backup

* almost done™️

* almost done

* Final changes to get ready for posting

* Update code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>

* new sprite

* Loot added (minus crusher loot)

* Apply suggestions from code review

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>

* Defines, loot, and requested changes, oh my!

* Apply suggestions from code review

Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>

* sound, bluespace charge improvements, more text

* Update code/game/gamemodes/nuclear/pinpointer.dm

Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>

* WOOO CRUSHER ITEM

* don't code when dead tired kids

* Update code/modules/mob/living/simple_animal/hostile/megafauna/ancient_robot.dm

Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>

* Makes crusher loot work, reworks shield for mecha fauna

* Names it, lets it spawn, buffs it, should be ready.

* Adds better sprites.

* pick to rand

* Buff, prevent cheese.

* Merge conflict hook test

* double checking to see if I installed it or not, think I need to manual

* fixes the merge issue

* makes gibtonite not yeet the mechafauna as much.

* fixes hostile/hostile fuckup

* fix most beam issues

* extra qdel insurance but it should be good

* fixes chasm issues, beep on self destruct, extra bluspace charge

* Shrinks the kaboom.

* spelling + beam fix

* Apply suggestions from code review

Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>

* late_initialize, var names, and styling, oh my!

* attacl

Co-authored-by: AffectedArc07 <25063394+AffectedArc07@users.noreply.github.com>
Co-authored-by: Sirryan2002 <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: Charlie <69320440+hal9000PR@users.noreply.github.com>
This commit is contained in:
Qwertytoforty
2022-07-15 15:28:07 +01:00
committed by GitHub
co-authored by AffectedArc07 Sirryan2002 Charlie
parent 813e88a8cb
commit acc48358b4
18 changed files with 908 additions and 3 deletions
+47
View File
@@ -6,6 +6,7 @@
#define MODE_OPERATIVE 5
#define MODE_CREW 6
#define MODE_DET 7
#define MODE_TENDRIL 8
#define SETTING_DISK 0
#define SETTING_LOCATION 1
#define SETTING_OBJECT 2
@@ -87,6 +88,8 @@
return "You point the pinpointer to the nearest operative."
if(MODE_CREW)
return "You turn on the pinpointer."
if(MODE_TENDRIL)
return "High energy scanner active"
/obj/item/pinpointer/proc/activate_mode(mode, mob/user) //for crew pinpointer
return
@@ -459,6 +462,49 @@
var/turf/there = get_turf(H)
return istype(there) && istype(here) && there.z == here.z
/obj/item/pinpointer/tendril
name = "ancient scanning unit"
desc = "Convenient that the scanning unit for the robot survived. Seems to point to the tendrils around here."
icon_state = "pinoff_ancient"
icon_off = "pinoff_ancient"
icon_null = "pinonnull_ancient"
icon_direct = "pinondirect_ancient"
icon_close = "pinonclose_ancient"
icon_medium = "pinonmedium_ancient"
icon_far = "pinonfar_ancient"
modes = list(MODE_TENDRIL)
var/obj/structure/spawner/lavaland/target
/obj/item/pinpointer/tendril/process()
if(mode == MODE_TENDRIL)
worktendril()
point_at(target, FALSE)
else
icon_state = icon_off
/obj/item/pinpointer/tendril/proc/worktendril()
if(mode == MODE_TENDRIL)
scan_for_tendrils()
point_at(target)
else
return FALSE
/obj/item/pinpointer/tendril/proc/scan_for_tendrils()
if(mode == MODE_TENDRIL)
target = null //Resets nearest_op every time it scans
var/closest_distance = 1000
for(var/obj/structure/spawner/lavaland/T in GLOB.tendrils)
var/temp_distance = get_dist(T, get_turf(src))
if(temp_distance < closest_distance)
target = T
closest_distance = temp_distance
/obj/item/pinpointer/tendril/examine(mob/user)
. = ..()
if(mode == MODE_TENDRIL)
. += "Number of high energy signatures remaining: [length(GLOB.tendrils)]"
#undef MODE_OFF
#undef MODE_DISK
#undef MODE_NUKE
@@ -466,6 +512,7 @@
#undef MODE_SHIP
#undef MODE_OPERATIVE
#undef MODE_CREW
#undef MODE_TENDRIL
#undef SETTING_DISK
#undef SETTING_LOCATION
#undef SETTING_OBJECT
+14 -1
View File
@@ -182,8 +182,13 @@
icon = 'icons/obj/projectiles.dmi'
icon_state = "bluespace"
density = TRUE
var/mass_teleporting = TRUE
aSignal = /obj/item/assembly/signaler/anomaly/bluespace
/obj/effect/anomaly/bluespace/Initialize(mapload, new_lifespan, drops_core = TRUE, _mass_teleporting = TRUE)
. = ..()
mass_teleporting = _mass_teleporting
/obj/effect/anomaly/bluespace/anomalyEffect()
..()
for(var/mob/living/M in range(1, src))
@@ -194,6 +199,8 @@
do_teleport(AM, locate(AM.x, AM.y, AM.z), 8)
/obj/effect/anomaly/bluespace/detonate()
if(!mass_teleporting)
return
var/turf/T = pick(get_area_turfs(impact_area))
if(T)
// Calculate new position (searches through beacons in world)
@@ -257,8 +264,13 @@
name = "pyroclastic anomaly"
icon_state = "mustard"
var/ticks = 0
var/produces_slime = TRUE
aSignal = /obj/item/assembly/signaler/anomaly/pyro
/obj/effect/anomaly/pyro/Initialize(mapload, new_lifespan, drops_core = TRUE, _produces_slime = TRUE)
. = ..()
produces_slime = _produces_slime
/obj/effect/anomaly/pyro/anomalyEffect()
..()
ticks++
@@ -271,7 +283,8 @@
T.atmos_spawn_air(LINDA_SPAWN_HEAT | LINDA_SPAWN_TOXINS | LINDA_SPAWN_OXYGEN, 5)
/obj/effect/anomaly/pyro/detonate()
INVOKE_ASYNC(src, .proc/makepyroslime)
if(produces_slime)
INVOKE_ASYNC(src, .proc/makepyroslime)
/obj/effect/anomaly/pyro/proc/makepyroslime()
var/turf/simulated/T = get_turf(src)
+4 -1
View File
@@ -156,7 +156,7 @@
#define SPAWN_MEGAFAUNA "bluh bluh huge boss"
#define SPAWN_BUBBLEGUM 6
GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/megafauna/dragon = 4, /mob/living/simple_animal/hostile/megafauna/colossus = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = SPAWN_BUBBLEGUM))
GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/megafauna/dragon = 4, /mob/living/simple_animal/hostile/megafauna/colossus = 2, /mob/living/simple_animal/hostile/megafauna/bubblegum = SPAWN_BUBBLEGUM, /mob/living/simple_animal/hostile/megafauna/ancient_robot = 4))
/turf/simulated/floor/plating/asteroid/airless/cave
var/length = 100
@@ -302,6 +302,9 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me
if(ispath(randumb, /mob/living/simple_animal/hostile/megafauna/bubblegum)) //there can be only one bubblegum, so don't waste spawns on it
megafauna_spawn_list.Remove(randumb)
if(ispath(randumb, /mob/living/simple_animal/hostile/megafauna/ancient_robot)) //same as above, we do not want multiple of these robots
megafauna_spawn_list.Remove(randumb)
new randumb(T)
#undef SPAWN_MEGAFAUNA
+3 -1
View File
@@ -22,7 +22,9 @@
/obj/effect/temp_visual,
/obj/effect/light_emitter/tendril,
/obj/effect/collapse,
/obj/effect/particle_effect/ion_trails
/obj/effect/particle_effect/ion_trails,
/obj/effect/abstract,
/obj/effect/ebeam
))
var/drop_x = 1
var/drop_y = 1