Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

(Done)Adds riot control turrets and makes them more common than lethal types. Removes roadblock robots. #35821

Closed
wants to merge 23 commits into from
Closed
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
5bbd6e1
Add mi-go atmosphere effect
I-am-Erk Nov 21, 2019
2af1b15
Merge pull request #17 from CleverRaven/master
I-am-Erk Nov 22, 2019
813465c
Merge remote-tracking branch 'upstream/master'
I-am-Erk Nov 23, 2019
24bb986
Merge remote-tracking branch 'upstream/master'
I-am-Erk Nov 27, 2019
f3fa4aa
Merge remote-tracking branch 'upstream/master'
I-am-Erk Dec 2, 2019
4696dc1
Add riot control turrets
I-am-Erk Dec 2, 2019
ba48ecd
Update map_extras.cpp
I-am-Erk Dec 2, 2019
b8d9b65
Update src/map_extras.cpp
I-am-Erk Dec 2, 2019
d1cb7ee
Update data/json/items/generic.json
I-am-Erk Dec 2, 2019
aa1bca2
further adjust turret size
I-am-Erk Dec 2, 2019
7805fff
change secubots for riot turrets in prisons
I-am-Erk Dec 2, 2019
e089f20
Merge branch 'less-lethal-turrets' of github.com:I-am-Erk/Cataclysm-D…
I-am-Erk Dec 2, 2019
d3e21a1
switch to 40mm
I-am-Erk Dec 2, 2019
b66c16f
remove chickenbots, tankbots, and tripods from monster groups
I-am-Erk Dec 2, 2019
28d19ff
add a sponge round instead of beanbag
I-am-Erk Dec 2, 2019
ee7be13
Update robots.json
I-am-Erk Dec 2, 2019
3a03323
change to an m203 array instead of a mark 19
I-am-Erk Dec 3, 2019
9673756
Update data/json/items/gun/40mm.json
I-am-Erk Dec 3, 2019
ec0149c
Change description
I-am-Erk Dec 3, 2019
4b55e6c
Update data/json/recipes/recipe_deconstruction.json
I-am-Erk Dec 6, 2019
dc5eaf7
Update recipe_deconstruction.json
I-am-Erk Dec 6, 2019
fa87893
Apply suggestions from code review
I-am-Erk Dec 10, 2019
b807c9c
Merge branch 'master' into less-lethal-turrets
I-am-Erk Dec 12, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions data/json/items/ammo/40mm.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,17 @@
"damage": 20,
"extend": { "effects": [ "LARGE_BEANBAG" ] }
},
{
"id": "40mm_sponge",
"copy-from": "40mm_grenade",
"type": "AMMO",
"name": "40mm sponge",
"description": "A 40mm sponge round that delivers strong impact on target, causing pain and disorientation. May still injure or kill.",
"price": 5000,
"price_postapoc": 10000,
"damage": 5,
"extend": { "effects": [ "BEANBAG" ] }
},
{
"id": "40mm_concussive",
"copy-from": "40mm_grenade",
Expand Down
42 changes: 32 additions & 10 deletions data/json/items/corpses/inactive_bots.json
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,8 @@
"type": "TOOL",
"name": "inactive laser turret",
"description": "This is an inactive laser turret. Using this item involves turning it on and placing it on the ground, where it will attach itself. If reprogrammed and rewired successfully the turret will identify you as a friendly, and attack all enemies with its revolving laser cannons. It requires sunlight in order to fire.",
"weight": "1450 g",
"volume": "3 L",
"weight": "65000 g",
"volume": "30 L",
"price": 600000,
"to_hit": -3,
"bashing": 8,
Expand All @@ -156,8 +156,8 @@
"type": "TOOL",
"name": "inactive M2HB autonomous CROWS II",
"description": "This is an inactive turret. Using this item involves loading the unit with the factory-loaded .50 BMG rounds in your inventory (if you wish to divide your ammunition, set aside whatever .50 BMG rounds you do NOT want to give the turret) turning it on, and placing it on the ground, where it will attach itself. If programmed successfully the turret will then identify you as a friendly, and attack all enemies with its M2HB.",
"weight": "1550 g",
"volume": "3500 ml",
"weight": "172000 g",
"volume": "62500 ml",
"price": 500500,
"to_hit": -3,
"bashing": 8,
Expand Down Expand Up @@ -230,8 +230,8 @@
"type": "TOOL",
"name": "inactive autonomous M249 CROWS II",
"description": "This is an inactive turret. Using this item involves loading the unit with the factory-loaded 5.56x45mm rounds in your inventory (if you wish to divide your ammunition, set aside whatever 5.56x45mm rounds you do NOT want to give the turret) turning it on, and placing it on the ground, where it will attach itself. If programmed successfully the turret will then identify you as a friendly, and attack all enemies with its M249.",
"weight": "1507 g",
"volume": "3500 ml",
"weight": "172000 g",
"volume": "60 L",
"price": 500000,
"to_hit": -3,
"bashing": 8,
Expand All @@ -252,8 +252,8 @@
"type": "TOOL",
"name": "inactive autonomous M240 CROWS II",
"description": "This is an inactive turret. Using this item involves loading the unit with the factory-loaded 7.62x51mm rounds in your inventory (if you wish to divide your ammunition, set aside whatever 7.62x51mm rounds you do NOT want to give the turret) turning it on, and placing it on the ground, where it will attach itself. If programmed successfully the turret will then identify you as a friendly, and attack all enemies with its M240.",
"weight": "1507 g",
"volume": "3500 ml",
"weight": "172000 g",
"volume": "60 L",
"price": 500000,
"to_hit": -3,
"bashing": 8,
Expand All @@ -269,13 +269,35 @@
"skill2": "computer"
}
},
{
"id": "bot_turret_riot",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"id": "bot_turret_riot",
"id": "bot_talon_m203",

Consistent IDs for our UGVs makes it easier to know exactly what they are by ID only.

"type": "TOOL",
"name": "inactive riot control turret",
"description": "This is an inactive riot control turret. Using this item involves loading the unit with the factory-loaded beanbag rounds in your inventory (if you wish to divide your ammunition, set aside whatever beanbag rounds you do NOT want to give the turret) turning it on, and placing it on the ground, where it will attach itself. If programmed successfully the turret will then identify you as a friendly, and attack all enemies with its riot control gun.",
"weight": "125000 g",
"volume": "60 L",
"price": 200500,
"to_hit": -3,
"bashing": 8,
"material": [ "steel", "plastic" ],
"symbol": ";",
"color": "red",
"use_action": {
"type": "place_monster",
"monster_id": "mon_turret_riot",
"difficulty": 6,
"moves": 100,
"skill1": "electronics",
"skill2": "computer"
}
},
{
"id": "bot_turret",
"type": "TOOL",
"name": "inactive turret",
"description": "This is an inactive turret. Using this item involves loading the unit with the factory-loaded 9x19mm rounds in your inventory (if you wish to divide your ammunition, set aside whatever 9x19mm you do NOT want to give the turret) turning it on, and placing it on the ground. If reprogrammed and rewired successfully the turret will then identify you as a friendly, and attack all enemies with its SMG.",
"weight": "1507 g",
"volume": "3 L",
"weight": "75000 g",
"volume": "35 L",
I-am-Erk marked this conversation as resolved.
Show resolved Hide resolved
"price": 400000,
"to_hit": -3,
"bashing": 8,
Expand Down
15 changes: 12 additions & 3 deletions data/json/items/generic.json
Original file line number Diff line number Diff line change
Expand Up @@ -2832,20 +2832,29 @@
"description": "A broken turret. Much less threatening now that it's laid limp on solid ground. Could be gutted for parts.",
"price": 1000,
"material": [ "steel", "plastic" ],
"weight": "62650 g",
"weight": "72650 g",
"volume": "30 L",
"bashing": 4,
"cutting": 4,
"to_hit": -3,
"flags": [ "TRADER_AVOID", "NO_REPAIR" ]
},
{
"type": "GENERIC",
"id": "broken_turret_riot",
"symbol": ",",
"color": "blue",
"name": "broken riot control turret",
"description": "A broken riot control turret. Much less threatening now that it's laid limp on solid ground. Could be gutted for parts.",
"copy-from": "broken_turret"
},
{
"type": "GENERIC",
"id": "broken_turret_rifle",
"symbol": ",",
"color": "green",
"name": "broken M249 autonomous CROWS II",
"weight": "70000 g",
"weight": "75000 g",
"copy-from": "broken_turret"
},
{
Expand All @@ -2854,7 +2863,7 @@
"symbol": ",",
"color": "green",
"name": "broken M240 autonomous CROWS II",
"weight": "70000 g",
"weight": "75000 g",
"copy-from": "broken_turret"
},
{
Expand Down
23 changes: 23 additions & 0 deletions data/json/items/gun/40mm.json
Original file line number Diff line number Diff line change
Expand Up @@ -180,5 +180,28 @@
"clip_size": 3,
"modes": [ [ "DEFAULT", "single", 1, "NPC_AVOID" ], [ "MULTI", "multi", 3, [ "NPC_AVOID", "SIMULTANEOUS" ] ] ],
"proportional": { "weight": 1.5, "volume": 1.8, "price": 2 }
},
{
"id": "pseudo_m203",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"id": "pseudo_m203",
"id": "m203_array",

This isn't really a pseudo item.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't it? It's just a bunch of m203's strapped onto the bot, not an actual gun.

"copy-from": "launcher_base",
"looks_like": "m203",
"type": "GUN",
"name": "M203 array",
"description": "Six M203 grenade launchers for use on an automated 40mm turret.",
I-am-Erk marked this conversation as resolved.
Show resolved Hide resolved
"weight": "8200 g",
"volume": "4 L",
"price": 250000,
"to_hit": -1,
"bashing": 14,
"material": "steel",
"ammo": "40mm",
"range": 30,
"ranged_damage": 1,
"dispersion": 300,
"durability": 10,
"reload": 400,
"modes": [ [ "DEFAULT", "semi-auto", 1, "NPC_AVOID" ] ],
"magazines": [ [ "40mm", [ "belt40mm" ] ] ],
I-am-Erk marked this conversation as resolved.
Show resolved Hide resolved
"flags": [ "MOUNTED_GUN" ]
}
]
2 changes: 1 addition & 1 deletion data/json/mapgen/office_tower_2.json
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
],
"place_monsters": [ { "monster": "GROUP_OFFICE_TOWER_2", "x": [ 7, 21 ], "y": [ 13, 21 ], "chance": 2, "repeat": [ 1 ] } ],
"place_monster": [ { "monster": "mon_zombie_scientist", "x": [ 7, 21 ], "y": [ 4, 10 ], "repeat": [ 1, 3 ] } ],
"monster": { "7": { "monster": "mon_turret_rifle" } }
"monster": { "7": { "monster": "mon_turret_riot" } }
}
},
{
Expand Down
10 changes: 5 additions & 5 deletions data/json/mapgen/prison_1.json
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,11 @@
"place_item": [ { "item": "visions_solitude", "x": 16, "y": 108, "amount": 1 } ],
"place_monsters": [
{ "monster": "GROUP_ZOMBIE_PRISON", "x": [ 15, 20 ], "y": [ 34, 37 ], "repeat": [ 1, 2 ], "density": 0.2 },
{ "monster": "GROUP_ROBOT_SECUBOT", "x": [ 15, 20 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_TURRET_RIOT", "x": [ 15, 20 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_ZOMBIE_PRISON", "x": [ 15, 20 ], "y": [ 44, 37 ], "repeat": [ 1, 2 ], "density": 0.2 },
{ "monster": "GROUP_ROBOT_SECUBOT", "x": [ 32, 39 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_TURRET_RIOT", "x": [ 32, 39 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_ZOMBIE_PRISON", "x": [ 51, 56 ], "y": [ 34, 37 ], "repeat": [ 1, 2 ], "density": 0.2 },
{ "monster": "GROUP_ROBOT_SECUBOT", "x": [ 51, 56 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_TURRET_RIOT", "x": [ 51, 56 ], "y": [ 39, 42 ], "density": 0.1 },
{ "monster": "GROUP_ZOMBIE_PRISON", "x": [ 51, 56 ], "y": [ 44, 37 ], "repeat": [ 1, 2 ], "density": 0.2 },
{ "monster": "GROUP_ROBOT_EYEBOT", "x": [ 24, 47 ], "y": [ 0, 13 ], "density": 0.1 },
{ "monster": "GROUP_ROBOT_EYEBOT", "x": [ 27, 44 ], "y": [ 52, 60 ], "density": 0.1 },
Expand Down Expand Up @@ -253,7 +253,7 @@
},
"place_monsters": [ { "monster": "GROUP_ZOMBIE_COP", "x": [ 35, 38 ], "y": [ 2, 7 ], "density": 0.2 } ],
"monster": {
"7": { "monster": "mon_turret_rifle" },
"7": { "monster": "mon_turret_riot" },
"Z": { "monster": "mon_zombie_prisoner" },
"C": { "monster": "mon_broken_cyborg" }
}
Expand Down Expand Up @@ -454,7 +454,7 @@
",": [ { "monster": "mon_zombie_cop", "chance": 1 }, { "monster": "mon_zombie_prisoner", "chance": 2 } ],
"^": { "monster": "mon_zombie_brute", "chance": 1 },
" ": { "monster": "mon_dog_zombie_cop", "chance": 1 },
".": { "monster": "mon_secubot", "chance": 1 },
".": { "monster": "mon_turret_riot", "chance": 1 },
"U": { "monster": "mon_dog_gshepherd", "chance": 10 },
":": { "monster": "mon_dog_gshepherd", "chance": 1 }
},
Expand Down
40 changes: 0 additions & 40 deletions data/json/monstergroups/monstergroups.json
Original file line number Diff line number Diff line change
Expand Up @@ -4261,7 +4261,6 @@
{ "monster": "mon_zombie_technician", "freq": 50, "cost_multiplier": 3 },
{ "monster": "mon_zombie_electric", "freq": 50, "cost_multiplier": 3 },
{ "monster": "mon_zombie_brute_shocker", "freq": 10, "cost_multiplier": 5 },
{ "monster": "mon_chickenbot", "freq": 1, "cost_multiplier": 50 },
{ "monster": "mon_zombie_hulk", "freq": 1, "cost_multiplier": 50 },
{ "monster": "mon_skeleton_hulk", "freq": 1, "cost_multiplier": 50 }
]
Expand Down Expand Up @@ -4351,27 +4350,6 @@
"default": "mon_spider_web",
"monsters": [ ]
},
{
"type": "monstergroup",
"name": "GROUP_ROBOT",
"default": "mon_manhack",
"monsters": [
{ "monster": "mon_skitterbot", "freq": 220, "cost_multiplier": 0 },
{ "monster": "mon_secubot", "freq": 150, "cost_multiplier": 0 },
{ "monster": "mon_talon_m202a1", "freq": 75, "cost_multiplier": 0 },
{ "monster": "mon_copbot", "freq": 0, "cost_multiplier": 0 },
{ "monster": "mon_molebot", "freq": 40, "cost_multiplier": 0 },
{ "monster": "mon_tripod", "freq": 110, "cost_multiplier": 0 },
{ "monster": "mon_chickenbot", "freq": 60, "cost_multiplier": 0 },
{ "monster": "mon_tankbot", "freq": 20, "cost_multiplier": 0 }
]
},
{
"type": "monstergroup",
"name": "GROUP_TURRET",
"default": "mon_turret_rifle",
"monsters": [ { "monster": "mon_turret_bmg", "freq": 50, "cost_multiplier": 2 } ]
},
{
"type": "monstergroup",
"name": "GROUP_POLICE",
Expand Down Expand Up @@ -5080,18 +5058,6 @@
"default": "mon_zombie_cop",
"monsters": [ { "monster": "mon_zombie_cop", "freq": 100, "cost_multiplier": 0 } ]
},
{
"type": "monstergroup",
"name": "GROUP_ROBOT_EYEBOT",
"default": "mon_eyebot",
"monsters": [ { "monster": "mon_eyebot", "freq": 100, "cost_multiplier": 0 } ]
},
{
"type": "monstergroup",
"name": "GROUP_ROBOT_SECUBOT",
"default": "mon_secubot",
"monsters": [ { "monster": "mon_secubot", "freq": 100, "cost_multiplier": 0 } ]
},
{
"type": "monstergroup",
"name": "GROUP_PARK_ANIMAL",
Expand Down Expand Up @@ -5315,12 +5281,6 @@
"default": "mon_dark_wyrm",
"monsters": [ { "monster": "mon_dark_wyrm", "freq": 40, "cost_multiplier": 1 } ]
},
{
"name": "GROUP_HAZMATBOT",
"type": "monstergroup",
"default": "mon_hazmatbot",
"monsters": [ { "monster": "mon_hazmatbot", "freq": 40, "cost_multiplier": 1 } ]
},
{
"name": "GROUP_STRAY_DOGS",
"type": "monstergroup",
Expand Down
44 changes: 44 additions & 0 deletions data/json/monstergroups/robots.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
[
{
"type": "monstergroup",
"name": "GROUP_ROBOT",
"default": "mon_manhack",
"monsters": [
{ "monster": "mon_skitterbot", "freq": 220, "cost_multiplier": 0 },
{ "monster": "mon_secubot", "freq": 150, "cost_multiplier": 0 },
{ "monster": "mon_talon_m202a1", "freq": 75, "cost_multiplier": 0 },
{ "monster": "mon_copbot", "freq": 0, "cost_multiplier": 0 },
{ "monster": "mon_molebot", "freq": 40, "cost_multiplier": 0 }
]
},
{
"type": "monstergroup",
"name": "GROUP_TURRET",
"default": "mon_turret_rifle",
"monsters": [ { "monster": "mon_turret_bmg", "freq": 50, "cost_multiplier": 2 } ]
},
{
"name": "GROUP_HAZMATBOT",
"type": "monstergroup",
"default": "mon_hazmatbot",
"monsters": [ { "monster": "mon_hazmatbot", "freq": 40, "cost_multiplier": 1 } ]
},
{
"type": "monstergroup",
"name": "GROUP_ROBOT_EYEBOT",
"default": "mon_eyebot",
"monsters": [ { "monster": "mon_eyebot", "freq": 100, "cost_multiplier": 0 } ]
},
{
"type": "monstergroup",
"name": "GROUP_ROBOT_SECUBOT",
"default": "mon_secubot",
"monsters": [ { "monster": "mon_secubot", "freq": 100, "cost_multiplier": 0 } ]
},
{
"type": "monstergroup",
"name": "GROUP_TURRET_RIOT",
"default": "mon_turret_riot",
"monsters": [ { "monster": "mon_turret_riot", "freq": 100, "cost_multiplier": 0 } ]
}
]
50 changes: 50 additions & 0 deletions data/json/monsters/turrets.json
Original file line number Diff line number Diff line change
Expand Up @@ -220,5 +220,55 @@
"death_drops": { },
"death_function": [ "BROKEN" ],
"flags": [ "SEES", "NOHEAD", "ELECTRONIC", "IMMOBILE", "NO_BREATHE", "DROPS_AMMO" ]
},
{
"id": "mon_turret_riot",
I-am-Erk marked this conversation as resolved.
Show resolved Hide resolved
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
"id": "mon_turret_riot",
"id": "mon_talon_m203",

Consistent monster IDs for UGVs. This should go in defense_bot.json too because we're likely to have moving ones at some point.

"type": "MONSTER",
"name": "riot control turret",
"description": "These rapid-deployable riot control turrets were widely publicized a few years before the cataclysm as a new semi-autonomous device that could fire less-lethal rounds with far more accuracy than a human, ensuring safer hits against a target's limbs. They were quickly adopted by prisons and inner city police forces, where they demonstrated that 'less lethal' is not the same as 'non-lethal'. In the days before the cataclysm, massive stockrooms of the things were put into circulation.",
"default_faction": "cop_bot",
"looks_like": "mon_turret",
"species": [ "ROBOT" ],
"diff": 20,
"volume": "62500 ml",
"weight": 172000,
"hp": 30,
"speed": 100,
"material": [ "steel" ],
"symbol": "2",
"color": "blue",
"aggression": 50,
"morale": 100,
"anger_triggers": [ "PLAYER_CLOSE", "HURT", "FRIEND_ATTACKED", "FRIEND_DIED" ],
"armor_bash": 14,
"armor_cut": 16,
"vision_day": 50,
"vision_night": 3,
"revert_to_itype": "bot_turret_riot",
"starting_ammo": { "40mm_sponge": 100 },
"special_attacks": [
{
"//": "For later: needs the ability to preferentially target legs and arms",
"type": "gun",
"cooldown": 1,
"move_cost": 150,
"gun_type": "pseudo_m203",
"ammo_type": "40mm_sponge",
"fake_skills": [ [ "gun", 8 ], [ "rifle", 8 ] ],
"fake_dex": 12,
"ranges": [ [ 0, 30, "DEFAULT" ] ],
"require_targeting_npc": true,
"require_targeting_monster": true,
"laser_lock": false,
"targeting_cost": 200,
"targeting_timeout_extend": -10,
"targeting_sound": "\"Universal curfew is in effect. Please return to your home. This unit is authorized to open fire.\"",
"targeting_volume": 50,
"no_ammo_sound": "a chk!"
}
],
"death_drops": { },
"death_function": [ "BROKEN" ],
"flags": [ "SEES", "NOHEAD", "ELECTRONIC", "IMMOBILE", "NO_BREATHE", "DROPS_AMMO" ]
}
]
Loading