summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2022-01-19 15:30:15 -0800
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2022-01-19 15:30:15 -0800
commitbe6694f82c651e464f170a1f809408efce746ba9 (patch)
tree4ac4454220a3db10924884db09fd197d1c6b2b0c
downloadcataclysm-bn-mod_martial-arts-update-be6694f82c651e464f170a1f809408efce746ba9.tar.xz
Initial commit
-rw-r--r--fencing-martialarts.json85
-rw-r--r--fencing-techniques.json72
-rw-r--r--kravmaga-martialarts.json122
-rw-r--r--kravmaga-techniques.json66
-rw-r--r--modinfo.json11
-rw-r--r--swordsmanship-martialarts.json83
-rw-r--r--swordsmanship-techniques.json47
7 files changed, 486 insertions, 0 deletions
diff --git a/fencing-martialarts.json b/fencing-martialarts.json
new file mode 100644
index 0000000..09dea1c
--- /dev/null
+++ b/fencing-martialarts.json
@@ -0,0 +1,85 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_fencing",
+ "name": { "str": "Classical Fencing" },
+ "description": "The noble art of fencing is taught with flexible competition blades, but the techniques are derived from (and applicable to) more functional examples. Skilled fencers can take advantage of blocks and feints to deliver accurate strikes.",
+ "initiate": [ "You move into the en-garde stance.", "%s moves into a fencing stance." ],
+ "learn_difficulty": 5,
+ "primary_skill": "stabbing",
+ "strictly_melee": true,
+ "static_buffs": [
+ {
+ "id": "buff_fencing_static",
+ "name": "Fencing Stance",
+ "description": "Your side stance minimizes the chances you will be harmed in a combat.\n\nBlocked damage reduced by 50% of Dexterity.",
+ "melee_allowed": true,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "dex", "scale": 0.5 } ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_fencing_onblock",
+ "name": "Parry",
+ "description": "Your next strike will find its mark much easier from your parry.\n\n+1 Accuracy.\nLasts 1 turn.",
+ "skill_requirements": [ { "name": "melee", "level": 1 } ],
+ "melee_allowed": true,
+ "buff_duration": 1,
+ "flat_bonuses": [ { "stat": "hit", "scale": 1.0 } ]
+ }
+ ],
+ "onmiss_buffs": [
+ {
+ "id": "buff_fencing_onmiss",
+ "name": "Remise",
+ "description": "Your feint is the perfect setup for a devastating followup attack!\n\n+1 Accuracy.\nEnables \"Compound Attack\" technique.\nLasts 1 turn.",
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "buff_duration": 1,
+ "flat_bonuses": [ { "stat": "hit", "scale": 1.0 } ]
+ }
+ ],
+ "onpause_buffs": [
+ {
+ "id": "buff_fencing_onpause",
+ "name": "Counter Time",
+ "description": "You fake an attack and prepare yourself to unleash a Compound Attack.\n\nBlocked damage reduced by 100% of Dexterity.\nEnables \"Compound Attack\" technique.\nLasts 2 turns.",
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "buff_duration": 2,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "dex", "scale": 1.0 } ]
+ }
+ ],
+ "techniques": [ "tec_fencing_feint", "tec_fencing_lunge", "tec_fencing_riposte", "tec_fencing_compound1", "tec_fencing_compound2" ],
+ "weapons": [
+ "baton-extended",
+ "broadsword",
+ "broadsword_inferior",
+ "broadsword_fake",
+ "cane",
+ "cavalry_sabre",
+ "cavalry_sabre_fake",
+ "cudgel",
+ "hollow_cane",
+ "fencing_foil",
+ "fencing_sabre",
+ "fencing_epee",
+ "fencing_foil_sharpened",
+ "fencing_sabre_sharpened",
+ "fencing_epee_sharpened",
+ "shock_foil",
+ "shock_sabre",
+ "shock_epee",
+ "pointy_stick",
+ "pipe",
+ "PR24-extended",
+ "rapier",
+ "rapier_fake",
+ "shillelagh",
+ "shillelagh_fake",
+ "shillelagh_weighted",
+ "sword_cane",
+ "umbrella"
+ ]
+ }
+]
diff --git a/fencing-techniques.json b/fencing-techniques.json
new file mode 100644
index 0000000..41061e8
--- /dev/null
+++ b/fencing-techniques.json
@@ -0,0 +1,72 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_fencing_feint",
+ "messages": [ "You steady your weapon and fake a thrust at %s", "<npcname> steadies their weapon and fake a thrust at %s" ],
+ "name": "Feint",
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_fencing_lunge",
+ "name": "Fencing Lunge",
+ "messages": [ "You lunge at %s", "<npcname> lunges at %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "melee_allowed": true,
+ "crit_ok": true,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_fencing_compound1",
+ "name": "Compound Attack (Remise)",
+ "messages": [ "Your feint leads to a compound attack against %s", "<npcname>'s feint leads to a compound attack against %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "req_buffs": [ "buff_fencing_onmiss" ],
+ "weighting": 4,
+ "crit_ok": true,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.25 },
+ { "stat": "damage", "type": "cut", "scale": 1.25 },
+ { "stat": "damage", "type": "stab", "scale": 1.25 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_fencing_compound2",
+ "name": "Compound Attack (Counter Time)",
+ "messages": [ "Your feint leads to a compound attack against %s", "<npcname>'s feint leads to a compound attack against %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "req_buffs": [ "buff_fencing_onpause" ],
+ "weighting": 4,
+ "crit_ok": true,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.25 },
+ { "stat": "damage", "type": "cut", "scale": 1.25 },
+ { "stat": "damage", "type": "stab", "scale": 1.25 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_fencing_riposte",
+ "name": "Fencing Riposte",
+ "messages": [ "You deliver a perfect riposte to %s", "<npcname> delivers a perfect riposte to %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 5 } ],
+ "melee_allowed": true,
+ "req_buffs": [ "buff_fencing_onblock" ],
+ "crit_ok": true,
+ "weighting": 2,
+ "stun_dur": 1,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 0.66 },
+ { "stat": "damage", "type": "bash", "scale": 1.2 },
+ { "stat": "damage", "type": "cut", "scale": 1.2 },
+ { "stat": "damage", "type": "stab", "scale": 1.2 }
+ ]
+ }
+]
diff --git a/kravmaga-martialarts.json b/kravmaga-martialarts.json
new file mode 100644
index 0000000..5448c21
--- /dev/null
+++ b/kravmaga-martialarts.json
@@ -0,0 +1,122 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_krav_maga",
+ "name": { "str": "Krav Maga" },
+ "description": "Originating in Israel, Krav Maga is based on taking down an enemy quickly and effectively. It focuses on applicable attacks rather than showy or complex moves. Popular among police and armed forces everywhere.",
+ "initiate": [ "You assume a practical combat stance.", "%s assumes a practical combat stance." ],
+ "learn_difficulty": 6,
+ "arm_block": 2,
+ "leg_block": 4,
+ "static_buffs": [
+ {
+ "id": "buff_krav_maga_static",
+ "name": "Krav Maga Stance",
+ "description": "Your training makes it easier to land hits and fight multiple opponents.\n\n+1 Accuracy, +1 Block attempts.",
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "bonus_blocks": 1,
+ "flat_bonuses": [ { "stat": "hit", "scale": 1.0 } ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_krav_maga_onblock",
+ "name": "Strike Vitals",
+ "description": "Like a foe, your opponent has left themselves wide.\n\n+5% critical hit chance.\nLasts 1 turn.",
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "buff_duration": 1,
+ "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.1 } ]
+ }
+ ],
+ "techniques": [ "tec_krav_maga_rapid", "tec_krav_maga_crit", "tec_krav_maga_takedown", "tec_krav_maga_disarm", "tec_krav_maga_break" ],
+ "weapons": [
+ "baton-extended",
+ "butterfly_swords",
+ "copper_knife",
+ "cudgel",
+ "diveknife",
+ "honey_scraper",
+ "knife_combat",
+ "knife_combat_mod",
+ "knife_folding",
+ "knife_hunting",
+ "knife_rambo",
+ "knife_rm42",
+ "knife_trench",
+ "makeshift_knife",
+ "PR24-extended",
+ "shocktonfa_off",
+ "shocktonfa_on",
+ "switchblade",
+ "tonfa",
+ "tonfa_wood",
+ "af2011a1_38super",
+ "cz75",
+ "deagle_44",
+ "fn1910",
+ "fn57",
+ "glock_17",
+ "glock_18c",
+ "glock_19",
+ "glock_22",
+ "glock_31",
+ "hi_power_9mm",
+ "hi_power_40",
+ "hptjcp",
+ "hptjhp",
+ "m17",
+ "m1911",
+ "m1911_MEU",
+ "m1911a1_38super",
+ "m9",
+ "mk23",
+ "needlepistol",
+ "sw_22",
+ "p226_357sig",
+ "p320_357sig",
+ "sig_40",
+ "sig_p230",
+ "sig_mosquito",
+ "tokarev",
+ "usp_45",
+ "usp_9mm",
+ "walther_ccp",
+ "walther_p38",
+ "walther_ppk",
+ "walther_ppq_9mm",
+ "walther_ppq_40",
+ "walther_ppq_45",
+ "acr",
+ "acr_300blk",
+ "ak47",
+ "ak74",
+ "an94",
+ "ar10",
+ "ar15",
+ "ar15_retool_300blk",
+ "fn_fal",
+ "h&k416a5",
+ "hk417_13",
+ "hk_g3",
+ "hk_g36",
+ "iwi_tavor_x95_300blk",
+ "m1a",
+ "m110a1",
+ "m14ebr",
+ "m16a4",
+ "m27iar",
+ "m4a1",
+ "rm51_assault_rifle",
+ "rm88_battle_rifle",
+ "ruger_mini",
+ "scar_l",
+ "scar_h",
+ "sig552",
+ "sks",
+ "steyr_aug"
+ ]
+ }
+]
diff --git a/kravmaga-techniques.json b/kravmaga-techniques.json
new file mode 100644
index 0000000..aa220a6
--- /dev/null
+++ b/kravmaga-techniques.json
@@ -0,0 +1,66 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_krav_maga_rapid",
+ "messages": [ "You jab at %s", "<npcname> jabs at %s" ],
+ "name": "Jab",
+ "skill_requirements": [ { "name": "unarmed", "level": 1 } ],
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 0.5 },
+ { "stat": "damage", "type": "bash", "scale": 0.66 },
+ { "stat": "damage", "type": "cut", "scale": 0.66 },
+ { "stat": "damage", "type": "stab", "scale": 0.66 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_krav_maga_crit",
+ "name": "Cheapshot",
+ "messages": [ "You hit %s where it hurts", "<npcname> hits %s with a cheapshot" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 2 } ],
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "crit_tec": true,
+ "stun_dur": 1
+ },
+ {
+ "type": "technique",
+ "id": "tec_krav_maga_takedown",
+ "name": "Takedown",
+ "messages": [ "You force %s to the ground", "<npcname> forces %s to the ground" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "crit_ok": true,
+ "down_dur": 1
+ },
+ {
+ "type": "technique",
+ "id": "tec_krav_maga_disarm",
+ "name": "Bone Breaker",
+ "messages": [ "*CRACK!* You brutally maim %s's arm", "*CRACK!* <npcname> brutally maims %s's arm" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 5 } ],
+ "unarmed_allowed": true,
+ "weighting": 2,
+ "crit_tec": true,
+ "downed_target": true,
+ "stunned_target": true,
+ "human_target": true,
+ "stun_dur": 1,
+ "flat_bonuses": [ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 1.0 } ],
+ "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 2.0 } ]
+ },
+ {
+ "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 <npcname>, but they wrestle free!" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "melee_allowed": true,
+ "unarmed_allowed": true,
+ "defensive": true,
+ "grab_break": true
+ }
+]
diff --git a/modinfo.json b/modinfo.json
new file mode 100644
index 0000000..ef62421
--- /dev/null
+++ b/modinfo.json
@@ -0,0 +1,11 @@
+[
+ {
+ "type": "MOD_INFO",
+ "ident": "martial_arts_update",
+ "name": "Martial Arts Update",
+ "authors": ["jc_gargma"],
+ "description": "Port the late 2021 dda martial arts changes to bn.",
+ "category": "rebalance",
+ "dependencies": [ "dda" ]
+ }
+]
diff --git a/swordsmanship-martialarts.json b/swordsmanship-martialarts.json
new file mode 100644
index 0000000..791013d
--- /dev/null
+++ b/swordsmanship-martialarts.json
@@ -0,0 +1,83 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_swordsmanship",
+ "name": { "str": "Kunst des Fechtens" },
+ "description": "The art of the longsword and sword & buckler, preceding the later development of fencing. Designed for combat both unarmored and in armor, it includes grappling as well as defensive and offensive sword techniques. This treatise compares the Italian and German traditions of medieval combat with detailed step-by-step pictures.",
+ "initiate": [ "You take on a knightly stance.", "%s takes on a knightly stance." ],
+ "strictly_melee": true,
+ "learn_difficulty": 6,
+ "primary_skill": "cutting",
+ "static_buffs": [
+ {
+ "id": "buff_swordsmanship_static",
+ "name": "Swordsman's Stance",
+ "description": "Through chivalry and vigilance, your defense with a blade has increased.\n\n+1 Block attempts; blocked damage decreased by 50% of Strength.",
+ "melee_allowed": true,
+ "bonus_blocks": 1,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "str", "scale": 0.5 } ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_swordsmanship_onblock",
+ "name": "Mastercut",
+ "description": "You parry and return the attack with greater vigor!\n\n+10% damage, -10 move cost\nLasts 1 turn.",
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 5 } ],
+ "buff_duration": 1,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 0.9 },
+ { "stat": "damage", "type": "bash", "scale": 1.1 },
+ { "stat": "damage", "type": "cut", "scale": 1.1 },
+ { "stat": "damage", "type": "stab", "scale": 1.1 }
+ ]
+ }
+ ],
+ "onhit_buffs": [
+ {
+ "id": "buff_swordsmanship_onhit",
+ "name": "Conserve Momentum",
+ "description": "You maintain the momentum from your last strike to move more quickly",
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "buff_duration": 2,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 } ]
+ }
+ ],
+ "onpause_buffs": [
+ {
+ "id": "buff_swordsmanship_onpause",
+ "name": "Half Swording",
+ "description": "You grip the blade part way down for greater control.\n\nBlocked damage decreased an additional 50% of Strength, -1 Accuracy,\nEnables Grab and Lethal Strike",
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "buff_duration": 2,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "str", "scale": 0.5 }, { "stat": "hit", "scale": -1.0 } ]
+ }
+ ],
+ "techniques": [ "tec_swordsmanship_feint", "tec_swordsmanship_lethal", "tec_swordsmanship_ringen" ],
+ "weapons": [
+ "arming_sword",
+ "arming_sword_inferior",
+ "arming_sword_fake",
+ "broadsword",
+ "broadsword_inferior",
+ "broadsword_fake",
+ "estoc",
+ "estoc_inferior",
+ "estoc_fake",
+ "glass_macuahuitl",
+ "longsword",
+ "longsword_inferior",
+ "longsword_fake",
+ "sword_crude",
+ "sword_nail",
+ "sword_wood",
+ "sword_metal",
+ "zweihander",
+ "zweihander_inferior",
+ "zweihander_fake"
+ ]
+ }
+]
diff --git a/swordsmanship-techniques.json b/swordsmanship-techniques.json
new file mode 100644
index 0000000..6f95afc
--- /dev/null
+++ b/swordsmanship-techniques.json
@@ -0,0 +1,47 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_swordsmanship_ringen",
+ "name": "Grab",
+ "messages": [ "You wrestle %s to the ground", "<npcname> wrestles %s to the ground" ],
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "req_buffs": [ "buff_swordsmanship_onpause" ],
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 0.5 },
+ { "stat": "damage", "type": "cut", "scale": 0.5 },
+ { "stat": "damage", "type": "stab", "scale": 0.33 }
+ ],
+ "crit_tec": true,
+ "down_dur": 2
+ },
+ {
+ "type": "technique",
+ "id": "tec_swordsmanship_lethal",
+ "name": "Lethal Strike",
+ "messages": [ "You drive the point of your blade into %s", "<npcname> drives their blade into %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "req_buffs": [ "buff_swordsmanship_onpause" ],
+ "crit_ok": true,
+ "flat_bonuses": [
+ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 1.5 },
+ { "stat": "arpen", "type": "cut", "scaling-stat": "str", "scale": 1.5 },
+ { "stat": "arpen", "type": "stab", "scaling-stat": "str", "scale": 1.5 }
+ ],
+ "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 0 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_swordsmanship_feint",
+ "name": "Flow Drills",
+ "messages": [
+ "With practiced movements, you transition from a failed strike into another strike",
+ "With practiced movements, <npcname> transitions from a failed strike into another strike"
+ ],
+ "skill_requirements": [ { "name": "melee", "level": 1 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ }
+]