summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjc_gargma <jc_gargma@iserlohn-fortress.net>2022-01-19 18:08:34 -0800
committerjc_gargma <jc_gargma@iserlohn-fortress.net>2022-01-19 18:08:34 -0800
commite43f607400acc497203f40224c71374a53b4efb8 (patch)
treebc4b919f82325c12c11d43551d66c1eb64d5739e
parentInitial commit (diff)
downloadcataclysm-bn-mod_martial-arts-update-e43f607400acc497203f40224c71374a53b4efb8.tar.xz
Add Brawling, Fior Di Battaglia, Sojutsu, Taekwondo, Tai Chi.
Add Barbaran Montane with book and itemgroup.
-rw-r--r--books/martial.json17
-rw-r--r--itemgroups/books.json20
-rw-r--r--martialarts/aikido.json86
-rw-r--r--martialarts/barbaran-montante.json105
-rw-r--r--martialarts/brawling.json34
-rw-r--r--martialarts/fencing.json (renamed from fencing-martialarts.json)0
-rw-r--r--martialarts/kravmaga.json (renamed from kravmaga-martialarts.json)8
-rw-r--r--martialarts/medievalpole.json70
-rw-r--r--martialarts/sojutsu.json68
-rw-r--r--martialarts/swordsmanship.json (renamed from swordsmanship-martialarts.json)0
-rw-r--r--martialarts/taekwondo.json41
-rw-r--r--martialarts/taichi.json49
-rw-r--r--readme24
-rw-r--r--techniques/aikido.json78
-rw-r--r--techniques/barbaran-montante.json33
-rw-r--r--techniques/brawling.json80
-rw-r--r--techniques/fencing.json (renamed from fencing-techniques.json)0
-rw-r--r--techniques/kravmaga.json (renamed from kravmaga-techniques.json)0
-rw-r--r--techniques/medievalpole.json88
-rw-r--r--techniques/sojutsu.json40
-rw-r--r--techniques/swordsmanship.json (renamed from swordsmanship-techniques.json)0
-rw-r--r--techniques/taekwondo.json73
-rw-r--r--techniques/taichi.json60
23 files changed, 972 insertions, 2 deletions
diff --git a/books/martial.json b/books/martial.json
new file mode 100644
index 0000000..25153fa
--- /dev/null
+++ b/books/martial.json
@@ -0,0 +1,17 @@
+[
+ {
+ "id": "manual_barbaran",
+ "copy-from": "book_martial",
+ "type": "BOOK",
+ "name": {
+ "str": "Las Nueve Reglas de la Montante",
+ "str_pl": "copies of Las Nueve Reglas de la Montante",
+ "//~": "Don't translate name, this book is in archaic Spanish with translations in the margins."
+ },
+ "price": 11000,
+ "price_postapoc": 3000,
+ "//~": "Spanish description should change to say that this is archaic text and should mention explanations of archaic words instead of translations.",
+ "description": "Thankfully, someone has scrawled translations in the margins of this guide to Barbaran Montante. Judging by the notation, this greatsword and war hammer training manual is also a form of poem.",
+ "martial_art": "style_barbaran"
+ }
+]
diff --git a/itemgroups/books.json b/itemgroups/books.json
new file mode 100644
index 0000000..8e59d03
--- /dev/null
+++ b/itemgroups/books.json
@@ -0,0 +1,20 @@
+[
+ {
+ "id": "mansion_books",
+ "type": "item_group",
+ "//": "Those rich mansion people have all sorts of weird books.",
+ "subtype": "distribution",
+ "entries": [
+ { "item": "manual_barbaran", "prob": 10 }
+ ]
+ },
+ {
+ "id": "exotic_books",
+ "type": "item_group",
+ "//": "These are books that are hard to find or esoteric, mostly.",
+ "subtype": "distribution",
+ "entries": [
+ { "item": "manual_barbaran", "prob": 1 }
+ ]
+ }
+]
diff --git a/martialarts/aikido.json b/martialarts/aikido.json
new file mode 100644
index 0000000..f428c76
--- /dev/null
+++ b/martialarts/aikido.json
@@ -0,0 +1,86 @@
+[
+{
+ "type": "martial_art",
+ "id": "style_aikido",
+ "name": { "str": "Aikido" },
+ "description": "Aikido is a Japanese martial art focused on self-defense, while minimizing injury to the attacker. It uses defensive throws and disarms but its techniques lack offensive power.",
+ "initiate": [ "You enter the hamni stance.", "%s changes into a relaxed combat posture." ],
+ "learn_difficulty": 5,
+ "arm_block": 0,
+ "static_buffs": [
+ {
+ "id": "buff_aikido_static1",
+ "name": "Aikido Stance",
+ "description": "By disregarding offensive in favor of self-defense, you are better at protecting.\n\nBlocked damage reduced by 300% of Dexterity.\n+1.0 Dodging skill.",
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "melee_allowed": true,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "dex", "scale": 3.0 },
+ { "stat": "dodge", "scale": 1.0 }
+ ]
+ },
+ {
+ "id": "buff_aikido_static2",
+ "name": "Intermediate Aikido",
+ "description": "An intermediate aikido practitioner can protect themselves against multiple opponents.\n\nBlocked Damage reduced by 200% of Dexterity.\n+1 Block attempts, +1 Dodge attempts.",
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "bonus_dodges": 1,
+ "bonus_blocks": 1,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "dex", "scale": 2.0 }
+ ]
+ },
+ {
+ "id": "buff_aikido_static3",
+ "name": "Advanced Aikido",
+ "description": "An advanced aikido practitioner can protect themselves against even more opponents than normal.\n\nBlocked Damage reduced by 100% of Dexterity.\n+1 Block attempts, +1 Dodge attempts.",
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "unarmed", "level": 5 } ],
+ "bonus_dodges": 1,
+ "bonus_blocks": 1,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "dex", "scale": 2.0 }
+ ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_aikido_onblock",
+ "name": "Fluid Blocking",
+ "description": "After a smooth block, you prepare to counter your foe.\n\n-10% move cost.\nLasts for 1 turn.",
+ "skill_requirements": [ { "name": "unarmed", "level": 1 } ],
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "melee_allowed": true,
+ "buff_duration": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.9 } ]
+ }
+ ],
+ "ondodge_buffs": [
+ {
+ "id": "buff_aikido_ondodge",
+ "name": "Fluid Dodging",
+ "description": "After a smooth dodge, you prepare to counter your foe.\n\n-10% move cost.\nLasts for 1 turn.",
+ "unarmed_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "melee_allowed": true,
+ "buff_duration": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.9 } ]
+ }
+ ],
+ "techniques": [
+ "tec_aikido_break",
+ "tec_aikido_dodgedisarm",
+ "tec_aikido_blockdisarm",
+ "tec_aikido_dodgethrow",
+ "tec_aikido_blockthrow"
+ ],
+ "weapons": [ "bagh_nakha", "bio_claws_weapon", "cestus", "knuckle_brass", "knuckle_nail", "knuckle_steel", "knuckle_steel_forged" ]
+ }
+]
diff --git a/martialarts/barbaran-montante.json b/martialarts/barbaran-montante.json
new file mode 100644
index 0000000..b9d58e1
--- /dev/null
+++ b/martialarts/barbaran-montante.json
@@ -0,0 +1,105 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_barbaran",
+ "name": { "str": "Barbaran Montante" },
+ "description": "The Barbaran Montante originated in 16th century Spain and focuses on overcoming thick armor with heavy weaponry and sweeping blows, transferring kinetic energy through armor and into vulnerable organs and bones.",
+ "initiate": [
+ "You heft your weapon, stretch your shoulders, and slide into the Represa.",
+ "%s rolls their shoulders and prepares to duel."
+ ],
+ "learn_difficulty": 8,
+ "primary_skill": "bashing",
+ "strictly_melee": true,
+ "static_buffs": [
+ {
+ "id": "buff_barbaran_static",
+ "name": "Barbaran Represa",
+ "description": "Sliding footwork enhances the crushing continuity of your attacks.\n\nArmor penetration increased by 75% of Strength.",
+ "melee_allowed": true,
+ "flat_bonuses": [
+ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 0.75 },
+ { "stat": "arpen", "type": "cut", "scaling-stat": "str", "scale": 0.75 },
+ { "stat": "arpen", "type": "stab", "scaling-stat": "str", "scale": 0.75 }
+ ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_barbaran_onblock",
+ "name": "Reversing Destreza",
+ "description": "Blocking a key strike will turn the battle around.\n\n-5% movecost\nLasts 3 turns. Stacks 2 times.",
+ "skill_requirements": [ { "name": "melee", "level": 1 } ],
+ "melee_allowed": true,
+ "max_stacks": 2,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.95 } ],
+ "buff_duration": 3
+ }
+ ],
+ "onkill_buffs": [
+ {
+ "id": "buff_barbaran_onkill",
+ "name": "Movimiento Natural",
+ "description": "Formal victory is attained, and your mind is cleared to focus on your next moves.\n\n+1 Block attempts.\nLasts 5 turns.",
+ "skill_requirements": [ { "name": "melee", "level": 5 } ],
+ "melee_allowed": true,
+ "buff_duration": 5,
+ "bonus_blocks": 1
+ }
+ ],
+ "onmove_buffs": [
+ {
+ "id": "buff_barbaran_onmove",
+ "name": "Ricasso Step",
+ "description": "You switch or sturdy your grip mid-step to aid your blocking.\n\nBlocked damage reduced by 40% of Strength.\nLasts 3 turns. Stacks 3 times.",
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "max_stacks": 3,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "str", "scale": 0.4 } ],
+ "buff_duration": 3
+ }
+ ],
+ "onpause_buffs": [
+ {
+ "id": "buff_barbaran_onpause",
+ "name": "Vulgar Preparation",
+ "description": "You prepare for the final crushing strike.\n\nAccuracy increased by 15% of Strength, Armor penetration increased by 225% of Strength.\nLasts 1 turn.",
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "flat_bonuses": [
+ { "stat": "hit", "scaling-stat": "str", "scale": 0.15 },
+ { "stat": "arpen", "type": "bash", "scaling-stat": "str", "scale": 2.25 },
+ { "stat": "arpen", "type": "cut", "scaling-stat": "str", "scale": 2.25 },
+ { "stat": "arpen", "type": "stab", "scaling-stat": "str", "scale": 2.25 }
+ ],
+ "buff_duration": 1
+ }
+ ],
+ "techniques": [ "tec_barbaran_impale", "tec_barbaran_disarm" ],
+ "weapons": [
+ "2h_flail_steel",
+ "2h_flail_wood",
+ "battleaxe",
+ "battleaxe_inferior",
+ "battleaxe_fake",
+ "hammer_sledge",
+ "hammer_sledge_heavy",
+ "longsword",
+ "longsword_inferior",
+ "longsword_fake",
+ "mace",
+ "mace_inferior",
+ "mace_fake",
+ "morningstar",
+ "morningstar_inferior",
+ "morningstar_fake",
+ "sword_nail",
+ "sword_crude",
+ "sword_wood",
+ "warhammer",
+ "zweihander",
+ "zweihander_inferior",
+ "zweihander_fake"
+ ]
+ }
+]
diff --git a/martialarts/brawling.json b/martialarts/brawling.json
new file mode 100644
index 0000000..8a9c28d
--- /dev/null
+++ b/martialarts/brawling.json
@@ -0,0 +1,34 @@
+[
+{
+ "type": "martial_art",
+ "id": "style_brawling",
+ "name": { "str": "Brawling" },
+ "description": "You're used to hand-to-creature fighting. You know how to fight when unarmed or with any weapon to a certain extent. It's not stylish or sporting, but it gets the job done.",
+ "initiate": [ "You grit your teeth and prepare for a good fight.", "%s gets ready to brawl." ],
+ "autolearn": [ [ "melee", 1 ] ],
+ "arm_block": 1,
+ "nonstandard_block": 5,
+ "static_buffs": [
+ {
+ "id": "buff_brawling_block",
+ "name": "Enhanced Blocking",
+ "description": "Combat experience has led to you being able to block multiple attacks at a time.\n\n+1 Block attempts.",
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 5 } ],
+ "bonus_blocks": 1
+ }
+ ],
+ "allow_melee": true,
+ "techniques": [
+ "tec_brawl_disarm_unarmed",
+ "tec_brawl_feint_unarmed",
+ "tec_brawl_break_unarmed",
+ "tec_brawl_power",
+ "tec_brawl_trip",
+ "tec_brawl_disarm_melee",
+ "tec_brawl_feint_melee",
+ "tec_brawl_break_melee"
+ ]
+ }
+]
diff --git a/fencing-martialarts.json b/martialarts/fencing.json
index 09dea1c..09dea1c 100644
--- a/fencing-martialarts.json
+++ b/martialarts/fencing.json
diff --git a/kravmaga-martialarts.json b/martialarts/kravmaga.json
index 5448c21..83ce91c 100644
--- a/kravmaga-martialarts.json
+++ b/martialarts/kravmaga.json
@@ -23,12 +23,16 @@
{
"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.",
+ "description": "Like a foe, your opponent has left themselves wide.\n\n+10% damage.\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 } ]
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.1 },
+ { "stat": "damage", "type": "cut", "scale": 1.1 },
+ { "stat": "damage", "type": "stab", "scale": 1.1 }
+ ]
}
],
"techniques": [ "tec_krav_maga_rapid", "tec_krav_maga_crit", "tec_krav_maga_takedown", "tec_krav_maga_disarm", "tec_krav_maga_break" ],
diff --git a/martialarts/medievalpole.json b/martialarts/medievalpole.json
new file mode 100644
index 0000000..800db92
--- /dev/null
+++ b/martialarts/medievalpole.json
@@ -0,0 +1,70 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_medievalpole",
+ "name": { "str": "Fior Di Battaglia - Azza" },
+ "description": "Medieval Europe's martial techniques for fighting with polearms. The \"Flower of Battle\" places great focus on countering one's opponent and knocking them down before landing a killing blow",
+ "initiate": [ "You hold your weapon in a firm grip, ready to block any attack.", "%s grips their weapon tightly." ],
+ "learn_difficulty": 6,
+ "primary_skill": "bashing",
+ "strictly_melee": true,
+ "static_buffs": [
+ {
+ "id": "buff_medievalpole_static",
+ "name": "Stand Your Ground",
+ "description": "You are stalwart and will not budge against any threat.\n\n+1 Block attempts, -1.0 Dodge skill, blocked damage reduced by 250% of Strength.",
+ "melee_allowed": true,
+ "bonus_blocks": 1,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "str", "scale": 2.5 },
+ { "stat": "dodge", "scale": -1.0 }
+ ]
+ }
+ ],
+ "onmove_buffs": [
+ {
+ "id": "buff_medievalpole_onmove",
+ "name": "Tactical Retreat",
+ "description": "You moved and nullified the effects of Stand Your Ground!\n\n-1 Block attempts, +1.0 Dodge skill, blocked damaged increased by 250% of Strength.\nPrevents \"High Round Strike and Hook\" technique.\nLasts 2 turns.",
+ "melee_allowed": true,
+ "buff_duration": 2,
+ "bonus_blocks": -1,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "str", "scale": -2.5 },
+ { "stat": "dodge", "scale": 1.0 }
+ ]
+ }
+ ],
+ "onmiss_buffs": [
+ {
+ "id": "buff_medievalpole_onmiss",
+ "name": "Tactical Feinting",
+ "description": "They fell for your feint!\n\nEnables \"Hook and Drag\" technique.\nLasts 1 turn.",
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "buff_duration": 1
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_medievalpole_onblock",
+ "name": "Defense Break",
+ "description": "Each successful block reveals an opening in your opponent's guard.\n\n+1 Accuracy.\nEnables \"Displace and Hook\" technique.\nLasts 1 turn. Stacks 3 times.",
+ "melee_allowed": true,
+ "skill_requirements": [ { "name": "melee", "level": 1 } ],
+ "buff_duration": 1,
+ "max_stacks": 3,
+ "flat_bonuses": [ { "stat": "hit", "scale": 1.0 } ]
+ }
+ ],
+ "techniques": [
+ "tec_medievalpole_counter",
+ "tec_medievalpole_highround",
+ "tec_medievalpole_feint",
+ "tec_medievalpole_hook",
+ "tec_medievalpole_execute",
+ "tec_medievalpole_break"
+ ],
+ "weapon_category": [ "HOOKING_WEAPONRY" ]
+ }
+]
diff --git a/martialarts/sojutsu.json b/martialarts/sojutsu.json
new file mode 100644
index 0000000..1488746
--- /dev/null
+++ b/martialarts/sojutsu.json
@@ -0,0 +1,68 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_sojutsu",
+ "name": { "str": "Sōjutsu" },
+ "description": "Sōjutsu, \"The Way of the Spear\", is the Japanese martial art of fighting with a spear. Sōjutsu focuses on keeping opponents at a distance in order to maintain advantage in combat. Standing still gives you an extra block attempt but moving will briefly increase your damage.",
+ "initiate": [ "You prepare to defend against all that approach you.", "%s assumes a wide, defensive stance." ],
+ "learn_difficulty": 7,
+ "primary_skill": "stabbing",
+ "strictly_melee": true,
+ "static_buffs": [
+ {
+ "id": "buff_sojutsu_static",
+ "name": "Sōjutsu Stance",
+ "description": "Your training grants better defense while using a polearm.\n\nBlocked damage reduced by 200% of Dexterity.\n+1 Block attempt.",
+ "melee_allowed": true,
+ "bonus_blocks": 1,
+ "flat_bonuses": [
+ { "stat": "block", "scaling-stat": "str", "scale": 2.0 }
+ ]
+ }
+ ],
+ "onmove_buffs": [
+ {
+ "id": "buff_sojutsu_onmove",
+ "name": "Superior Positioning",
+ "description": "You have given up your defenses for a moment to increase the damage of your attacks.\n\n+10% damage, -1 Block attempts.\nLasts 1 turn.",
+ "melee_allowed": true,
+ "buff_duration": 1,
+ "bonus_blocks": -1,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.1 },
+ { "stat": "damage", "type": "cut", "scale": 1.1 },
+ { "stat": "damage", "type": "stab", "scale": 1.1 }
+ ]
+ }
+ ],
+ "techniques": [ "tec_sojutsu_feint", "tec_sojutsu_shove", "tec_sojutsu_trip" ],
+ "weapons": [
+ "glaive",
+ "halberd",
+ "halberd_fake",
+ "ji",
+ "naginata",
+ "naginata_inferior",
+ "naginata_fake",
+ "long_pole",
+ "makeshift_halberd",
+ "pike",
+ "pike_inferior",
+ "pike_fake",
+ "pitchfork",
+ "qiang",
+ "spear_copper",
+ "spear_dory",
+ "spear_forked",
+ "spear_homemade_halfpike",
+ "spear_pipe",
+ "spear_knife",
+ "spear_knife_superior",
+ "spear_spike",
+ "spear_rebar",
+ "spear_steel",
+ "spear_survivor",
+ "spear_wood"
+ ]
+ }
+]
diff --git a/swordsmanship-martialarts.json b/martialarts/swordsmanship.json
index 791013d..791013d 100644
--- a/swordsmanship-martialarts.json
+++ b/martialarts/swordsmanship.json
diff --git a/martialarts/taekwondo.json b/martialarts/taekwondo.json
new file mode 100644
index 0000000..141b92f
--- /dev/null
+++ b/martialarts/taekwondo.json
@@ -0,0 +1,41 @@
+[
+{
+ "type": "martial_art",
+ "id": "style_taekwondo",
+ "name": { "str": "Taekwondo" },
+ "description": "Taekwondo is the national sport of Korea, and was used by the South Korean army in the 20th century. Focused on kicks and so it does not benefit from wielded weapons. It also includes strength training; your blocks absorb extra damage and your attacks do more damage if you are not holding anything.",
+ "initiate": [ "You adopt a narrow fighting stance.", "You adopts a narrow fighting stance." ],
+ "learn_difficulty": 5,
+ "arm_block": 1,
+ "leg_block": 3,
+ "force_unarmed": true,
+ "static_buffs": [
+ {
+ "id": "buff_taekwondo_static",
+ "name": "Taekwondo Stance",
+ "description": "Using your legs to attack allows your hands to be free for better defense.\n\nBlocked damage decreased by 50% of Strength.",
+ "unarmed_allowed": true,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "str", "scale": 0.5 } ]
+ },
+ {
+ "id": "buff_taekwondo_static2",
+ "name": "Unhindered",
+ "description": "Your attacks are stronger if you are not holding anything in your hands.\n\n+33% damage when not using a weapon.",
+ "unarmed_allowed": true,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.33 },
+ { "stat": "damage", "type": "cut", "scale": 1.33 },
+ { "stat": "damage", "type": "stab", "scale": 1.33 }
+ ]
+ }
+ ],
+ "techniques": [
+ "tec_taekwondo_disarm",
+ "tec_taekwondo_strong",
+ "tec_taekwondo_roundhouse",
+ "tec_taekwondo_feint",
+ "tec_taekwondo_push",
+ "tec_taekwondo_sweep"
+ ]
+ }
+]
diff --git a/martialarts/taichi.json b/martialarts/taichi.json
new file mode 100644
index 0000000..0321c50
--- /dev/null
+++ b/martialarts/taichi.json
@@ -0,0 +1,49 @@
+[
+ {
+ "type": "martial_art",
+ "id": "style_tai_chi",
+ "name": { "str": "Tai Chi" },
+ "description": "Though Tai Chi is often seen as a form of mental and physical exercise, it is a legitimate martial art, focused on self-defense. Its ability to absorb the force of an attack makes your Perception decrease damage further on a block. Pausing for a moment enables powerful palm strike techniques.",
+ "initiate": [ "You settle into a gentle stance and prepare to defend yourself.", "%s settles into a gentle stance." ],
+ "learn_difficulty": 4,
+ "arm_block": 0,
+ "static_buffs": [
+ {
+ "id": "buff_tai_chi_static",
+ "name": "Tai Chi Stance",
+ "description": "You are focused of defense and predicting your opponents attacks.\n\n+1 Block attempts, blocked damage reduced by 100% Perception.",
+ "unarmed_allowed": true,
+ "bonus_blocks": 1,
+ "flat_bonuses": [ { "stat": "block", "scaling-stat": "per", "scale": 1.0 } ]
+ }
+ ],
+ "onblock_buffs": [
+ {
+ "id": "buff_tai_chi_onblock",
+ "name": "Repulse the Monkey",
+ "description": "By perfectly positioning yourself and your opponent, you have become more accurate and can bypass your opponent's defenses.\n\nAccuracy increased by 20% of Perception. Gains Armor Penetration equal to 50% of Perception.\nLasts 2 turns.",
+ "unarmed_allowed": true,
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "buff_duration": 2,
+ "flat_bonuses": [
+ { "stat": "arpen", "type": "bash", "scaling-stat": "per", "scale": 0.5 },
+ { "stat": "arpen", "type": "cut", "scaling-stat": "per", "scale": 0.5 },
+ { "stat": "arpen", "type": "stab", "scaling-stat": "per", "scale": 0.5 },
+ { "stat": "hit", "scaling-stat": "per", "scale": 0.2 }
+ ]
+ }
+ ],
+ "onpause_buffs": [
+ {
+ "id": "buff_tai_chi_onpause",
+ "name": "Cross Hands",
+ "description": "By taking a moment to prepare yourself, you are able to use your entire body fully for attacking and defending.\n\n+2 Block Effectiveness, blocked damage reduced by 50% of Perception.\nEnables \"Palm Strike\" and \"Double Palm Strike\" techniques.\nLasts 3 turns.",
+ "unarmed_allowed": true,
+ "skill_requirements": [ { "name": "unarmed", "level": 1 } ],
+ "buff_duration": 3,
+ "flat_bonuses": [ { "stat": "block_effectiveness", "scale": 2.0 }, { "stat": "block", "scaling-stat": "per", "scale": 0.5 } ]
+ }
+ ],
+ "techniques": [ "tec_taichi_disarm", "tec_taichi_palm", "tec_taichi_counter", "tec_taichi_precise" ]
+ }
+]
diff --git a/readme b/readme
new file mode 100644
index 0000000..f05a073
--- /dev/null
+++ b/readme
@@ -0,0 +1,24 @@
+--Martial Arts Update for BN
+Update the martial arts in Bright Nights with the chagnes made in Dark Days Ahead.
+Changes are made as neccessary when efects are not supported.
+Note: This mod overwrites the vanilla styles entirely, so it should be placed early in the mod order to ensure mods can append weapons to styles.
+
+Added the Barbaran Montante style, book, and itemgroups.
+Give Fencing, Medieval Swordsmandship and Fior Di Battaglia more historically correct names.
+
+
+Styles updated so far-
+Brawling
+Fencing
+Krav Maga
+Sōjutsu
+Swordsmanship
+Taekwondo
+Tai Chi
+
+Caveats-
+BN lacks the ability to specify weapon group types, so legacy weapon additions are still required.
+BN lacks the block_effectiveness stat. Use block scaling with a stat appropriate to the art. block_effectiveness 2 -> block dex 2.
+BN lacks support for buffing critical hit chance. Reverted to bonus damage at twice the crit chance value. +5% crit -> +10% damage.
+BN lacks support for disabling buffs and techniques when certain buffs are active.
+BN uses the req_buffs field to specify active buff requirements instead of DDA's required_buffs_all.
diff --git a/techniques/aikido.json b/techniques/aikido.json
new file mode 100644
index 0000000..57ef0b5
--- /dev/null
+++ b/techniques/aikido.json
@@ -0,0 +1,78 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_aikido_blockthrow",
+ "name": "Counter Throw (block)",
+ "messages": [ "You smoothly throw %s", "<npcname> blocks and smoothly throws %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 2 } ],
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "req_buffs": [ "buff_aikido_onblock" ],
+ "crit_ok": true,
+ "down_dur": 1,
+ "knockback_dist": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.7 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_aikido_dodgethrow",
+ "name": "Counter Throw (dodge)",
+ "messages": [ "You smoothly throw %s", "<npcname> dodges and smoothly throws %s" ],
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "req_buffs": [ "buff_aikido_ondodge" ],
+ "crit_ok": true,
+ "down_dur": 1,
+ "knockback_dist": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.7 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_aikido_blockdisarm",
+ "name": "Disarming Throw (block)",
+ "messages": [ "You smoothly disarm %s", "<npcname> blocks and smoothly disarms %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "req_buffs": [ "buff_aikido_onblock" ],
+ "crit_ok": true,
+ "disarms": true,
+ "down_dur": 1,
+ "knockback_dist": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.7 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_aikido_dodgedisarm",
+ "name": "Disarming Throw (dodge)",
+ "messages": [ "You smoothly disarm %s", "<npcname> dodges and smoothly disarms %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "req_buffs": [ "buff_aikido_ondodge" ],
+ "crit_ok": true,
+ "disarms": true,
+ "down_dur": 1,
+ "knockback_dist": 1,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.7 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_aikido_break",
+ "name": "Grab Break",
+ "messages": [
+ "The %s tries to grab you, but you smoothly break free!",
+ "The %s tries to grab <npcname>, but they smoothly break free!"
+ ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "unarmed_allowed": true,
+ "melee_allowed": true,
+ "unarmed_weapons_allowed": false,
+ "defensive": true,
+ "grab_break": true
+ }
+]
diff --git a/techniques/barbaran-montante.json b/techniques/barbaran-montante.json
new file mode 100644
index 0000000..bf25356
--- /dev/null
+++ b/techniques/barbaran-montante.json
@@ -0,0 +1,33 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_barbaran_impale",
+ "name": "Impaling Estocada",
+ "messages": [ "You thrust your weapon through %s", "<npcname> thrusts their weapon through %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "weapon_damage_requirements": [ { "type": "cut", "min": 8 } ],
+ "melee_allowed": true,
+ "aoe": "impale",
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.1 },
+ { "stat": "damage", "type": "cut", "scale": 1.1 },
+ { "stat": "damage", "type": "stab", "scale": 1.1 },
+ { "stat": "movecost", "scale": 1.2 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_barbaran_disarm",
+ "name": "Swift Atajo",
+ "messages": [ "You jab a quick blow at %s's grip", "<npcname> jabs a quick blow at %s's grip" ],
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "melee_allowed": true,
+ "disarms": 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 }
+ ]
+ },
+]
diff --git a/techniques/brawling.json b/techniques/brawling.json
new file mode 100644
index 0000000..74d9bc1
--- /dev/null
+++ b/techniques/brawling.json
@@ -0,0 +1,80 @@
+[
+ {
+ "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 <npcname>, but they break free!" ],
+ "skill_requirements": [ { "name": "melee", "level": 6 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "grab_break": true
+ },
+ {
+ "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 <npcname>, but they break free!" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 6 } ],
+ "unarmed_allowed": true,
+ "defensive": true,
+ "grab_break": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_feint_melee",
+ "name": "Feint",
+ "messages": [ "You fake a strike at %s", "<npcname> fakes a strike at %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_feint_unarmed",
+ "name": "Feint",
+ "messages": [ "You fake a strike at %s", "<npcname> fakes a strike at %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "unarmed_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_disarm_melee",
+ "name": "Disarm",
+ "messages": [ "You knock %s's weapon away", "<npcname> knock %s's weapon away" ],
+ "skill_requirements": [ { "name": "melee", "level": 6 } ],
+ "melee_allowed": true,
+ "disarms": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_disarm_unarmed",
+ "name": "Disarm",
+ "messages": [ "You knock %s's weapon away", "<npcname> knock %s's weapon away" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 6 } ],
+ "unarmed_allowed": true,
+ "disarms": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_power",
+ "name": "Power Hit",
+ "messages": [ "You send %s reeling", "<npcname> sends %s reeling" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "unarmed_allowed": true,
+ "crit_tec": true,
+ "knockback_dist": 1,
+ "stun_dur": 1
+ },
+ {
+ "type": "technique",
+ "id": "tec_brawl_trip",
+ "name": "Trip",
+ "messages": [ "You trip %s", "<npcname> trip %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 5 } ],
+ "unarmed_allowed": true,
+ "down_dur": 1
+ }
+]
diff --git a/fencing-techniques.json b/techniques/fencing.json
index 41061e8..41061e8 100644
--- a/fencing-techniques.json
+++ b/techniques/fencing.json
diff --git a/kravmaga-techniques.json b/techniques/kravmaga.json
index aa220a6..aa220a6 100644
--- a/kravmaga-techniques.json
+++ b/techniques/kravmaga.json
diff --git a/techniques/medievalpole.json b/techniques/medievalpole.json
new file mode 100644
index 0000000..041efc6
--- /dev/null
+++ b/techniques/medievalpole.json
@@ -0,0 +1,88 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_medievalpole_counter",
+ "name": "Displace and Hook",
+ "messages": [ "You parry and hook %s down", "<npcname> parries and hooks %s down" ],
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "required_buffs_all": [ "buff_medievalpole_onblock" ],
+ "crit_ok": true,
+ "weighting": 2,
+ "down_dur": 2,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 0.5 },
+ { "stat": "damage", "type": "bash", "scale": 0.5 },
+ { "stat": "damage", "type": "cut", "scale": 0.5 },
+ { "stat": "damage", "type": "stab", "scale": 0.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_medievalpole_highround",
+ "name": "High Round Strike",
+ "messages": [ "You swing high and strike at %s", "<npcname> swings high and strikes %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "melee_allowed": true,
+ "forbidden_buffs_all": [ "buff_medievalpole_onmove" ],
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.1 },
+ { "stat": "damage", "type": "cut", "scale": 1.1 },
+ { "stat": "damage", "type": "stab", "scale": 1.1 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_medievalpole_feint",
+ "name": "High Round Feint",
+ "messages": [ "You fake a high round strike at %s", "<npcname> feints at %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "miss_recovery": true,
+ "mult_bonuses": [ { "stat": "movecost", "scale": 0.8 } ]
+ },
+ {
+ "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 <npcname>, but they push away!" ],
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "grab_break": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_medievalpole_hook",
+ "name": "Hook and Drag",
+ "messages": [ "You hook and drag %s down", "<npcname> hooks and drags %s down" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "required_buffs_all": "buff_medievalpole_onmiss",
+ "crit_ok": true,
+ "weighting": 2,
+ "down_dur": 2,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 0.5 },
+ { "stat": "damage", "type": "cut", "scale": 0.5 },
+ { "stat": "damage", "type": "stab", "scale": 0.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_medievalpole_execute",
+ "name": "Colpo di Grazia",
+ "messages": [ "You swing down hard and execute %s", "<npcname> swings down hard and executes %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 5 } ],
+ "melee_allowed": true,
+ "downed_target": true,
+ "crit_tec": true,
+ "weighting": 2,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.5 },
+ { "stat": "damage", "type": "cut", "scale": 1.5 },
+ { "stat": "damage", "type": "stab", "scale": 1.5 }
+ ]
+ }
+]
diff --git a/techniques/sojutsu.json b/techniques/sojutsu.json
new file mode 100644
index 0000000..83cf631
--- /dev/null
+++ b/techniques/sojutsu.json
@@ -0,0 +1,40 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_sojutsu_shove",
+ "name": "Shove",
+ "messages": [ "You shove %s back", "<npcname> shoves %s back" ],
+ "skill_requirements": [ { "name": "melee", "level": 2 } ],
+ "melee_allowed": true,
+ "knockback_dist": 1,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 0.5 },
+ { "stat": "damage", "type": "cut", "scale": 0.5 },
+ { "stat": "damage", "type": "stab", "scale": 0.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_sojutsu_trip",
+ "name": "Trip",
+ "messages": [ "You deftly trip %s", "<npcname> deftly trips %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 3 } ],
+ "melee_allowed": true,
+ "down_dur": 1,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 0.5 },
+ { "stat": "damage", "type": "cut", "scale": 0.5 },
+ { "stat": "damage", "type": "stab", "scale": 0.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_sojutsu_feint",
+ "name": "Feint",
+ "messages": [ "You fake a thrust at %s", "<npcname> fakes a thrust at %s" ],
+ "skill_requirements": [ { "name": "melee", "level": 4 } ],
+ "melee_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ }
+]
diff --git a/swordsmanship-techniques.json b/techniques/swordsmanship.json
index 6f95afc..6f95afc 100644
--- a/swordsmanship-techniques.json
+++ b/techniques/swordsmanship.json
diff --git a/techniques/taekwondo.json b/techniques/taekwondo.json
new file mode 100644
index 0000000..f19e98c
--- /dev/null
+++ b/techniques/taekwondo.json
@@ -0,0 +1,73 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_disarm",
+ "name": "Snatch Weapon",
+ "messages": [ "You snatch %s's weapon", "<npcname> snatches %s's weapon" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "unarmed_allowed": true,
+ "weighting": 2,
+ "take_weapon": true,
+ "mult_bonuses": [ { "stat": "damage", "type": "bash", "scale": 0.5 } ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_strong",
+ "name": "Spinning Back Kick",
+ "messages": [
+ "You spin and back-kick %s, right in the center of gravity",
+ "<npcname> spins and back-kicks %s, right in the center of gravity"
+ ],
+ "skill_requirements": [ { "name": "unarmed", "level": 5 } ],
+ "unarmed_allowed": true,
+ "crit_tec": true,
+ "stun_dur": 2,
+ "knockback_dist": 2,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 1.5 },
+ { "stat": "damage", "type": "bash", "scale": 1.5 },
+ { "stat": "damage", "type": "cut", "scale": 1.5 },
+ { "stat": "damage", "type": "stab", "scale": 1.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_push",
+ "name": "Side Kick",
+ "unarmed_allowed": true,
+ "messages": [ "You turn slightly and side-kick %s", "<npcname> turns slightly and side-kicks %s" ],
+ "knockback_dist": 1
+ },
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_sweep",
+ "name": "Sweep Kick",
+ "messages": [ "You crouch low and sweep-kick %s", "<npcname> crouches low and sweep-kicks %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 2 } ],
+ "unarmed_allowed": true,
+ "crit_ok": true,
+ "down_dur": 1
+ },
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_roundhouse",
+ "name": "Roundhouse Kick",
+ "messages": [ "You roundhouse kick %s", "<npcname> roundhouse kicks %s" ],
+ "unarmed_allowed": true,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.2 },
+ { "stat": "damage", "type": "cut", "scale": 1.2 },
+ { "stat": "damage", "type": "stab", "scale": 1.2 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_taekwondo_feint",
+ "name": "Feint",
+ "messages": [ "You fake a kick at %s", "<npcname> fakes a kick at %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "unarmed_allowed": true,
+ "defensive": true,
+ "miss_recovery": true
+ }
+]
diff --git a/techniques/taichi.json b/techniques/taichi.json
new file mode 100644
index 0000000..7fe8f4d
--- /dev/null
+++ b/techniques/taichi.json
@@ -0,0 +1,60 @@
+[
+ {
+ "type": "technique",
+ "id": "tec_taichi_disarm",
+ "name": "Disarm",
+ "messages": [ "You gently disarm %s", "<npcname> gently disarms %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 3 } ],
+ "unarmed_allowed": true,
+ "disarms": true
+ },
+ {
+ "type": "technique",
+ "id": "tec_taichi_palm",
+ "name": "Palm Strike",
+ "messages": [ "You palm strike %s", "<npcname> palm strikes %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 1 } ],
+ "unarmed_allowed": true,
+ "req_buffs": [ "buff_tai_chi_onpause" ],
+ "knockback_dist": 1,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 1.5 },
+ { "stat": "damage", "type": "cut", "scale": 1.5 },
+ { "stat": "damage", "type": "stab", "scale": 1.5 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_taichi_counter",
+ "name": "Grasp the Sparrow's Tail",
+ "messages": [ "You divert %s's attack and lead them to the ground", "<npcname> diverts %s's attack and lead them to the ground" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 2 } ],
+ "unarmed_allowed": true,
+ "req_buffs": [ "buff_tai_chi_onblock" ],
+ "crit_ok": true,
+ "down_dur": 1,
+ "mult_bonuses": [
+ { "stat": "movecost", "scale": 0.75 },
+ { "stat": "damage", "type": "bash", "scale": 1.2 },
+ { "stat": "damage", "type": "cut", "scale": 1.2 },
+ { "stat": "damage", "type": "stab", "scale": 1.2 }
+ ]
+ },
+ {
+ "type": "technique",
+ "id": "tec_taichi_precise",
+ "name": "Double Palm Strike",
+ "messages": [ "You double-handed palm strike %s", "<npcname> double-handed palm strikes %s" ],
+ "skill_requirements": [ { "name": "unarmed", "level": 4 } ],
+ "unarmed_allowed": true,
+ "crit_tec": true,
+ "req_buffs": [ "buff_tai_chi_onpause" ],
+ "knockback_dist": 1,
+ "stun_dur": 1,
+ "mult_bonuses": [
+ { "stat": "damage", "type": "bash", "scale": 2.0 },
+ { "stat": "damage", "type": "cut", "scale": 2.0 },
+ { "stat": "damage", "type": "stab", "scale": 2.0 }
+ ]
+ }
+]