diff --git a/data/json/harvest.json b/data/json/harvest.json index e485cb18ea897..4c2424114114f 100644 --- a/data/json/harvest.json +++ b/data/json/harvest.json @@ -2397,6 +2397,12 @@ "copy-from": "mammal_tiny", "extend": { "entries": [ { "drop": "skull_canis_small", "type": "bone", "scale_num": [ 1, 1 ], "max": 1 } ] } }, + { + "id": "dog_tiny_with_skull_mutant", + "type": "harvest", + "copy-from": "mutant_tiny", + "extend": { "entries": [ { "drop": "skull_canis_small", "type": "bone", "scale_num": [ 1, 1 ], "max": 1 } ] } + }, { "id": "llama_with_skull", "type": "harvest", diff --git a/data/json/monstergroups/mammal.json b/data/json/monstergroups/mammal.json index 49e3185867ce7..cae450b29897e 100644 --- a/data/json/monstergroups/mammal.json +++ b/data/json/monstergroups/mammal.json @@ -165,6 +165,14 @@ { "name": "GROUP_MOOSE", "type": "monstergroup", + "monsters": [ + { "group": "GROUP_MOOSE_NORMAL", "weight": 19 }, + { "group": "GROUP_TUSKED_MOOSE", "weight": 1, "starts": "732 days" } + ] + }, + { + "name": "GROUP_MOOSE_NORMAL", + "type": "monstergroup", "monsters": [ { "monster": "mon_moose", "weight": 150, "cost_multiplier": 2 }, { "monster": "mon_moose_calf", "weight": 50, "ends": "31 days", "conditions": [ "AUTUMN", "WINTER" ] }, @@ -181,6 +189,16 @@ { "monster": "mon_tusked_moose_calf", "weight": 50, "starts": "70 days", "conditions": [ "SPRING", "SUMMER" ] } ] }, + { + "name": "GROUP_COYOTE", + "type": "monstergroup", + "//": "Not doing the whole weird thing with timers and weight halving for babies as the groups above me did. I have no idea what's that hoping to accomplish and nobody else seems to either.", + "monsters": [ + { "monster": "mon_coyote", "weight": 38 }, + { "monster": "mon_coyote_mutant_shark", "weight": 1, "starts": "272 days" }, + { "monster": "mon_coyote_mutant_venom", "weight": 1, "starts": "272 days" } + ] + }, { "name": "GROUP_STRAY_DOGS", "type": "monstergroup", diff --git a/data/json/monstergroups/misc.json b/data/json/monstergroups/misc.json index c57661eeec25b..8e6749b8dd36b 100644 --- a/data/json/monstergroups/misc.json +++ b/data/json/monstergroups/misc.json @@ -509,6 +509,12 @@ "name": "GROUP_JABBERWOCK", "monsters": [ { "monster": "mon_jabberwock" } ] }, + { + "name": "GROUP_RATTLESNAKE", + "type": "monstergroup", + "monsters": [ { "monster": "mon_rattlesnake", "weight": 19 }, { "monster": "mon_rattlesnake_big", "weight": 1 } ], + "//": "Normally for the time until mutants start spawning we take the growth time of a mutant baby with default evolution rates. But because rattlesnakes follow the mutation logic of invertebrates, we assume there were some mildly oversized variations at the start of the Cataclysm already." + }, { "type": "monstergroup", "name": "GROUP_CAMP_HUNTING", diff --git a/data/json/monstergroups/mutant_vertebrate_reproduction.json b/data/json/monstergroups/mutant_vertebrate_reproduction.json new file mode 100644 index 0000000000000..bde8be9b69352 --- /dev/null +++ b/data/json/monstergroups/mutant_vertebrate_reproduction.json @@ -0,0 +1,21 @@ +[ + { + "name": "REPRODUCTION_MUT_MOOSE", + "type": "monstergroup", + "monsters": [ { "monster": "mon_moose_calf", "weight": 19 }, { "monster": "mon_tusked_moose_calf", "weight": 1 } ] + }, + { + "name": "REPRODUCTION_MUT_COYOTE", + "type": "monstergroup", + "monsters": [ + { "monster": "mon_coyote_pup", "weight": 38 }, + { "monster": "mon_coyote_pup_mutant_shark", "weight": 1 }, + { "monster": "mon_coyote_pup_mutant_venom", "weight": 1 } + ] + }, + { + "name": "REPRODUCTION_MUT_RATTLESNAKE", + "type": "monstergroup", + "monsters": [ { "monster": "mon_rattlesnake_s", "weight": 19 }, { "monster": "mon_rattlesnake_big_s", "weight": 1 } ] + } +] diff --git a/data/json/monstergroups/wilderness.json b/data/json/monstergroups/wilderness.json index 50ac3607b1eea..2777966b2d2a1 100644 --- a/data/json/monstergroups/wilderness.json +++ b/data/json/monstergroups/wilderness.json @@ -169,7 +169,7 @@ { "group": "GROUP_REINDEERS", "weight": 3, "cost_multiplier": 3, "pack_size": [ 2, 6 ], "event": "christmas" }, { "monster": "mon_fox_gray", "weight": 1, "cost_multiplier": 0 }, { "monster": "mon_fox_red", "weight": 1, "cost_multiplier": 0 }, - { "monster": "mon_coyote", "weight": 1, "cost_multiplier": 2, "pack_size": [ 1, 6 ] }, + { "group": "GROUP_COYOTE", "weight": 1, "cost_multiplier": 2, "pack_size": [ 1, 6 ] }, { "group": "GROUP_MOOSE", "weight": 1, "cost_multiplier": 3, "pack_size": [ 1, 3 ] } ] }, @@ -180,7 +180,6 @@ "is_animal": true, "monsters": [ { "group": "GROUP_DEER_MUT_SPIDERS", "weight": 4, "cost_multiplier": 2, "pack_size": [ 1, 3 ] }, - { "group": "GROUP_TUSKED_MOOSE", "weight": 1, "cost_multiplier": 3, "pack_size": [ 1, 3 ] }, { "monster": "mon_bear_mutant_3headed", "weight": 1, "cost_multiplier": 10 } ] }, @@ -222,7 +221,7 @@ "default": "mon_null", "is_animal": true, "monsters": [ - { "monster": "mon_rattlesnake", "weight": 3 }, + { "group": "GROUP_RATTLESNAKE", "weight": 3 }, { "monster": "mon_gartersnake", "weight": 10 }, { "monster": "mon_wormsnake", "weight": 5 }, { "monster": "mon_skink_fivelined", "weight": 2, "pack_size": [ 1, 2 ] } diff --git a/data/json/monsters/mammal.json b/data/json/monsters/mammal.json index 66b1520b49907..a1a8d0d353351 100644 --- a/data/json/monsters/mammal.json +++ b/data/json/monsters/mammal.json @@ -911,7 +911,7 @@ "dodge": 4, "vision_night": 20, "path_settings": { "max_dist": 10 }, - "reproduction": { "baby_type": { "baby_monster": "mon_coyote_pup" }, "baby_count": 4, "baby_timer": 63 }, + "reproduction": { "baby_type": { "baby_monster_group": "REPRODUCTION_MUT_COYOTE" }, "baby_count": 4, "baby_timer": 63 }, "//": "Average litter size of 4 pups, with gestation taking 63 days, but pupping occurs only from March to May", "baby_flags": [ "SPRING" ], "anger_triggers": [ "STALK", "FRIEND_ATTACKED", "PLAYER_WEAK", "HURT", "PLAYER_CLOSE", "PLAYER_NEAR_BABY" ], @@ -1857,8 +1857,7 @@ "anger_triggers": [ "HURT", "MATING_SEASON" ], "zombify_into": "mon_zoose", "baby_flags": [ "AUTUMN" ], - "reproduction": { "baby_type": { "baby_monster": "mon_moose_calf" }, "baby_count": 1, "baby_timer": 154 }, - "upgrades": { "half_life": 90, "into": "mon_tusked_moose" }, + "reproduction": { "baby_type": { "baby_monster_group": "REPRODUCTION_MUT_MOOSE" }, "baby_count": 1, "baby_timer": 154 }, "harvest": "moose_with_skull", "dissect": "dissect_cattle_sample_large", "weakpoint_sets": [ "wps_animal_quadruped" ], diff --git a/data/json/monsters/mutant_mammal.json b/data/json/monsters/mutant_mammal.json index b56853eafa9d5..47bb33f4a119b 100644 --- a/data/json/monsters/mutant_mammal.json +++ b/data/json/monsters/mutant_mammal.json @@ -145,9 +145,19 @@ { "id": "scratch_grab_required" } ], "stomach_size": 500, + "reproduction": { "baby_type": { "baby_monster": "mon_coyote_pup_mutant_shark" }, "baby_count": 4, "baby_timer": 63 }, "harvest": "dog_with_skull_fur_mutant", - "path_settings": { "max_dist": 7 }, - "extend": { "flags": [ "NO_BREED" ] } + "path_settings": { "max_dist": 7 } + }, + { + "id": "mon_coyote_pup_mutant_shark", + "type": "MONSTER", + "name": { "str": "grinning coyote pup" }, + "description": "A cute coyote pup. Though, on a closer look, something is off about it.", + "copy-from": "mon_coyote_pup", + "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], + "upgrades": { "age_grow": 68, "into": "mon_coyote_mutant_shark" }, + "harvest": "dog_tiny_with_skull_mutant" }, { "id": "mon_coyote_mutant_venom", @@ -159,8 +169,20 @@ "melee_dice_sides": 8, "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], "path_settings": { "max_dist": 7 }, + "reproduction": { "baby_type": { "baby_monster": "mon_coyote_pup_mutant_venom" }, "baby_count": 4, "baby_timer": 63 }, "harvest": "dog_with_skull_fur_mutant", - "extend": { "flags": [ "NO_BREED", "BADVENOM" ] } + "extend": { "flags": [ "BADVENOM" ] } + }, + { + "id": "mon_coyote_pup_mutant_venom", + "type": "MONSTER", + "name": { "str": "slavering coyote pup" }, + "description": "A cute coyote pup. Though, on a closer look, something is off about it.", + "copy-from": "mon_coyote_pup", + "melee_damage": [ { "damage_type": "cut", "amount": 2 } ], + "upgrades": { "age_grow": 68, "into": "mon_coyote_mutant_venom" }, + "harvest": "dog_tiny_with_skull_mutant", + "extend": { "flags": [ "BADVENOM" ] } }, { "id": "mon_deer_mutant_spider", diff --git a/data/json/monsters/reptile_amphibian.json b/data/json/monsters/reptile_amphibian.json index 061f8f1c1ee37..2f5a490cc963a 100644 --- a/data/json/monsters/reptile_amphibian.json +++ b/data/json/monsters/reptile_amphibian.json @@ -143,7 +143,7 @@ "special_attacks": [ [ "RATTLE", 6 ] ], "anger_triggers": [ "PLAYER_CLOSE" ], "fear_triggers": [ "HURT" ], - "reproduction": { "baby_type": { "baby_monster": "mon_rattlesnake_s" }, "baby_count": 10, "baby_timer": 135 }, + "reproduction": { "baby_type": { "baby_monster_group": "REPRODUCTION_MUT_RATTLESNAKE" }, "baby_count": 10, "baby_timer": 135 }, "baby_flags": [ "SUMMER" ], "//babies": "On average, a female rattlesnake gives birth to at least eight babies, up to around fifteen. Most baby rattlesnakes are born in the early summer, but sometimes in late summer and early autumn.", "extend": { "flags": [ "BADVENOM" ] }