Skip to content

Commit

Permalink
Aftershock: Zenit Security Drones (#78923)
Browse files Browse the repository at this point in the history
* Zenit Security Drones

* Tidy the descriptions
  • Loading branch information
John-Candlebury authored Jan 5, 2025
1 parent ef837bd commit 2000b9f
Show file tree
Hide file tree
Showing 20 changed files with 768 additions and 3 deletions.
19 changes: 19 additions & 0 deletions data/mods/Aftershock/EOC/monster_weakpoint_eocs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[
{
"type": "effect_on_condition",
"id": "EOC_AFS_INSTANT_DEATH",
"condition": "has_beta",
"effect": [ "npc_die" ]
},
{
"type": "effect_on_condition",
"id": "EOC_AFS_REACTOR_MELTDOWN",
"condition": "has_beta",
"effect": [
{ "npc_location_variable": { "context_val": "loc" } },
{ "map_spawn_item": "afs_reactor_unstable", "loc": { "context_val": "loc" } },
{ "npc_add_effect": "effect_robot_immobilized", "duration": "PERMANENT" },
{ "u_message": "The malfunctioning reactor is ejected." }
]
}
]
17 changes: 17 additions & 0 deletions data/mods/Aftershock/effects.json
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,16 @@
"flags": [ "LEVITATION" ],
"show_in_info": true
},
{
"type": "effect_type",
"id": "effect_robot_immobilized",
"name": [ "Immobilized" ],
"desc": [ "You are completely immobile" ],
"rating": "bad",
"show_in_info": true,
"remove_message": "You can move again.",
"flags": [ "CANNOT_ATTACK", "CANNOT_MOVE" ]
},
{
"type": "effect_type",
"id": "afs_medigel_eff_trigger"
Expand Down Expand Up @@ -331,5 +341,12 @@
"id": "afs_cureall",
"removes_effects": [ "afs_badpoison" ],
"base_mods": { "pkill_min": [ 5 ] }
},
{
"type": "effect_type",
"id": "afs_ai_defensive",
"name": [ "Defensive Stance" ],
"show_in_info": true,
"desc": [ { "str": "This creature is actively defending itself." } ]
}
]
8 changes: 8 additions & 0 deletions data/mods/Aftershock/emit.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,13 @@
"intensity": 3,
"chance": 70,
"qty": 70
},
{
"id": "weak_rad_glimmer",
"type": "emit",
"field": "fd_rad_glimmer",
"intensity": 3,
"chance": 100,
"qty": 12
}
]
2 changes: 1 addition & 1 deletion data/mods/Aftershock/itemgroups/weapons/armories.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"id": "afs_grenade_armory",
"type": "item_group",
"subtype": "distribution",
"items": [ { "group": "afs_any_hand_grenade", "prob": 3 } ]
"items": [ { "group": "afs_any_hand_grenade", "prob": 3 }, { "group": "afs_any_mine", "prob": 2 } ]
},
{
"id": "afs_energy_weapon_armory",
Expand Down
6 changes: 6 additions & 0 deletions data/mods/Aftershock/itemgroups/weapons/grenade_groups.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@
{ "item": "grenade_emp", "count": [ 1, 3 ] }
]
},
{
"id": "afs_any_mine",
"type": "item_group",
"subtype": "distribution",
"entries": [ { "item": "bot_shock_mine", "count": [ 3, 5 ] } ]
},
{
"id": "afs_anti_robot_grenades",
"type": "item_group",
Expand Down
34 changes: 34 additions & 0 deletions data/mods/Aftershock/items/corpses.json
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,40 @@
"flags": [ "TRADER_AVOID", "NO_REPAIR" ],
"melee_damage": { "bash": 6, "cut": 6 }
},
{
"type": "GENERIC",
"id": "broken_shock_mine",
"symbol": ",",
"color": "green",
"name": { "str": "spent shock-mine" },
"category": "other",
"description": "A spent shock-mine, inert and harmless. Cannot be recharged, but some of its components could be recycled.",
"price": "100 USD",
"price_postapoc": "100 USD",
"material": [ "qt_steel", "plastic" ],
"volume": "1 L",
"weight": "1200 g",
"to_hit": -3,
"flags": [ "TRADER_AVOID", "NO_REPAIR" ],
"melee_damage": { "bash": 4, "cut": 1 }
},
{
"type": "GENERIC",
"id": "broken_zenit",
"symbol": ",",
"color": "green",
"name": { "str": "broken zenit drone" },
"category": "other",
"description": "A broken zenit security drone. Could be disassembled for robotic components and heavy armor.",
"price": "100 USD",
"price_postapoc": "100 USD",
"material": [ "qt_steel", "vacuum_carbide" ],
"volume": "60 L",
"weight": "120 kg",
"to_hit": -3,
"flags": [ "TRADER_AVOID", "NO_REPAIR" ],
"melee_damage": { "bash": 4, "cut": 1 }
},
{
"type": "GENERIC",
"id": "afs_broken_copbot",
Expand Down
20 changes: 20 additions & 0 deletions data/mods/Aftershock/items/grenades.json
Original file line number Diff line number Diff line change
Expand Up @@ -245,5 +245,25 @@
"name": "active oxygen bomb",
"price": "0 USD",
"description": "This bomb's fuse is lit, and it will explode any second now. Throw it immediately!"
},
{
"id": "afs_reactor_unstable",
"type": "TOOL",
"category": "weapons",
"name": "unstable fusion reactor",
"looks_like": "c4armed",
"description": "A pressurized plasma reactor that is on the verge of a catastrophic explosion.",
"weight": "4400 g",
"volume": "10 L",
"price": "0 cent",
"to_hit": -5,
"material": [ "steel" ],
"symbol": "(",
"color": "light_red",
"countdown_interval": "3 seconds",
"explode_in_fire": true,
"explosion": { "power": 28000, "max_noise": 150, "distance_factor": 0.15 },
"countdown_action": { "type": "explosion", "explosion": { "power": 28000, "max_noise": 150, "distance_factor": 0.15 } },
"flags": [ "BOMB", "TRADER_AVOID", "SPAWN_ACTIVE" ]
}
]
17 changes: 17 additions & 0 deletions data/mods/Aftershock/items/gun/40mm_grenade.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[
{
"id": "afs_launcher_salvaged",
"copy-from": "m320",
"looks_like": "m79",
"type": "GUN",
"name": { "str": "vatforged grenade launcher" },
"description": "A crude grenade launcher that's been either ripped from a broken robot or built using a hacked template. The remnants of a loading rack allow it to hold three 40mm grenades at once.",
"price": "300 USD",
"price_postapoc": "300 USD",
"clip_size": 3,
"reload": 200,
"extend": { "flags": [ "RELOAD_ONE" ] },
"pocket_data": [ { "pocket_type": "MAGAZINE", "rigid": true, "ammo_restriction": { "40x46mm": 3 } } ],
"melee_damage": { "bash": 6 }
}
]
23 changes: 23 additions & 0 deletions data/mods/Aftershock/items/gun/voltaic.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,28 @@
],
"ammo_effects": [ "BEANBAG" ],
"flags": [ "NEVER_JAMS", "NON_FOULING", "NEEDS_NO_LUBE" ]
},
{
"id": "afs_mine_shocker",
"type": "GUN",
"symbol": "%",
"color": "blue",
"name": { "str": "mine shocker", "//~": "NO_I18N" },
"description": { "str": "How shocking!", "//~": "NO_I18N" },
"material": [ "qt_steel" ],
"flags": [ "PSEUDO", "NEVER_JAMS", "NONCONDUCTIVE", "NO_REPAIR", "WATERPROOF_GUN", "NO_SALVAGE", "NO_UNLOAD", "NO_TURRET" ],
"skill": "pistol",
"ammo_effects": [ "LIGHTNING" ],
"ranged_damage": { "damage_type": "electric", "amount": 4 },
"weight": "12 g",
"volume": "12 ml",
"longest_side": "25 cm",
"to_hit": 1,
"reload_noise_volume": 2,
"loudness": 2,
"range": 12,
"dispersion": 150,
"durability": 8,
"melee_damage": { "bash": 2 }
}
]
17 changes: 17 additions & 0 deletions data/mods/Aftershock/items/inactiverobot.json
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,23 @@
"is_pet": true
}
},
{
"id": "bot_shock_mine",
"type": "TOOL",
"copy-from": "bot_hack_base",
"name": "inactive shock-mine",
"description": "A less-than-lethal mine that emits a powerful electrical shock when triggered. Activate this item to deploy the mine, which will have a lifetime of 10 hours after activation.",
"color": "yellow",
"volume": "1 L",
"weight": "1200 g",
"use_action": {
"type": "place_monster",
"monster_id": "mon_shock_mine",
"difficulty": 1,
"moves": 100,
"skills": [ "traps", "computer" ]
}
},
{
"abstract": "bot_medibot_base",
"type": "TOOL",
Expand Down
19 changes: 19 additions & 0 deletions data/mods/Aftershock/items/vehicle_items.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,25 @@
"use_action": "CAPTURE_MONSTER_VEH",
"flags": [ "TRADER_AVOID" ]
},
{
"type": "GENERIC",
"id": "afs_mil_ship_plate",
"name": { "str": "military ablative plating" },
"description": "A segment of thick armor plating that would normally be found mounted on a spaceship. Incredibly heavy.",
"weight": "28500 g",
"to_hit": -1,
"color": "green",
"symbol": "]",
"material": [ "qt_steel", "vacuum_carbide" ],
"volume": "10 L",
"category": "veh_parts",
"price": "160 USD",
"price_postapoc": "7 USD 50 cent",
"flags": [ "NO_REPAIR" ],
"qualities": [ [ "COOK", 1 ] ],
"use_action": [ "HEAT_SOLID_ITEMS" ],
"melee_damage": { "bash": 8 }
},
{
"type": "GENERIC",
"id": "exo_gantry",
Expand Down
137 changes: 137 additions & 0 deletions data/mods/Aftershock/mobs/monster_attacks/zenit.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
[
{
"type": "effect_on_condition",
"id": "EOC_ZENIT_CONTROL",
"effect": [
{
"run_eocs": [
{
"id": "zenit_setup",
"condition": { "math": [ "u_setup != 1" ] },
"effect": [
{ "math": [ "u_setup = 1" ] },
{ "math": [ "u_timer_zenit_shock_mines = 0" ] },
{ "math": [ "u_timer_zenit_shock_att = 0" ] },
{ "math": [ "u_timer_zenit_smoke = 0" ] }
]
}
]
},
{ "u_location_variable": { "context_val": "my_loc" } },
{ "npc_location_variable": { "context_val": "t_loc" } },
{ "math": [ "_distance = distance('u', 'npc')" ] },
{
"switch": { "math": [ "_distance" ] },
"cases": [
{
"case": 0,
"effect": [
{ "run_eocs": [ "eoc_zenit_shock_mines" ] },
{ "run_eocs": [ "eoc_zenit_smoke" ], "variables": { "tar": { "context_val": "my_loc" } } }
]
},
{
"case": 6,
"effect": [ { "run_eocs": [ "eoc_zenit_shock_att" ], "variables": { "tar": { "context_val": "t_loc" } } } ]
},
{ "case": 12, "effect": [ { "run_eocs": [ "eoc_zenit_def" ] } ] },
{
"case": 25,
"effect": [ { "run_eocs": [ "eoc_zenit_smoke", "eoc_zenit_def" ], "variables": { "tar": { "context_val": "t_loc" } } } ]
}
]
}
]
},
{
"id": "eoc_zenit_def",
"type": "effect_on_condition",
"condition": { "not": { "npc_has_any_effect": [ "afs_ai_defensive" ] } },
"effect": [
{ "u_add_effect": "afs_ai_defensive", "duration": "10 minutes" },
{
"run_eocs": [
{
"id": "avatar_sees_zenit_def",
"condition": "player_see_u",
"effect": [ { "message": "The Zenit crouches forward, hiding most of its body behind its upper armor plate." } ]
}
]
}
]
},
{
"id": "eoc_zenit_undef",
"type": "effect_on_condition",
"condition": { "and": [ { "u_has_any_effect": [ "afs_ai_defensive" ] } ] },
"effect": [
{ "u_lose_effect": "afs_ai_defensive" },
{
"run_eocs": [
{
"id": "avatar_sees_zenit_undef",
"condition": "player_see_u",
"effect": [ { "message": "The Zenit raises its body." } ]
}
]
}
]
},
{
"id": "eoc_zenit_shock_att",
"type": "effect_on_condition",
"condition": { "and": [ { "expects_vars": [ "tar" ] }, { "math": [ "time_since(u_timer_zenit_shock_att) > time(' 12 s')" ] } ] },
"effect": [
{ "run_eocs": [ "eoc_zenit_undef" ], "alpha_talker": "u" },
{ "math": [ "u_timer_zenit_shock_att = time('now')" ] },
{ "u_cast_spell": { "id": "spell_electric_chain_2" }, "loc": { "context_val": "tar" } },
{
"run_eocs": [
{
"id": "avatar_sees_zenit_shock_att",
"condition": "player_see_u",
"effect": [ { "message": "The Zenit emits an explosion of arcing electricity." } ]
}
]
}
]
},
{
"id": "eoc_zenit_shock_mines",
"type": "effect_on_condition",
"condition": { "and": [ { "math": [ "time_since(u_timer_zenit_shock_mines) > time(' 5 m')" ] } ] },
"effect": [
{ "run_eocs": [ "eoc_zenit_undef" ], "alpha_talker": "u" },
{ "math": [ "u_timer_zenit_shock_mines = time('now')" ] },
{ "u_spawn_monster": "mon_shock_mine", "real_count": 30, "min_radius": 5, "max_radius": 13 },
{
"run_eocs": [
{
"id": "avatar_sees_zenit_shock_mines",
"condition": "player_see_u",
"effect": [ { "message": "Several mines are expelled from the Zenit's munitions bay" } ]
}
]
}
]
},
{
"id": "eoc_zenit_smoke",
"type": "effect_on_condition",
"condition": { "and": [ { "expects_vars": [ "tar" ] }, { "math": [ "time_since(u_timer_zenit_smoke) > time(' 40 s')" ] } ] },
"effect": [
{ "run_eocs": [ "eoc_zenit_undef" ], "alpha_talker": "u" },
{ "math": [ "u_timer_zenit_smoke = time('now')" ] },
{ "u_cast_spell": { "id": "quadraphract_smoke_mortar" }, "loc": { "context_val": "tar" } },
{
"run_eocs": [
{
"id": "avatar_sees_zenit_smoke",
"condition": "player_see_u",
"effect": [ { "message": "Several bomblets are expelled from the Zenit's munitions bay" } ]
}
]
}
]
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"name": "GROUP_ROBOT_COPS_HOSTILE",
"default": "mon_manhack",
"monsters": [
{ "monster": "mon_zenit", "weight": 50, "cost_multiplier": 100 },
{ "monster": "mon_skitterbot", "weight": 200, "cost_multiplier": 20 },
{ "monster": "mon_afs_eyebot", "weight": 200, "cost_multiplier": 4 },
{ "monster": "mon_afs_copbot", "weight": 100, "cost_multiplier": 70 },
Expand Down
Loading

0 comments on commit 2000b9f

Please sign in to comment.