diff --git a/data/json/mapgen/ws_survivor_bunker.json b/data/json/mapgen/ws_survivor_bunker.json index 3155fcdfe2b11..3613a0636891d 100644 --- a/data/json/mapgen/ws_survivor_bunker.json +++ b/data/json/mapgen/ws_survivor_bunker.json @@ -5,6 +5,7 @@ "default": "mon_zombie_survivor", "monsters": [ { "monster": "mon_zombie_survivor", "freq": 250, "cost_multiplier": 0 }, + { "monster": "mon_feral_prepper", "freq": 100, "cost_multiplier": 0 }, { "monster": "mon_zombie_child", "freq": 100, "cost_multiplier": 0 }, { "monster": "mon_zombie_dog", "freq": 150, "cost_multiplier": 0 }, { "monster": "mon_dog_zombie_rot", "freq": 150, "cost_multiplier": 0 } @@ -250,6 +251,7 @@ ], "place_monsters": [ { "monster": "GROUP_ZOMBIE_BUNKER", "x": 14, "y": 19 }, + { "monster": "GROUP_ZOMBIE_BUNKER", "x": 14, "y": 16 }, { "monster": "GROUP_ZOMBIE_BUNKER", "x": 15, "y": 20 }, { "monster": "GROUP_ZOMBIE_BUNKER", "x": 16, "y": 19 } ] diff --git a/data/json/mapgen/ws_survivor_camp.json b/data/json/mapgen/ws_survivor_camp.json index fa213b75a98ce..747791044377b 100644 --- a/data/json/mapgen/ws_survivor_camp.json +++ b/data/json/mapgen/ws_survivor_camp.json @@ -7,6 +7,7 @@ { "monster": "mon_zombie_survivor", "freq": 250, "cost_multiplier": 0 }, { "monster": "mon_zombie_soldier", "freq": 100, "cost_multiplier": 2 }, { "monster": "mon_zombie_dog", "freq": 100, "cost_multiplier": 0 }, + { "monster": "mon_feral_prepper", "freq": 100, "cost_multiplier": 2 }, { "monster": "mon_dog_zombie_rot", "freq": 150, "cost_multiplier": 0 }, { "monster": "mon_dog_zombie_cop", "freq": 100, "cost_multiplier": 0 } ] diff --git a/data/json/monsterdrops/feral_humans.json b/data/json/monsterdrops/feral_humans.json index df787a4720216..c43fd667f46f3 100644 --- a/data/json/monsterdrops/feral_humans.json +++ b/data/json/monsterdrops/feral_humans.json @@ -82,5 +82,58 @@ { "group": "clothing_watch", "prob": 5 }, { "group": "wallets", "damage": [ 1, 4 ] } ] + }, + { + "id": "mon_feral_prepper_death_drops", + "type": "item_group", + "subtype": "collection", + "magazine": 100, + "ammo": 20, + "entries": [ + { "group": "feral_ninemm", "prob": 100, "damage": [ 1, 4 ] }, + { "group": "clothing_outdoor_set", "damage": [ 1, 4 ] }, + { "group": "bags", "damage": [ 1, 4 ], "prob": 10 }, + { "group": "book_survival", "prob": 40 }, + { "group": "survivor_knife", "damage": [ 1, 4 ] }, + { "group": "gear_survival", "prob": 100, "damage": [ 1, 4 ] }, + { "group": "survivor_bashing", "prob": 35, "damage": [ 1, 4 ] }, + { "group": "stash_food", "prob": 50 }, + { "group": "mil_food_nodrugs", "prob": 20 }, + { "group": "used_survival_kit", "prob": 100, "damage": [ 1, 4 ] } + ] + }, + { + "id": "mon_feral_survivalist_death_drops", + "type": "item_group", + "subtype": "collection", + "magazine": 100, + "ammo": 10, + "entries": [ + { "group": "feral_ninemm", "prob": 100, "damage": [ 1, 4 ] }, + { "group": "survivor_grenades", "prob": 20, "damage": [ 1, 4 ] }, + { "group": "clothing_outdoor_set", "damage": [ 1, 4 ] }, + { "group": "bags", "damage": [ 1, 4 ], "prob": 10 }, + { "group": "book_survival", "prob": 40 }, + { "group": "survivor_knife", "damage": [ 1, 4 ] }, + { "group": "gear_survival", "prob": 100, "damage": [ 1, 4 ] }, + { "group": "survivor_cutting", "prob": 100, "damage": [ 1, 4 ] }, + { "group": "stash_food", "prob": 70 }, + { "group": "mil_food", "prob": 33 }, + { "group": "mil_food_nodrugs", "prob": 48 }, + { "group": "shelter", "prob": 16 }, + { "group": "survivorzed_gloves", "damage": [ 1, 4 ] }, + { "group": "survivorzed_boots", "damage": [ 1, 4 ] }, + { "group": "survivorzed_head", "damage": [ 1, 4 ] }, + { "group": "survivorzed_extra", "damage": [ 1, 4 ] }, + { "group": "used_survival_kit", "prob": 100, "damage": [ 1, 4 ] } + ] + }, + { + "type": "item_group", + "subtype": "distribution", + "magazine": 100, + "ammo": 10, + "id": "feral_ninemm", + "items": [ [ "glock_19", 200 ], [ "hptjhp", 200 ], [ "uzi", 100 ], [ "cx4", 100 ], [ "sw_619", 200 ], [ "glock_17", 200 ] ] } ] diff --git a/data/json/monstergroups/zombies.json b/data/json/monstergroups/zombies.json index 11f13e8095d2f..331eff5f8681f 100644 --- a/data/json/monstergroups/zombies.json +++ b/data/json/monstergroups/zombies.json @@ -116,7 +116,9 @@ { "monster": "mon_feral_human_pipe", "freq": 4, "cost_multiplier": 1, "pack_size": [ 2, 3 ] }, { "monster": "mon_feral_human_crowbar", "freq": 4, "cost_multiplier": 1, "pack_size": [ 2, 3 ] }, { "monster": "mon_feral_human_axe", "freq": 2, "cost_multiplier": 2, "pack_size": [ 1, 2 ] }, - { "monster": "mon_zombie_brainless", "freq": 65, "cost_multiplier": 1 } + { "monster": "mon_zombie_brainless", "freq": 65, "cost_multiplier": 1 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -165,7 +167,9 @@ { "monster": "mon_zombie_swimmer", "freq": 20, "cost_multiplier": 2 }, { "monster": "mon_zombie_static", "freq": 30, "cost_multiplier": 5 }, { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, - { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 } + { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -190,7 +194,9 @@ { "monster": "mon_zombie_swimmer", "freq": 20, "cost_multiplier": 2 }, { "monster": "mon_zombie_static", "freq": 30, "cost_multiplier": 5 }, { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, - { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 } + { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 1440 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 540 } ] }, { @@ -200,7 +206,9 @@ "monsters": [ { "monster": "mon_zombie_tough", "freq": 180, "cost_multiplier": 0 }, { "monster": "mon_zombie_survivor", "freq": 400, "cost_multiplier": 0 }, - { "monster": "mon_zombie_survivor_elite", "freq": 20, "cost_multiplier": 25, "starts": 540 } + { "monster": "mon_zombie_survivor_elite", "freq": 20, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_prepper", "freq": 180, "cost_multiplier": 0 }, + { "monster": "mon_feral_survivalist", "freq": 20, "cost_multiplier": 25, "starts": 540 } ] }, { @@ -226,7 +234,9 @@ { "monster": "mon_zombie_static", "freq": 30, "cost_multiplier": 5 }, { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 540 }, - { "monster": "mon_zombie_runner", "freq": 130, "cost_multiplier": 3 } + { "monster": "mon_zombie_runner", "freq": 130, "cost_multiplier": 3 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -251,7 +261,9 @@ { "monster": "mon_zombie_swimmer", "freq": 20, "cost_multiplier": 2 }, { "monster": "mon_zombie_static", "freq": 180, "cost_multiplier": 5 }, { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, - { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 540 } + { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -276,7 +288,9 @@ { "monster": "mon_zombie_swimmer", "freq": 20, "cost_multiplier": 2 }, { "monster": "mon_zombie_static", "freq": 30, "cost_multiplier": 5 }, { "monster": "mon_zombie_survivor", "freq": 1, "cost_multiplier": 25 }, - { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 540 } + { "monster": "mon_zombie_survivor_elite", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -455,7 +469,9 @@ { "monster": "mon_beekeeper", "freq": 1, "cost_multiplier": 5 }, { "monster": "mon_zombie_technician", "freq": 1, "cost_multiplier": 12 }, { "monster": "mon_zombie_runner", "freq": 20, "cost_multiplier": 5, "pack_size": [ 1, 4 ] }, - { "monster": "mon_zombie_brainless", "freq": 55, "cost_multiplier": 1 } + { "monster": "mon_zombie_brainless", "freq": 55, "cost_multiplier": 1 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -531,7 +547,9 @@ "monsters": [ { "monster": "mon_feral_human_pipe", "freq": 100, "cost_multiplier": 1, "pack_size": [ 3, 8 ] }, { "monster": "mon_feral_human_crowbar", "freq": 40, "cost_multiplier": 1, "pack_size": [ 2, 6 ] }, - { "monster": "mon_feral_human_axe", "freq": 20, "cost_multiplier": 2, "pack_size": [ 1, 4 ] } + { "monster": "mon_feral_human_axe", "freq": 20, "cost_multiplier": 2, "pack_size": [ 1, 4 ] }, + { "monster": "mon_feral_prepper", "freq": 5, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 3, "cost_multiplier": 25, "starts": 1440 } ] }, { @@ -545,7 +563,9 @@ { "monster": "mon_zombie_crawler", "freq": 50, "cost_multiplier": 1 }, { "monster": "mon_zombie_regenerating", "freq": 5, "cost_multiplier": 1 }, { "monster": "mon_zombie_survivor", "freq": 70, "cost_multiplier": 1 }, - { "monster": "mon_zombie_survivor_elite", "freq": 10, "cost_multiplier": 1, "starts": 540 } + { "monster": "mon_zombie_survivor_elite", "freq": 10, "cost_multiplier": 1, "starts": 540 }, + { "monster": "mon_feral_prepper", "freq": 1, "cost_multiplier": 25, "starts": 540 }, + { "monster": "mon_feral_survivalist", "freq": 1, "cost_multiplier": 25, "starts": 1440 } ] }, { diff --git a/data/json/monsters/feral_humans.json b/data/json/monsters/feral_humans.json index fc2f1e2edc547..01cbaa0da7113 100644 --- a/data/json/monsters/feral_humans.json +++ b/data/json/monsters/feral_humans.json @@ -180,7 +180,7 @@ "move_cost": 150, "gun_type": "m9", "ammo_type": "9mm", - "fake_skills": [ [ "gun", 1 ], [ "handgun", 2 ] ], + "fake_skills": [ [ "gun", 1 ], [ "pistol", 2 ] ], "fake_dex": 8, "fake_per": 10, "ranges": [ [ 0, 14, "DEFAULT" ] ], @@ -215,5 +215,136 @@ "special_attacks": [ [ "TAZER", 10 ] ], "luminance": 500, "death_drops": "feral_security_death_drops_flashlight" + }, + { + "id": "mon_feral_prepper", + "type": "MONSTER", + "name": { "str": "feral prepper" }, + "description": "A quick glance of this person would show that they have prepared well for times like these. Unfortunately, their bloodshot eyes, and the excluding treatment by the undead shows that they have turned feral. One of their hands clasp the handle of their prepped improvised weapon, while the other clasps unto the grip of a firearm, treating both as clubs.", + "default_faction": "zombie", + "bodytype": "human", + "species": [ "HUMAN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 80, + "speed": 100, + "material": [ "flesh" ], + "symbol": "@", + "color": "magenta", + "aggression": 75, + "morale": 100, + "melee_skill": 3, + "melee_dice": 3, + "melee_dice_sides": 6, + "melee_cut": 5, + "dodge": 4, + "armor_bash": 7, + "armor_cut": 7, + "armor_bullet": 6, + "armor_acid": 4, + "vision_day": 50, + "vision_night": 3, + "harvest": "human", + "upgrades": { "into": "mon_feral_survivalist", "half_life": 120 }, + "starting_ammo": { "9mm": 3 }, + "special_attacks": [ + [ "GRAB", 7 ], + { + "type": "gun", + "cooldown": 10, + "move_cost": 50, + "//": "(movecost is 50 to show that the feral prepper doesn't take time to aim, and just shoots haphazardly)", + "gun_type": "m9", + "ammo_type": "9mm", + "fake_skills": [ [ "gun", 1 ], [ "pistol", 1 ] ], + "fake_dex": 8, + "fake_per": 9, + "ranges": [ [ 0, 14, "DEFAULT" ], [ 10, 35, "DEFAULT" ] ], + "require_targeting_player": false, + "description": "The feral prepper haphazardly fires their firearm!" + } + ], + "death_drops": "mon_feral_prepper_death_drops", + "zombify_into": "mon_zombie_survivor", + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "WARM", + "BASHES", + "GROUP_BASH", + "HUMAN", + "CAN_OPEN_DOORS", + "CLIMBS", + "PUSH_MON", + "PATH_AVOID_DANGER_1", + "DROPS_AMMO" + ] + }, + { + "id": "mon_feral_survivalist", + "type": "MONSTER", + "name": { "str": "feral survivalist" }, + "description": "Using formidable equipment, this feral prepper is seen having an athletic body, a sign of sturdy training before they turned feral. In addition of handling their firearm more properly, they seem to have an awareness of self preservation when in critical harm, a byproduct of leftover survival instincts kicking in.", + "default_faction": "zombie", + "bodytype": "human", + "species": [ "HUMAN" ], + "volume": "62500 ml", + "weight": "81500 g", + "hp": 100, + "speed": 110, + "material": [ "flesh" ], + "symbol": "@", + "color": "magenta", + "aggression": 75, + "morale": 12, + "melee_skill": 6, + "melee_dice": 2, + "melee_dice_sides": 3, + "melee_cut": 5, + "dodge": 4, + "armor_stab": 18, + "armor_bash": 15, + "armor_cut": 25, + "armor_bullet": 20, + "armor_acid": 4, + "vision_day": 50, + "vision_night": 6, + "harvest": "human", + "starting_ammo": { "9mm": 6 }, + "special_attacks": [ + [ "GRAB", 7 ], + { + "type": "gun", + "cooldown": 5, + "move_cost": 150, + "gun_type": "m9", + "ammo_type": "9mm", + "fake_skills": [ [ "gun", 2 ], [ "pistol", 2 ] ], + "fake_dex": 8, + "fake_per": 10, + "ranges": [ [ 0, 14, "DEFAULT" ], [ 10, 35, "DEFAULT" ] ], + "require_targeting_player": false, + "description": "The feral survivalist mechanically fires their firearm!" + } + ], + "death_drops": "mon_feral_survivalist_death_drops", + "zombify_into": "mon_zombie_survivor_elite", + "flags": [ + "SEES", + "HEARS", + "SMELLS", + "WARM", + "BASHES", + "GROUP_BASH", + "HUMAN", + "CAN_OPEN_DOORS", + "CLIMBS", + "PUSH_MON", + "PATH_AVOID_DANGER_1", + "DROPS_AMMO" + ], + "anger_triggers": [ "HURT", "FRIEND_ATTACKED", "PLAYER_CLOSE", "STALK" ], + "fear_triggers": [ "FRIEND_DIED", "HURT" ] } ]