mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-20 10:37:17 +01:00
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:
co-authored by
AffectedArc07
Sirryan2002
Charlie
parent
813e88a8cb
commit
acc48358b4
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user