Skip to content

Commit

Permalink
[Aftershock] Add small Enforcer Station (#74471)
Browse files Browse the repository at this point in the history
* Initial Commit

* Hacking can now take a radius to perform the transform. Police Robot ids changed to avoid migration issues.  Building rotated the correct way.  Introduced Security Gates and Security panels to control them.

* Other half of the previous commit

* Add Atomic Police Car. Swap Enforcer station to spawn this instead.

* Add Light Cycle, Add Robot Cops Monster Group, Add Nested Mapgen to Station,  Adjust EMP gun spawn rarity

* Lint

* Correct Seplling

* Commit Review suggestion

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Commit Review suggestion

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Add a migration for items with changed ids.

* Add another space

* Add a space

* kick tests

* Restore the string back to how it was originally?

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Maleclypse <[email protected]>
  • Loading branch information
3 people authored Jun 18, 2024
1 parent 88bfd69 commit 668e0d9
Show file tree
Hide file tree
Showing 27 changed files with 803 additions and 26 deletions.
20 changes: 16 additions & 4 deletions data/mods/Aftershock/EOC/hacking_eoc.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,20 @@
{
"type": "effect_on_condition",
"id": "EOC_afs_hack_unlock",
"condition": { "and": [ { "expects_vars": [ "furn_pos", "difficulty" ] }, { "u_has_effect": "afs_hack_done" } ] },
"condition": { "and": [ { "expects_vars": [ "furn_pos", "difficulty", "t_radius" ] }, { "u_has_effect": "afs_hack_done" } ] },
"effect": [
{
"run_eocs": [
{
"id": "_EOC_afs_hack_unlock",
"condition": { "roll_contested": { "math": [ "afs_hack_skill(1)" ] }, "die_size": 4, "difficulty": { "context_val": "difficulty" } },
"effect": [ { "u_transform_radius": 0, "ter_furn_transform": "afs_multi_unlock", "target_var": { "context_val": "furn_pos" } } ],
"effect": [
{
"u_transform_radius": { "context_val": "t_radius" },
"ter_furn_transform": "afs_multi_unlock",
"target_var": { "context_val": "furn_pos" }
}
],
"false_effect": { "u_message": "You fail to override the device." }
}
]
Expand All @@ -45,15 +51,21 @@
{
"type": "effect_on_condition",
"id": "EOC_start_lock_hack",
"condition": { "and": [ { "expects_vars": [ "furn_pos", "t_delay", "difficulty" ] }, { "test_eoc": "EOC_CONDITION_can_hack" } ] },
"condition": {
"and": [ { "expects_vars": [ "furn_pos", "t_delay", "difficulty", "t_radius" ] }, { "test_eoc": "EOC_CONDITION_can_hack" } ]
},
"effect": [
{ "math": [ "_t_delay", "=", "afs_hack_time_adjust(_t_delay, time('20s'), time('2m'))" ] },
{ "u_message": "You connect to the lock controller." },
{ "u_assign_activity": "ACT_afs_hack", "duration": { "context_val": "t_delay" } },
{
"queue_eoc_with": "EOC_afs_hack_unlock",
"time_in_future": { "context_val": "t_delay" },
"variables": { "furn_pos": { "context_val": "furn_pos" }, "difficulty": { "context_val": "difficulty" } }
"variables": {
"furn_pos": { "context_val": "furn_pos" },
"difficulty": { "context_val": "difficulty" },
"t_radius": { "context_val": "t_radius" }
}
}
],
"false_effect": { "u_message": "You need either an electrohack or working computer to attempt a hack.", "popup": true }
Expand Down
5 changes: 5 additions & 0 deletions data/mods/Aftershock/flags.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
"type": "json_flag",
"info": "This item is an access card for ancient industrial locations."
},
{
"id": "OLD_ENFORCER_CARD",
"type": "json_flag",
"info": "This item is an access card for ancient police locations."
},
{
"id": "HEAVY_TOOL",
"type": "json_flag"
Expand Down
7 changes: 7 additions & 0 deletions data/mods/Aftershock/itemgroups/clothing/armor_sets.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,12 @@
{ "item": "armguard_scrap", "prob": 40 },
{ "item": "cuirass_lightplate", "prob": 90 }
]
},
{
"type": "item_group",
"id": "afs_police_armor",
"//": "If specific aftershock police armor is added please add to this group. Until then it refers to civilian armors.",
"subtype": "collection",
"entries": [ { "group": "afs_armor_spaceship_crew_g", "prob": 60 }, { "group": "civilian_body_armor", "prob": 40 } ]
}
]
7 changes: 7 additions & 0 deletions data/mods/Aftershock/itemgroups/clothing/winter_outfits.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@
"subtype": "distribution",
"items": [ { "group": "afs_frontier_cryo_g", "prob": 20 }, { "group": "afs_cryopod_g", "prob": 1 } ]
},
{
"//": "A group for any police-flavour advanced civilian piece of clothing",
"id": "afs_wintersuit_police_advanced",
"type": "item_group",
"subtype": "distribution",
"items": [ { "group": "afs_magellan_g", "prob": 2 } ]
},
{
"//": "A group for any science-flavour advanced civilian piece of clothing",
"id": "afs_wintersuit_science_advanced",
Expand Down
7 changes: 7 additions & 0 deletions data/mods/Aftershock/itemgroups/item_groups.json
Original file line number Diff line number Diff line change
Expand Up @@ -592,5 +592,12 @@
"type": "item_group",
"subtype": "distribution",
"entries": [ { "item": "afs_glass_device" }, { "item": "afs_glass_AR_device" } ]
},
{
"id": "afs_police_evidence_locker",
"type": "item_group",
"subtype": "distribution",
"//": "Refers directly to the existing evidence group but we can add whatever we want to layer on top of that.",
"entries": [ { "group": "cop_evidence" } ]
}
]
14 changes: 14 additions & 0 deletions data/mods/Aftershock/itemgroups/robot_storage.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,19 @@
"//": "Small Consumer and commercial grade robots that can (probably) fit in the reinforced display cases.",
"subtype": "distribution",
"items": [ [ "bot_light_hack", 20 ], [ "bot_skitterbot_rat", 10 ], [ "bot_eyebot_heater", 5 ], [ "bot_skitterbot_hunter", 5 ] ]
},
{
"id": "afs_police_bot_storage",
"type": "item_group",
"//": "TODO: Apparently these items are all being migrated currently. Police Robots found in enforcer stations and departments.",
"subtype": "distribution",
"items": [
[ "afs_bot_riotbot", 5 ],
[ "afs_bot_copbot", 15 ],
[ "afs_bot_eyebot", 20 ],
[ "afs_broken_riotbot", 10 ],
[ "afs_broken_copbot", 70 ],
[ "afs_broken_eyebot", 100 ]
]
}
]
7 changes: 7 additions & 0 deletions data/mods/Aftershock/itemgroups/tool_groups.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,13 @@
{ "item": "afs_wrist_computer", "prob": 20 }
]
},
{
"type": "item_group",
"id": "afs_police_hacker_gear",
"//": "specialized tools used specifcally by cyber security specialists. Currently difers to the programming group but if advanced hacking tools get made they should be placed here.",
"subtype": "collection",
"items": [ { "group": "afs_tools_programing", "prob": 60 }, { "group": "afs_consumer_vr", "prob": 20 } ]
},
{
"type": "item_group",
"id": "afs_tools_agricultural_hazardous",
Expand Down
12 changes: 12 additions & 0 deletions data/mods/Aftershock/itemgroups/weapons/armories.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,17 @@
[ "afs_gibs_shotgun", 20 ],
[ "afs_raketa_shotgun", 20 ]
]
},
{
"id": "afs_police_armory",
"type": "item_group",
"subtype": "distribution",
"items": [ { "group": "afs_civilian_armory", "prob": 3 }, { "item": "tazer", "prob": 5 } ]
},
{
"id": "afs_police_anti_robot_armory",
"type": "item_group",
"subtype": "collection",
"items": [ { "group": "afs_swat_emp", "prob": 3 }, { "group": "afs_civilian_laser_mag", "prob": 1 } ]
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,12 @@
"subtype": "distribution",
"copy-from": "ammo_rifle_common",
"extend": { "items": [ { "group": "afs_any_laser_mag", "prob": 100 }, { "group": "afs_any_plasma_mag", "prob": 50 } ] }
},
{
"type": "item_group",
"id": "afs_swat_emp",
"//": "Anti-Robot weapons for police force",
"subtype": "distribution",
"items": [ [ "afs_xm34", 5 ] ]
}
]
10 changes: 10 additions & 0 deletions data/mods/Aftershock/itemgroups/weapons/grenade_groups.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,15 @@
{ "item": "scrambler", "count": [ 1, 3 ] },
{ "item": "grenade_emp", "count": [ 1, 3 ] }
]
},
{
"id": "afs_anti_robot_grenades",
"type": "item_group",
"subtype": "distribution",
"entries": [
{ "item": "afs_electroshock_grenade_1", "count": [ 1, 3 ] },
{ "item": "scrambler", "count": [ 1, 3 ] },
{ "item": "grenade_emp", "count": [ 1, 3 ] }
]
}
]
8 changes: 4 additions & 4 deletions data/mods/Aftershock/items/corpses.json
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@
{
"type": "GENERIC",
"id": "broken_eyebot_heater",
"copy-from": "broken_eyebot",
"copy-from": "afs_broken_eyebot",
"color": "pink",
"name": "broken floating heater",
"description": "A broken floating heater, now cold and motionless. Could be stripped down or re-crafted."
Expand Down Expand Up @@ -317,7 +317,7 @@
},
{
"type": "GENERIC",
"id": "broken_eyebot",
"id": "afs_broken_eyebot",
"symbol": ",",
"color": "green",
"name": { "str": "broken eyebot" },
Expand All @@ -334,7 +334,7 @@
},
{
"type": "GENERIC",
"id": "broken_copbot",
"id": "afs_broken_copbot",
"symbol": ",",
"color": "green",
"name": { "str": "broken police bot" },
Expand All @@ -351,7 +351,7 @@
},
{
"type": "GENERIC",
"id": "broken_riotbot",
"id": "afs_broken_riotbot",
"symbol": ",",
"color": "green",
"name": { "str": "broken riot control bot" },
Expand Down
16 changes: 16 additions & 0 deletions data/mods/Aftershock/items/id_cards.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,21 @@
"volume": "5 ml",
"category": "keys",
"to_hit": -3
},
{
"type": "GENERIC",
"id": "enforcer_master_keycard",
"symbol": ",",
"color": "blue",
"name": { "str": "Enforcer master key" },
"description": "Issued only to the highest echelons of Mercurial corporate security, these cards provide unfettered access to all enforcer prefab facilites built before the year 2152. A lucrative find for any salvor on Salus IV.",
"price": "8 kUSD",
"flags": [ "OLD_ENFORCER_CARD" ],
"price_postapoc": "8 kUSD",
"material": [ "plastic" ],
"weight": "6 g",
"volume": "5 ml",
"category": "keys",
"to_hit": -3
}
]
14 changes: 7 additions & 7 deletions data/mods/Aftershock/items/inactiverobot.json
Original file line number Diff line number Diff line change
Expand Up @@ -472,7 +472,7 @@
"abstract": "bot_eyebot_base",
"type": "TOOL",
"name": "inactive eyebot",
"looks_like": "broken_eyebot",
"looks_like": "afs_broken_eyebot",
"price": "100 USD",
"price_postapoc": "100 USD",
"material": [ "steel", "plastic" ],
Expand Down Expand Up @@ -525,8 +525,8 @@
"melee_damage": { "bash": 8 }
},
{
"id": "bot_eyebot",
"looks_like": "broken_eyebot",
"id": "afs_bot_eyebot",
"looks_like": "afs_broken_eyebot",
"type": "TOOL",
"name": { "str": "inactive eyebot" },
"description": "An inactive eyebot. Using this item involves turning it on and launching the UAV. If reprogrammed and rewired successfully, the eyebot will then keep watch for intruders.",
Expand All @@ -552,8 +552,8 @@
"melee_damage": { "bash": 8 }
},
{
"id": "bot_copbot",
"looks_like": "broken_copbot",
"id": "afs_bot_copbot",
"looks_like": "afs_broken_copbot",
"type": "TOOL",
"name": { "str": "inactive police bot" },
"description": "An inactive police robot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the police bot will then identify you as law enforcement, roam around or follow you, and attempt to detain lawbreakers.",
Expand All @@ -579,8 +579,8 @@
"melee_damage": { "bash": 8 }
},
{
"id": "bot_riotbot",
"looks_like": "broken_riotbot",
"id": "afs_bot_riotbot",
"looks_like": "afs_broken_riotbot",
"type": "TOOL",
"name": { "str": "inactive riot control bot" },
"description": "An inactive riot control bot. Using this item involves placing it on the ground and turning it on. If reprogrammed and rewired successfully, the robot will bring order and peace to the horde.",
Expand Down
10 changes: 10 additions & 0 deletions data/mods/Aftershock/maps/city_buildings.json
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,16 @@
],
"locations": [ "land" ]
},
{
"id": "afs_enforcer_station_1",
"type": "city_building",
"overmaps": [
{ "point": [ 0, 0, 0 ], "overmap": "afs_enforcer_station_a1_south" },
{ "point": [ 0, 0, 1 ], "overmap": "afs_enforcer_station_a1_floor2_south" },
{ "point": [ 0, 0, 2 ], "overmap": "afs_enforcer_station_a1_roof_south" }
],
"locations": [ "land" ]
},
{
"id": "afs_habitat_block_1",
"type": "city_building",
Expand Down
Loading

0 comments on commit 668e0d9

Please sign in to comment.