From a42711fb1236e2bc4ccbfdeeda11cfd4927ebe44 Mon Sep 17 00:00:00 2001 From: Maleclypse <54345792+Maleclypse@users.noreply.github.com> Date: Fri, 10 May 2024 00:54:20 -0500 Subject: [PATCH] [Aftershock] Bounty hunter scenario (#56153) * Bounty Hunter Scenario * more stuff * First start plus new spell targeting c++ Update needle.json Update data/mods/Aftershock/items/gun/needle.json Update magic.h Co-Authored-By: Dillon Matchett * Add species as a possible spell target * Apply suggestions from code review Co-authored-by: TheShadowFerret <99621099+TheShadowFerret@users.noreply.github.com> * Update scenarios.json * Update magic.h * Update magic.cpp * Apply suggestions from code review * Update overmap_map_extras.json * Fixes * more * Update gunship.json * Update gunship.json * Update gunship.json * Update gunship.json * moar work * Update terrain_spaceship.json Update gunship.json * Update dictionary.txt * Gunship terrain * Update terrain_spaceship.json * Update terrain_spaceship.json * Update terrain_spaceship.json * Update terrain_spaceship.json * fixes * fixes * fixes * Update terrain_spaceship.json * Update terrain_spaceship.json * Apply suggestions from code review * Update terrain_spaceship.json * Update terrain_spaceship.json * Update terrain_spaceship.json * Update terrain_spaceship.json * Update gunship.json * sryff * Update gunship.json * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update gunship.json * Apply suggestions from code review Co-authored-by: Procyonae <45432782+Procyonae@users.noreply.github.com> * Apply suggestions from code review * Update data/mods/Aftershock/maps/overmap_map_extras.json * Apply suggestions from code review * Update data/mods/Aftershock/maps/mapgen/gunship.json Co-authored-by: Procyonae <45432782+Procyonae@users.noreply.github.com> * Add to scenario blacklist * Update data/mods/Aftershock/spells.json * Update data/mods/Aftershock/spells.json * Update data/mods/Aftershock/spells.json * Apply suggestions from code review * Apply suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review * Apply suggestions from code review * FIXES * Update data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json * Update data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json * Update data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json * Update gunship.json * Update inactiverobot.json --------- Co-authored-by: Dillon Matchett Co-authored-by: David Seguin Co-authored-by: TheShadowFerret <99621099+TheShadowFerret@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Procyonae <45432782+Procyonae@users.noreply.github.com> --- data/mods/Aftershock/items/ammo/needle.json | 34 ++ data/mods/Aftershock/items/ammo_type.json | 6 + data/mods/Aftershock/items/gun/needle.json | 79 +++ data/mods/Aftershock/items/inactiverobot.json | 16 + .../Aftershock/items/magazine/needle.json | 36 ++ .../terrain_spaceship.json | 557 +++++++++++++++++- data/mods/Aftershock/maps/mapgen/gunship.json | 57 ++ .../Aftershock/maps/mapgen/map_palletes.json | 15 + .../Aftershock/maps/overmap_locations.json | 6 + .../Aftershock/maps/overmap_map_extras.json | 11 + .../missions/bounty_hunter_missions.json | 42 ++ .../mods/Aftershock/mobs/monster_faction.json | 6 +- .../monster_groups/robot_monster_groups.json | 11 + data/mods/Aftershock/mobs/scavbots.json | 45 ++ data/mods/Aftershock/region_settings.json | 1 + data/mods/Aftershock/scenarios.json | 16 +- data/mods/Aftershock/spells.json | 30 + data/mods/Aftershock/ter_fur_transform.json | 18 + .../scenario_blacklist.json | 2 +- tools/spell_checker/dictionary.txt | 10 + 20 files changed, 989 insertions(+), 9 deletions(-) create mode 100644 data/mods/Aftershock/items/ammo/needle.json create mode 100644 data/mods/Aftershock/items/gun/needle.json create mode 100644 data/mods/Aftershock/items/magazine/needle.json create mode 100644 data/mods/Aftershock/maps/mapgen/gunship.json create mode 100644 data/mods/Aftershock/missions/bounty_hunter_missions.json create mode 100644 data/mods/Aftershock/ter_fur_transform.json diff --git a/data/mods/Aftershock/items/ammo/needle.json b/data/mods/Aftershock/items/ammo/needle.json new file mode 100644 index 0000000000000..fd1cfffff0409 --- /dev/null +++ b/data/mods/Aftershock/items/ammo/needle.json @@ -0,0 +1,34 @@ +[ + { + "id": "3x35dart", + "type": "AMMO", + "name": { "str": "GG Stinger 3x35mm flechette" }, + "description": "The Gibson Gear Stinger flechette is a magnetically propelled dart roughly half the length of the average human thumb. ", + "weight": "7 g", + "volume": "105 ml", + "price": 1125, + "material": [ "steel" ], + "symbol": "=", + "color": "green", + "count": 100, + "stack_size": 75, + "ammo_type": "3x35", + "range": 10, + "damage": { "damage_type": "bullet", "amount": 8, "armor_penetration": 20 }, + "dispersion": 60, + "recoil": 40, + "effects": [ "NEVER_MISFIRES" ] + }, + { + "id": "3x35frangible", + "copy-from": "3x35dart", + "type": "AMMO", + "name": { "str": "GG Splinter 3x35mm flechette" }, + "description": "Gibson Gear Splinter flechettes are made with magnetic ceramics that shatter upon impact and dig deeply into flesh, as a consequence of this change these rounds lose almost all of their armor piercing.", + "weight": "6 g", + "price": 1688, + "material": [ "ceramic" ], + "relative": { "range": -1, "damage": { "damage_type": "bullet", "amount": 14, "armor_penetration": -18 }, "dispersion": 20 }, + "proportional": { "recoil": 0.9 } + } +] diff --git a/data/mods/Aftershock/items/ammo_type.json b/data/mods/Aftershock/items/ammo_type.json index f0c7bc3a050ab..7a90848d43fec 100644 --- a/data/mods/Aftershock/items/ammo_type.json +++ b/data/mods/Aftershock/items/ammo_type.json @@ -23,6 +23,12 @@ "name": "solid hydrogen", "default": "afs_shydrogen" }, + { + "type": "ammunition_type", + "id": "3x35", + "name": "3x35mm", + "default": "3x35dart" + }, { "type": "ammunition_type", "id": "afs_25mm", diff --git a/data/mods/Aftershock/items/gun/needle.json b/data/mods/Aftershock/items/gun/needle.json new file mode 100644 index 0000000000000..dc9c485a5df22 --- /dev/null +++ b/data/mods/Aftershock/items/gun/needle.json @@ -0,0 +1,79 @@ +[ + { + "id": "wasp_gun", + "looks_like": "fn_p90", + "type": "GUN", + "reload_noise_volume": 10, + "name": { "str": "GG-860 Wasp Rifle" }, + "description": "This light coilgun fires 3x35mm armor-piercing flechette. Classified as a support crew weapon that can be stashed in hidden lockers throughout the floors of a ship. Designed to be fired in short bursts, if the flechettes pierce a ship's hull they leave tiny holes that are easily repaired.", + "weight": "1302 g", + "volume": "1250 ml", + "longest_side": "690 mm", + "price": 232000, + "to_hit": -2, + "melee_damage": { "bash": 12 }, + "material": [ "steel", "ceramic" ], + "symbol": "(", + "color": "dark_gray", + "ammo": [ "3x35" ], + "skill": "smg", + "range": 10, + "ranged_damage": { "damage_type": "bullet", "amount": 6 }, + "dispersion": 220, + "durability": 9, + "barrel_volume": "250 ml", + "modes": [ [ "DEFAULT", "semi-auto", 1 ], [ "BURST", "5 rd.", 5 ], [ "AUTO", "auto", 8 ] ], + "valid_mod_locations": [ + [ "accessories", 3 ], + [ "barrel", 1 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "muzzle", 1 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "sling", 1 ], + [ "stock", 1 ], + [ "stock accessory", 2 ], + [ "underbarrel", 1 ] + ], + "flags": [ "WATERPROOF_GUN", "NEVER_JAMS" ], + "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "3x35_150_mag", "3x35_75_mag" ] } ] + }, + { + "id": "3x35_pistol", + "looks_like": "glock_17", + "type": "GUN", + "reload_noise_volume": 10, + "name": { "str": "3x35mm automatic 'Wandering Priest' coilpistol" }, + "description": "An automatic coilgun made entirely of lightweight ceramics, with no moving pieces and if loaded with splinter rounds almost entirely invisible on most security scanners. No one is sure who manufactures this assassin's tool, but they randomly come onto the back room markets frequented by the unsavory.", + "weight": "682 g", + "volume": "620 ml", + "longest_side": "255 mm", + "price": 1200000, + "to_hit": -2, + "melee_damage": { "bash": 8 }, + "material": [ "ceramic" ], + "symbol": "(", + "range": 8, + "ranged_damage": { "damage_type": "bullet", "amount": 4 }, + "color": "dark_gray", + "ammo": [ "3x35" ], + "skill": "pistol", + "dispersion": 280, + "durability": 9, + "modes": [ [ "BURST", "2 rd.", 3 ], [ "AUTO", "auto", 5 ] ], + "valid_mod_locations": [ + [ "accessories", 3 ], + [ "grip", 1 ], + [ "mechanism", 4 ], + [ "muzzle", 1 ], + [ "rail", 1 ], + [ "sights", 1 ], + [ "stock", 1 ], + [ "underbarrel", 1 ] + ], + "flags": [ "WATERPROOF_GUN", "NEVER_JAMS" ], + "weapon_category": [ "AUTOMATIC_PISTOLS" ], + "pocket_data": [ { "pocket_type": "MAGAZINE_WELL", "item_restriction": [ "3x35_75_mag", "3x35_150_mag" ] } ] + } +] diff --git a/data/mods/Aftershock/items/inactiverobot.json b/data/mods/Aftershock/items/inactiverobot.json index f0d1645ccc51d..90d9d141bfb45 100644 --- a/data/mods/Aftershock/items/inactiverobot.json +++ b/data/mods/Aftershock/items/inactiverobot.json @@ -118,6 +118,22 @@ "flags": [ "TRADER_AVOID", "NO_REPAIR" ], "melee_damage": { "bash": 10, "cut": 6 } }, + { + "type": "GENERIC", + "id": "broken_scavbot_needle", + "symbol": ",", + "color": "green", + "name": { "str": "broken Scavbot Skorpion" }, + "category": "other", + "description": "A broken Scavbot Skorpion. Now that its legs lie broken and immobile, the world seems a little less threatening. Could be gutted for parts.", + "price": "10 USD", + "material": [ "steel", "plastic" ], + "volume": "12500 ml", + "weight": "10500 g", + "to_hit": -2, + "flags": [ "TRADER_AVOID", "NO_REPAIR" ], + "melee_damage": { "bash": 10, "cut": 6 } + }, { "type": "GENERIC", "id": "broken_tankbot", diff --git a/data/mods/Aftershock/items/magazine/needle.json b/data/mods/Aftershock/items/magazine/needle.json new file mode 100644 index 0000000000000..1c3b1ee003493 --- /dev/null +++ b/data/mods/Aftershock/items/magazine/needle.json @@ -0,0 +1,36 @@ +[ + { + "id": "3x35_150_mag", + "looks_like": "fnp90mag", + "type": "MAGAZINE", + "name": { "str": "3x35mm 150-round magazine" }, + "description": "A 150-round box magazine for use with 3x35mm flechette coilguns. Marketed as GGS150.", + "weight": "360 g", + "volume": "630ml", + "price": 15000, + "material": [ "ceramic", "plastic" ], + "symbol": "#", + "color": "dark_gray", + "ammo_type": [ "3x35" ], + "reload_time": 60, + "flags": [ "MAG_COMPACT" ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "3x35": 150 } } ] + }, + { + "id": "3x35_75_mag", + "looks_like": "fnp90mag", + "type": "MAGAZINE", + "name": { "str": "3x35mm 75-round magazine" }, + "description": "A 75-round box magazine for use with 3x35mm flechette coilguns. Marketed as GGS75.", + "weight": "240 g", + "volume": "315ml", + "price": 12500, + "material": [ "ceramic", "plastic" ], + "symbol": "#", + "color": "dark_gray", + "ammo_type": [ "3x35" ], + "reload_time": 50, + "flags": [ "MAG_COMPACT" ], + "pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "3x35": 75 } } ] + } +] diff --git a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json index 425869633a0c7..d113b256d4222 100644 --- a/data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json +++ b/data/mods/Aftershock/maps/furniture_and_terrain/terrain_spaceship.json @@ -22,6 +22,555 @@ ] } }, + { + "type": "terrain", + "id": "t_afs_gun_ship_hull_wall", + "name": "gunship hull", + "description": "A hull segment from a combat rated civilian gunship. Provides some defense against weapons fire.", + "roof": "t_metal_flat_roof", + "copy-from": "t_wall_metal", + "flags": [ "NOITEM", "SUPPORTS_ROOF", "WALL", "NO_SCENT", "AUTO_WALL_SYMBOL", "MINEABLE", "BLOCK_WIND" ], + "symbol": "LINE_OXOX", + "color": "white", + "bash": { + "str_min": 350, + "str_max": 800, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_null", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_locker_wall", + "name": "gunship locker", + "description": "A locker built into the hull of a ship. May contain equipment.", + "roof": "t_metal_flat_roof", + "copy-from": "t_wall_metal", + "flags": [ "SUPPORTS_ROOF", "CONTAINER", "WALL", "NO_SCENT", "AUTO_WALL_SYMBOL", "MINEABLE", "BLOCK_WIND" ], + "symbol": "LINE_OXOX", + "color": "white", + "bash": { + "str_min": 200, + "str_max": 600, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_null", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_bathroom_unit", + "name": "bathroom unit", + "description": "A bathroom unit for a gunship. Unlikely to be working.", + "roof": "t_metal_flat_roof", + "copy-from": "t_metal_floor", + "flags": [ "SUPPORTS_ROOF" ], + "symbol": "O", + "color": "white", + "bash": { + "str_min": 200, + "str_max": 600, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_null", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_gunship_refrigeration_unit", + "name": "gunship refrigeration unit", + "description": "A refrigeration unit for a gunship. Unlikely to be working.", + "roof": "t_metal_flat_roof", + "copy-from": "t_metal_floor", + "flags": [ "SUPPORTS_ROOF" ], + "symbol": "O", + "color": "white", + "bash": { + "str_min": 200, + "str_max": 600, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_null", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_ruined_hull_wall", + "name": "ruined hull", + "description": "This patch of hull has more holes in it than an ancient terran cheese. It may provide some cover or it might get shot through.", + "roof": "t_metal_flat_roof", + "copy-from": "t_wall_metal", + "flags": [ "NOITEM", "SUPPORTS_ROOF", "TRANSPARENT", "PERMEABLE", "MINEABLE" ], + "symbol": "LINE_OXOX", + "color": "white", + "bash": { + "str_min": 20, + "str_max": 80, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_null", + "items": [ + { "item": "afs_material_2", "count": [ 0, 2 ] }, + { "item": "afs_material_1", "count": [ 2, 8 ] }, + { "item": "scrap", "count": [ 3, 17 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_hull_hatch_c", + "name": "gunship hull", + "description": "A closed hatch in the wall of a spaceship.", + "roof": "t_metal_flat_roof", + "copy-from": "t_wall_metal", + "flags": [ "NOITEM", "SUPPORTS_ROOF", "NO_SCENT", "MINEABLE", "BLOCK_WIND" ], + "symbol": "LINE_OXOX", + "color": "white", + "open": "t_afs_gun_ship_hull_hatch_o", + "bash": { + "str_min": 150, + "str_max": 500, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_metal_floor", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_hull_hatch_o", + "name": "gunship hull", + "description": "An open hatch in the wall of a spaceship.", + "roof": "t_metal_flat_roof", + "flags": [ "SUPPORTS_ROOF", "MINEABLE" ], + "move_cost": 2, + "symbol": "_", + "color": "white", + "close": "t_afs_gun_ship_hull_hatch_c", + "bash": { + "str_min": 150, + "str_max": 500, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_metal_floor", + "items": [ + { "item": "afs_material_2", "count": [ 2, 4 ] }, + { "item": "afs_material_1", "count": [ 2, 12 ] }, + { "item": "scrap", "count": [ 6, 24 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_prison_grate", + "name": "prison grating", + "description": "A detention wall made up of crisscrossed stainless steel bars. There doesn't appear to be a lock on the bars, maybe look for a computer nearby?", + "symbol": "+", + "looks_like": "t_bars", + "color": "cyan", + "move_cost": 0, + "roof": "t_metal_roof", + "hacksaw": { + "result": "t_mdoor_frame", + "duration": "35 minutes", + "message": "You finish cutting the metal.", + "byproducts": [ { "item": "pipe", "count": 12 } ] + }, + "flags": [ "TRANSPARENT", "NOITEM", "PERMEABLE", "CONNECT_WITH_WALL", "THIN_OBSTACLE", "SUPPORTS_ROOF" ], + "oxytorch": { + "result": "t_mdoor_frame", + "duration": "5 minutes", + "byproducts": [ { "item": "steel_plate", "count": [ 0, 1 ] }, { "item": "steel_chunk", "count": [ 3, 8 ] } ] + }, + "bash": { + "str_min": 45, + "str_max": 210, + "str_min_blocked": 55, + "str_max_blocked": 240, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_mdoor_frame", + "items": [ + { "item": "steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 3, 12 ] }, + { "item": "hinge", "count": [ 1, 2 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_prison_grate_r", + "name": "retracted prison grating", + "description": "A floor and ceiling where you can see that bars can come out of each side to meet in the middle.", + "//": "Unlocked", + "symbol": "o", + "looks_like": "t_metal_floor", + "color": "cyan", + "connect_groups": "METALFLOOR", + "connects_to": "METALFLOOR", + "move_cost": 2, + "roof": "t_metal_roof", + "flags": [ "TRANSPARENT", "INDOORS", "FLAT", "ROAD" ], + "bash": { + "sound": "thump", + "ter_set": "t_null", + "str_min": 200, + "str_max": 500, + "str_min_supported": 200, + "items": [ + { "item": "steel_lump", "count": [ 1, 4 ] }, + { "item": "steel_chunk", "count": [ 3, 12 ] }, + { "item": "scrap", "count": [ 9, 36 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_gunship_kitchen", + "name": "gunship kitchenette", + "symbol": "#", + "looks_like": "f_oven", + "description": "A tiny sink and cooking surface only big enough to fit an electric hotplate, placed above and below many integrated storage units. The minimal space in which you could technically cook.", + "color": "blue", + "move_cost": 0, + "coverage": 55, + "flags": [ "FLAMMABLE_ASH", "PLACE_ITEM", "ORGANIC", "MOUNTABLE", "FLAT_SURF", "NO_SELF_CONNECT" ], + "bash": { + "str_min": 8, + "str_max": 30, + "sound": "smash!", + "sound_fail": "whump.", + "ter_set": "t_metal_floor", + "items": [ + { "item": "polycarbonate_sheet", "count": [ 1, 3 ] }, + { "item": "rigid_plastic_sheet", "count": [ 0, 1 ] }, + { "item": "plastic_chunk", "count": [ 2, 16 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_shelving", + "name": "storage board", + "symbol": "#", + "looks_like": "f_cupboard", + "description": "The wall-mounted, steel and plastic storage solution of tomorrow.", + "color": "blue", + "move_cost": 0, + "coverage": 55, + "flags": [ "TRANSPARENT", "CONTAINER", "PLACE_ITEM", "MOUNTABLE", "FLAT_SURF" ], + "connect_groups": "COUNTER", + "connects_to": "COUNTER", + "rotates_to": "INDOORFLOOR", + "bash": { + "str_min": 8, + "str_max": 30, + "sound": "smash!", + "sound_fail": "whump.", + "ter_set": "t_metal_floor", + "items": [ + { "item": "scrap", "count": [ 2, 8 ] }, + { "item": "polycarbonate_sheet", "count": [ 1, 3 ] }, + { "item": "rigid_plastic_sheet", "count": [ 0, 1 ] }, + { "item": "plastic_chunk", "count": [ 2, 16 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_view_port", + "name": "view port", + "description": "A thick, round window surrounded with a strong metal frame. It's sealed closed.", + "looks_like": "t_porthole", + "symbol": "o", + "color": "light_gray", + "move_cost": 0, + "roof": "t_metal_flat_roof", + "flags": [ + "TRANSPARENT", + "NOITEM", + "CONNECT_WITH_WALL", + "THIN_OBSTACLE", + "BLOCK_WIND", + "REDUCE_SCENT", + "WINDOW", + "SUPPORTS_ROOF" + ], + "bash": { + "str_min": 50, + "str_max": 75, + "sound": "metal screeching!", + "sound_fail": "clang!", + "ter_set": "t_metal_floor", + "items": [ + { "item": "afs_material_1", "prob": 55 }, + { "item": "steel_chunk", "count": [ 1, 4 ] }, + { "item": "scrap", "count": [ 1, 5 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_engine", + "name": "Iblis Interplanetary Drive", + "looks_like": "t_plut_generator", + "description": "The housing and guts of an Interplanetary drive engine. It is plastered with warning signs. If it's not working you could probably try to break into it for parts.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "explosive": 100, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_2", "count": [ 1, 6 ] }, + { "item": "afs_energy_storage_4", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_engine_console", + "name": "Iblis Interplanetary Drive Console", + "looks_like": "t_console", + "description": "The control panel for the engines and generators that power the drive. It would likely render the ship irrecoverable but it might do some damage to any robots near or in the ship if you set the engines to overload.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "examine_action": { + "type": "effect_on_condition", + "effect_on_conditions": [ + { + "id": "EOC_AFS_GUNSHIP_DRIVE_OVERLOAD", + "condition": { "u_query": "Do you want to overload the ship's drive?", "default": true }, + "effect": [ + { "u_message": "You hear a high pitched whine start and increase in volume.", "popup": true }, + { "u_cast_spell": { "id": "gunship_drive_overload" } }, + { "u_transform_radius": 5, "ter_furn_transform": "engine_overload_transform" } + ] + } + ] + }, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_2", "count": [ 1, 6 ] }, + { "item": "afs_energy_storage_4", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_engine_console_burnt", + "name": "Iblis Interplanetary Drive Console", + "looks_like": "t_console", + "description": "The engine has been overloaded and burnt out.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "examine_action": { + "type": "effect_on_condition", + "effect_on_conditions": [ + { + "id": "EOC_AFS_GUNSHIP_DRIVE_OVERLOADED", + "condition": { "u_query": "Do you want to overload the ship's drive?", "default": true }, + "effect": [ { "u_message": "The engine is burnt out and worthless.", "popup": true } ] + } + ] + }, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 1, 7 ] }, + { "item": "afs_circuitry_2", "count": [ 0, 2 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 8, 12 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_afs_gun_ship_navigation_console", + "name": "Iblis Interplanetary Navigation Console", + "looks_like": "t_console", + "description": "The control panel for navigation. Useless here on the ground but in space the only way to plot long distance travel.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_2", "count": [ 1, 6 ] }, + { "item": "afs_energy_storage_4", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_gunnery_ai", + "name": "Wraitheon Gunnery AI", + "looks_like": "t_console", + "description": "The display screen for interacting with the gunnery ai is blank, there's no telling right now if the ai module survived the crash or not from here.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "ai_module", "count": [ 0, 1 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_2", "count": [ 1, 6 ] }, + { "item": "afs_energy_storage_4", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_command_console", + "name": "command console", + "looks_like": "t_console", + "description": "The display screen for interacting with the ships command and control console is dead. Normally the ship's AI runs most systems but there is no way to know whether it survived.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "ai_module", "count": [ 0, 1 ] }, + { "item": "afs_heat_2", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_2", "count": [ 1, 6 ] }, + { "item": "afs_energy_storage_4", "count": [ 0, 1 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, + { + "type": "terrain", + "id": "t_cell_entrance_console", + "name": "Prisoner Cell Console", + "looks_like": "t_console", + "description": "The control panel for the prisoner cell. Might be able to open and close cell grating.", + "symbol": "0", + "color": "green_red", + "move_cost": 0, + "coverage": 80, + "examine_action": { + "type": "effect_on_condition", + "effect_on_conditions": [ + { + "id": "EOC_AFS_PRISON_CONSOLE_OPEN", + "condition": { "u_query": "Do you want to open the cell?", "default": true }, + "effect": [ + { "u_message": "The cell grates retract into the floor and ceiling.", "popup": true }, + { "u_transform_radius": 5, "ter_furn_transform": "transform_gratings" } + ] + } + ] + }, + "flags": [ "NOITEM", "SEALED", "REDUCE_SCENT", "PERMEABLE" ], + "bash": { + "str_min": 70, + "str_max": 400, + "sound": "metal screeching!", + "ter_set": "t_metal_floor", + "sound_fail": "clang!", + "items": [ + { "item": "afs_circuitry_1", "count": [ 4, 16 ] }, + { "item": "afs_circuitry_2", "count": [ 1, 6 ] }, + { "item": "afs_circuitry_3", "count": [ 0, 1 ] }, + { "item": "afs_heat_1", "count": [ 0, 1 ] }, + { "item": "afs_energy_storage_1", "count": [ 1, 6 ] }, + { "item": "afs_material_1", "count": [ 12, 18 ] } + ] + } + }, { "type": "terrain", "id": "t_afs_augustmoon_diamond_glass", @@ -70,7 +619,7 @@ "items": [ { "item": "afs_circuitry_3", "count": [ 1, 2 ] }, { "item": "afs_circuitry_2", "count": [ 4, 8 ] }, - { "item": "cable", "charges": [ 4, 6 ] }, + { "item": "cable", "count": [ 4, 6 ] }, { "item": "small_lcd_screen", "count": [ 1, 2 ] }, { "item": "afs_material_1", "count": [ 2, 4 ] }, { "item": "afs_energy_storage_2", "count": [ 1, 2 ] }, @@ -86,7 +635,7 @@ "sound_fail": "clang!", "ter_set": "t_null", "items": [ - { "item": "cable", "charges": [ 2, 6 ] }, + { "item": "cable", "count": [ 2, 6 ] }, { "item": "plastic_chunk", "count": [ 6, 10 ] }, { "item": "afs_energy_storage_2", "count": [ 0, 2 ] }, { "item": "afs_energy_storage_2", "count": [ 1, 2 ] }, @@ -310,7 +859,7 @@ "items": [ { "item": "afs_circuitry_3", "count": [ 1, 2 ] }, { "item": "afs_circuitry_2", "count": [ 4, 8 ] }, - { "item": "cable", "charges": [ 4, 6 ] }, + { "item": "cable", "count": [ 4, 6 ] }, { "item": "small_lcd_screen", "count": [ 1, 2 ] }, { "item": "afs_material_1", "count": [ 2, 4 ] }, { "item": "afs_energy_storage_2", "count": [ 1, 2 ] }, @@ -326,7 +875,7 @@ "sound_fail": "clang!", "ter_set": "t_null", "items": [ - { "item": "cable", "charges": [ 2, 6 ] }, + { "item": "cable", "count": [ 2, 6 ] }, { "item": "plastic_chunk", "count": [ 6, 10 ] }, { "item": "afs_energy_storage_2", "count": [ 0, 2 ] }, { "item": "afs_energy_storage_2", "count": [ 1, 2 ] }, diff --git a/data/mods/Aftershock/maps/mapgen/gunship.json b/data/mods/Aftershock/maps/mapgen/gunship.json new file mode 100644 index 0000000000000..fddd9ce365bdb --- /dev/null +++ b/data/mods/Aftershock/maps/mapgen/gunship.json @@ -0,0 +1,57 @@ +[ + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "mx_gunship", + "object": { + "rows": [ + " ", + " UUUUU ", + " UNGPU ", + " U...U ", + " ||...|| ", + " I.....| ", + " |||||||O|/|O||UI||| ", + " |||B..|...|L.....|||| ", + "||||...#..6|L.....||||| ", + " |||...#...|......|||| ", + " ||||||.|O||R...|||| ", + " |S..|../|...I ", + " |S..|...|...U ", + " |S..|...|...U ", + " |S..|../|...| ", + " |S..O...O...| ", + " |S..||O||...| ", + " ||||.|B|..|I| ", + " ||O|/|O|| ", + " |.....| ", + " ||.Q.|| ", + " ||||| ", + " VVV ", + " " + ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ], + "terrain": { + ".": "t_metal_floor", + "|": [ "t_afs_gun_ship_hull_wall", "t_afs_gun_ship_ruined_hull_wall" ], + "/": "t_afs_gun_ship_locker_wall", + "I": "t_afs_gun_ship_hull_hatch_c", + "O": "t_afs_gun_ship_hull_hatch_o", + "Q": "t_afs_gun_ship_engine_console", + "V": "t_afs_gun_ship_engine", + "#": "t_prison_grate", + "U": "t_view_port", + "N": "t_afs_gun_ship_navigation_console", + "P": "t_command_console", + "G": "t_gunnery_ai", + "B": "t_bathroom_unit", + "S": "t_shelving", + "R": "t_gunship_kitchen", + "L": "t_gunship_refrigeration_unit", + "6": "t_cell_entrance_console" + }, + "//": "There is no furniture because things that aren't connected to the floor or walls might go flying across a room during evasive manuevers.", + "items": { "!": { "item": "afs_escape_pod_suppliesII", "chance": 100 } } + } + } +] diff --git a/data/mods/Aftershock/maps/mapgen/map_palletes.json b/data/mods/Aftershock/maps/mapgen/map_palletes.json index 807e1a91b0dd1..a9342cad4bdaa 100644 --- a/data/mods/Aftershock/maps/mapgen/map_palletes.json +++ b/data/mods/Aftershock/maps/mapgen/map_palletes.json @@ -57,5 +57,20 @@ }, "toilets": { ";": { } }, "items": { "d": { "item": "office", "chance": 70 } } + }, + { + "type": "palette", + "id": "mx_gunship_palette", + "//": "more terrain TBD", + "terrain": { + "|": "t_afs_gun_ship_hull_wall", + "%": "t_afs_gun_ship_ruined_hull_wall", + ".": "t_metal_floor", + "/": "t_afs_gun_ship_locker_wall", + "I": "t_afs_gun_ship_hull_hatch_c", + "O": "t_afs_gun_ship_hull_hatch_o", + "Q": "t_afs_gun_ship_engine_console", + "V": "t_afs_gun_ship_engine" + } } ] diff --git a/data/mods/Aftershock/maps/overmap_locations.json b/data/mods/Aftershock/maps/overmap_locations.json index f1916ee807ad0..958e52f89ab6c 100644 --- a/data/mods/Aftershock/maps/overmap_locations.json +++ b/data/mods/Aftershock/maps/overmap_locations.json @@ -11,6 +11,12 @@ "name": "Crashed escape pod", "terrain": [ "afs_crashed_escape_pod" ] }, + { + "type": "start_location", + "id": "sloc_crashed_gunship", + "name": "Crashed gunship", + "terrain": [ "afs_crashed_gunship" ] + }, { "type": "overmap_location", "id": "ravine_edge", diff --git a/data/mods/Aftershock/maps/overmap_map_extras.json b/data/mods/Aftershock/maps/overmap_map_extras.json index 7f68cd5ef6b82..efa2b3e82ea4d 100644 --- a/data/mods/Aftershock/maps/overmap_map_extras.json +++ b/data/mods/Aftershock/maps/overmap_map_extras.json @@ -18,5 +18,16 @@ "sym": "b", "color": "pink", "autonote": true + }, + { + "id": "mx_gunship", + "type": "map_extra", + "name": { "str": "Gunship Crash" }, + "description": "Gunship crashed here.", + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_gunship" }, + "min_max_zlevel": [ 0, 0 ], + "sym": "X", + "color": "light_blue", + "autonote": true } ] diff --git a/data/mods/Aftershock/missions/bounty_hunter_missions.json b/data/mods/Aftershock/missions/bounty_hunter_missions.json new file mode 100644 index 0000000000000..cc539614e28e6 --- /dev/null +++ b/data/mods/Aftershock/missions/bounty_hunter_missions.json @@ -0,0 +1,42 @@ +[ + { + "id": "MISSION_LAST_DANCE", + "type": "mission_definition", + "name": { "str": "The bounty is on Salus IV" }, + "description": "You've chased your bounty all the way to the ass end of the galaxy here in the Salus system. A place of so little value to UICA that it's left to pirates and hermits. While you don't know where exactly your bounty is in this desolate wasteland you do have a lead on one of his associates. Maybe he'll be able to tell you where to go.", + "goal": "MGOAL_KILL_MONSTER", + "difficulty": 4, + "start": { + "assign_mission_target": { + "om_terrain": "afs_augmentation_clinic_n3", + "om_special": "afs_augmentation_clinic_1", + "reveal_radius": 6, + "random": true, + "search_range": 90, + "min_distance": 15, + "z": 0 + }, + "update_mapgen": { + "place_monster": [ + { "monster": "afs_mon_reaver_rifle", "name": "Friend of Bounty", "x": 11, "y": 11, "target": true }, + { "monster": "afs_mon_reaver", "name": "The Guard", "x": 12, "y": 12 }, + { "monster": "afs_mon_reaver", "name": "The Colaborator", "x": 9, "y": 9 }, + { "monster": "afs_mon_reaver", "name": "The Aristocrat", "x": 13, "y": 13 } + ] + } + }, + "origins": [ "ORIGIN_GAME_START" ], + "value": 0, + "end": { + "effect": [ + { + "u_add_morale": "morale_feeling_good", + "bonus": 20, + "max_bonus": 50, + "duration": "120 minutes", + "decay_start": "120 minutes" + } + ] + } + } +] diff --git a/data/mods/Aftershock/mobs/monster_faction.json b/data/mods/Aftershock/mobs/monster_faction.json index b3f7e25e66903..cb70b40039319 100644 --- a/data/mods/Aftershock/mobs/monster_faction.json +++ b/data/mods/Aftershock/mobs/monster_faction.json @@ -31,7 +31,7 @@ "name": "WraitheonRobotics", "base_faction": "robofac", "neutral": [ "cop_bot", "defense_bot", "utility_bot", "animal", "UPLIFT", "robofac" ], - "hate": [ "zombie", "fungus", "cult", "alien_predator", "triffid", "nether", "PrepNet", "moxie", "bio_machine" ], + "hate": [ "zombie", "fungus", "cult", "alien_predator", "triffid", "nether", "PrepNet", "moxie", "bio_machine", "reavers" ], "by_mood": [ "human" ] }, { @@ -62,7 +62,7 @@ "base_faction": "human", "neutral": [ "herbivore", "robofac" ], "by_mood": [ "insect", "small_animal", "human", "bee" ], - "hate": [ "zombie" ] + "hate": [ "zombie", "player", "UICA_mil", "moxie" ] }, { "type": "MONSTER_FACTION", @@ -77,7 +77,7 @@ "base_faction": "mutant", "neutral": [ "bio_machine", "zombie" ], "by_mood": [ "small_animal", "herbivore" ], - "hate": [ "insect", "human", "mutant", "WraitheonRobotics", "bot" ] + "hate": [ "insect", "human", "mutant", "WraitheonRobotics", "bot", "reavers" ] }, { "type": "MONSTER_FACTION", diff --git a/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json b/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json index fc075087ec210..0c62c356f31c7 100644 --- a/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json +++ b/data/mods/Aftershock/mobs/monster_groups/robot_monster_groups.json @@ -21,5 +21,16 @@ { "monster": "mon_skitterbot", "weight": 200, "cost_multiplier": 0 }, { "monster": "mon_skitterbot_rat", "weight": 500, "cost_multiplier": 0 } ] + }, + { + "type": "monstergroup", + "name": "GROUP_PIRATE__BOT_AMBUSH", + "default": "mon_manhack", + "monsters": [ + { "monster": "mon_bloodhound_drone", "weight": 500, "cost_multiplier": 50, "pack_size": [ 1, 2 ] }, + { "monster": "mon_manhack", "weight": 200, "cost_multiplier": 4, "pack_size": [ 1, 2 ] }, + { "monster": "mon_skitterbot", "weight": 200, "cost_multiplier": 20 }, + { "monster": "mon_scavbot_needle", "weight": 100, "cost_multiplier": 70 } + ] } ] diff --git a/data/mods/Aftershock/mobs/scavbots.json b/data/mods/Aftershock/mobs/scavbots.json index 65d346a51e1b9..772c4ea128aa7 100644 --- a/data/mods/Aftershock/mobs/scavbots.json +++ b/data/mods/Aftershock/mobs/scavbots.json @@ -33,6 +33,51 @@ "extend": { "flags": [ "STUMBLES", "HARDTOSHOOT" ] }, "armor": { "cut": 4 } }, + { + "id": "mon_scavbot_needle", + "type": "MONSTER", + "copy-from": "mon_milbot_base", + "name": "Scavbot Skorpion", + "description": "The Scavbot Skorpion is a refurb of colonial perimeter defense bots found across many systems. Because they are designed to defend against pirates, raiders, feral uplifts, hungry scavengers, rival mining clans, and any other enemy that is unlikely to attack with heavily armored units, these reprogrammed and refurbed versions are often found in the employ of the very types of people it was originally purposed to fight. Often found as the core of a light patrol or attack squad.", + "volume": "12500 ml", + "weight": "10500 g", + "hp": 40, + "speed": 80, + "material": [ "steel" ], + "symbol": "x", + "color": "red_green", + "aggression": 50, + "morale": 100, + "melee_skill": 3, + "melee_dice_sides": 3, + "dodge": 2, + "armor": { "bash": 8, "cut": 8, "stab": 4, "bullet": 6, "heat": 3 }, + "vision_day": 35, + "diff": 10, + "melee_damage": [ { "damage_type": "electric", "amount": 3 } ], + "starting_ammo": { "3x35dart": 100 }, + "special_attacks": [ + { + "type": "gun", + "move_cost": 150, + "cooldown": 2, + "gun_type": "wasp_gun", + "ammo_type": "3x35dart", + "fake_skills": [ [ "gun", 3 ], [ "rifle", 3 ] ], + "fake_dex": 10, + "no_ammo_sound": "click!", + "ranges": [ [ 0, 4, "BURST" ], [ 4, 8, "AUTO" ], [ 9, 16, "DEFAULT" ] ], + "require_targeting_player": true, + "require_targeting_npc": true, + "require_targeting_monster": true, + "targeting_cost": 10, + "targeting_timeout_extend": -1, + "targeting_sound": "\"Target Aquired.\"", + "targeting_volume": 10 + } + ], + "extend": { "flags": [ "DROPS_AMMO" ] } + }, { "id": "mon_eyebot_heater", "type": "MONSTER", diff --git a/data/mods/Aftershock/region_settings.json b/data/mods/Aftershock/region_settings.json index 273baa68587a8..ecdd14d1d4669 100644 --- a/data/mods/Aftershock/region_settings.json +++ b/data/mods/Aftershock/region_settings.json @@ -21,6 +21,7 @@ "road": { "chance": 75, "extras": { + "mx_gunship": 10, "mx_helicopter": 10, "mx_military": 50, "mx_science": 400, diff --git a/data/mods/Aftershock/scenarios.json b/data/mods/Aftershock/scenarios.json index b1a5d1ddfa199..5a620dd0d25f8 100644 --- a/data/mods/Aftershock/scenarios.json +++ b/data/mods/Aftershock/scenarios.json @@ -105,10 +105,24 @@ "points": 1, "description": "What was to be a routine cargo transfer ended in tragedy when, in a brief moment of chaos, your space ship was intercepted and destroyed by a StO missile. As soon as the MAW alarm flared to life, you scrambled to the nearest escape pod and barely managed to reach the uncertain safety of the planet below.", "allowed_locs": [ "sloc_escape_pod" ], - "professions": [ "afs_espatier", "afs_rating" ], + "professions": [ "afs_espatier", "afs_rating", "afs_vatgrown_bodyguard" ], "flags": [ "LONE_START" ], "start_name": "Escape Pod" }, + { + "type": "scenario", + "id": "last_dance", + "name": "One Last Dance on the Ice", + "points": 1, + "description": "You've chased your quarry from the tragedies they left behind in the core of civilized space; all the way out here to the fringes of inhabited space. You caught up with their ship here in the Salus system, and heavily damaged it, but the combat didn't leave your ship unscathed. Opportunistic scavengers or pirates you don't know which ambushed you as you were harrying your mark's ship and forcing it to ground. You know they'll have crash landed somewhere on this planet but your ship, Truth and Reconciliation will never fly again. You won't even walk away from this icy wreck if you can't destroy the squad of drones and scavenger bots that have dropped in to finish you off.", + "professions": [ "afs_espatier", "afs_captain_bearman", "afs_holo_fighter", "afs_mastadon_swat", "afs_bio_operator" ], + "start_name": "Last stop for Truth and Reconciliation", + "allowed_locs": [ "sloc_forest" ], + "map_extra": "mx_gunship", + "missions": [ "MISSION_LAST_DANCE" ], + "surround_groups": [ [ "GROUP_PIRATE__BOT_AMBUSH", 70.0 ] ], + "flags": [ "LONE_START" ] + }, { "type": "scenario", "id": "afs_nurseratchet", diff --git a/data/mods/Aftershock/spells.json b/data/mods/Aftershock/spells.json index 07bda412c1e2b..28dd2c93f2427 100644 --- a/data/mods/Aftershock/spells.json +++ b/data/mods/Aftershock/spells.json @@ -63,6 +63,36 @@ "max_damage": 8, "damage_type": "electric" }, + { + "id": "gunship_drive_overload", + "type": "SPELL", + "name": { "str": "Damage Robots EMP" }, + "description": "Damages all robots", + "valid_targets": [ "hostile", "ally" ], + "effect": "attack", + "shape": "blast", + "targeted_monster_species": [ "ROBOT" ], + "damage_type": "pure", + "min_damage": 14, + "max_damage": 84, + "min_aoe": 48, + "max_aoe": 48, + "aoe_increment": 48, + "flags": [ "SILENT", "IGNORE_WALLS", "RANDOM_DAMAGE" ] + }, + { + "id": "prison_cell_open", + "type": "SPELL", + "name": { "str": "Open prison gratings" }, + "description": "Open prison gratings", + "valid_targets": [ "ground" ], + "effect": "ter_transform", + "shape": "blast", + "effect_str": "transform_gratings", + "min_aoe": 4, + "max_aoe": 4, + "flags": [ "SILENT" ] + }, { "id": "afs_generic_free_turn", "type": "SPELL", diff --git a/data/mods/Aftershock/ter_fur_transform.json b/data/mods/Aftershock/ter_fur_transform.json new file mode 100644 index 0000000000000..fe9a8006434d9 --- /dev/null +++ b/data/mods/Aftershock/ter_fur_transform.json @@ -0,0 +1,18 @@ +[ + { + "type": "ter_furn_transform", + "id": "transform_gratings", + "terrain": [ + { + "result": "t_prison_grate_r", + "valid_terrain": [ "t_prison_grate" ], + "message": "The grating retracts into the floor and ceiling." + } + ] + }, + { + "type": "ter_furn_transform", + "id": "engine_overload_transform", + "terrain": [ { "result": [ "t_afs_gun_ship_engine_console_burnt" ], "valid_terrain": [ "t_afs_gun_ship_engine_console" ] } ] + } +] diff --git a/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json b/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json index e42c00912f830..61190e32da1f4 100644 --- a/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json +++ b/data/mods/aftershock_exoplanet/setting_blacklists/scenario_blacklist.json @@ -2,6 +2,6 @@ { "type": "SCENARIO_BLACKLIST", "subtype": "whitelist", - "scenarios": [ "escape_pod", "crashing_ship", "augustmoon" ] + "scenarios": [ "escape_pod", "crashing_ship", "augustmoon", "last_dance" ] } ] diff --git a/tools/spell_checker/dictionary.txt b/tools/spell_checker/dictionary.txt index fbb881ccf2975..24896a2a61e67 100644 --- a/tools/spell_checker/dictionary.txt +++ b/tools/spell_checker/dictionary.txt @@ -1163,6 +1163,7 @@ coffeetable coffeetree Cohasset coilgun +coilpistol coilguns coincidently coipo @@ -2861,6 +2862,14 @@ Irishman irising Ironfist ironshod +irradiance +irremovable +irrecoverable +irritants +isable +isassembled +isk +isopod Irradiants Isaac isekai @@ -4975,6 +4984,7 @@ reenabled reenactor reenactors refuelable +refurb regenerators Reggie regia