Skip to content

Commit

Permalink
New monster: SWAT Zombie (#37815)
Browse files Browse the repository at this point in the history
* Add SWAT zombie

Adding a SWAT zombie, which is between a cop zombie and a soldier zombie in terms of strength and resistances

* Create SWAT zombie monsterdrop

Largely based on the zombie cop loot table.
Used existing swat_guns item group.
Group "swat_gear" already exist (hence the "_zombie" in the name), but has a mixture of all item slots (head, torso, boots, equipment), so couldn't be used here (or there would be a possibility to have duplicate of things that don't make sense, like two helmets, or two pairs of boots, etc...)

* Adding SWAT zombie spawn points

Added SWAT zombies everywhere cop zombies can spawn, with half the chance

* Modernize item_groups + standardize torso items

As per comments from ymber, modernizing the item groups (for the SWAT zombie) to use distribution or collection. Didn't change the cop zombie item_groups as it's not part of this PR.

Also changed the torso item group to have less diverse type of items, and remove things that made less sense for SWAT than cops (dress shirt & jacket).
  • Loading branch information
Moumix3 authored Apr 11, 2020
1 parent 2499132 commit b3a8d58
Show file tree
Hide file tree
Showing 3 changed files with 173 additions and 0 deletions.
113 changes: 113 additions & 0 deletions data/json/monsterdrops/zombie_cop.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,5 +79,118 @@
"id": "cop_weapons",
"type": "item_group",
"items": [ { "group": "cop_melee", "prob": 60 }, { "group": "guns_cop", "prob": 40 } ]
},
{
"id": "mon_zombie_swat_death_drops",
"type": "item_group",
"subtype": "collection",
"magazine": 100,
"ammo": 40,
"entries": [
{ "group": "swat_zombie_gear", "prob": 100, "damage": [ 0, 2 ] },
{ "group": "swat_gloves", "prob": 30, "damage": [ 0, 4 ] },
{ "group": "swat_helmet", "prob": 20, "damage": [ 0, 4 ] },
{ "group": "swat_pants", "damage": [ 0, 4 ] },
{ "group": "swat_shoes", "damage": [ 0, 4 ] },
{ "group": "swat_torso", "damage": [ 0, 4 ] },
{ "group": "swat_weapons", "prob": 50, "damage": [ 0, 1 ], "dirt": [ 0, 7050 ] },
{ "group": "underwear", "damage": [ 0, 4 ] },
{ "group": "clothing_glasses", "prob": 5 },
{ "group": "clothing_watch", "prob": 10 },
{ "item": "badge_swat", "prob": 10 },
{ "item": "cash_card", "charges-min": 0, "charges-max": 50000, "prob": 50 }
]
},
{
"type": "item_group",
"id": "swat_zombie_gear",
"subtype": "collection",
"entries": [
{ "collection": [ { "item": "bandages", "prob": 60 }, { "item": "1st_aid", "prob": 20 } ], "prob": 25 },
{
"collection": [ { "item": "swat_armor", "prob": 50 }, { "item": "kevlar", "prob": 25 }, { "item": "tacvest", "prob": 5 } ],
"prob": 75
},
{
"collection": [
{ "item": "heavy_flashlight", "prob": 20 },
{ "item": "airhorn", "prob": 5 },
{ "item": "two_way_radio", "prob": 30 },
{ "item": "whistle", "prob": 5 },
{ "item": "flashbang", "prob": 10 },
{ "item": "sm_extinguisher", "prob": 5 },
{ "item": "rope_30", "prob": 10 }
],
"prob": 30
},
{
"collection": [
{ "item": "holster", "prob": 35 },
{ "item": "chestpouch", "prob": 15 },
{ "item": "ammo_satchel", "prob": 10 },
{ "item": "bholster", "prob": 25 },
{ "item": "bandolier_shotgun", "prob": 10 },
{ "item": "legpouch_large", "prob": 25 },
{ "item": "police_belt", "prob": 15 }
],
"prob": 25
}
]
},
{
"id": "swat_gloves",
"type": "item_group",
"subtype": "distribution",
"entries": [
{ "item": "gloves_fingerless", "prob": 15 },
{ "item": "gloves_leather", "prob": 15 },
{ "item": "gloves_tactical", "prob": 45 }
]
},
{
"id": "swat_helmet",
"type": "item_group",
"subtype": "distribution",
"entries": [
{ "item": "mask_gas", "prob": 10 },
{ "item": "helmet_riot", "prob": 20 },
{ "item": "tac_helmet", "prob": 10 },
{ "item": "tac_fullhelmet", "prob": 5 }
]
},
{
"id": "swat_pants",
"type": "item_group",
"subtype": "distribution",
"entries": [ { "item": "pants", "prob": 75 }, { "item": "pants_cargo", "prob": 70 }, { "item": "pants_army", "prob": 30 } ]
},
{
"id": "swat_shoes",
"type": "item_group",
"subtype": "distribution",
"entries": [
{ "item": "boots", "prob": 20 },
{ "item": "boots_steel", "prob": 40 },
{ "item": "boots_hiking", "prob": 5 },
{ "item": "boots_combat", "prob": 30 }
]
},
{
"id": "swat_torso",
"type": "item_group",
"subtype": "distribution",
"entries": [
{ "item": "tank_top", "prob": 30 },
{ "item": "army_top", "prob": 40 },
{ "item": "tshirt", "prob": 20 },
{ "item": "longshirt", "prob": 10 },
{ "item": "thermal_shirt", "prob": 10 }
]
},
{
"id": "swat_weapons",
"type": "item_group",
"subtype": "collection",
"entries": [ { "group": "cop_melee", "prob": 25 }, { "group": "guns_swat", "prob": 75 } ]
}
]
11 changes: 11 additions & 0 deletions data/json/monstergroups/zombies.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
{ "monster": "mon_dog_zombie_rot", "freq": 5, "cost_multiplier": 5 },
{ "monster": "mon_zombie_soldier", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 3 },
{ "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 3 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 3 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swimmer", "freq": 10, "cost_multiplier": 5 },
Expand Down Expand Up @@ -118,6 +119,7 @@
{ "monster": "mon_zombie_rot", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_zombie_crawler", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 280, "cost_multiplier": 3 },
{ "monster": "mon_zombie_swat", "freq": 140, "cost_multiplier": 3 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_fireman", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_dog_zombie_cop", "freq": 40, "cost_multiplier": 2 },
Expand All @@ -141,6 +143,7 @@
{ "monster": "mon_zombie_crawler", "freq": 5, "cost_multiplier": 2 },
{ "monster": "mon_zombie_child", "freq": 150, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_dog", "freq": 40, "cost_multiplier": 2 },
Expand Down Expand Up @@ -174,6 +177,7 @@
{ "monster": "mon_zombie_rot", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_crawler", "freq": 5, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_dog", "freq": 130, "cost_multiplier": 2 },
Expand All @@ -198,6 +202,7 @@
{ "monster": "mon_zombie_rot", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_crawler", "freq": 5, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_dog", "freq": 40, "cost_multiplier": 2 },
Expand All @@ -221,6 +226,7 @@
{ "monster": "mon_zombie_rot", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_crawler", "freq": 5, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_dog", "freq": 40, "cost_multiplier": 2 },
Expand Down Expand Up @@ -408,6 +414,7 @@
"default": "mon_zombie_cop",
"monsters": [
{ "monster": "mon_zombie_cop", "freq": 100, "cost_multiplier": 0 },
{ "monster": "mon_zombie_swat", "freq": 50, "cost_multiplier": 0 },
{ "monster": "mon_dog_zombie_cop", "freq": 50, "cost_multiplier": 2, "pack_size": [ 1, 2 ] }
]
},
Expand All @@ -423,6 +430,7 @@
{ "monster": "mon_zombie_child", "freq": 10, "cost_multiplier": 1 },
{ "monster": "mon_dog_zombie_rot", "freq": 5, "cost_multiplier": 4 },
{ "monster": "mon_zombie_cop", "freq": 10, "cost_multiplier": 3 },
{ "monster": "mon_zombie_swat", "freq": 5, "cost_multiplier": 3 },
{ "monster": "mon_zombie_static", "freq": 5, "cost_multiplier": 5 },
{ "monster": "mon_zombie_runner", "freq": 10, "cost_multiplier": 5, "pack_size": [ 1, 2 ] }
]
Expand Down Expand Up @@ -459,6 +467,7 @@
{ "monster": "mon_zombie_crawler", "freq": 25, "cost_multiplier": 3 },
{ "monster": "mon_zombie_soldier", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_cop", "freq": 20, "cost_multiplier": 3 },
{ "monster": "mon_zombie_cop", "freq": 10, "cost_multiplier": 3 },
{ "monster": "mon_zombie_hazmat", "freq": 10, "cost_multiplier": 3 },
{ "monster": "mon_zombie_fireman", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swimmer", "freq": 10, "cost_multiplier": 5 },
Expand Down Expand Up @@ -504,6 +513,7 @@
{ "monster": "mon_zombie", "freq": 100, "cost_multiplier": 1 },
{ "monster": "mon_zombie_fat", "freq": 30, "cost_multiplier": 1 },
{ "monster": "mon_zombie_cop", "freq": 10, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 5, "cost_multiplier": 2 },
{ "monster": "mon_zombie_child", "freq": 20, "cost_multiplier": 1 },
{ "monster": "mon_zombie_crawler", "freq": 10, "cost_multiplier": 1 }
]
Expand All @@ -514,6 +524,7 @@
"default": "mon_zombie",
"monsters": [
{ "monster": "mon_zombie_cop", "freq": 250, "cost_multiplier": 2 },
{ "monster": "mon_zombie_swat", "freq": 125, "cost_multiplier": 2 },
{ "monster": "mon_zombie", "freq": 150, "cost_multiplier": 1 },
{ "monster": "mon_zombie_swimmer", "freq": 100, "cost_multiplier": 2 }
]
Expand Down
49 changes: 49 additions & 0 deletions data/json/monsters/zed-classic.json
Original file line number Diff line number Diff line change
Expand Up @@ -399,6 +399,55 @@
"FILTHY"
]
},
{
"id": "mon_zombie_swat",
"type": "MONSTER",
"name": "SWAT zombie",
"description": "This zombie was part of a specialized unit of law enforcement. It still wears a battered armor with the SWAT logo emblazoned on the front.",
"looks_like": "mon_zombie_cop",
"bodytype": "human",
"default_faction": "cop_zombie",
"categories": [ "CLASSIC" ],
"species": [ "ZOMBIE", "HUMAN" ],
"volume": "62500 ml",
"weight": "81500 g",
"hp": 90,
"speed": 75,
"material": [ "flesh" ],
"symbol": "Z",
"color": "blue",
"aggression": 100,
"morale": 100,
"melee_skill": 6,
"melee_dice": 2,
"melee_dice_sides": 5,
"melee_cut": 0,
"armor_bash": 10,
"armor_cut": 16,
"vision_day": 30,
"vision_night": 3,
"harvest": "zombie",
"special_attacks": [ [ "GRAB", 7 ], [ "scratch", 15 ] ],
"death_drops": "mon_zombie_swat_death_drops",
"death_function": [ "NORMAL" ],
"upgrades": { "half_life": 28, "into": "mon_zombie_kevlar_1" },
"burn_into": "mon_zombie_scorched",
"flags": [
"SEES",
"HEARS",
"SMELLS",
"STUMBLES",
"WARM",
"BASHES",
"GROUP_BASH",
"POISON",
"BLEED",
"NO_BREATHE",
"REVIVES",
"PUSH_MON",
"FILTHY"
]
},
{
"id": "mon_zombie_tough",
"type": "MONSTER",
Expand Down

0 comments on commit b3a8d58

Please sign in to comment.