diff --git a/data/json/martialarts.json b/data/json/martialarts.json index e974ce2951e4c..a6f4ee5e65ff4 100644 --- a/data/json/martialarts.json +++ b/data/json/martialarts.json @@ -1029,6 +1029,7 @@ "tec_ninjutsu_swift", "tec_ninjutsu_swift_crit", "tec_ninjutsu_takedown", + "tec_ninjutsu_takedown_melee", "tec_ninjutsu_precise", "tec_ninjutsu_staffdown", "tec_ninjutsu_downkill" diff --git a/data/json/martialarts_fictional.json b/data/json/martialarts_fictional.json index 7ea0e2e4b284e..0304f77372444 100644 --- a/data/json/martialarts_fictional.json +++ b/data/json/martialarts_fictional.json @@ -368,7 +368,15 @@ "unarmed_allowed": true, "weighting": 2, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "stun_dur": 1, "attack_vectors": [ "HAND" ] }, @@ -465,7 +473,10 @@ "type": "technique", "id": "tec_lizard_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you outmaneuver it!", "The %s tries to grab , but they outmaneuver it!" ], + "messages": [ + "You were almost grabbed by %s, but you outmaneuver it!", + " was almost grabbed by %s, but they outmaneuver it!" + ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, "melee_allowed": true, @@ -627,7 +638,7 @@ "type": "technique", "id": "tec_centipede_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you skitter free!", "The %s tries to grab , but they skitter free!" ], + "messages": [ "You were almost grabbed by %s, but you skitter free!", " was almost grabbed by %s, but they skitter free!" ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, "defensive": true, @@ -669,7 +680,15 @@ "skill_requirements": [ { "name": "unarmed", "level": 4 } ], "unarmed_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "HAND" ] } ] diff --git a/data/json/techniques.json b/data/json/techniques.json index baee3e7f6ea9a..589fbd0fcde70 100644 --- a/data/json/techniques.json +++ b/data/json/techniques.json @@ -40,7 +40,15 @@ "disarms": true, "skill_requirements": [ { "name": "melee", "level": 4 } ], "description": "Unwield target's weapon, min 4 melee", - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "HAND" ] }, { @@ -266,7 +274,15 @@ "disarms": true, "messages": [ "You disarm %s using your whip!", " disarms %s using their whip!" ], "description": "Unwield target's weapon", - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON" ] }, { @@ -285,7 +301,10 @@ "melee_allowed": true, "defensive": true, "grab_break": true, - "messages": [ "The %s tries to grab you, but you break its grab!", "The %s tries to grab , but they break its grab!" ] + "messages": [ + "You were almost grabbed by %s, but you break its grab!", + " was almost grabbed by %s, but they break its grab!" + ] }, { "type": "technique", @@ -403,7 +422,15 @@ "required_buffs_all": [ "buff_aikido_onblock" ], "crit_ok": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "//condition": "Humanoids of similar size and no flying", "condition": { "and": [ @@ -448,7 +475,15 @@ "required_buffs_all": [ "buff_aikido_ondodge" ], "crit_ok": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "//condition": "Humanoids of similar size and no flying", "condition": { "and": [ @@ -486,8 +521,8 @@ "id": "tec_aikido_break", "name": "Grab Break", "messages": [ - "The %s tries to grab you, but you smoothly break free!", - "The %s tries to grab , but they smoothly break free!" + "You were almost grabbed by %s, but you smoothly break free!", + " was almost grabbed by %s, but they smoothly break free!" ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, @@ -500,7 +535,7 @@ "type": "technique", "id": "tec_bojutsu_thrust", "name": "Front Thrust", - "messages": [ "You thrust at the %s!", " thrusts at %s!" ], + "messages": [ "You thrust at %s!", " thrusts at %s!" ], "skill_requirements": [ { "name": "melee", "level": 1 } ], "melee_allowed": true, "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 1.2 } ], @@ -592,7 +627,15 @@ "melee_allowed": true, "crit_ok": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON" ] }, { @@ -620,7 +663,7 @@ "skill_requirements": [ { "name": "melee", "level": 2 } ], "melee_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s's hand is forced open!" } ], + "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The hand of %s is forced open!" } ], "mult_bonuses": [ { "stat": "movecost", "scale": 0.5 }, { "stat": "damage", "type": "bash", "scale": 0.66 }, @@ -715,7 +758,10 @@ "type": "technique", "id": "tec_brawl_break_melee", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you force yourself free!", "The %s tries to grab , but they break free!" ], + "messages": [ + "You were almost grabbed by %s, but you force yourself free!", + " was almost grabbed by %s, but they break free!" + ], "skill_requirements": [ { "name": "melee", "level": 6 } ], "melee_allowed": true, "defensive": true, @@ -725,7 +771,10 @@ "type": "technique", "id": "tec_brawl_break_unarmed", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you force yourself free!", "The %s tries to grab , but they break free!" ], + "messages": [ + "You were almost grabbed by %s, but you force yourself free!", + " was almost grabbed by %s, but they break free!" + ], "skill_requirements": [ { "name": "unarmed", "level": 6 } ], "unarmed_allowed": true, "defensive": true, @@ -759,7 +808,15 @@ "skill_requirements": [ { "name": "melee", "level": 6 } ], "melee_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON" ] }, { @@ -770,7 +827,15 @@ "skill_requirements": [ { "name": "unarmed", "level": 6 } ], "unarmed_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "HAND" ] }, { @@ -942,8 +1007,8 @@ "id": "tec_crane_break", "name": "Crane Flap", "messages": [ - "The %s tries to grab you, but you swing your arms and break free!", - "The %s tries to grab , but they flap free!" + "You were almost grabbed by %s, but you swing your arms and break free!", + " was almost grabbed by %s, but they flap free!" ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, @@ -1308,7 +1373,7 @@ "type": "technique", "id": "tec_medievalpole_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you push away!", "The %s tries to grab , but they push away!" ], + "messages": [ "You were almost grabbed by %s, but you push away!", " was almost grabbed by %s, but they push away!" ], "skill_requirements": [ { "name": "melee", "level": 4 } ], "melee_allowed": true, "defensive": true, @@ -1393,7 +1458,15 @@ "melee_allowed": true, "unarmed_weapons_allowed": false, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "condition": { "and": [ { "math": [ "u_val('size')", "<=", "n_val('size')" ] }, @@ -1439,8 +1512,8 @@ "id": "tec_judo_break", "name": "Grab Break", "messages": [ - "The %s tries to grab you, but you break their feeble grapple!", - "The %s tries to grab , but they break its feeble grapple!" + "You were almost grabbed by %s, but you break their feeble grapple!", + " was almost grabbed by %s, but they break its feeble grapple!" ], "skill_requirements": [ { "name": "unarmed", "level": 1 } ], "unarmed_allowed": true, @@ -1700,14 +1773,22 @@ { "type": "technique", "id": "tec_krav_maga_disarm_simple", - "messages": [ "You quickly slap and disarm the %s!", " quickly slaps and disarms the %s!" ], + "messages": [ "You quickly slap and disarm %s!", " quickly slaps and disarms %s!" ], "name": "Disarming Slap", "skill_requirements": [ { "name": "unarmed", "level": 2 } ], "melee_allowed": true, "unarmed_allowed": true, "mult_bonuses": [ { "stat": "movecost", "scale": 0.9 } ], "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON", "HAND" ] }, { @@ -1796,7 +1877,7 @@ "chance": 100, "duration": 44000, "on_damage": true, - "message": "The %s's arm is mangled beyond recognition!" + "message": "The arm of %s is mangled beyond recognition!" } ], "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 1.0 } ], @@ -1807,7 +1888,7 @@ "type": "technique", "id": "tec_krav_maga_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you wrestle free!", "The %s tries to grab , but they wrestle free!" ], + "messages": [ "You were almost grabbed by %s, but you wrestle free!", " was almost grabbed by %s, but they wrestle free!" ], "skill_requirements": [ { "name": "melee", "level": 3 } ], "melee_allowed": true, "unarmed_allowed": true, @@ -2090,7 +2171,10 @@ "type": "technique", "id": "tec_muay_thai_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you break the clinch!", "The %s tries to grab , but they break the clinch!" ], + "messages": [ + "You were almost grabbed by %s, but you break the clinch!", + " was almost grabbed by %s, but they break the clinch!" + ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, "melee_allowed": true, @@ -2143,12 +2227,34 @@ { "type": "technique", "id": "tec_ninjutsu_takedown", - "name": "Ninjutsu Takedown", + "name": "Ninjutsu Takedown (unarmed)", "messages": [ "You quickly grab and bring %s to the ground!", " quickly grabs and brings %s to the ground!" ], "skill_requirements": [ { "name": "unarmed", "level": 4 } ], - "melee_allowed": true, "unarmed_allowed": true, "forbidden_buffs_all": [ "buff_ninjutsu_onattack" ], + "crit_tec": true, + "condition": { + "and": [ + { "math": [ "u_val('size') + 1", ">=", "n_val('size')" ] }, + { "not": { "npc_has_effect": "downed" } }, + { "or": [ { "npc_bodytype": "human" }, { "npc_bodytype": "angel" } ] }, + { "or": [ { "not": { "npc_has_flag": "FLIES" } }, { "npc_has_flag": "DISABLE_FLIGHT" } ] } + ] + }, + "condition_desc": "* Only works on a non-downed humanoid target of similar or smaller size incapable of flight", + "down_dur": 2, + "weighting": 3, + "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 2.0 } ], + "attack_vectors": [ "THROW" ] + }, + { + "type": "technique", + "id": "tec_ninjutsu_takedown_melee", + "name": "Ninjutsu Takedown (melee)", + "messages": [ "You quickly grab and bring %s to the ground!", " quickly grabs and brings %s to the ground!" ], + "skill_requirements": [ { "name": "melee", "level": 4 } ], + "melee_allowed": true, + "forbidden_buffs_all": [ "buff_ninjutsu_onattack" ], "weapon_categories_allowed": [ "KNIVES", "CLAWS" ], "crit_tec": true, "condition": { @@ -2228,7 +2334,7 @@ "weighting": 2, "stun_dur": 2, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s's hand is forced open!" } ], + "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The hand of %s is forced open!" } ], "attack_vectors": [ "WEAPON" ], "attack_vectors_random": [ "HAND", "ELBOW", "LOWER_LEG", "FOOT" ] }, @@ -2398,7 +2504,7 @@ "type": "technique", "id": "tec_pankration_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you wrestle free!", "The %s tries to grab , but they wrestle free!" ], + "messages": [ "You were almost grabbed by %s, but you wrestle free!", " was almost grabbed by %s, but they wrestle free!" ], "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, "defensive": true, @@ -2429,7 +2535,7 @@ "crit_ok": true, "weighting": 3, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s's hand is forced open!" } ], + "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The hand of %s is forced open!" } ], "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 1.0 } ], "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 1.25 } ], "attack_vectors": [ "GRAPPLE" ] @@ -2597,7 +2703,7 @@ "type": "technique", "id": "tec_snake_break", "name": "Snake Slither", - "messages": [ "The %s tries to grab you, but you slither free!", "The %s tries to grab , but they slither free!" ], + "messages": [ "You were almost grabbed by %s, but you slither free!", " was almost grabbed by %s, but they slither free!" ], "skill_requirements": [ { "name": "unarmed", "level": 4 } ], "unarmed_allowed": true, "defensive": true, @@ -2863,7 +2969,15 @@ "skill_requirements": [ { "name": "unarmed", "level": 3 } ], "unarmed_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "HAND" ] }, { @@ -2995,8 +3109,8 @@ "id": "tec_tiger_break", "name": "Grab Break", "messages": [ - "The %s tries to grab you, but you are too powerful to be caged!", - "The %s tries to grab , but they are too powerful to be caged!" + "You were almost grabbed by %s, but you are too powerful to be caged!", + " was almost grabbed by %s, but they are too powerful to be caged!" ], "unarmed_allowed": true, "defensive": true, @@ -3261,7 +3375,7 @@ "type": "technique", "id": "tec_zuiquan_break", "name": "Grab Break", - "messages": [ "The %s tries to grab you, but you stumble away!", "The %s tries to grab , but they stumble away!" ], + "messages": [ "You were almost grabbed by %s, but you stumble away!", " was almost grabbed by %s, but they stumble away!" ], "skill_requirements": [ { "name": "unarmed", "level": 4 } ], "unarmed_allowed": true, "melee_allowed": true, diff --git a/data/mods/MMA/techniques.json b/data/mods/MMA/techniques.json index d14a7de733975..26cd7fcb560ba 100644 --- a/data/mods/MMA/techniques.json +++ b/data/mods/MMA/techniques.json @@ -114,7 +114,15 @@ "messages": [ "You skillfully disarm %s!", " skillfully disarms %s!" ], "unarmed_allowed": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON" ] }, { @@ -511,7 +519,15 @@ "melee_allowed": true, "crit_ok": true, "disarms": true, - "tech_effects": [ { "id": "disarmed", "chance": 100, "duration": 400, "on_damage": true, "message": "The %s is disarmed!" } ], + "tech_effects": [ + { + "id": "disarmed", + "chance": 100, + "duration": 400, + "on_damage": true, + "message": "The weapon of %s has been forced out ot their hands!" + } + ], "attack_vectors": [ "WEAPON" ] }, { @@ -605,8 +621,8 @@ "id": "mma_tec_tiger_claw_break", "name": "Wolverine Stance", "messages": [ - "The %s tries to grab you, but you thrash your way to freedom!", - "The %s tries to grab , but they thrash their way to freedom!" + "You were almost grabbed by %s, but you thrash your way to freedom!", + " was almost grabbed by %s, but they thrash their way to freedom!" ], "melee_allowed": true, "unarmed_allowed": true, diff --git a/doc/MONSTER_SPECIAL_ATTACKS.md b/doc/MONSTER_SPECIAL_ATTACKS.md index f7c02d6b4475e..a843462918e5b 100644 --- a/doc/MONSTER_SPECIAL_ATTACKS.md +++ b/doc/MONSTER_SPECIAL_ATTACKS.md @@ -260,10 +260,11 @@ The monster fires a gun at a target. If the monster is friendly, it will avoid | `fake_per` | Perception stat of the fake NPC that will execute the attack. 8 if not specified. | | `fake_skills` | Array of 2 element arrays of skill id and skill level pairs. | | `move_cost` | Move cost of executing the attack. | +| `condition` | Object, dialogue conditions enabling the attack. See `NPCs.md` for the possible conditions, `u` refers to the monster. | `require_targeting_player` | If true, the monster will need to "target" the player, wasting `targeting_cost` moves, putting the attack on cooldown and making warning sounds, unless it attacked something that needs to be targeted recently. Gives "grace period" to player. | | `require_targeting_npc` | As above, but with NPCs. | | `require_targeting_monster` | As above, but with monsters. | -| 'target_moving_vehicles' | If true, the monster will "target" moving vehicles even if it cannot see the player. +| `target_moving_vehicles` | If true, the monster will "target" moving vehicles even if it cannot see the player. | `targeting_timeout` | Targeting status will be applied for this many turns. Note that targeting applies to turret, not targets. | | `targeting_timeout_extend` | Successfully attacking will extend the targeting for this many turns. Can be negative. | | `targeting_cost` | Move cost of targeting the player. Only applied if attacking the player and didn't target player within last 5 turns. |