Skip to content

Commit

Permalink
Basic Constructs: Proteon (tgstation#79425)
Browse files Browse the repository at this point in the history
## About The Pull Request

Last one! Makes proteons into a basic mob, and completely removes the
simple_animal construct supertype.

Proteons aren't really designed to be played by a player, instead being
a nuisance mapped into various ruins and traps. As such, they don't
really have any special abilities. Instead, the hostile variant has a
somewhat unique behavior. They'll viciously attack anyone who comes
close, but, being frail little cowards, if a proteon takes damage it
will immediately flee. After a random period between 2 and 4 seconds, it
will stop fleeing and come back for more.

In addition to this, a few other things have been done, some only
related because they're in files I touched.
- Moved proteons from the file for the Cleric's Den to their own file in
the basic constructs folder. Given that they're used in several
different ruins, they might as well not just be in the file for one.
- Simple constructs have been cut, and with them the procs for
healing/repairing on shades and cult structures, as those are no longer
needed.
- Because I was touching it anyway, I touched up the file for trap
structures. They no longer use any one-letter variable names, and time
is now universally listed in seconds rather than deciseconds in that
file.
- I removed a completely unused blackboard key from ice demons. This is
something I noticed due to a change I ended up not making while working
on proteon AI, but I figured I might as well leave it gone.
## Why It's Good For The Game

Kills the last three simple construct typepaths, bringing us to the
destined 19 removed. Huzzah!

The proteon AI routine should inject a little spice into fighting
proteons, especially for the unprepared - unlike many mobs, they won't
stand there and take it if you decide to fight back, but you can never
safely ignore them when they run away. They still aren't particularly
dangerous.
## Changelog
:cl:
refactor: Proteon constructs now use the basic mob framework. The ones
encountered in ruins are a bit flightier now, and will briefly flee
combat if attacked - only so that they can return and menace you again
soon after. Please report any bugs.
/:cl:

---------

Co-authored-by: san7890 <[email protected]>
  • Loading branch information
lizardqueenlexi and san7890 authored Nov 1, 2023
1 parent c627ac7 commit 08274f8
Show file tree
Hide file tree
Showing 24 changed files with 138 additions and 303 deletions.
4 changes: 2 additions & 2 deletions _maps/RandomRuins/IceRuins/icemoon_surface_engioutpost.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -812,7 +812,7 @@
/turf/open/floor/engine/vacuum,
/area/ruin/planetengi)
"yF" = (
/mob/living/simple_animal/hostile/construct/proteon,
/mob/living/basic/construct/proteon,
/turf/open/floor/iron,
/area/ruin/planetengi)
"Ai" = (
Expand All @@ -823,7 +823,7 @@
/turf/open/floor/iron/icemoon,
/area/ruin/planetengi)
"Iy" = (
/mob/living/simple_animal/hostile/construct/proteon,
/mob/living/basic/construct/proteon,
/obj/effect/turf_decal/tile/yellow,
/turf/open/floor/iron/icemoon,
/area/ruin/planetengi)
Expand Down
4 changes: 2 additions & 2 deletions _maps/RandomRuins/SpaceRuins/clericden.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@
/area/ruin/space)
"E" = (
/obj/effect/decal/cleanable/blood/tracks,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/carpet/airless,
/area/ruin/space)
"F" = (
Expand Down Expand Up @@ -171,7 +171,7 @@
/turf/open/floor/plating/airless,
/area/ruin/space)
"N" = (
/mob/living/simple_animal/hostile/construct/proteon,
/mob/living/basic/construct/proteon,
/turf/open/misc/asteroid/airless,
/area/ruin/space)
"O" = (
Expand Down
16 changes: 8 additions & 8 deletions _maps/RandomRuins/SpaceRuins/the_outlet.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
/turf/open/floor/eighties,
/area/ruin/space/has_grav/the_outlet/storefront)
"cK" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/machinery/light/small/directional/west,
/obj/effect/decal/cleanable/blood{
icon_state = "floor2-old"
Expand Down Expand Up @@ -1056,7 +1056,7 @@
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-4"
},
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune6"
},
Expand Down Expand Up @@ -1222,7 +1222,7 @@
/area/ruin/space/has_grav/the_outlet/storefront)
"Db" = (
/obj/effect/decal/cleanable/crayon,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
"Do" = (
Expand Down Expand Up @@ -1481,7 +1481,7 @@
/obj/effect/decal/cleanable/crayon{
icon_state = "rune2"
},
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/the_outlet/researchrooms)
"IF" = (
Expand Down Expand Up @@ -1573,7 +1573,7 @@
/turf/template_noop,
/area/template_noop)
"LL" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune2"
},
Expand Down Expand Up @@ -1667,7 +1667,7 @@
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4"
},
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
"NE" = (
Expand Down Expand Up @@ -1976,7 +1976,7 @@
dir = 8
},
/obj/effect/decal/cleanable/crayon,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/dirt{
icon_state = "dirt-127"
},
Expand Down Expand Up @@ -2101,7 +2101,7 @@
/turf/open/floor/iron/white,
/area/ruin/space/has_grav/the_outlet/researchrooms)
"Yr" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon,
/turf/open/floor/cult,
/area/ruin/space/has_grav/the_outlet/cultinfluence)
Expand Down
4 changes: 2 additions & 2 deletions _maps/RandomZLevels/moonoutpost19.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -394,7 +394,7 @@
/turf/open/floor/iron,
/area/awaymission/moonoutpost19/research)
"cS" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/structure/flora/lunar_plant,
/turf/open/misc/asteroid/moon{
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
Expand Down Expand Up @@ -434,7 +434,7 @@
},
/area/awaymission/moonoutpost19/syndicate)
"dr" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/turf/open/misc/asteroid/moon{
initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"
},
Expand Down
12 changes: 6 additions & 6 deletions _maps/shuttles/whiteship_obelisk.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@
/area/shuttle/abandoned/engine)
"gw" = (
/obj/structure/cable,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
Expand All @@ -134,7 +134,7 @@
/turf/open/floor/catwalk_floor/iron_smooth,
/area/shuttle/abandoned/engine)
"hg" = (
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/blood/old,
/obj/structure/cable,
/turf/open/floor/mineral/titanium/white,
Expand Down Expand Up @@ -166,7 +166,7 @@
/area/shuttle/abandoned/engine)
"ji" = (
/obj/structure/cable,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{
dir = 4
},
Expand Down Expand Up @@ -438,7 +438,7 @@
/area/shuttle/abandoned/crew)
"yo" = (
/obj/structure/cable,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
Expand Down Expand Up @@ -616,7 +616,7 @@
/area/shuttle/abandoned)
"IH" = (
/obj/structure/cable,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/blood/gibs/core,
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
Expand Down Expand Up @@ -781,7 +781,7 @@
/area/shuttle/abandoned/medbay)
"SE" = (
/obj/structure/cable,
/mob/living/simple_animal/hostile/construct/proteon/hostile,
/mob/living/basic/construct/proteon/hostile,
/obj/effect/decal/cleanable/crayon{
icon_state = "rune4";
paint_colour = "#DC143C"
Expand Down
4 changes: 1 addition & 3 deletions code/__DEFINES/ai/monsters.dm
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,8 @@
#define BB_DEMON_CLONE_ABILITY "demon_clone_ability"
///our slippery ice ability
#define BB_DEMON_SLIP_ABILITY "demon_slip_ability"
///the turf we are escaping too
///the turf we are escaping to
#define BB_ESCAPE_DESTINATION "escape_destination"
///how far away we will be from our target before teleporting
#define BB_MINIMUM_DISTANCE_RANGE "minimum_distance_range"

/// Corpse we have consumed
#define BB_LEGION_CORPSE "legion_corpse"
Expand Down
5 changes: 2 additions & 3 deletions code/__DEFINES/is_helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,8 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(
// basic mobs
#define isbasicmob(A) (istype(A, /mob/living/basic))

#define isconstruct(A) (istype(A, /mob/living/basic/construct))

#define iscow(A) (istype(A, /mob/living/basic/cow))

#define isgorilla(A) (istype(A, /mob/living/basic/gorilla))
Expand All @@ -159,9 +161,6 @@ GLOBAL_LIST_INIT(turfs_pass_meteor, typecacheof(list(

#define ismining(A) (istype(A, /mob/living/simple_animal/hostile/asteroid) || istype(A, /mob/living/basic/mining))

/// constructs, which are both simple and basic for now
#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct) || istype(A, /mob/living/basic/construct))

//Simple animals
#define isanimal(A) (istype(A, /mob/living/simple_animal))

Expand Down
1 change: 0 additions & 1 deletion code/_globalvars/lists/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ GLOBAL_LIST_INIT(abstract_mob_types, list(
/mob/living/simple_animal/bot,
/mob/living/simple_animal/hostile/asteroid/elite,
/mob/living/simple_animal/hostile/asteroid,
/mob/living/simple_animal/hostile/construct,
/mob/living/simple_animal/hostile/guardian,
/mob/living/simple_animal/hostile/megafauna,
/mob/living/simple_animal/hostile/mimic, // Cannot exist if spawned without being passed an item reference
Expand Down
1 change: 0 additions & 1 deletion code/_globalvars/phobias.dm
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,6 @@ GLOBAL_LIST_INIT(phobia_mobs, list(
/mob/living/basic/skeleton,
/mob/living/basic/revenant,
/mob/living/simple_animal/bot/mulebot/paranormal,
/mob/living/simple_animal/hostile/construct,
/mob/living/simple_animal/hostile/dark_wizard,
/mob/living/simple_animal/hostile/wizard,
/mob/living/simple_animal/hostile/zombie,
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/hud/alert.dm
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
alerttooltipstyle = "cult"
var/static/image/narnar
var/angle = 0
var/mob/living/simple_animal/hostile/construct/Cviewer = null
var/mob/living/basic/construct/Cviewer

/atom/movable/screen/alert/bloodsense/Initialize(mapload, datum/hud/hud_owner)
. = ..()
Expand Down
Loading

0 comments on commit 08274f8

Please sign in to comment.