Skip to content

Commit

Permalink
Mute much-mutated mutant mouths (#74165)
Browse files Browse the repository at this point in the history
* Mainline mute traits

* Restructured, rebased, remuted

* Typos

* Social maluseses
  • Loading branch information
Venera3 authored Jul 16, 2024
1 parent 4695db8 commit 4a21bf6
Show file tree
Hide file tree
Showing 5 changed files with 443 additions and 1 deletion.
207 changes: 207 additions & 0 deletions data/json/effects_on_condition/mutation_eocs/mutation_effect_eocs.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,213 @@
"id": "eoc_debug_mutate",
"effect": [ { "u_mutate": 0 } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_BIRD_GAIN",
"eoc_type": "EVENT",
"required_event": "gains_mutation",
"//": "Slightly dirty category check, since in vanilla both use the same trait.",
"condition": {
"and": [
{ "compare_string": [ "BEAK", { "context_val": "trait" } ] },
{ "math": [ "u_vitamin('mutagen_bird')", ">", "u_vitamin('mutagen_cephalopod')" ] }
]
},
"effect": [ { "u_learn_recipe": "prac_unmute_bird" }, { "u_add_trait": "MUTE_BIRD" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_CEPHALOPOD_GAIN",
"eoc_type": "EVENT",
"required_event": "gains_mutation",
"condition": {
"and": [
{ "compare_string": [ "BEAK", { "context_val": "trait" } ] },
{ "math": [ "u_vitamin('mutagen_bird')", "<", "u_vitamin('mutagen_cephalopod')" ] }
]
},
"effect": [ { "u_learn_recipe": "prac_unmute_ceph" }, { "u_add_trait": "MUTE_CEPH" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_GASTROPOD_GAIN",
"eoc_type": "EVENT",
"required_event": "gains_mutation",
"//": "Automatically gain the mute trait when first mutating rasping tongue, check that we didn't already learn speech from earlier (slightly more complicated logic since harpoon tongues are purifiable)",
"condition": {
"and": [
{ "compare_string": [ "GASTROPOD_EXTREMITY2", { "context_val": "trait" } ] },
{ "not": { "u_has_trait": "MUTE_GASTROPOD_OK" } },
{ "not": { "u_has_trait": "MUTE_GASTROPOD" } }
]
},
"effect": [ { "u_learn_recipe": "prac_unmute_gastropod" }, { "u_add_trait": "MUTE_GASTROPOD" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_INSECT_GAIN",
"eoc_type": "EVENT",
"required_event": "gains_mutation",
"condition": { "compare_string": [ "PROBOSCIS", { "context_val": "trait" } ] },
"effect": [ { "u_learn_recipe": "prac_unmute_insect" }, { "u_add_trait": "MUTE_INSECT" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_SLIME_GAIN",
"eoc_type": "EVENT",
"required_event": "gains_mutation",
"condition": { "compare_string": [ "AMORPHOUS", { "context_val": "trait" } ] },
"effect": [ { "u_learn_recipe": "prac_unmute_slime" }, { "u_add_trait": "MUTE_SLIME" } ]
},
{
"type": "effect_on_condition",
"id": "EOC_UNMUTE_BIRD",
"condition": { "math": [ "u_progress_unmute_bird", ">=", "7" ] },
"effect": [
{ "u_lose_trait": "MUTE_BIRD" },
{ "u_add_trait": "MUTE_BIRD_OK" },
{ "u_message": "What's that made of? Glass. That will have to do." },
{ "u_forget_recipe": "prac_unmute_bird" }
],
"false_effect": [
{ "math": [ "u_progress_unmute_bird", "++" ] },
{
"u_message": "Restricting your range to the apes' feels demeaning, and you decide to take a break before you start plucking out your feathers in frustration."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_UNMUTE_CEPH",
"condition": { "math": [ "u_progress_unmute_ceph", ">=", "7" ] },
"effect": [
{ "u_lose_trait": "MUTE_CEPH" },
{ "u_add_trait": "MUTE_CEPH_OK" },
{
"u_message": "Your sentences are short, and you can't quite control your beak's clicking as you tire. Still, they will understand, if they want to."
},
{ "u_forget_recipe": "prac_unmute_ceph" }
],
"false_effect": [
{ "math": [ "u_progress_unmute_ceph", "++" ] },
{
"u_message": "Draw air into your mantle, close your throat, rehearse your sentence, exhale and contort your beak just so."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_UNMUTE_GASTROPOD",
"condition": { "math": [ "u_progress_unmute_gastropod", ">=", "10" ] },
"effect": [
{ "u_lose_trait": "MUTE_GASTROPOD" },
{ "u_add_trait": "MUTE_GASTROPOD_OK" },
{
"u_message": "As your tongues files down from use the pitch of the different sounds changes, but you have managed to get a few short, raspy sentences out."
},
{ "u_forget_recipe": "prac_unmute_gastropod" }
],
"false_effect": [
{ "math": [ "u_progress_unmute_gastropod", "++" ] },
{
"u_message": "If you rub your tongue against your palate like this is makes a `th` - or at least, a `thrksrkkk`, but it's a start. Ignore the taste of blood, there's work to be done."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_UNMUTE_INSECT",
"condition": { "math": [ "u_progress_unmute_insect", ">=", "7" ] },
"effect": [
{ "u_lose_trait": "MUTE_INSECT" },
{ "u_add_trait": "MUTE_INSECT_OK" },
{
"u_message": "You decide on the next few words, cramp your maxillae, and inhale deeply. With some imagination you can understand the words in the whistling, before your mouthparts fall limp and you need a pause. Larva steps."
},
{ "u_forget_recipe": "prac_unmute_insect" }
],
"false_effect": [
{ "math": [ "u_progress_unmute_insect", "++" ] },
{
"u_message": "You have all these new moving parts in your not-mouth, but they are struggling under the strain you put them under."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_UNMUTE_SLIME",
"condition": { "math": [ "u_progress_unmute_slime", ">=", "15" ] },
"effect": [
{ "u_lose_trait": "MUTE_SLIME" },
{ "u_add_trait": "MUTE_SLIME_OK" },
{
"u_message": "You realize you don't need to grow anything nearly as complicated as your old insides - one vesicle per word will suffice, but you needed a long time to learn the right rhythm."
},
{ "u_forget_recipe": "prac_unmute_slime" }
],
"false_effect": [
{ "math": [ "u_progress_unmute_slime", "++" ] },
{
"u_message": "Do you need teeth, lungs? You fall back into your resting shape in exasperation. This will take long."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_BEAK_LOSE_1",
"eoc_type": "EVENT",
"required_event": "loses_mutation",
"condition": { "and": [ { "compare_string": [ "BEAK", { "context_val": "trait" } ] } ] },
"effect": { "queue_eocs": "EOC_MUTE_BEAK_LOSE_2", "time_in_future": 1 }
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_BEAK_LOSE_2",
"condition": { "not": { "u_has_any_trait": [ "BEAK_HUM", "BEAK_PECK" ] } },
"//": "Beaks are purifiable and we need to clean up both possible mutisms (unless we gained a non-purifiable beak in the process)",
"effect": [
{ "u_forget_recipe": "prac_unmute_bird" },
{ "u_forget_recipe": "prac_unmute_ceph" },
{ "u_lose_trait": "MUTE_BIRD" },
{ "u_lose_trait": "MUTE_BIRD_OK" },
{ "u_lose_trait": "MUTE_CEPH" },
{ "u_lose_trait": "MUTE_CEPH_OK" },
{ "math": [ "u_progress_unmute_bird", "=", "0" ] },
{ "math": [ "u_progress_unmute_ceph", "=", "0" ] },
{
"u_message": "You grasp at the base of your beak and feel the familiar contours of your old mouth. You give it a try and your voice sounds almost like before."
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_GASTROPOD_LOSE_1",
"eoc_type": "EVENT",
"required_event": "loses_mutation",
"//": "If we lose either trait check if we end up in a mute state via the queued EoC",
"condition": {
"or": [
{ "compare_string": [ "GASTROPOD_EXTREMITY2", { "context_val": "trait" } ] },
{ "compare_string": [ "GASTROPOD_EXTREMITY3", { "context_val": "trait" } ] }
]
},
"effect": [ { "queue_eocs": "EOC_MUTE_GASTROPOD_LOSE_2", "time_in_future": 1 } ]
},
{
"type": "effect_on_condition",
"id": "EOC_MUTE_GASTROPOD_LOSE_2",
"//": "If we lost our lower trait and didn't gain the higher one / lost the higher trait without gaining the lower one in the process remove mutism or the compensatory traits (and progress thereof)",
"condition": {
"and": [ { "not": { "u_has_trait": "GASTROPOD_EXTREMITY3" } }, { "not": { "u_has_trait": "GASTROPOD_EXTREMITY_2" } } ]
},
"effect": [
{ "u_forget_recipe": "prac_unmute_gastropod" },
{ "u_lose_trait": "MUTE_GASTROPOD" },
{ "u_lose_trait": "MUTE_GASTROPOD_OK" },
{ "u_message": "You cough up a lot of off-color blood, but you swear in your own old voice again afterwards." },
{ "math": [ "u_progress_unmute_gastropod", "=", "0" ] }
]
},
{
"type": "effect_on_condition",
"id": "mut_eyestalk",
Expand Down
168 changes: 168 additions & 0 deletions data/json/mutations/mutations.json
Original file line number Diff line number Diff line change
Expand Up @@ -7080,6 +7080,7 @@
"description": "You've gotten rid of that terribly imprecise mouth and now imbibe your food like a proper person. Chewing was tiresome anyway.",
"purifiable": false,
"prereqs": [ "MANDIBLES" ],
"prereqs2": [ "CHITIN", "CHITIN2", "CHITIN2_MOLTED" ],
"category": [ "INSECT" ],
"active": true,
"restricts_gear": [ "mouth" ]
Expand Down Expand Up @@ -9651,6 +9652,173 @@
"description": "Trait that makes it impossible to say anything.",
"flags": [ "MUTE" ]
},
{
"type": "mutation",
"id": "MUTE_BIRD",
"name": { "str": "Mute (Bird)" },
"points": -2,
"description": "Your mouth and larynx have changed dramatically, rendering you incapable of human speech. With enough practice you could relearn imitating their weird ape chirps, but it will take time. <color_red>Look for a new practice recipe to lose this setback.</color>",
"category": [ "BIRD" ],
"prereqs": [ "BEAK", "BEAK_PECK", "BEAK_HUM" ],
"flags": [ "MUTE" ],
"valid": false,
"purifiable": false
},
{
"type": "mutation",
"id": "MUTE_BIRD_OK",
"name": { "str": "Speech Mimicry (Bird)" },
"points": 0,
"description": "Your throat cramps, your beak twitches, but you can speak human again if you want.",
"category": [ "BIRD" ],
"prereqs": [ "MUTE_BIRD" ],
"valid": false,
"purifiable": false,
"//": "Least punishing social malus, but still not nothing",
"enchantments": [
{
"skills": [ { "value": "speech", "add": -4 } ],
"values": [
{ "value": "SOCIAL_LIE", "multiply": -0.4 },
{ "value": "SOCIAL_PERSUADE", "multiply": -0.4 },
{ "value": "SOCIAL_INTIMIDATE", "multiply": -0.4 }
]
}
]
},
{
"type": "mutation",
"id": "MUTE_CEPH",
"name": { "str": "Mute (Cephalopod)" },
"points": -2,
"description": "Your beak and new lungs have diverged too much from your human form to be capable of human speech. <color_red>Look for a new practice recipe to lose this setback.</color>",
"category": [ "CEPHALOPOD" ],
"prereqs": [ "BEAK" ],
"valid": false,
"purifiable": false,
"flags": [ "MUTE" ]
},
{
"type": "mutation",
"id": "MUTE_CEPH_OK",
"name": { "str": "Speech Mimicry (Cephalopod)" },
"points": 0,
"description": "Contorting your voice to match your surroundings is just as necessary as changing your color, even if learning it was a pain.",
"category": [ "CEPHALOPOD" ],
"prereqs": [ "MUTE_CEPH" ],
"valid": false,
"purifiable": false,
"enchantments": [
{
"skills": [ { "value": "speech", "add": -6 } ],
"values": [
{ "value": "SOCIAL_LIE", "multiply": -0.6 },
{ "value": "SOCIAL_PERSUADE", "multiply": -0.6 },
{ "value": "SOCIAL_INTIMIDATE", "multiply": -0.6 }
]
}
]
},
{
"type": "mutation",
"id": "MUTE_GASTROPOD",
"name": { "str": "Mute (Snail)" },
"points": -2,
"description": "Just losing your teeth would have been an adjustment, but with your new tongue human speech is straight-up impossible. <color_red>Look for a new practice recipe to lose this setback.</color>",
"category": [ "GASTROPOD" ],
"prereqs": [ "GASTROPOD_EXTREMITY2", "GASTROPOD_EXTREMITY3" ],
"changes_to": [ "MUTE_GASTROPOD_OK" ],
"valid": false,
"purifiable": false,
"flags": [ "MUTE" ]
},
{
"type": "mutation",
"id": "MUTE_GASTROPOD_OK",
"name": { "str": "Speech Mimicry (Snail)" },
"points": 0,
"description": "Fine control of your radula was hard to learn, but now that you mapped out which calcified not-tooth on there makes what pitch you can open your mouth and…speak. Yes, let's call it speaking.",
"category": [ "GASTROPOD" ],
"prereqs": [ "MUTE_GASTROPOD" ],
"valid": false,
"purifiable": false,
"enchantments": [
{
"skills": [ { "value": "speech", "add": -7 } ],
"values": [
{ "value": "SOCIAL_LIE", "multiply": -0.7 },
{ "value": "SOCIAL_PERSUADE", "multiply": -0.7 },
{ "value": "SOCIAL_INTIMIDATE", "multiply": -0.7 }
]
}
]
},
{
"type": "mutation",
"id": "MUTE_INSECT",
"name": { "str": "Mute (Insect)" },
"points": -2,
"description": "Your mandibles already made speech hard, but now that you don't even have a tongue…<color_red>Look for a new practice recipe to lose this setback.</color>",
"category": [ "INSECT" ],
"prereqs": [ "PROBOSCIS" ],
"flags": [ "MUTE" ],
"valid": false,
"purifiable": false
},
{
"type": "mutation",
"id": "MUTE_INSECT_OK",
"name": { "str": "Speech Mimicry (Insect)" },
"points": 0,
"description": "Using all this new anatomy cramps you up, and there's spittle flying everywhere, but you can manage short sentences of whistling almost-words.",
"category": [ "INSECT" ],
"prereqs": [ "MUTE_INSECT" ],
"valid": false,
"purifiable": false,
"enchantments": [
{
"skills": [ { "value": "speech", "add": -7 } ],
"values": [
{ "value": "SOCIAL_LIE", "multiply": -0.7 },
{ "value": "SOCIAL_PERSUADE", "multiply": -0.7 },
{ "value": "SOCIAL_INTIMIDATE", "multiply": -0.7 }
]
}
]
},
{
"type": "mutation",
"id": "MUTE_SLIME",
"name": { "str": "Mute (Slime)" },
"points": -2,
"description": "Your mouth is gone. Oh, wait, there's one, isn't there? If only it stopped moving around you might start to relearn something like human speech. <color_red>Look for a new practice recipe to lose this setback.</color>",
"category": [ "SLIME" ],
"prereqs": [ "AMORPHOUS" ],
"valid": false,
"purifiable": false,
"flags": [ "MUTE" ]
},
{
"type": "mutation",
"id": "MUTE_SLIME_OK",
"name": { "str": "Speech Mimicry (Slime)" },
"points": 0,
"description": "Each word its own custom bubble under your membrane, waiting for its turn to pop. It sounds like something small and furry drowning in sourdough, but if you manage to convince somebody to listen to you they will probably understand.",
"category": [ "SLIME" ],
"prereqs": [ "MUTE_SLIME" ],
"valid": false,
"purifiable": false,
"enchantments": [
{
"skills": [ { "value": "speech", "add": -9 } ],
"values": [
{ "value": "SOCIAL_LIE", "multiply": -0.9 },
{ "value": "SOCIAL_PERSUADE", "multiply": -0.9 },
{ "value": "SOCIAL_INTIMIDATE", "multiply": -0.9 }
]
}
]
},
{
"type": "mutation",
"id": "NOMAD",
Expand Down
Loading

0 comments on commit 4a21bf6

Please sign in to comment.