From 40ad1eade99ed0424dd972177e9bbb3ccf062537 Mon Sep 17 00:00:00 2001 From: John Candlebury Date: Sat, 29 Jun 2024 14:21:03 -0600 Subject: [PATCH] Microlab Modernization I: Parametrized Microlab Foes (#74608) * Star-Crowned Hound of tindalos Like the normal ones but scarier. * Basic combat Yrax * Parametrized microlab foes * Update data/json/monsters/yrax.json * Fix plurals, grammar. * Update yrax.json --------- Co-authored-by: Maleclypse <54345792+Maleclypse@users.noreply.github.com> --- data/json/items/corpses/dead_yrax.json | 16 + .../mapgen/microlab/microlab_generic.json | 3 +- .../microlab/microlab_generic_edge.json | 33 +- .../mapgen/microlab/microlab_hallway.json | 6 +- .../microlab/microlab_hallway_start.json | 3 +- .../microlab/microlab_moster_nests.json | 315 ++++++++++++++++++ data/json/mapgen_palettes/microlab.json | 27 +- data/json/monsters/nether.json | 50 +++ data/json/monsters/yrax.json | 52 +++ 9 files changed, 485 insertions(+), 20 deletions(-) create mode 100644 data/json/mapgen/microlab/microlab_moster_nests.json diff --git a/data/json/items/corpses/dead_yrax.json b/data/json/items/corpses/dead_yrax.json index a5a1036a71469..4c10f4a8bba87 100644 --- a/data/json/items/corpses/dead_yrax.json +++ b/data/json/items/corpses/dead_yrax.json @@ -15,6 +15,22 @@ "flags": [ "TRADER_AVOID", "NO_REPAIR" ], "melee_damage": { "bash": 20, "cut": 15 } }, + { + "type": "GENERIC", + "id": "broken_yrax_triakis", + "symbol": ",", + "color": "light_gray", + "name": { "str_sp": "triakis remains" }, + "category": "other", + "description": "Its broken shell reveals an interior made from a single piece of quartz, intricately carved into a series of nested tetrahedra.", + "price": "10 USD", + "material": [ "steel", "yrax_quartz" ], + "volume": "119 L", + "weight": "221 kg", + "to_hit": -3, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 20, "cut": 15 } + }, { "id": "broken_golden_monolith", "type": "GENERIC", diff --git a/data/json/mapgen/microlab/microlab_generic.json b/data/json/mapgen/microlab/microlab_generic.json index 1056e5b4875e4..b6d6fd261dd99 100644 --- a/data/json/mapgen/microlab/microlab_generic.json +++ b/data/json/mapgen/microlab/microlab_generic.json @@ -17,6 +17,7 @@ "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "nmn_more_density" } ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_corner" ], "x": 0, "y": 0, "neighbors": { "north_west": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 0, "neighbors": { "north_east": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 23, "neighbors": { "south_east": "microlab" } }, @@ -31,7 +32,7 @@ "chance": 80, "x": [ 0, 23 ], "y": [ 0, 23 ], - "repeat": [ 10, 20 ] + "repeat": [ 2, 7 ] } ] } diff --git a/data/json/mapgen/microlab/microlab_generic_edge.json b/data/json/mapgen/microlab/microlab_generic_edge.json index 8d8e18fa80184..d60909219f5e2 100644 --- a/data/json/mapgen/microlab/microlab_generic_edge.json +++ b/data/json/mapgen/microlab/microlab_generic_edge.json @@ -41,6 +41,7 @@ "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" } ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_wall_ew" ], "x": 0, "y": 0, "neighbors": { "north": "microlab" } }, { "else_chunks": [ "concrete_wall_ns" ], "x": 23, "y": 0, "neighbors": { "east": "microlab" } }, { "else_chunks": [ "concrete_wall_ew" ], "x": 0, "y": 23, "neighbors": { "south": "microlab" } }, @@ -59,7 +60,7 @@ "chance": 80, "x": [ 0, 23 ], "y": [ 0, 23 ], - "repeat": [ 10, 20 ] + "repeat": [ 1, 5 ] } ] } @@ -234,7 +235,7 @@ " c 6|^ dh= = hdhB|c ", " c c|||||| |||||||c ", " c c| 2 2 F|c ", - " | | | | " + " | | | || " ], "palettes": [ "microlab" ] } @@ -246,7 +247,7 @@ "object": { "mapgensize": [ 24, 24 ], "rows": [ - " | | | | ", + " |UUUU| | | ", " U|||||||| |tt 2 ", " U|D@D@D@| |||||||||||", " U| @ @ @| htth ^V |", @@ -269,7 +270,7 @@ " U| @ @ @| | |U ", " U|D@D@D@| |@ h|U ", " U|||||||| |@D t|U ", - " | | ||||||| " + " |UUUU| ||||||| " ], "palettes": [ "microlab" ] } @@ -316,9 +317,9 @@ "object": { "mapgensize": [ 24, 24 ], "rows": [ - " | | | ", - " U h U| |U U|U ", - " U ccc U| |U U|U |", + " | | ", + " U h U| |U U|U ", + " U ccc U| |U U|U |", " ||||||||22|U |", " 2 2 |6h UU |", "||||((((((( |||||||((2|", @@ -338,8 +339,8 @@ " Uc UU( | R|U ", " c 2 |yyyyy|U ", " c ( | |U ", - " c |c cc c| | |U ", - " | | ||||||| " + " c |cc c| | |U ", + " | | ||||||| " ], "palettes": [ "microlab" ] } @@ -408,8 +409,8 @@ " U| YY|22(((|U ", " U| YY| cc6|U ", " U|2|||2||22| h |U ", - " | c|U U| |FFFFF|U ", - " | | ||||||| " + " |U U| |FFFFF|U ", + " |U U| ||||||| " ], "palettes": [ "microlab" ] } @@ -442,9 +443,9 @@ "|2|| |||2| | 6|((2|", " U| YY|22(((|6 ", " U| YY| 666|c ", - " U|2|||2||22| h |c ", - " | c|U U| |^BBB^|U ", - " | | ||||||| " + " U|||||2||22| h |c ", + " i|U U| |^BBB^|U ", + " c|U U| ||||||| " ], "palettes": [ "microlab" ] } @@ -478,8 +479,8 @@ " U| Y^|22(((|6 ", " U| ^^ Y^| 666|c ", " U|2|||2||2|| h |c ", - " U |UU U| |^BBB^|U ", - " | | ||||||| " + " i|U U| |^BBB^|U ", + " c|U U| ||||||| " ], "palettes": [ "microlab" ] } diff --git a/data/json/mapgen/microlab/microlab_hallway.json b/data/json/mapgen/microlab/microlab_hallway.json index 823dacb826e26..c86be8364deee 100644 --- a/data/json/mapgen/microlab/microlab_hallway.json +++ b/data/json/mapgen/microlab/microlab_hallway.json @@ -11,6 +11,7 @@ "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" } ], "x": 0, "y": 0 }, { "chunks": [ { @@ -35,7 +36,7 @@ "chance": 80, "x": [ 0, 23 ], "y": [ 0, 23 ], - "repeat": [ 2, 5 ] + "repeat": [ 0, 1 ] } ] } @@ -48,6 +49,7 @@ "fill_ter": "t_strconc_floor", "place_nested": [ { "chunks": [ "microlab_generic_hallway_curved_tile" ], "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" } ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_corner" ], "x": 0, "y": 0, "neighbors": { "north_west": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 0, "neighbors": { "north_east": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 23, "neighbors": { "south_east": "microlab" } }, @@ -75,6 +77,7 @@ "fill_ter": "t_strconc_floor", "place_nested": [ { "chunks": [ "microlab_generic_hallway_tee_tile" ], "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" } ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_corner" ], "x": 0, "y": 0, "neighbors": { "north_west": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 0, "neighbors": { "north_east": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 23, "neighbors": { "south_east": "microlab" } }, @@ -102,6 +105,7 @@ "fill_ter": "t_strconc_floor", "place_nested": [ { "chunks": [ "microlab_generic_hallway_four_way_tile" ], "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" } ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_corner" ], "x": 0, "y": 0, "neighbors": { "north_west": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 0, "neighbors": { "north_east": "microlab" } }, { "else_chunks": [ "concrete_corner" ], "x": 23, "y": 23, "neighbors": { "south_east": "microlab" } }, diff --git a/data/json/mapgen/microlab/microlab_hallway_start.json b/data/json/mapgen/microlab/microlab_hallway_start.json index 26b07500695d3..df4b16c18dfc9 100644 --- a/data/json/mapgen/microlab/microlab_hallway_start.json +++ b/data/json/mapgen/microlab/microlab_hallway_start.json @@ -7,6 +7,7 @@ "fill_ter": "t_strconc_floor", "place_nested": [ { "chunks": [ "microlab_generic_end_tile" ], "x": 0, "y": 0 }, + { "chunks": [ { "param": "unique_foe", "fallback": "mnm_more_density" }, "null" ], "x": 0, "y": 0 }, { "else_chunks": [ "concrete_wall_ew" ], "x": 0, "y": 0, "neighbors": { "north": "microlab" } }, { "else_chunks": [ "concrete_wall_ns" ], "x": 23, "y": 0, "neighbors": { "east": "microlab" } }, { "else_chunks": [ "concrete_wall_ew" ], "x": 0, "y": 23, "neighbors": { "south": "microlab" } }, @@ -25,7 +26,7 @@ "chance": 80, "x": [ 0, 23 ], "y": [ 0, 23 ], - "repeat": [ 2, 5 ] + "repeat": [ 0, 3 ] } ] } diff --git a/data/json/mapgen/microlab/microlab_moster_nests.json b/data/json/mapgen/microlab/microlab_moster_nests.json new file mode 100644 index 0000000000000..2d067ea23654d --- /dev/null +++ b/data/json/mapgen/microlab/microlab_moster_nests.json @@ -0,0 +1,315 @@ +[ + { + "type": "ter_furn_transform", + "id": "microlab_triffidize", + "terrain": [ { "result": [ "t_strconc_floor", [ "t_region_groundcover_forest", 3 ] ], "valid_terrain": [ "t_strconc_floor" ] } ] + }, + { + "name": "GROUP_MLAB_RUST_ZOMBIE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_zombie_rust", "weight": 250 }, + { "monster": "mon_zombie_urchin", "weight": 20, "starts": "7 days" } + ] + }, + { + "name": "GROUP_MLAB_ACID_ZOMBIE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_zombie_acidic", "weight": 250 }, + { "monster": "mon_zombie_spitter", "weight": 20, "starts": "7 days" } + ] + }, + { + "name": "GROUP_MLAB_PHASE_ZOMBIE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_zombie_phase_skulker", "weight": 250 }, + { "monster": "mon_zombie_phase_shrike", "weight": 20, "starts": "7 days" } + ] + }, + { + "name": "GROUP_MLAB_HUNTER_ZOMBIE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_zombie_hunter", "weight": 250 }, + { "monster": "mon_zombie_predator", "weight": 20, "starts": "7 days" } + ] + }, + { + "name": "GROUP_MLAB_RAPTOR_ZOMBIE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_zombie_pupa", "weight": 50 }, + { "monster": "mon_zombie_pupa_decoy", "weight": 50 }, + { "monster": "mon_spawn_raptor", "weight": 50, "pack_size": [ 1, 3 ] } + ] + }, + { + "name": "GROUP_MLAB_MUTANTS", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_mutant_experimental", "weight": 150 }, + { "monster": "mon_mutant_evolved", "weight": 150 }, + { "monster": "mon_mutant_camouflaged", "weight": 150 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_MLAB_ROBOT", + "monsters": [ + { "monster": "mon_science_bot", "weight": 200 }, + { "monster": "mon_manhack", "weight": 200 }, + { "monster": "mon_tazer_hack", "weight": 200 }, + { "monster": "mon_manhack", "weight": 150, "pack_size": [ 2, 3 ] }, + { "monster": "mon_skitterbot", "weight": 150 }, + { "monster": "mon_skitterbot", "weight": 150, "pack_size": [ 2, 3 ] }, + { "monster": "mon_secubot", "weight": 50 }, + { "monster": "mon_talon_m202a1", "weight": 10 } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_MLAB_LEECH_PLANT", + "monsters": [ + { "monster": "mon_leech_root_drone", "weight": 200 }, + { "monster": "mon_leech_root_runner", "weight": 200 }, + { "monster": "mon_leech_root_drone", "weight": 200, "pack_size": [ 1, 3 ] } + ] + }, + { + "type": "monstergroup", + "name": "GROUP_MLAB_YRAX", + "monsters": [ + { "monster": "mon_yrax_trifacet", "weight": 200 }, + { "monster": "mon_yrax_triakis", "weight": 200 }, + { "monster": "mon_yrax_delta", "weight": 200, "pack_size": [ 1, 3 ] } + ] + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_more_density", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MICROLAB", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_acid_zombies", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_ACID_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_hunter_zombies", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_HUNTER_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_rust_zombies", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_RUST_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_phase_zombies", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_PHASE_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_raptor_zombies", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_RAPTOR_ZOMBIE", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 3, 7 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_robots", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_ROBOT", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 2, 5 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_mutants", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_MUTANTS", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 2, 5 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_wasps", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_nested": [ + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_wasp_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] } + ], + "place_monster": [ { "group": "GROUP_WASP_GUARD", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "method": "json", + "nested_mapgen_id": "3x3_leech_pod", + "object": { + "mapgensize": [ 3, 3 ], + "rows": [ + " x ", + "xAx", + " x " + ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ], + "monster": { "A": { "monster": "mon_leech_stalk" }, "x": { "monster": "mon_leech_pod_cluster", "chance": 10 } } + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_leech_plants", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_nested": [ + { "chunks": [ "3x3_leech_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_leech_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_leech_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] }, + { "chunks": [ "3x3_leech_pod", "null" ], "x": [ 1, 20 ], "y": [ 1, 20 ] } + ], + "place_monster": [ { "group": "GROUP_MLAB_LEECH_PLANT", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_slimes", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_SLIME", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_shadows", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "monster": "mon_darkman", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 12 } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_vampire", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "monster": "mon_star_vampire_coiling", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 25 } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_triffids", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ], + "rows": [ + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^", + "^^^^^^^^^^^^^^^^^^^^^^^^" + ], + "ter_furn_transforms": { "^": { "transform": "microlab_triffidize" } }, + "place_monster": [ { "group": "GROUP_TRIFFID", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 6, 12 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_fungaloids", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_FUNGI", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 6, 12 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_migo", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MI-GO_CAMP_OM", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 1, 3 ] } ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_tindalos", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ + { "monster": "mon_hound_tindalos", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 25 }, + { "monster": "mon_tindalos", "x": [ 0, 23 ], "y": [ 0, 23 ], "chance": 1 } + ] + } + }, + { + "type": "mapgen", + "nested_mapgen_id": "mnm_yrax", + "method": "json", + "object": { + "mapgensize": [ 24, 24 ], + "place_monster": [ { "group": "GROUP_MLAB_YRAX", "x": [ 0, 23 ], "y": [ 0, 23 ], "repeat": [ 1, 3 ] } ] + } + } +] diff --git a/data/json/mapgen_palettes/microlab.json b/data/json/mapgen_palettes/microlab.json index 94a2cd9c47a8a..10e0c12e701b7 100644 --- a/data/json/mapgen_palettes/microlab.json +++ b/data/json/mapgen_palettes/microlab.json @@ -3,7 +3,32 @@ "type": "palette", "id": "microlab", "parameters": { - "labtype": { "type": "palette_id", "default": { "distribution": [ [ "microlab_generic", 6 ], [ "microlab_meat", 1 ] ] } } + "labtype": { "type": "palette_id", "default": { "distribution": [ [ "microlab_generic", 6 ], [ "microlab_meat", 1 ] ] } }, + "unique_foe": { + "type": "nested_mapgen_id", + "default": { + "distribution": [ + [ "mnm_more_density", 10 ], + [ "mnm_acid_zombies", 10 ], + [ "mnm_hunter_zombies", 10 ], + [ "mnm_rust_zombies", 10 ], + [ "mnm_phase_zombies", 10 ], + [ "mnm_raptor_zombies", 10 ], + [ "mnm_robots", 10 ], + [ "mnm_mutants", 10 ], + [ "mnm_wasps", 10 ], + [ "mnm_leech_plants", 10 ], + [ "mnm_slimes", 10 ], + [ "mnm_shadows", 10 ], + [ "mnm_vampire", 10 ], + [ "mnm_triffids", 5 ], + [ "mnm_fungaloids", 10 ], + [ "mnm_migo", 10 ], + [ "mnm_tindalos", 2 ], + [ "mnm_yrax", 2 ] + ] + } + } }, "palettes": [ { "param": "labtype" } ] }, diff --git a/data/json/monsters/nether.json b/data/json/monsters/nether.json index 46ae2eb799858..593b6f51cae1e 100644 --- a/data/json/monsters/nether.json +++ b/data/json/monsters/nether.json @@ -1021,6 +1021,56 @@ "flags": [ "SEES", "SMELLS", "HEARS", "BASHES" ], "armor": { "electric": 1 } }, + { + "id": "mon_tindalos", + "type": "MONSTER", + "name": { "str_sp": "star-crowned hound" }, + "description": "Isometry is torn from the fine structure of space, and the emptiness between disgorges its terrible brood upon the world. Its form is both incomprehensibly vast and infinitely narrow, with splayed limbs that could fold into the paper-thinness of edges.", + "default_faction": "nether", + "looks_like": "mon_hound_tindalos", + "bodytype": "dog", + "species": [ "NETHER" ], + "volume": "30000 ml", + "weight": "40750 g", + "hp": 1200, + "speed": 65, + "material": [ "flesh" ], + "symbol": "h", + "color": "red", + "aggression": 100, + "morale": 100, + "regenerates": 25, + "melee_skill": 8, + "melee_dice": 4, + "melee_dice_sides": 12, + "melee_damage": [ { "damage_type": "cut", "amount": 5 } ], + "dodge": 5, + "bleed_rate": 20, + "vision_day": 50, + "vision_night": 50, + "families": [ "prof_wp_netherium_abomination" ], + "weakpoint_sets": [ "wps_netherium_abomination" ], + "harvest": "exempt", + "special_attacks": [ [ "TINDALOS_TELEPORT", 7 ] ], + "emit_fields": [ { "emit_id": "emit_tindalos_gas_leak", "delay": "1 s" } ], + "path_settings": { "max_dist": 10 }, + "death_function": { "corpse_type": "NO_CORPSE", "message": "The %s melts away." }, + "flags": [ + "SEES", + "SMELLS", + "GOODHEARING", + "HAS_MIND", + "PRIORITIZE_TARGETS", + "KEENNOSE", + "WARM", + "BASHES", + "ARTHROPOD_BLOOD", + "ALWAYS_SEES_YOU", + "NO_BREATHE", + "HARDTOSHOOT" + ], + "armor": { "cut": 50, "bullet": 40, "electric": 1 } + }, { "id": "mon_hound_tindalos", "type": "MONSTER", diff --git a/data/json/monsters/yrax.json b/data/json/monsters/yrax.json index 04f2495557e78..dd0a26e224097 100644 --- a/data/json/monsters/yrax.json +++ b/data/json/monsters/yrax.json @@ -60,6 +60,58 @@ "path_settings": { "avoid_traps": true, "avoid_dangerous_fields": true }, "armor": { "bash": 42, "cut": 48, "acid": 12, "heat": 8, "bullet": 35 } }, + { + "id": "mon_yrax_triakis", + "type": "MONSTER", + "name": { "str_sp": "Yrax triakis" }, + "description": "Short-snakelike limbs seamlessly extend from an aggressively faceted body. Its movements keep it low to the ground, coiled like a trap waiting to spring.", + "default_faction": "yrax", + "volume": "50 L", + "weight": "30 kg", + "species": [ "ROBOT" ], + "bodytype": "trifacet", + "material": [ "steel" ], + "speed": 100, + "symbol": "V", + "morale": 70, + "hp": 50, + "color": "yellow", + "melee_skill": 10, + "melee_dice": 3, + "melee_dice_sides": 8, + "melee_damage": [ { "damage_type": "cut", "amount": 12 } ], + "tracking_distance": 10, + "vision_day": 50, + "vision_night": 20, + "aggro_character": false, + "anger_triggers": [ "FRIEND_ATTACKED", "FRIEND_DIED", "HURT" ], + "special_attacks": [ + { + "type": "leap", + "min_consider_range": 2, + "min_range": 2, + "move_cost": 50, + "max_range": 8, + "allow_no_target": false, + "cooldown": 3 + }, + [ "BIO_OP_IMPALE", 10 ] + ], + "death_function": { "corpse_type": "BROKEN" }, + "flags": [ + "SEES", + "HEARS", + "GOODHEARING", + "NOHEAD", + "NO_BREATHE", + "PATH_AVOID_DANGER", + "HARDTOSHOOT", + "PRIORITIZE_TARGETS", + "HIT_AND_RUN", + "ELECTRONIC" + ], + "armor": { "bash": 42, "cut": 48, "acid": 12, "heat": 8, "bullet": 35 } + }, { "id": "mon_yrax_sphenocorona", "type": "MONSTER",