From 3dbb8a7e407ecd4af3023220020c56509200a8b7 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:36:57 +0500 Subject: [PATCH 01/29] Add files via upload --- data/json/mapgen/map_extras/laststand.json | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 data/json/mapgen/map_extras/laststand.json diff --git a/data/json/mapgen/map_extras/laststand.json b/data/json/mapgen/map_extras/laststand.json new file mode 100644 index 0000000000000..6952e46ad8043 --- /dev/null +++ b/data/json/mapgen/map_extras/laststand.json @@ -0,0 +1,74 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_LAST_STAND", + "default": "mon_null", + "monsters": [ + { "monster": "mon_civilian_police", "weight": 1, "cost_multiplier": 1, "ends": "5 days" }, + { "monster": "mon_civilian_zombiefighter", "weight": 4, "cost_multiplier": 1, "ends": "5 days" } + ] + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "mx_laststand", + "object": { + "rows": [ + " ", + " ", + " ", + " ", + " ################## ", + " ################## ", + " ################## ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ################## ", + " ################## ", + " ################## ", + " ", + " ", + " ", + " ", + " " + ], + "furniture": { + "#": [ + [ "f_barricade_road", 10 ], + [ "f_sandbag_half", 10 ], + [ "f_earthbag_half", 10 ], + [ "f_gravelbag_half", 10 ], + [ "f_table", 10 ], + [ "f_bench", 10 ], + "f_55gal_firebarrel", + "f_30gal_firebarrel", + "f_pallet_brick", + "f_pallet_cement", + "f_stack_plank", + "f_metal_table", + "f_armchair", + "f_chair", + "f_rack", + "f_locker", + "f_displaycase", + "f_recycle_bin", + "f_trashcan", + "f_metal_trashcan", + "f_rubble", + "f_wreckage", + [ "f_null", 150 ] + ] + }, + "place_monster": [ { "group": "GROUP_LAST_STAND", "x": [ 6, 17 ], "y": [ 6, 16 ], "chance": 100, "repeat": [ 10, 15 ] } ], + "place_loot": [ { "group": "trash", "x": [ 6, 17 ], "y": [ 6, 16 ], "repeat": [ 5, 10 ] } ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ] + } + } +] From d72627ba0fc844fb549416725135e785e2b3fe34 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:38:09 +0500 Subject: [PATCH 02/29] Update map_extras.json --- data/json/overmap/map_extras.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/data/json/overmap/map_extras.json b/data/json/overmap/map_extras.json index 9ee41be231690..6c7ab3667f602 100644 --- a/data/json/overmap/map_extras.json +++ b/data/json/overmap/map_extras.json @@ -10,6 +10,18 @@ "color": "red", "autonote": true }, + { + "id": "mx_laststand", + "type": "map_extra", + "name": { "str": "Last Stand" }, + "description": "Some people made a last stand against the zombies here.", + "generator": { "generator_method": "update_mapgen", "generator_id": "mx_laststand" }, + "sym": "X", + "color": "green", + "autonote": true, + "min_max_zlevel": [ 0, 0 ], + "flags": [ "MAN_MADE" ] + }, { "id": "mx_collegekids", "type": "map_extra", From 9bd997d4d319c913f9326ab4e7ae921f37081204 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:39:43 +0500 Subject: [PATCH 03/29] Update regional_map_settings.json --- data/json/regional_map_settings.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/json/regional_map_settings.json b/data/json/regional_map_settings.json index aeb350ce2a0ae..c2ecc2801ebee 100644 --- a/data/json/regional_map_settings.json +++ b/data/json/regional_map_settings.json @@ -779,7 +779,7 @@ } }, "bridgehead_ground": { "chance": 5, "extras": { "mx_minefield": 100 } }, - "road_nesw_manhole": { "chance": 20, "extras": { "mx_city_trap": 100 } }, + "road_nesw_manhole": { "chance": 20, "extras": { "mx_city_trap": 50, "mx_laststand": 50 } }, "build": { "chance": 90, "extras": { From e6ec4c542d93675d1e75c46535934f47de4844e1 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:53:27 +0500 Subject: [PATCH 04/29] Add files via upload --- data/json/EOCs/melee_eocs.json | 988 +++++++++++++++++++++++++++++++++ 1 file changed, 988 insertions(+) create mode 100644 data/json/EOCs/melee_eocs.json diff --git a/data/json/EOCs/melee_eocs.json b/data/json/EOCs/melee_eocs.json new file mode 100644 index 0000000000000..00be31ed12531 --- /dev/null +++ b/data/json/EOCs/melee_eocs.json @@ -0,0 +1,988 @@ +[ + { + "type": "effect_on_condition", + "id": "EOC_MELEE_PROF_ATTACK_MONSTER", + "//": "If the player attacks a monster, and hits, run EOC to check what weapon type they're using.", + "global": false, + "eoc_type": "EVENT", + "required_event": "character_melee_attacks_monster", + "condition": { "math": [ "_hits", "==", "1" ] }, + "effect": [ { "run_eocs": "EOC_MELEE_PROF_WHAT_CATEGORY" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_MELEE_PROF_ATTACK_CHARACTER", + "//": "If the player attacks a character, run EOC to check what weapon type they're using.", + "global": false, + "eoc_type": "EVENT", + "required_event": "character_melee_attacks_character", + "condition": { "math": [ "_hits", "==", "1" ] }, + "effect": [ { "run_eocs": "EOC_MELEE_PROF_WHAT_CATEGORY" } ] + }, + { + "type": "effect_on_condition", + "id": "EOC_MELEE_PROF_WHAT_CATEGORY", + "//": "Checks what weapon categories are held, each increments experience, and defines lowest proficiency level of held weapon in the sub-EoCs.", + "global": false, + "effect": [ + { "math": [ "u_prof_lowest", "=", "4" ] }, + { + "run_eocs": [ + "IS_AUTO_RIFLES", + "IS_AUTO_PISTOLS", + "IS_KNIVES", + "IS_BATONS", + "IS_FLAILS", + "IS_MACES", + "IS_MEDIUM_SWORDS", + "IS_SHORT_SWORDS", + "IS_LONG_SWORDS", + "IS_QUARTERSTAVES", + "IS_CLAWS", + "IS_SHIVS", + "IS_HOOKING", + "IS_SPEARS", + "IS_POLEARMS", + "IS_FENCING", + "IS_THRUSTING_SWORDS", + "IS_BIONICS", + "IS_BIONIC_SWORDS", + "IS_GREAT_SWORDS", + "IS_GREAT_HAMMERS", + "IS_GREAT_AXES", + "IS_HAND_AXES", + "IS_UNARMED" + ] + }, + { "run_eocs": "EOC_MELEE_PROF_BENEFIT" } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_AUTO_RIFLES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "AUTOMATIC_RIFLES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_AUTO_PISTOLS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "AUTOMATIC_PISTOLS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_KNIVES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "KNIVES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_BATONS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "BATONS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_FLAILS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "FLAILS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_MACES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "MACES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_macess_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_MEDIUM_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "MEDIUM_SWORDS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_SHORT_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "SHORT_SWORDS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_LONG_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "LONG_SWORDS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_QUARTERSTAVES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "QUARTERSTAVES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_quaterstaves_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_quaterstaves_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_CLAWS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "CLAWS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_SHIVS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "SHIVS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_HOOKING", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "HOOKING_WEAPONRY" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_SPEARS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "SPEARS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_POLEARMS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "POLEARMS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_FENCING", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "FENCING_WEAPONRY" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { + "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_familiar', 'format: 1600')", "+=", "rand(4)" ] + }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_THRUSTING_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "LONG_THRUSTING_SWORD" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_BIONICS", + "global": false, + "condition": { "or": [ { "u_has_wielded_with_weapon_category": "BIONIC_WEAPONRY" }, { "u_using_martial_art": "style_biojutsu" } ] }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_BIONIC_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "BIONIC_SWORDS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_GREAT_SWORDS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "GREAT_SWORDS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_GREAT_HAMMERS", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "GREAT_HAMMERS" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_GREAT_AXES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "GREAT_AXES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_HAND_AXES", + "global": false, + "condition": { "u_has_wielded_with_weapon_category": "HAND_AXES" }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "IS_UNARMED", + "global": false, + "condition": { + "or": [ + { "and": [ { "not": "u_can_drop_weapon" }, { "not": { "u_has_wielded_with_weapon_category": "BIONIC_WEAPONS" } } ] }, + { "u_using_martial_art": "style_kicks" } + ] + }, + "effect": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_familiar', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_pro', 'format: percent')", ">=", "100" ] }, + "then": [ + { + "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_master', 'format: percent')", ">=", "100" ] }, + "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_master', 'format: 6400')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "2" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_pro', 'format: 3200')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "1" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ], + "else": [ + { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_familiar', 'format: 1600')", "+=", "rand(4)" ] }, + { "math": [ "u_prof_level", "=", "0" ] }, + { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } + ] + } + ] + }, + { + "type": "effect_on_condition", + "id": "EOC_MELEE_PROF_BENEFIT", + "//": "Refunds stamina based on the presumed model of stamina cost: [ (((Item Weight / 16) + 50 ) * -1) + Melee Skill ]. This excludes the stance modifier, due to not being able to detect if the character is crouching at time of writing. ", + "global": false, + "condition": { "not": { "or": [ { "math": [ "u_prof_lowest", "==", "4" ] }, { "math": [ "u_prof_lowest", "==", "0" ] } ] } }, + "effect": [ + { + "u_run_inv_eocs": "all", + "search_data": [ { "wielded_only": true } ], + "true_eocs": [ + { + "id": "EOC_GET_WIELD_WEIGHT", + "effect": [ { "math": [ "u_stamina_delta", "=", "max( 50, round(stamcost(n_val('weight'), u_skill('melee'))))" ] } ] + } + ] + }, + { "math": [ "u_stamina_delta", "=", "round(stamrefund( u_stamina_delta, u_prof_lowest))" ] }, + { "math": [ "u_val('stamina')", "+=", "u_stamina_delta" ] } + ] + }, + { + "type": "jmath_function", + "id": "stamcost", + "num_args": 2, + "return": "_0 / 1000 / 16 + 50 - _1" + }, + { + "type": "jmath_function", + "id": "stamrefund", + "num_args": 2, + "return": " _0 * ( .0125 * ( 2 ^ _1))" + } +] From 0bc7ec4db0fa292b256a4f890824bf902a65ee9c Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:54:16 +0500 Subject: [PATCH 05/29] Add files via upload --- data/json/proficiencies/melee_weapons.json | 842 +++++++++++++++++++++ 1 file changed, 842 insertions(+) create mode 100644 data/json/proficiencies/melee_weapons.json diff --git a/data/json/proficiencies/melee_weapons.json b/data/json/proficiencies/melee_weapons.json new file mode 100644 index 0000000000000..92710d702a2f4 --- /dev/null +++ b/data/json/proficiencies/melee_weapons.json @@ -0,0 +1,842 @@ +[ + { + "type": "proficiency", + "id": "prof_auto_rifles_familiar", + "category": "prof_combat", + "name": { "str": "Long Gun CQC Familiarity" }, + "description": "You're familiar with how to grip a long gun correctly while striking someone with it.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_auto_rifles_pro", + "category": "prof_combat", + "name": { "str": "Long Gun CQC Proficiency" }, + "description": "You're proficient in striking with your rifle, both with and without a bayonet.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_auto_rifles_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_auto_rifles_master", + "category": "prof_combat", + "name": { "str": "Long Gun CQC Mastery" }, + "description": "You've mastered the art of the bayonet charge and know how to handle the gun itself as a weapon.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_auto_rifles_pro" ] + }, + { + "type": "proficiency", + "id": "prof_auto_pistols_familiar", + "category": "prof_combat", + "name": { "str": "Handgun CQC Familiarity" }, + "description": "You're able to use your handgun effectively as a melee weapon without shooting yourself.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_auto_pistols_pro", + "category": "prof_combat", + "name": { "str": "Hand Gun CQC Proficiency" }, + "description": "You're proficient in striking with your handgun and can do so precisely.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_auto_pistols_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_auto_pistols_master", + "category": "prof_combat", + "name": { "str": "Handgun CQC Mastery" }, + "description": "You're able to precisely strike your opponent with your handgun where it hurts the most.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_auto_pistols_pro" ] + }, + { + "type": "proficiency", + "id": "prof_knives_familiar", + "category": "prof_combat", + "name": { "str": "Knife Familiarity" }, + "description": "You've got a handling on gripping knives so they don't slip out of your hand.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_knives_pro", + "category": "prof_combat", + "name": { "str": "Knife Proficiency" }, + "description": "You handle your knife like a butcher, and are ready to prove it.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_knives_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_knives_master", + "category": "prof_combat", + "name": { "str": "Knife Mastery" }, + "description": "Your knife is like an extension of yourself, you wield it effortlessly.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_knives_pro" ] + }, + { + "type": "proficiency", + "id": "prof_shivs_familiar", + "category": "prof_combat", + "name": { "str": "Shiv Familiarity" }, + "description": "You know how to stab someone with something not typically intended to stab them with.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_shivs_pro", + "category": "prof_combat", + "name": { "str": "Shiv Proficiency" }, + "description": "You're pretty good at shanking your enemy, if you do say so yourself.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_knives_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_shivs_master", + "category": "prof_combat", + "name": { "str": "Shiv Mastery" }, + "description": "You've mastered the ancient and ignoble art of sticking someone with something small and pointy.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_knives_pro" ] + }, + { + "type": "proficiency", + "id": "prof_batons_familiar", + "category": "prof_combat", + "name": { "str": "Baton Familiarity" }, + "description": "You've learned to swing a baton without spraining your wrists.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_batons_pro", + "category": "prof_combat", + "name": { "str": "Baton Proficiency" }, + "description": "You know how strike with your baton so you get the most out of every blow.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_batons_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_batons_master", + "category": "prof_combat", + "name": { "str": "Baton Mastery" }, + "description": "You've mastered the use of all kinds of batons, and the fine art of beating someone with a stick.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_batons_pro" ] + }, + { + "type": "proficiency", + "id": "prof_medium_swords_familiar", + "category": "prof_combat", + "name": { "str": "Medium Sword Familiarity" }, + "description": "You have enough practice not to cut yourself with your own blade.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_medium_swords_pro", + "category": "prof_combat", + "name": { "str": "Medium Sword Proficiency" }, + "description": "The weight of your weapon feels as natural to you as if it were your own limb.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_medium_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_medium_swords_master", + "category": "prof_combat", + "name": { "str": "Medium Sword Mastery" }, + "description": "Your body has grown accustomed to the rigors of sword fighting, and can handle it for longer.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_medium_swords_master" ] + }, + { + "type": "proficiency", + "id": "prof_short_swords_familiar", + "category": "prof_combat", + "name": { "str": "Short Sword Familiarity" }, + "description": "You understand how to swing a short blade around. In theory, at least.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_short_swords_pro", + "category": "prof_combat", + "name": { "str": "Short Sword Proficiency" }, + "description": "You've trained your body against the strain of fighting with a short sword.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_short_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_short_swords_master", + "category": "prof_combat", + "name": { "str": "Short Sword Mastery" }, + "description": "You're able to cut through zombies with the same ease you cut through foliage.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_short_swords_pro" ] + }, + { + "type": "proficiency", + "id": "prof_quarterstaves_familiar", + "category": "prof_combat", + "name": { "str": "Quarterstaff Familiarity" }, + "description": "You're familiar with how to handle your staff and can use it without knocking yourself out.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_quarterstaves_pro", + "category": "prof_combat", + "name": { "str": "Quarterstaff Proficiency" }, + "description": "You're used to the balance of a staff and know how to handle it.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_quarterstaves_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_quarterstaves_master", + "category": "prof_combat", + "name": { "str": "Quarterstaff Mastery" }, + "description": "You've mastered the use of quarterstaves. Donatello would be proud.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_quarterstaves_pro" ] + }, + { + "type": "proficiency", + "id": "prof_fencing_weapons_familiar", + "category": "prof_combat", + "name": { "str": "Fencing Weapon Familiarity" }, + "description": "You've got the basics of lunging and parrying your opponent.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_fencing_weapons_pro", + "category": "prof_combat", + "name": { "str": "Fencing Weapon Proficiency" }, + "description": "You strike forth with ease after many hours of training.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_fencing_weapons_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_fencing_weapons_master", + "category": "prof_combat", + "name": { "str": "Fencing Weapon Mastery" }, + "description": "Before the Cataclysm, you could have been an Olympic fencer.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_fencing_weapons_pro" ] + }, + { + "type": "proficiency", + "id": "prof_claws_familiar", + "category": "prof_combat", + "name": { "str": "Claw Weapon Familiarity" }, + "description": "You've learned how to use claw weapons in combat.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_claws_pro", + "category": "prof_combat", + "name": { "str": "Claw Weapon Proficiency" }, + "description": "You're quite experienced with your claws by now.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_claws_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_claws_master", + "category": "prof_combat", + "name": { "str": "Claw Weapon Mastery" }, + "description": "You feel as dangerous as a tiger with your claws.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_claws_pro" ] + }, + { + "type": "proficiency", + "id": "prof_hooking_familiar", + "category": "prof_combat", + "name": { "str": "Hooking Weapon Familiarity" }, + "description": "You're getting a hang of hooking your opponents with your weapon.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_hooking_pro", + "category": "prof_combat", + "name": { "str": "Hooking Weapon Proficiency" }, + "description": "You could probably unhorse someone with your weapon with your skills.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_hooking_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_hooking_master", + "category": "prof_combat", + "name": { "str": "Hooking Weapon Mastery" }, + "description": "You've mastered the art of knocking someone to the ground with your weapon.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_hooking_pro" ] + }, + { + "type": "proficiency", + "id": "prof_polearms_familiar", + "category": "prof_combat", + "name": { "str": "Polearm Familiarity" }, + "description": "Dominant hand on the grip, the other on the haft, you're familiar with how to hold most polearms.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_polearms_pro", + "category": "prof_combat", + "name": { "str": "Polearm Proficiency" }, + "description": "You know how to keep your enemies at a distance with a polearm, and are able to defend yourself with one.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_polearms_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_polearms_master", + "category": "prof_combat", + "name": { "str": "Polearm Mastery" }, + "description": "You can handle the awkward balance of a polearm well, like it's an extension of your body.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_polearms_pro" ] + }, + { + "type": "proficiency", + "id": "prof_bionics_familiar", + "category": "prof_combat", + "name": { "str": "Bionic Weapon Familiarity" }, + "description": "Your body is getting used to the stress your bionic weapons put on it.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_bionics_pro", + "category": "prof_combat", + "name": { "str": "Bionic Weapon Proficiency" }, + "description": "You've become accustomed to the motions of your bionic weapons in combat.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_claws_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_bionics_master", + "category": "prof_combat", + "name": { "str": "Bionic Weapon Mastery" }, + "description": "Your bionic weapon feels as natural to you as your heartbeat.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_claws_pro" ] + }, + { + "type": "proficiency", + "id": "prof_spears_familiar", + "category": "prof_combat", + "name": { "str": "Spear Familiarity" }, + "description": "Non-dominant leg forward, you know the basics of impaling someone on a spear.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_spears_pro", + "category": "prof_combat", + "name": { "str": "Spear Proficiency" }, + "description": "Whether you're hunting boar or hunting zombies, you know how to stab with your spear.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_spear_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_spears_master", + "category": "prof_combat", + "name": { "str": "Spear Mastery" }, + "description": "You're in touch with your inner hunter-gatherer, able to keep up the hunt for longer.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_spear_pro" ] + }, + { + "type": "proficiency", + "id": "prof_thrusting_swords_familiar", + "category": "prof_combat", + "name": { "str": "Long Thrusting Sword Familiarity" }, + "description": "You're no stranger to thrusting your sword through zombies.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_thrusting_swords_pro", + "category": "prof_combat", + "name": { "str": "Long Thrusting Sword Proficiency" }, + "description": "You're able to gore someone on your sword like a pro.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_thrusting_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_thrusting_swords_master", + "category": "prof_combat", + "name": { "str": "Long Thrusting Sword Mastery" }, + "description": "You're a virtuoso with your sword, ready to deliver a swift and deadly thrust.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_thrusting_swords_pro" ] + }, + { + "type": "proficiency", + "id": "prof_long_swords_familiar", + "category": "prof_combat", + "name": { "str": "Long Sword Familiarity" }, + "description": "You know how to swing a longsword without chopping off your own foot.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_long_swords_pro", + "category": "prof_combat", + "name": { "str": "Long Sword Proficiency" }, + "description": "You're proficient with the use of long swords, and are deadly with one in your hands.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_long_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_long_swords_master", + "category": "prof_combat", + "name": { "str": "Long Sword Mastery" }, + "description": "You are a blade master of unparalleled skill. And they said anime wasn't real.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_long_swords_pro" ] + }, + { + "type": "proficiency", + "id": "prof_bionic_swords_familiar", + "category": "prof_combat", + "name": { "str": "Bionic Sword Familiarity" }, + "description": "You are able to operate your bionic sword without incident.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_bionic_swords_pro", + "category": "prof_combat", + "name": { "str": "Bionic Sword Proficiency" }, + "description": "Your bionic sword proficiency is satisfactory. You are able to use it without discomfort.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_bionic_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_bionic_swords_master", + "category": "prof_combat", + "name": { "str": "Bionic Sword Mastery" }, + "description": "Your capabilities with your bionic sword is the epitome of combat efficiency.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_bionic_swords_pro" ] + }, + { + "type": "proficiency", + "id": "prof_flails_familiar", + "category": "prof_combat", + "name": { "str": "Flail Familiarity" }, + "description": "You've learned how to hit your opponent instead of yourself with your flail.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_flails_pro", + "category": "prof_combat", + "name": { "str": "Flail Proficiency" }, + "description": "You're able to swing your flail with deadly precision, crushing through ribs and skulls alike.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_flails_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_flails_master", + "category": "prof_combat", + "name": { "str": "Flail Mastery" }, + "description": "You can make your flail dance like a ballerina, and hit like a truck.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_flails_pro" ] + }, + { + "type": "proficiency", + "id": "prof_maces_familiar", + "category": "prof_combat", + "name": { "str": "Mace Familiarity" }, + "description": "You've got the gist of bludgeoning your enemies.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_maces_pro", + "category": "prof_combat", + "name": { "str": "Mace Proficiency" }, + "description": "You swing your mace with dead efficiency.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_maces_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_maces_master", + "category": "prof_combat", + "name": { "str": "Mace Mastery" }, + "description": "Your strikes with a mace shatter skulls and pulp brains.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_maces_pro" ] + }, + { + "type": "proficiency", + "id": "prof_great_swords_familiar", + "category": "prof_combat", + "name": { "str": "Great Sword Familiarity" }, + "description": "You're not afraid to lift a heavy sword nor bring it down on someone's head.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_great_swords_pro", + "category": "prof_combat", + "name": { "str": "Great Sword Proficiency" }, + "description": "You are not afraid to swing big with a heavy sword.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_great_swords_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_great_swords_master", + "category": "prof_combat", + "name": { "str": "Great Sword Mastery" }, + "description": "You wield your blade like it was a modern day Caliburn.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_great_swords_pro" ] + }, + { + "type": "proficiency", + "id": "prof_great_hammers_familiar", + "category": "prof_combat", + "name": { "str": "Great Hammer Familiarity" }, + "description": "You can handle a big ol' hammer without dropping it on your toes.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_great_hammers_pro", + "category": "prof_combat", + "name": { "str": "Great Hammer Proficiency" }, + "description": "You're not afraid to put some muscle into it when you're swinging a hammer.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_great_hammers_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_great_hammers_master", + "category": "prof_combat", + "name": { "str": "Great Hammer Mastery" }, + "description": "You're a hammering juggernaut, ready to smash it all.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_great_hammers_pro" ] + }, + { + "type": "proficiency", + "id": "prof_great_axes_familiar", + "category": "prof_combat", + "name": { "str": "Great Axe Familiarity" }, + "description": "You're not quite a professional lumberjack, but you can handle an axe.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_great_axes_pro", + "category": "prof_combat", + "name": { "str": "Great Axe Proficiency" }, + "description": "You chop through bodies as easily as you chop through trees.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_great_axes_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_great_axes_master", + "category": "prof_combat", + "name": { "str": "Great Axe Mastery" }, + "description": "You're a post-apocalyptic Paul Bunyan, but it's not just wood you're chopping.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_great_axes_pro" ] + }, + { + "type": "proficiency", + "id": "prof_hand_axes_familiar", + "category": "prof_combat", + "name": { "str": "Hand Axe Familiarity" }, + "description": "You know the proper technique to use with a hand axe.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_hand_axes_pro", + "category": "prof_combat", + "name": { "str": "Hand Axe Proficiency" }, + "description": "You know how to use a hatchet safely and effectively.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_hand_axes_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_hand_axes_master", + "category": "prof_combat", + "name": { "str": "Hand Axe Mastery" }, + "description": "You're more than capable of using a hand axe to protect yourself.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_hand_axes_pro" ] + }, + { + "type": "proficiency", + "id": "prof_unarmed_familiar", + "category": "prof_combat", + "name": { "str": "Unarmed Technique Familiarity" }, + "description": "You know how to punch someone without hurting your wrists.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "8 h" + }, + { + "type": "proficiency", + "id": "prof_unarmed_pro", + "category": "prof_combat", + "name": { "str": "Unarmed Technique Proficiency" }, + "description": "You're able to pace yourself when you've got nothing else to fight with.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "16 h", + "required_proficiencies": [ "prof_unarmed_familiar" ] + }, + { + "type": "proficiency", + "id": "prof_unarmed_master", + "category": "prof_combat", + "name": { "str": "Unarmed Technique Mastery" }, + "description": "You're used to fighting with nothing and can fight unarmed for longer.", + "can_learn": true, + "default_time_multiplier": 1.5, + "default_skill_penalty": 0.2, + "time_to_learn": "32 h", + "required_proficiencies": [ "prof_unarmed_pro" ] + } +] From 599f0ff19fee457fd2458a740dec8bfa767ce70c Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:58:00 +0500 Subject: [PATCH 06/29] Update melee.json --- data/json/recipes/practice/melee.json | 912 ++++++++++++++++++++++++-- 1 file changed, 850 insertions(+), 62 deletions(-) diff --git a/data/json/recipes/practice/melee.json b/data/json/recipes/practice/melee.json index ea6bff802a396..6141c0c4de2e5 100644 --- a/data/json/recipes/practice/melee.json +++ b/data/json/recipes/practice/melee.json @@ -149,144 +149,932 @@ "//1": "A bunch of duct tape and scrap to repair the dummy with each training session.", "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] }, + { + "id": "prac_dancing", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "dancing", + "description": "Practice some dancing moves with your imaginary partner.", + "skill_used": "dodge", + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "book_learn": [ [ "mag_dodge", 0 ], [ "manual_dodge", 0 ] ], + "autolearn": [ [ "dodge", 2 ] ] + }, + { + "id": "prac_dodge_beg", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "dodge (beginner)", + "description": "Practice your dodging with some side hops, backsteps, and maybe a somersault or two to learn why you shouldn't somersault in a fight. Without someone attacking you to actually dodge all you can practice is footwork, but hopefully it'll help prevent you tripping over your shoelaces in a panic.", + "skill_used": "dodge", + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, + "autolearn": [ [ "dodge", 0 ] ] + }, + { + "id": "prac_unarmed_beg", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "unarmed (beginner)", + "description": "Do a bit of shadowboxing as practice just in case you're left without a weapon versus the undead. There's not much you can learn without someone to correct your mistakes, though.", + "skill_used": "unarmed", + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, + "autolearn": [ [ "unarmed", 0 ] ], + "proficiencies": [ { "proficiency": "prof_unarmed_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ] + }, + { + "id": "prac_unarmed_int", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "unarmed (intermediate)", + "description": "Learn how to throw a punch without breaking your wrist or kick without falling over with the help of a punching bag or training dummy.", + "skill_used": "unarmed", + "time": "1 h", + "practice_data": { "min_difficulty": 1, "max_difficulty": 2, "skill_limit": 3 }, + "autolearn": [ [ "unarmed", 3 ] ], + "book_learn": [ [ "mag_unarmed", 1 ], [ "manual_brawl", 1 ] ], + "proficiencies": [ + { "proficiency": "prof_unarmed_familiar", "required": true }, + { "proficiency": "prof_unarmed_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "pseudo_training_dummy_light", "pseudo_punching_bag" ] ] + }, + { + "id": "prac_cutting_beg_long_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "long swords (beginner)", + "description": "Drill the fundamentals of using a longsword.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], + "proficiencies": [ { "proficiency": "prof_long_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "bokken", "katana", "longsword" ] ] + }, + { + "id": "prac_cutting_int_long_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "long swords (intermediate)", + "description": "Hone your skills with a longsword against a dummy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_long_swords_familiar", "required": true }, + { "proficiency": "prof_long_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "katana", "longsword" ], [ "water", "water_clean" ] ], + "//1": "Standard Blade Training Cost", + "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] + }, + { + "id": "prac_cutting_beg_great_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great swords (beginner)", + "description": "Practice swinging your great sword against an imaginary opponent.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], + "proficiencies": [ { "proficiency": "prof_great_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "zweihander", "sword_wood_large", "nodachi", "kriegsmesser" ] ] + }, + { + "id": "prac_cutting_int_great_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great swords (intermediate)", + "description": "Practice using your sword's momentum to your advantage against a dummy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_great_swords_familiar", "required": true }, + { "proficiency": "prof_great_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "zweihander", "nodachi", "kriegsmesser" ], [ "water", "water_clean" ] ], + "//1": "Standard Blade Training Cost", + "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] + }, + { + "id": "prac_cutting_beg_bionic_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "bionic swords (beginner)", + "description": "Get a feel for the weight, balance, and length of your bionic sword.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_bionic_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "bio_blade_weapon" ] ] + }, + { + "id": "prac_cutting_int_bionic_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "bionic swords (intermediate)", + "description": "Practice fighting with your bionic sword against a dummy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_bionic_swords_familiar", "required": true }, + { "proficiency": "prof_bionic_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "bio_blade_weapon" ], [ "water", "water_clean" ] ], + "//1": "Standard Blade Training Cost", + "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] + }, + { + "id": "prac_cutting_beg_great_axe", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great axes (beginner)", + "description": "Drill keeping the proper form while swinging a heavy axe.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_great_axes_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "battleaxe", "fire_ax", "ax", "primitive_axe" ] ] + }, + { + "id": "prac_cutting_int_great_axe", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great axes (intermediate)", + "description": "Engage in advanced exercises and drills using a heavy axe.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_great_axes_familiar", "required": true }, + { "proficiency": "prof_great_axes_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "battleaxe", "fire_ax", "ax" ], [ "pseudo_training_dummy_heavy" ] ], + "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] + }, + { + "id": "prac_cutting_beg_hand_axe", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "hand axes (beginner)", + "description": "Practice your chopping motions against an imaginary assailant.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_hand_axes_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "hatchet", "copper_ax", "iceaxe", "crash_axe" ] ] + }, + { + "id": "prac_cutting_int_hand_axe", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "hand axes (intermediate)", + "description": "Practice advanced methods of using a hand axe in combat, such as pommel strikes and backswings.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_hand_axes_familiar", "required": true }, + { "proficiency": "prof_hand_axes_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "hatchet", "copper_ax", "iceaxe", "crash_axe" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + }, + { + "id": "prac_bashing_beg_great_hammer", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great hammers (beginner)", + "description": "Work on handling the weight of your great hammer while swinging it.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_great_hammers_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "club_wooden_large", "mace_pipe_large", "warhammer", "hammer_sledge", "hammer_sledge_heavy" ] ] + }, + { + "id": "prac_bashing_int_great_hammer", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "great hammers (intermediate)", + "description": "Practice your strikes with a great hammer, crushing the dummy without throwing yourself off balance.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_great_hammers_familiar", "required": true }, + { "proficiency": "prof_great_hammers_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "warhammer", "hammer_sledge", "hammer_sledge_heavy" ], [ "pseudo_training_dummy_heavy" ] ], + "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] + }, + { + "id": "prac_bashing_beg_flail", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "flails (beginner)", + "description": "Practice swinging a flail around and drill your endurance by keeping your flail in motion for long period of time.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_flails_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "2h_flail_wood", "2h_flail_steel" ] ] + }, + { + "id": "prac_bashing_int_flail", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "flails (intermediate)", + "description": "Refine your understanding of the fine art of crushing skulls with a flail and a dummy.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_flails_familiar", "required": true }, + { "proficiency": "prof_flails_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "2h_flail_wood", "2h_flail_steel" ], [ "pseudo_training_dummy_heavy" ] ], + "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] + }, + { + "id": "prac_bashing_beg_mace", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "maces (beginner)", + "description": "Work at swinging a mace around and making it land where you want.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_maces_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "club_wooden", "mace", "mace_simple", "mace_trench", "morningstar" ] ] + }, + { + "id": "prac_bashing_int_mace", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "maces (intermediate)", + "description": "Practice advanced skull splitting techniques.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_maces_familiar", "required": true }, + { "proficiency": "prof_maces_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "mace", "mace_trench", "morningstar" ], [ "pseudo_training_dummy_heavy" ] ], + "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] + }, { "id": "prac_stabbing_beg_spear", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "spears (beginner)", - "description": "Practice the basics of spears, the most popular melee weapon throughout history. Learn the footwork, how to thrust with power, where to place your hands, and the right way to hold the damn thing. Dominant hand back, non-dominant forward!", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "spears (beginner)", + "description": "Practice the basics of spears, the most popular melee weapon throughout history. Learn the footwork, how to thrust with power, where to place your hands, and the right way to hold the damn thing. Dominant hand back, non-dominant forward!", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "stabbing", 2 ] ], + "book_learn": [ [ "manual_stabbing", 0 ] ], + "//": "Long stick works as a spear here, no tip is needed to practice form.", + "proficiencies": [ { "proficiency": "prof_spears_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "stick_long", "pointy_stick_long", "spear_shaft", "pitchfork", "simple_spear_pipe", "spear_pipe" ] ] + }, + { + "id": "prac_stabbing_int_spear", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "spears (intermediate)", + "description": "Practice advanced spear moves and accurate thrusts against a training dummy. It's not glamorous, but spears were the workhorses of armed combat for millenia with good reason.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "manual_stabbing", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_spears_familiar", "required": true }, + { "proficiency": "prof_spears_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "stick_long", "pointy_stick_long", "spear_shaft", "pitchfork", "simple_spear_pipe", "spear_pipe" ], + [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] + ] + }, + { + "id": "prac_stabbing_beg_thrust", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "long thrusting swords (beginner)", + "description": "Practice switching between different ways of gripping your sword.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "stabbing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_thrusting_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "estoc", "longsword", "zweihander" ] ] + }, + { + "id": "prac_stabbing_int_thrust", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "long thrusting swords (intermediate)", + "description": "Drill yourself in using your sword as a thrusting weapon against a dummy.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_thrusting_swords_familiar", "required": true }, + { "proficiency": "prof_thrusting_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "estoc", "longsword", "zweihander" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + }, + { + "id": "prac_bashing_beg_rifle", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "rifle CQC (beginner)", + "description": "Practice striking with your long gun.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_auto_rifles_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "qualities": [ { "id": "RIFLE", "level": 1 } ] + }, + { + "id": "prac_bashing_int_rifle", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "rifle CQC (intermediate)", + "description": "Practice your muzzle thump and buttstroke against a dummy.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_auto_rifles_familiar", "required": true }, + { "proficiency": "prof_auto_rifles_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "qualities": [ { "id": "RIFLE", "level": 1 } ], + "tools": [ [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + }, + { + "id": "prac_bashing_beg_pistol", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "pistol CQC (beginner)", + "description": "Practice safely swinging your pistol around like a club.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "proficiencies": [ { "proficiency": "prof_auto_pistols_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "qualities": [ { "id": "PISTOL", "level": 1 } ] + }, + { + "id": "prac_bashing_int_pistol", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "pistol CQC (intermediate)", + "description": "Pistol whip a dummy repeatedly until you've got it down.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_auto_pistols_familiar", "required": true }, + { "proficiency": "prof_auto_pistols_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "qualities": [ { "id": "PISTOL", "level": 1 } ], + "tools": [ [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + }, + { + "id": "prac_stabbing_beg_knife", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "knives (beginner)", + "description": "Practice the brutal art of shanking the shit out of something until it dies. Learn the form, where and how to stab to avoid your knife glancing off bone, and whether you should actually hold the knife in reverse grip. (It depends.)", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "manual_stabbing", 0 ] ], - "//": "Long stick works as a spear here, no tip is needed to practice form.", - "tools": [ [ "stick_long", "spear_shaft" ] ] + "book_learn": [ [ "manual_cutting", 1 ], [ "manual_knives", 0 ] ], + "//": "Too many damn knives. Someone else can flesh out the list if they want, but this should be enough that you'll almost always have at least one of these before you get others.", + "proficiencies": [ { "proficiency": "prof_knives_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ] ] + }, + { + "id": "prac_stabbing_int_knife", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "knives (intermediate)", + "description": "Get in touch with your inner commando and practice some advanced knife-fighting techniques on a training dummy.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "manual_cutting", 3 ], [ "manual_knives", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_knives_familiar", "required": true }, + { "proficiency": "prof_knives_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ], + [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] + ] + }, + { + "id": "prac_stabbing_beg_shiv", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "shivs (beginner)", + "description": "You wouldn't think it, but there is more to stabbing someone with something small and pointy. Practice shanking an imaginary enemy where it hurts most.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "stabbing", 2 ] ], + "book_learn": [ [ "manual_knives", 1 ], [ "manual_melee", 1 ] ], + "proficiencies": [ { "proficiency": "prof_shivs_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "screwdriver", "glass_shiv", "sharp_toothbrush", "scissors_child", "scissors_medical", "scissors" ] ] + }, + { + "id": "prac_stabbing_int_shiv", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "shivs (intermediate)", + "description": "Practice shanking the ever living hell out of a dummy to hone your accuracy and grip while you gut someone.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "manual_knives", 3 ], [ "manual_melee", 3 ] ], + "proficiencies": [ + { "proficiency": "prof_shivs_familiar", "required": true }, + { "proficiency": "prof_shivs_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "screwdriver", "sharp_toothbrush", "scissors_child", "scissors_medical", "scissors" ], + [ "pseudo_training_dummy_light" ] + ] + }, + { + "id": "prac_bashing_beg_baton", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "batons (beginner)", + "description": "Practice the basics of using a baton or small club in combat.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "book_learn": [ [ "mag_bashing", 1 ], [ "manual_bashing", 0 ] ], + "proficiencies": [ { "proficiency": "prof_batons_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "tonfa", "baton-extended", "PR24-extended", "cudgel", "stick", "pipe" ] ] + }, + { + "id": "prac_bashing_int_baton", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "batons (intermediate)", + "description": "Train your backswing, overhead strike, and up strike against a dummy.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "book_learn": [ [ "mag_bashing", 3 ], [ "manual_bashing", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_batons_familiar", "required": true }, + { "proficiency": "prof_batons_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "tonfa", "baton-extended", "PR24-extended", "cudgel", "stick", "pipe" ], + [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] + ] + }, + { + "id": "prac_cutting_beg_med_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "medium swords (beginner)", + "description": "Footwork is key, practice dancing around an imaginary opponent with your sword.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], + "proficiencies": [ { "proficiency": "prof_medium_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "arming_sword", "cavalry_sabre", "cutlass", "sword_wood", "sword_crude", "sword_sheets_welded" ] ] + }, + { + "id": "prac_cutting_int_med_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "medium swords (intermediate)", + "description": "Perform solo drills to practice advanced techniques, such as feints and moulinet cuts.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_medium_swords_familiar", "required": true }, + { "proficiency": "prof_medium_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "arming_sword", "cavalry_sabre", "cutlass", "sword_sheets_welded" ], [ "water", "water_clean" ] ], + "//1": "Standard Blade Training Cost", + "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] + }, + { + "id": "prac_cutting_beg_short_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "short swords (beginner)", + "description": "Practice putting your weight behind your strike, cutting through an imaginary enemy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], + "proficiencies": [ { "proficiency": "prof_short_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "sword_xiphos", "khopesh", "machete", "survivor_machete" ] ] + }, + { + "id": "prac_cutting_int_short_sword", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "short swords (intermediate)", + "description": "Practice drills in delivering quick and precise strikes against a dummy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_short_swords_familiar", "required": true }, + { "proficiency": "prof_short_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "sword_xiphos", "khopesh", "machete", "survivor_machete" ], [ "water", "water_clean" ] ], + "//1": "Standard Blade Training Cost", + "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] + }, + { + "id": "prac_bashing_beg_staff", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "quarterstaves (beginner)", + "description": "Practice swinging your staff, getting used to the balance and weight.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "bashing", 2 ] ], + "book_learn": [ [ "mag_bashing", 1 ], [ "manual_bashing", 0 ] ], + "proficiencies": [ { "proficiency": "prof_quarterstaves_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "bo", "q_staff", "i_staff", "mop", "stick_long" ] ] + }, + { + "id": "prac_bashing_int_staff", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "quarterstaves (intermediate)", + "description": "Practice using your staff against a dummy, familiarizing yourself with its length.", + "skill_used": "bashing", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "bashing", 4 ] ], + "book_learn": [ [ "mag_bashing", 3 ], [ "manual_bashing", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_quarterstaves_familiar", "required": true }, + { "proficiency": "prof_quarterstaves_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "bo", "q_staff", "i_staff", "mop", "stick_long" ], + [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] + ] }, { "id": "prac_stabbing_beg_fencing", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "fencing", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "fencing (beginner)", "description": "Practice the basics of the noble art of fencing. Learn how to angle your body, aim your lunges, and parry pretend swords. Not that the undead are using swords. Hopefully.", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "mag_stabbing", 0 ] ], + "book_learn": [ [ "mag_stabbing", 1 ] ], "//": "Basically anything that works with the fencing MA should work here, but the list is truncated for my sanity.", + "proficiencies": [ { "proficiency": "prof_fencing_weapons_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], "tools": [ [ "cudgel", "fencing_epee", "fencing_foil", "fencing_sabre" ] ] }, { - "id": "prac_stabbing_beg_knife", + "id": "prac_stabbing_int_fencing", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "knives (beginner)", - "description": "Practice the brutal art of shanking the shit out of something until it dies. Learn the form, where and how to stab to avoid your knife glancing off bone, and whether you should actually hold the knife in reverse grip. (It depends.)", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "fencing (intermediate)", + "description": "Further develop your footwork and timing by fighting against a dummy. En garde!", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "mag_stabbing", 3 ], [ "manual_fencing", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_fencing_weapons_familiar", "required": true }, + { "proficiency": "prof_fencing_weapons_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ + [ "cudgel", "fencing_epee", "fencing_foil", "fencing_sabre" ], + [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] + ] + }, + { + "id": "prac_cutting_beg_claw", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "claw weapons (beginner)", + "description": "Practice the basics of fighting with claw weapon by shadowboxing while using them.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "manual_cutting", 0 ], [ "manual_knives", 0 ] ], - "//": "Too many damn knives. Someone else can flesh out the list if they want, but this should be enough that you'll almost always have at least one of these before you get others.", - "tools": [ [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ] ] + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_claws_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "bagh_nakha", "bio_claws_weapon" ] ] }, { - "id": "prac_stabbing_int_spear", + "id": "prac_cutting_int_claw", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "spears (intermediate)", - "description": "Practice advanced spear moves and accurate thrusts against a training dummy. It's not glamorous, but spears were the workhorses of armed combat for millenia with good reason.", - "skill_used": "stabbing", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "claw weapons (intermediate)", + "description": "Practice your strikes against a dummy, focusing on speed, accuracy, and power.", + "skill_used": "cutting", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "manual_stabbing", 2 ] ], - "tools": [ [ "stick_long", "spear_shaft" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_claws_familiar", "required": true }, + { "proficiency": "prof_claws_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "bagh_nakha", "bio_claws_weapon" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] }, { - "id": "prac_stabbing_int_knife", + "id": "prac_cutting_beg_hooking", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "knives (intermediate)", - "description": "Get in touch with your inner commando and practice some advanced knife-fighting techniques on a training dummy.", - "skill_used": "stabbing", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "hooking weapons (beginner)", + "description": "Practice tripping an imaginary with the hook of your weapon in between swings.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], + "time": "1 h", + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_hooking_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "fire_ax", "battleaxe", "brush_axe", "bronze_brush_axe", "primitive_axe", "scythe", "ax", "hoe" ] ] + }, + { + "id": "prac_cutting_int_hooking", + "type": "practice", + "activity_level": "BRISK_EXERCISE", + "category": "CC_PRACTICE", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "hooking weapons (intermediate)", + "description": "Train by hooking a dummy and knocking it to the ground while practicing your footwork.", + "skill_used": "cutting", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "manual_cutting", 2 ], [ "manual_knives", 2 ] ], + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_hooking_familiar", "required": true }, + { "proficiency": "prof_hooking_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], "tools": [ - [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ], + [ "fire_ax", "battleaxe", "brush_axe", "bronze_brush_axe", "scythe", "ax", "hoe" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] }, { - "id": "prac_unarmed_beg", + "id": "prac_stabbing_beg_polearm", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "unarmed (beginner)", - "description": "Do a bit of shadowboxing as practice just in case you're left without a weapon versus the undead. There's not much you can learn without someone to correct your mistakes, though.", - "skill_used": "unarmed", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "polearms (beginner)", + "description": "Practice slicing and stabbing with your polearm against an imaginary opponent.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, - "autolearn": [ [ "unarmed", 0 ] ] + "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, + "autolearn": [ [ "stabbing", 2 ] ], + "book_learn": [ [ "mag_stabbing", 1 ], [ "manual_stabbing", 0 ] ], + "proficiencies": [ { "proficiency": "prof_polearms_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "//": "Top-heavy reach weapons could all be used to train polearms", + "tools": [ [ "pike", "halberd", "brush_axe", "stick_long" ] ] }, { - "id": "prac_unarmed_int", + "id": "prac_stabbing_int_polearm", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "unarmed (intermediate)", - "description": "Learn how to throw a punch without breaking your wrist or kick without falling over with the help of a punching bag or training dummy.", - "skill_used": "unarmed", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "polearms (intermediate)", + "description": "Perform solo exercises against a dummy to train your distance management and endurance with a polearm.", + "skill_used": "stabbing", + "skills_required": [ [ "melee", 1 ] ], "time": "1 h", - "practice_data": { "min_difficulty": 1, "max_difficulty": 2, "skill_limit": 3 }, - "autolearn": [ [ "unarmed", 3 ] ], - "book_learn": [ [ "mag_unarmed", 1 ], [ "manual_brawl", 1 ] ], - "tools": [ [ "pseudo_training_dummy_light", "pseudo_punching_bag" ] ] + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "mag_stabbing", 3 ], [ "manual_stabbing", 2 ] ], + "proficiencies": [ + { "proficiency": "prof_polearms_familiar", "required": true }, + { "proficiency": "prof_polearms_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "pike", "halberd", "brush_axe", "stick_long" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] }, { - "id": "prac_dancing", + "id": "prac_cutting_beg_bionics", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "dancing", - "description": "Practice some dancing moves with your imaginary partner.", - "skill_used": "dodge", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "bionic weapons (beginner)", + "description": "Perform basic fighting drills to learn to fight with your new bionic weapons.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "book_learn": [ [ "mag_dodge", 0 ], [ "manual_dodge", 0 ] ] + "autolearn": [ [ "cutting", 2 ] ], + "proficiencies": [ { "proficiency": "prof_bionics_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], + "tools": [ [ "bio_blade_weapon", "bio_claws_weapon" ] ] }, { - "id": "prac_dodge_beg", + "id": "prac_cutting_int_bionics", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_COMBAT", - "name": "dodge (beginner)", - "description": "Practice your dodging with some side hops, backsteps, and maybe a somersault or two to learn why you shouldn't somersault in a fight. Without someone attacking you to actually dodge all you can practice is footwork, but hopefully it'll help prevent you tripping over your shoelaces in a panic.", - "skill_used": "dodge", + "subcategory": "CSC_PRACTICE_MELEE", + "name": "bionic weapons (intermediate)", + "description": "Drill advanced methods of using your bionic weapons, with the help of a dummy.", + "skill_used": "cutting", + "skills_required": [ [ "melee", 1 ] ], "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, - "autolearn": [ [ "dodge", 0 ] ] + "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, + "autolearn": [ [ "cutting", 4 ] ], + "proficiencies": [ + { "proficiency": "prof_bionics_familiar", "required": true }, + { "proficiency": "prof_bionics_pro", "time_multiplier": 2, "skill_penalty": 0 } + ], + "tools": [ [ "bio_blade_weapon", "bio_claws_weapon" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] } ] From 77e5f771fa5b9b0b881f518fa78fef9ac8f753c8 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:43:55 +0500 Subject: [PATCH 07/29] Delete data/json/EOCs/melee_eocs.json --- data/json/EOCs/melee_eocs.json | 988 --------------------------------- 1 file changed, 988 deletions(-) delete mode 100644 data/json/EOCs/melee_eocs.json diff --git a/data/json/EOCs/melee_eocs.json b/data/json/EOCs/melee_eocs.json deleted file mode 100644 index 00be31ed12531..0000000000000 --- a/data/json/EOCs/melee_eocs.json +++ /dev/null @@ -1,988 +0,0 @@ -[ - { - "type": "effect_on_condition", - "id": "EOC_MELEE_PROF_ATTACK_MONSTER", - "//": "If the player attacks a monster, and hits, run EOC to check what weapon type they're using.", - "global": false, - "eoc_type": "EVENT", - "required_event": "character_melee_attacks_monster", - "condition": { "math": [ "_hits", "==", "1" ] }, - "effect": [ { "run_eocs": "EOC_MELEE_PROF_WHAT_CATEGORY" } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_MELEE_PROF_ATTACK_CHARACTER", - "//": "If the player attacks a character, run EOC to check what weapon type they're using.", - "global": false, - "eoc_type": "EVENT", - "required_event": "character_melee_attacks_character", - "condition": { "math": [ "_hits", "==", "1" ] }, - "effect": [ { "run_eocs": "EOC_MELEE_PROF_WHAT_CATEGORY" } ] - }, - { - "type": "effect_on_condition", - "id": "EOC_MELEE_PROF_WHAT_CATEGORY", - "//": "Checks what weapon categories are held, each increments experience, and defines lowest proficiency level of held weapon in the sub-EoCs.", - "global": false, - "effect": [ - { "math": [ "u_prof_lowest", "=", "4" ] }, - { - "run_eocs": [ - "IS_AUTO_RIFLES", - "IS_AUTO_PISTOLS", - "IS_KNIVES", - "IS_BATONS", - "IS_FLAILS", - "IS_MACES", - "IS_MEDIUM_SWORDS", - "IS_SHORT_SWORDS", - "IS_LONG_SWORDS", - "IS_QUARTERSTAVES", - "IS_CLAWS", - "IS_SHIVS", - "IS_HOOKING", - "IS_SPEARS", - "IS_POLEARMS", - "IS_FENCING", - "IS_THRUSTING_SWORDS", - "IS_BIONICS", - "IS_BIONIC_SWORDS", - "IS_GREAT_SWORDS", - "IS_GREAT_HAMMERS", - "IS_GREAT_AXES", - "IS_HAND_AXES", - "IS_UNARMED" - ] - }, - { "run_eocs": "EOC_MELEE_PROF_BENEFIT" } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_AUTO_RIFLES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "AUTOMATIC_RIFLES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_rifles_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_AUTO_PISTOLS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "AUTOMATIC_PISTOLS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_auto_pistols_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_KNIVES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "KNIVES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_knives_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_BATONS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "BATONS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_batons_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_FLAILS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "FLAILS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_flails_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_MACES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "MACES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_macess_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_maces_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_MEDIUM_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "MEDIUM_SWORDS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_medium_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_SHORT_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "SHORT_SWORDS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_short_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_LONG_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "LONG_SWORDS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_long_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_QUARTERSTAVES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "QUARTERSTAVES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_quaterstaves_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_quaterstaves_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_quarterstaves_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_CLAWS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "CLAWS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_claws_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_SHIVS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "SHIVS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_shivs_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_HOOKING", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "HOOKING_WEAPONRY" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_hooking_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_SPEARS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "SPEARS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_spears_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_POLEARMS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "POLEARMS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_polearms_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_FENCING", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "FENCING_WEAPONRY" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { - "math": [ "u_val('proficiency', 'proficiency_id: prof_fencing_weaponry_familiar', 'format: 1600')", "+=", "rand(4)" ] - }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_THRUSTING_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "LONG_THRUSTING_SWORD" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_thrusting_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_BIONICS", - "global": false, - "condition": { "or": [ { "u_has_wielded_with_weapon_category": "BIONIC_WEAPONRY" }, { "u_using_martial_art": "style_biojutsu" } ] }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionics_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_BIONIC_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "BIONIC_SWORDS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_bionic_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_GREAT_SWORDS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "GREAT_SWORDS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_swords_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_GREAT_HAMMERS", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "GREAT_HAMMERS" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_hammers_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_GREAT_AXES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "GREAT_AXES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_HAND_AXES", - "global": false, - "condition": { "u_has_wielded_with_weapon_category": "HAND_AXES" }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_great_axes_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "IS_UNARMED", - "global": false, - "condition": { - "or": [ - { "and": [ { "not": "u_can_drop_weapon" }, { "not": { "u_has_wielded_with_weapon_category": "BIONIC_WEAPONS" } } ] }, - { "u_using_martial_art": "style_kicks" } - ] - }, - "effect": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_familiar', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_pro', 'format: percent')", ">=", "100" ] }, - "then": [ - { - "if": { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_master', 'format: percent')", ">=", "100" ] }, - "then": [ { "math": [ "u_prof_level", "=", "3" ] }, { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_master', 'format: 6400')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "2" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_pro', 'format: 3200')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "1" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ], - "else": [ - { "math": [ "u_val('proficiency', 'proficiency_id: prof_unarmed_familiar', 'format: 1600')", "+=", "rand(4)" ] }, - { "math": [ "u_prof_level", "=", "0" ] }, - { "math": [ "u_prof_lowest", "=", "min(u_prof_level, u_prof_lowest)" ] } - ] - } - ] - }, - { - "type": "effect_on_condition", - "id": "EOC_MELEE_PROF_BENEFIT", - "//": "Refunds stamina based on the presumed model of stamina cost: [ (((Item Weight / 16) + 50 ) * -1) + Melee Skill ]. This excludes the stance modifier, due to not being able to detect if the character is crouching at time of writing. ", - "global": false, - "condition": { "not": { "or": [ { "math": [ "u_prof_lowest", "==", "4" ] }, { "math": [ "u_prof_lowest", "==", "0" ] } ] } }, - "effect": [ - { - "u_run_inv_eocs": "all", - "search_data": [ { "wielded_only": true } ], - "true_eocs": [ - { - "id": "EOC_GET_WIELD_WEIGHT", - "effect": [ { "math": [ "u_stamina_delta", "=", "max( 50, round(stamcost(n_val('weight'), u_skill('melee'))))" ] } ] - } - ] - }, - { "math": [ "u_stamina_delta", "=", "round(stamrefund( u_stamina_delta, u_prof_lowest))" ] }, - { "math": [ "u_val('stamina')", "+=", "u_stamina_delta" ] } - ] - }, - { - "type": "jmath_function", - "id": "stamcost", - "num_args": 2, - "return": "_0 / 1000 / 16 + 50 - _1" - }, - { - "type": "jmath_function", - "id": "stamrefund", - "num_args": 2, - "return": " _0 * ( .0125 * ( 2 ^ _1))" - } -] From 0ef79716649e3a409cde8ebe2b0aeb229714f48f Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:45:13 +0500 Subject: [PATCH 08/29] Delete data/json/mapgen/map_extras/laststand.json --- data/json/mapgen/map_extras/laststand.json | 74 ---------------------- 1 file changed, 74 deletions(-) delete mode 100644 data/json/mapgen/map_extras/laststand.json diff --git a/data/json/mapgen/map_extras/laststand.json b/data/json/mapgen/map_extras/laststand.json deleted file mode 100644 index 6952e46ad8043..0000000000000 --- a/data/json/mapgen/map_extras/laststand.json +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "type": "monstergroup", - "name": "GROUP_LAST_STAND", - "default": "mon_null", - "monsters": [ - { "monster": "mon_civilian_police", "weight": 1, "cost_multiplier": 1, "ends": "5 days" }, - { "monster": "mon_civilian_zombiefighter", "weight": 4, "cost_multiplier": 1, "ends": "5 days" } - ] - }, - { - "type": "mapgen", - "method": "json", - "update_mapgen_id": "mx_laststand", - "object": { - "rows": [ - " ", - " ", - " ", - " ", - " ################## ", - " ################## ", - " ################## ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ################## ", - " ################## ", - " ################## ", - " ", - " ", - " ", - " ", - " " - ], - "furniture": { - "#": [ - [ "f_barricade_road", 10 ], - [ "f_sandbag_half", 10 ], - [ "f_earthbag_half", 10 ], - [ "f_gravelbag_half", 10 ], - [ "f_table", 10 ], - [ "f_bench", 10 ], - "f_55gal_firebarrel", - "f_30gal_firebarrel", - "f_pallet_brick", - "f_pallet_cement", - "f_stack_plank", - "f_metal_table", - "f_armchair", - "f_chair", - "f_rack", - "f_locker", - "f_displaycase", - "f_recycle_bin", - "f_trashcan", - "f_metal_trashcan", - "f_rubble", - "f_wreckage", - [ "f_null", 150 ] - ] - }, - "place_monster": [ { "group": "GROUP_LAST_STAND", "x": [ 6, 17 ], "y": [ 6, 16 ], "chance": 100, "repeat": [ 10, 15 ] } ], - "place_loot": [ { "group": "trash", "x": [ 6, 17 ], "y": [ 6, 16 ], "repeat": [ 5, 10 ] } ], - "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ] - } - } -] From a27e5516b37c5936f0e65f5a9bbe67ce7f08ce02 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:46:16 +0500 Subject: [PATCH 09/29] Add files via upload NetSysFire <59517351+NetSysFire@users.noreply.github.com> --- data/json/mapgen/map_extras/laststand.json | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 data/json/mapgen/map_extras/laststand.json diff --git a/data/json/mapgen/map_extras/laststand.json b/data/json/mapgen/map_extras/laststand.json new file mode 100644 index 0000000000000..6952e46ad8043 --- /dev/null +++ b/data/json/mapgen/map_extras/laststand.json @@ -0,0 +1,74 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_LAST_STAND", + "default": "mon_null", + "monsters": [ + { "monster": "mon_civilian_police", "weight": 1, "cost_multiplier": 1, "ends": "5 days" }, + { "monster": "mon_civilian_zombiefighter", "weight": 4, "cost_multiplier": 1, "ends": "5 days" } + ] + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "mx_laststand", + "object": { + "rows": [ + " ", + " ", + " ", + " ", + " ################## ", + " ################## ", + " ################## ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ################## ", + " ################## ", + " ################## ", + " ", + " ", + " ", + " ", + " " + ], + "furniture": { + "#": [ + [ "f_barricade_road", 10 ], + [ "f_sandbag_half", 10 ], + [ "f_earthbag_half", 10 ], + [ "f_gravelbag_half", 10 ], + [ "f_table", 10 ], + [ "f_bench", 10 ], + "f_55gal_firebarrel", + "f_30gal_firebarrel", + "f_pallet_brick", + "f_pallet_cement", + "f_stack_plank", + "f_metal_table", + "f_armchair", + "f_chair", + "f_rack", + "f_locker", + "f_displaycase", + "f_recycle_bin", + "f_trashcan", + "f_metal_trashcan", + "f_rubble", + "f_wreckage", + [ "f_null", 150 ] + ] + }, + "place_monster": [ { "group": "GROUP_LAST_STAND", "x": [ 6, 17 ], "y": [ 6, 16 ], "chance": 100, "repeat": [ 10, 15 ] } ], + "place_loot": [ { "group": "trash", "x": [ 6, 17 ], "y": [ 6, 16 ], "repeat": [ 5, 10 ] } ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ] + } + } +] From 638a4f12c7cacf473961c50e96f7a6feb8b46a27 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:47:02 +0500 Subject: [PATCH 10/29] Delete data/json/mapgen/map_extras/laststand.json --- data/json/mapgen/map_extras/laststand.json | 74 ---------------------- 1 file changed, 74 deletions(-) delete mode 100644 data/json/mapgen/map_extras/laststand.json diff --git a/data/json/mapgen/map_extras/laststand.json b/data/json/mapgen/map_extras/laststand.json deleted file mode 100644 index 6952e46ad8043..0000000000000 --- a/data/json/mapgen/map_extras/laststand.json +++ /dev/null @@ -1,74 +0,0 @@ -[ - { - "type": "monstergroup", - "name": "GROUP_LAST_STAND", - "default": "mon_null", - "monsters": [ - { "monster": "mon_civilian_police", "weight": 1, "cost_multiplier": 1, "ends": "5 days" }, - { "monster": "mon_civilian_zombiefighter", "weight": 4, "cost_multiplier": 1, "ends": "5 days" } - ] - }, - { - "type": "mapgen", - "method": "json", - "update_mapgen_id": "mx_laststand", - "object": { - "rows": [ - " ", - " ", - " ", - " ", - " ################## ", - " ################## ", - " ################## ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ### ### ", - " ################## ", - " ################## ", - " ################## ", - " ", - " ", - " ", - " ", - " " - ], - "furniture": { - "#": [ - [ "f_barricade_road", 10 ], - [ "f_sandbag_half", 10 ], - [ "f_earthbag_half", 10 ], - [ "f_gravelbag_half", 10 ], - [ "f_table", 10 ], - [ "f_bench", 10 ], - "f_55gal_firebarrel", - "f_30gal_firebarrel", - "f_pallet_brick", - "f_pallet_cement", - "f_stack_plank", - "f_metal_table", - "f_armchair", - "f_chair", - "f_rack", - "f_locker", - "f_displaycase", - "f_recycle_bin", - "f_trashcan", - "f_metal_trashcan", - "f_rubble", - "f_wreckage", - [ "f_null", 150 ] - ] - }, - "place_monster": [ { "group": "GROUP_LAST_STAND", "x": [ 6, 17 ], "y": [ 6, 16 ], "chance": 100, "repeat": [ 10, 15 ] } ], - "place_loot": [ { "group": "trash", "x": [ 6, 17 ], "y": [ 6, 16 ], "repeat": [ 5, 10 ] } ], - "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ] - } - } -] From 5a0e0da68c463e786dcd8bb821a2bdd7698951cc Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:47:38 +0500 Subject: [PATCH 11/29] Add files via upload Co-authored-by: NetSysFire <59517351+NetSysFire@users.noreply.github.com> --- data/json/mapgen/map_extras/laststand.json | 74 ++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 data/json/mapgen/map_extras/laststand.json diff --git a/data/json/mapgen/map_extras/laststand.json b/data/json/mapgen/map_extras/laststand.json new file mode 100644 index 0000000000000..6952e46ad8043 --- /dev/null +++ b/data/json/mapgen/map_extras/laststand.json @@ -0,0 +1,74 @@ +[ + { + "type": "monstergroup", + "name": "GROUP_LAST_STAND", + "default": "mon_null", + "monsters": [ + { "monster": "mon_civilian_police", "weight": 1, "cost_multiplier": 1, "ends": "5 days" }, + { "monster": "mon_civilian_zombiefighter", "weight": 4, "cost_multiplier": 1, "ends": "5 days" } + ] + }, + { + "type": "mapgen", + "method": "json", + "update_mapgen_id": "mx_laststand", + "object": { + "rows": [ + " ", + " ", + " ", + " ", + " ################## ", + " ################## ", + " ################## ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ### ### ", + " ################## ", + " ################## ", + " ################## ", + " ", + " ", + " ", + " ", + " " + ], + "furniture": { + "#": [ + [ "f_barricade_road", 10 ], + [ "f_sandbag_half", 10 ], + [ "f_earthbag_half", 10 ], + [ "f_gravelbag_half", 10 ], + [ "f_table", 10 ], + [ "f_bench", 10 ], + "f_55gal_firebarrel", + "f_30gal_firebarrel", + "f_pallet_brick", + "f_pallet_cement", + "f_stack_plank", + "f_metal_table", + "f_armchair", + "f_chair", + "f_rack", + "f_locker", + "f_displaycase", + "f_recycle_bin", + "f_trashcan", + "f_metal_trashcan", + "f_rubble", + "f_wreckage", + [ "f_null", 150 ] + ] + }, + "place_monster": [ { "group": "GROUP_LAST_STAND", "x": [ 6, 17 ], "y": [ 6, 16 ], "chance": 100, "repeat": [ 10, 15 ] } ], + "place_loot": [ { "group": "trash", "x": [ 6, 17 ], "y": [ 6, 16 ], "repeat": [ 5, 10 ] } ], + "flags": [ "ERASE_ALL_BEFORE_PLACING_TERRAIN" ] + } + } +] From f0d832f1b5a67296916bfacca089c42292ebbcfc Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:52:00 +0500 Subject: [PATCH 12/29] Delete data/json/proficiencies/melee_weapons.json --- data/json/proficiencies/melee_weapons.json | 842 --------------------- 1 file changed, 842 deletions(-) delete mode 100644 data/json/proficiencies/melee_weapons.json diff --git a/data/json/proficiencies/melee_weapons.json b/data/json/proficiencies/melee_weapons.json deleted file mode 100644 index 92710d702a2f4..0000000000000 --- a/data/json/proficiencies/melee_weapons.json +++ /dev/null @@ -1,842 +0,0 @@ -[ - { - "type": "proficiency", - "id": "prof_auto_rifles_familiar", - "category": "prof_combat", - "name": { "str": "Long Gun CQC Familiarity" }, - "description": "You're familiar with how to grip a long gun correctly while striking someone with it.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_auto_rifles_pro", - "category": "prof_combat", - "name": { "str": "Long Gun CQC Proficiency" }, - "description": "You're proficient in striking with your rifle, both with and without a bayonet.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_auto_rifles_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_auto_rifles_master", - "category": "prof_combat", - "name": { "str": "Long Gun CQC Mastery" }, - "description": "You've mastered the art of the bayonet charge and know how to handle the gun itself as a weapon.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_auto_rifles_pro" ] - }, - { - "type": "proficiency", - "id": "prof_auto_pistols_familiar", - "category": "prof_combat", - "name": { "str": "Handgun CQC Familiarity" }, - "description": "You're able to use your handgun effectively as a melee weapon without shooting yourself.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_auto_pistols_pro", - "category": "prof_combat", - "name": { "str": "Hand Gun CQC Proficiency" }, - "description": "You're proficient in striking with your handgun and can do so precisely.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_auto_pistols_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_auto_pistols_master", - "category": "prof_combat", - "name": { "str": "Handgun CQC Mastery" }, - "description": "You're able to precisely strike your opponent with your handgun where it hurts the most.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_auto_pistols_pro" ] - }, - { - "type": "proficiency", - "id": "prof_knives_familiar", - "category": "prof_combat", - "name": { "str": "Knife Familiarity" }, - "description": "You've got a handling on gripping knives so they don't slip out of your hand.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_knives_pro", - "category": "prof_combat", - "name": { "str": "Knife Proficiency" }, - "description": "You handle your knife like a butcher, and are ready to prove it.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_knives_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_knives_master", - "category": "prof_combat", - "name": { "str": "Knife Mastery" }, - "description": "Your knife is like an extension of yourself, you wield it effortlessly.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_knives_pro" ] - }, - { - "type": "proficiency", - "id": "prof_shivs_familiar", - "category": "prof_combat", - "name": { "str": "Shiv Familiarity" }, - "description": "You know how to stab someone with something not typically intended to stab them with.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_shivs_pro", - "category": "prof_combat", - "name": { "str": "Shiv Proficiency" }, - "description": "You're pretty good at shanking your enemy, if you do say so yourself.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_knives_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_shivs_master", - "category": "prof_combat", - "name": { "str": "Shiv Mastery" }, - "description": "You've mastered the ancient and ignoble art of sticking someone with something small and pointy.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_knives_pro" ] - }, - { - "type": "proficiency", - "id": "prof_batons_familiar", - "category": "prof_combat", - "name": { "str": "Baton Familiarity" }, - "description": "You've learned to swing a baton without spraining your wrists.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_batons_pro", - "category": "prof_combat", - "name": { "str": "Baton Proficiency" }, - "description": "You know how strike with your baton so you get the most out of every blow.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_batons_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_batons_master", - "category": "prof_combat", - "name": { "str": "Baton Mastery" }, - "description": "You've mastered the use of all kinds of batons, and the fine art of beating someone with a stick.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_batons_pro" ] - }, - { - "type": "proficiency", - "id": "prof_medium_swords_familiar", - "category": "prof_combat", - "name": { "str": "Medium Sword Familiarity" }, - "description": "You have enough practice not to cut yourself with your own blade.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_medium_swords_pro", - "category": "prof_combat", - "name": { "str": "Medium Sword Proficiency" }, - "description": "The weight of your weapon feels as natural to you as if it were your own limb.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_medium_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_medium_swords_master", - "category": "prof_combat", - "name": { "str": "Medium Sword Mastery" }, - "description": "Your body has grown accustomed to the rigors of sword fighting, and can handle it for longer.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_medium_swords_master" ] - }, - { - "type": "proficiency", - "id": "prof_short_swords_familiar", - "category": "prof_combat", - "name": { "str": "Short Sword Familiarity" }, - "description": "You understand how to swing a short blade around. In theory, at least.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_short_swords_pro", - "category": "prof_combat", - "name": { "str": "Short Sword Proficiency" }, - "description": "You've trained your body against the strain of fighting with a short sword.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_short_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_short_swords_master", - "category": "prof_combat", - "name": { "str": "Short Sword Mastery" }, - "description": "You're able to cut through zombies with the same ease you cut through foliage.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_short_swords_pro" ] - }, - { - "type": "proficiency", - "id": "prof_quarterstaves_familiar", - "category": "prof_combat", - "name": { "str": "Quarterstaff Familiarity" }, - "description": "You're familiar with how to handle your staff and can use it without knocking yourself out.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_quarterstaves_pro", - "category": "prof_combat", - "name": { "str": "Quarterstaff Proficiency" }, - "description": "You're used to the balance of a staff and know how to handle it.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_quarterstaves_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_quarterstaves_master", - "category": "prof_combat", - "name": { "str": "Quarterstaff Mastery" }, - "description": "You've mastered the use of quarterstaves. Donatello would be proud.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_quarterstaves_pro" ] - }, - { - "type": "proficiency", - "id": "prof_fencing_weapons_familiar", - "category": "prof_combat", - "name": { "str": "Fencing Weapon Familiarity" }, - "description": "You've got the basics of lunging and parrying your opponent.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_fencing_weapons_pro", - "category": "prof_combat", - "name": { "str": "Fencing Weapon Proficiency" }, - "description": "You strike forth with ease after many hours of training.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_fencing_weapons_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_fencing_weapons_master", - "category": "prof_combat", - "name": { "str": "Fencing Weapon Mastery" }, - "description": "Before the Cataclysm, you could have been an Olympic fencer.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_fencing_weapons_pro" ] - }, - { - "type": "proficiency", - "id": "prof_claws_familiar", - "category": "prof_combat", - "name": { "str": "Claw Weapon Familiarity" }, - "description": "You've learned how to use claw weapons in combat.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_claws_pro", - "category": "prof_combat", - "name": { "str": "Claw Weapon Proficiency" }, - "description": "You're quite experienced with your claws by now.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_claws_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_claws_master", - "category": "prof_combat", - "name": { "str": "Claw Weapon Mastery" }, - "description": "You feel as dangerous as a tiger with your claws.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_claws_pro" ] - }, - { - "type": "proficiency", - "id": "prof_hooking_familiar", - "category": "prof_combat", - "name": { "str": "Hooking Weapon Familiarity" }, - "description": "You're getting a hang of hooking your opponents with your weapon.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_hooking_pro", - "category": "prof_combat", - "name": { "str": "Hooking Weapon Proficiency" }, - "description": "You could probably unhorse someone with your weapon with your skills.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_hooking_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_hooking_master", - "category": "prof_combat", - "name": { "str": "Hooking Weapon Mastery" }, - "description": "You've mastered the art of knocking someone to the ground with your weapon.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_hooking_pro" ] - }, - { - "type": "proficiency", - "id": "prof_polearms_familiar", - "category": "prof_combat", - "name": { "str": "Polearm Familiarity" }, - "description": "Dominant hand on the grip, the other on the haft, you're familiar with how to hold most polearms.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_polearms_pro", - "category": "prof_combat", - "name": { "str": "Polearm Proficiency" }, - "description": "You know how to keep your enemies at a distance with a polearm, and are able to defend yourself with one.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_polearms_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_polearms_master", - "category": "prof_combat", - "name": { "str": "Polearm Mastery" }, - "description": "You can handle the awkward balance of a polearm well, like it's an extension of your body.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_polearms_pro" ] - }, - { - "type": "proficiency", - "id": "prof_bionics_familiar", - "category": "prof_combat", - "name": { "str": "Bionic Weapon Familiarity" }, - "description": "Your body is getting used to the stress your bionic weapons put on it.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_bionics_pro", - "category": "prof_combat", - "name": { "str": "Bionic Weapon Proficiency" }, - "description": "You've become accustomed to the motions of your bionic weapons in combat.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_claws_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_bionics_master", - "category": "prof_combat", - "name": { "str": "Bionic Weapon Mastery" }, - "description": "Your bionic weapon feels as natural to you as your heartbeat.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_claws_pro" ] - }, - { - "type": "proficiency", - "id": "prof_spears_familiar", - "category": "prof_combat", - "name": { "str": "Spear Familiarity" }, - "description": "Non-dominant leg forward, you know the basics of impaling someone on a spear.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_spears_pro", - "category": "prof_combat", - "name": { "str": "Spear Proficiency" }, - "description": "Whether you're hunting boar or hunting zombies, you know how to stab with your spear.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_spear_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_spears_master", - "category": "prof_combat", - "name": { "str": "Spear Mastery" }, - "description": "You're in touch with your inner hunter-gatherer, able to keep up the hunt for longer.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_spear_pro" ] - }, - { - "type": "proficiency", - "id": "prof_thrusting_swords_familiar", - "category": "prof_combat", - "name": { "str": "Long Thrusting Sword Familiarity" }, - "description": "You're no stranger to thrusting your sword through zombies.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_thrusting_swords_pro", - "category": "prof_combat", - "name": { "str": "Long Thrusting Sword Proficiency" }, - "description": "You're able to gore someone on your sword like a pro.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_thrusting_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_thrusting_swords_master", - "category": "prof_combat", - "name": { "str": "Long Thrusting Sword Mastery" }, - "description": "You're a virtuoso with your sword, ready to deliver a swift and deadly thrust.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_thrusting_swords_pro" ] - }, - { - "type": "proficiency", - "id": "prof_long_swords_familiar", - "category": "prof_combat", - "name": { "str": "Long Sword Familiarity" }, - "description": "You know how to swing a longsword without chopping off your own foot.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_long_swords_pro", - "category": "prof_combat", - "name": { "str": "Long Sword Proficiency" }, - "description": "You're proficient with the use of long swords, and are deadly with one in your hands.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_long_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_long_swords_master", - "category": "prof_combat", - "name": { "str": "Long Sword Mastery" }, - "description": "You are a blade master of unparalleled skill. And they said anime wasn't real.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_long_swords_pro" ] - }, - { - "type": "proficiency", - "id": "prof_bionic_swords_familiar", - "category": "prof_combat", - "name": { "str": "Bionic Sword Familiarity" }, - "description": "You are able to operate your bionic sword without incident.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_bionic_swords_pro", - "category": "prof_combat", - "name": { "str": "Bionic Sword Proficiency" }, - "description": "Your bionic sword proficiency is satisfactory. You are able to use it without discomfort.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_bionic_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_bionic_swords_master", - "category": "prof_combat", - "name": { "str": "Bionic Sword Mastery" }, - "description": "Your capabilities with your bionic sword is the epitome of combat efficiency.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_bionic_swords_pro" ] - }, - { - "type": "proficiency", - "id": "prof_flails_familiar", - "category": "prof_combat", - "name": { "str": "Flail Familiarity" }, - "description": "You've learned how to hit your opponent instead of yourself with your flail.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_flails_pro", - "category": "prof_combat", - "name": { "str": "Flail Proficiency" }, - "description": "You're able to swing your flail with deadly precision, crushing through ribs and skulls alike.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_flails_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_flails_master", - "category": "prof_combat", - "name": { "str": "Flail Mastery" }, - "description": "You can make your flail dance like a ballerina, and hit like a truck.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_flails_pro" ] - }, - { - "type": "proficiency", - "id": "prof_maces_familiar", - "category": "prof_combat", - "name": { "str": "Mace Familiarity" }, - "description": "You've got the gist of bludgeoning your enemies.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_maces_pro", - "category": "prof_combat", - "name": { "str": "Mace Proficiency" }, - "description": "You swing your mace with dead efficiency.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_maces_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_maces_master", - "category": "prof_combat", - "name": { "str": "Mace Mastery" }, - "description": "Your strikes with a mace shatter skulls and pulp brains.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_maces_pro" ] - }, - { - "type": "proficiency", - "id": "prof_great_swords_familiar", - "category": "prof_combat", - "name": { "str": "Great Sword Familiarity" }, - "description": "You're not afraid to lift a heavy sword nor bring it down on someone's head.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_great_swords_pro", - "category": "prof_combat", - "name": { "str": "Great Sword Proficiency" }, - "description": "You are not afraid to swing big with a heavy sword.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_great_swords_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_great_swords_master", - "category": "prof_combat", - "name": { "str": "Great Sword Mastery" }, - "description": "You wield your blade like it was a modern day Caliburn.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_great_swords_pro" ] - }, - { - "type": "proficiency", - "id": "prof_great_hammers_familiar", - "category": "prof_combat", - "name": { "str": "Great Hammer Familiarity" }, - "description": "You can handle a big ol' hammer without dropping it on your toes.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_great_hammers_pro", - "category": "prof_combat", - "name": { "str": "Great Hammer Proficiency" }, - "description": "You're not afraid to put some muscle into it when you're swinging a hammer.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_great_hammers_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_great_hammers_master", - "category": "prof_combat", - "name": { "str": "Great Hammer Mastery" }, - "description": "You're a hammering juggernaut, ready to smash it all.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_great_hammers_pro" ] - }, - { - "type": "proficiency", - "id": "prof_great_axes_familiar", - "category": "prof_combat", - "name": { "str": "Great Axe Familiarity" }, - "description": "You're not quite a professional lumberjack, but you can handle an axe.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_great_axes_pro", - "category": "prof_combat", - "name": { "str": "Great Axe Proficiency" }, - "description": "You chop through bodies as easily as you chop through trees.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_great_axes_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_great_axes_master", - "category": "prof_combat", - "name": { "str": "Great Axe Mastery" }, - "description": "You're a post-apocalyptic Paul Bunyan, but it's not just wood you're chopping.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_great_axes_pro" ] - }, - { - "type": "proficiency", - "id": "prof_hand_axes_familiar", - "category": "prof_combat", - "name": { "str": "Hand Axe Familiarity" }, - "description": "You know the proper technique to use with a hand axe.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_hand_axes_pro", - "category": "prof_combat", - "name": { "str": "Hand Axe Proficiency" }, - "description": "You know how to use a hatchet safely and effectively.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_hand_axes_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_hand_axes_master", - "category": "prof_combat", - "name": { "str": "Hand Axe Mastery" }, - "description": "You're more than capable of using a hand axe to protect yourself.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_hand_axes_pro" ] - }, - { - "type": "proficiency", - "id": "prof_unarmed_familiar", - "category": "prof_combat", - "name": { "str": "Unarmed Technique Familiarity" }, - "description": "You know how to punch someone without hurting your wrists.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "8 h" - }, - { - "type": "proficiency", - "id": "prof_unarmed_pro", - "category": "prof_combat", - "name": { "str": "Unarmed Technique Proficiency" }, - "description": "You're able to pace yourself when you've got nothing else to fight with.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "16 h", - "required_proficiencies": [ "prof_unarmed_familiar" ] - }, - { - "type": "proficiency", - "id": "prof_unarmed_master", - "category": "prof_combat", - "name": { "str": "Unarmed Technique Mastery" }, - "description": "You're used to fighting with nothing and can fight unarmed for longer.", - "can_learn": true, - "default_time_multiplier": 1.5, - "default_skill_penalty": 0.2, - "time_to_learn": "32 h", - "required_proficiencies": [ "prof_unarmed_pro" ] - } -] From 5c9c112515d0e28f569644a9293cbc8b843851ab Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 18:54:13 +0500 Subject: [PATCH 13/29] Add files via upload --- data/json/recipes/practice/melee.json | 914 ++------------------------ 1 file changed, 63 insertions(+), 851 deletions(-) diff --git a/data/json/recipes/practice/melee.json b/data/json/recipes/practice/melee.json index 6141c0c4de2e5..ea6bff802a396 100644 --- a/data/json/recipes/practice/melee.json +++ b/data/json/recipes/practice/melee.json @@ -150,931 +150,143 @@ "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] }, { - "id": "prac_dancing", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "dancing", - "description": "Practice some dancing moves with your imaginary partner.", - "skill_used": "dodge", - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "book_learn": [ [ "mag_dodge", 0 ], [ "manual_dodge", 0 ] ], - "autolearn": [ [ "dodge", 2 ] ] - }, - { - "id": "prac_dodge_beg", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "dodge (beginner)", - "description": "Practice your dodging with some side hops, backsteps, and maybe a somersault or two to learn why you shouldn't somersault in a fight. Without someone attacking you to actually dodge all you can practice is footwork, but hopefully it'll help prevent you tripping over your shoelaces in a panic.", - "skill_used": "dodge", - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, - "autolearn": [ [ "dodge", 0 ] ] - }, - { - "id": "prac_unarmed_beg", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "unarmed (beginner)", - "description": "Do a bit of shadowboxing as practice just in case you're left without a weapon versus the undead. There's not much you can learn without someone to correct your mistakes, though.", - "skill_used": "unarmed", - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, - "autolearn": [ [ "unarmed", 0 ] ], - "proficiencies": [ { "proficiency": "prof_unarmed_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ] - }, - { - "id": "prac_unarmed_int", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "unarmed (intermediate)", - "description": "Learn how to throw a punch without breaking your wrist or kick without falling over with the help of a punching bag or training dummy.", - "skill_used": "unarmed", - "time": "1 h", - "practice_data": { "min_difficulty": 1, "max_difficulty": 2, "skill_limit": 3 }, - "autolearn": [ [ "unarmed", 3 ] ], - "book_learn": [ [ "mag_unarmed", 1 ], [ "manual_brawl", 1 ] ], - "proficiencies": [ - { "proficiency": "prof_unarmed_familiar", "required": true }, - { "proficiency": "prof_unarmed_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "pseudo_training_dummy_light", "pseudo_punching_bag" ] ] - }, - { - "id": "prac_cutting_beg_long_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "long swords (beginner)", - "description": "Drill the fundamentals of using a longsword.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], - "proficiencies": [ { "proficiency": "prof_long_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "bokken", "katana", "longsword" ] ] - }, - { - "id": "prac_cutting_int_long_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "long swords (intermediate)", - "description": "Hone your skills with a longsword against a dummy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_long_swords_familiar", "required": true }, - { "proficiency": "prof_long_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "katana", "longsword" ], [ "water", "water_clean" ] ], - "//1": "Standard Blade Training Cost", - "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] - }, - { - "id": "prac_cutting_beg_great_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great swords (beginner)", - "description": "Practice swinging your great sword against an imaginary opponent.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], - "proficiencies": [ { "proficiency": "prof_great_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "zweihander", "sword_wood_large", "nodachi", "kriegsmesser" ] ] - }, - { - "id": "prac_cutting_int_great_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great swords (intermediate)", - "description": "Practice using your sword's momentum to your advantage against a dummy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_great_swords_familiar", "required": true }, - { "proficiency": "prof_great_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "zweihander", "nodachi", "kriegsmesser" ], [ "water", "water_clean" ] ], - "//1": "Standard Blade Training Cost", - "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] - }, - { - "id": "prac_cutting_beg_bionic_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "bionic swords (beginner)", - "description": "Get a feel for the weight, balance, and length of your bionic sword.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_bionic_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "bio_blade_weapon" ] ] - }, - { - "id": "prac_cutting_int_bionic_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "bionic swords (intermediate)", - "description": "Practice fighting with your bionic sword against a dummy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_bionic_swords_familiar", "required": true }, - { "proficiency": "prof_bionic_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "bio_blade_weapon" ], [ "water", "water_clean" ] ], - "//1": "Standard Blade Training Cost", - "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] - }, - { - "id": "prac_cutting_beg_great_axe", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great axes (beginner)", - "description": "Drill keeping the proper form while swinging a heavy axe.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_great_axes_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "battleaxe", "fire_ax", "ax", "primitive_axe" ] ] - }, - { - "id": "prac_cutting_int_great_axe", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great axes (intermediate)", - "description": "Engage in advanced exercises and drills using a heavy axe.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_great_axes_familiar", "required": true }, - { "proficiency": "prof_great_axes_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "battleaxe", "fire_ax", "ax" ], [ "pseudo_training_dummy_heavy" ] ], - "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] - }, - { - "id": "prac_cutting_beg_hand_axe", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "hand axes (beginner)", - "description": "Practice your chopping motions against an imaginary assailant.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_hand_axes_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "hatchet", "copper_ax", "iceaxe", "crash_axe" ] ] - }, - { - "id": "prac_cutting_int_hand_axe", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "hand axes (intermediate)", - "description": "Practice advanced methods of using a hand axe in combat, such as pommel strikes and backswings.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_hand_axes_familiar", "required": true }, - { "proficiency": "prof_hand_axes_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "hatchet", "copper_ax", "iceaxe", "crash_axe" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] - }, - { - "id": "prac_bashing_beg_great_hammer", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great hammers (beginner)", - "description": "Work on handling the weight of your great hammer while swinging it.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_great_hammers_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "club_wooden_large", "mace_pipe_large", "warhammer", "hammer_sledge", "hammer_sledge_heavy" ] ] - }, - { - "id": "prac_bashing_int_great_hammer", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "great hammers (intermediate)", - "description": "Practice your strikes with a great hammer, crushing the dummy without throwing yourself off balance.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_great_hammers_familiar", "required": true }, - { "proficiency": "prof_great_hammers_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "warhammer", "hammer_sledge", "hammer_sledge_heavy" ], [ "pseudo_training_dummy_heavy" ] ], - "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] - }, - { - "id": "prac_bashing_beg_flail", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "flails (beginner)", - "description": "Practice swinging a flail around and drill your endurance by keeping your flail in motion for long period of time.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_flails_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "2h_flail_wood", "2h_flail_steel" ] ] - }, - { - "id": "prac_bashing_int_flail", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "flails (intermediate)", - "description": "Refine your understanding of the fine art of crushing skulls with a flail and a dummy.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_flails_familiar", "required": true }, - { "proficiency": "prof_flails_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "2h_flail_wood", "2h_flail_steel" ], [ "pseudo_training_dummy_heavy" ] ], - "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] - }, - { - "id": "prac_bashing_beg_mace", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "maces (beginner)", - "description": "Work at swinging a mace around and making it land where you want.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_maces_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "club_wooden", "mace", "mace_simple", "mace_trench", "morningstar" ] ] - }, - { - "id": "prac_bashing_int_mace", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "maces (intermediate)", - "description": "Practice advanced skull splitting techniques.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_maces_familiar", "required": true }, - { "proficiency": "prof_maces_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "mace", "mace_trench", "morningstar" ], [ "pseudo_training_dummy_heavy" ] ], - "components": [ [ [ "duct_tape", 50 ] ], [ [ "scrap", 20 ] ] ] - }, - { - "id": "prac_stabbing_beg_spear", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "spears (beginner)", - "description": "Practice the basics of spears, the most popular melee weapon throughout history. Learn the footwork, how to thrust with power, where to place your hands, and the right way to hold the damn thing. Dominant hand back, non-dominant forward!", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "manual_stabbing", 0 ] ], - "//": "Long stick works as a spear here, no tip is needed to practice form.", - "proficiencies": [ { "proficiency": "prof_spears_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "stick_long", "pointy_stick_long", "spear_shaft", "pitchfork", "simple_spear_pipe", "spear_pipe" ] ] - }, - { - "id": "prac_stabbing_int_spear", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "spears (intermediate)", - "description": "Practice advanced spear moves and accurate thrusts against a training dummy. It's not glamorous, but spears were the workhorses of armed combat for millenia with good reason.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "manual_stabbing", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_spears_familiar", "required": true }, - { "proficiency": "prof_spears_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "stick_long", "pointy_stick_long", "spear_shaft", "pitchfork", "simple_spear_pipe", "spear_pipe" ], - [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] - ] - }, - { - "id": "prac_stabbing_beg_thrust", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "long thrusting swords (beginner)", - "description": "Practice switching between different ways of gripping your sword.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "stabbing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_thrusting_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "estoc", "longsword", "zweihander" ] ] - }, - { - "id": "prac_stabbing_int_thrust", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "long thrusting swords (intermediate)", - "description": "Drill yourself in using your sword as a thrusting weapon against a dummy.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_thrusting_swords_familiar", "required": true }, - { "proficiency": "prof_thrusting_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "estoc", "longsword", "zweihander" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] - }, - { - "id": "prac_bashing_beg_rifle", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "rifle CQC (beginner)", - "description": "Practice striking with your long gun.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_auto_rifles_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "qualities": [ { "id": "RIFLE", "level": 1 } ] - }, - { - "id": "prac_bashing_int_rifle", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "rifle CQC (intermediate)", - "description": "Practice your muzzle thump and buttstroke against a dummy.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_auto_rifles_familiar", "required": true }, - { "proficiency": "prof_auto_rifles_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "qualities": [ { "id": "RIFLE", "level": 1 } ], - "tools": [ [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] - }, - { - "id": "prac_bashing_beg_pistol", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "pistol CQC (beginner)", - "description": "Practice safely swinging your pistol around like a club.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "proficiencies": [ { "proficiency": "prof_auto_pistols_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "qualities": [ { "id": "PISTOL", "level": 1 } ] - }, - { - "id": "prac_bashing_int_pistol", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "pistol CQC (intermediate)", - "description": "Pistol whip a dummy repeatedly until you've got it down.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_auto_pistols_familiar", "required": true }, - { "proficiency": "prof_auto_pistols_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "qualities": [ { "id": "PISTOL", "level": 1 } ], - "tools": [ [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] - }, - { - "id": "prac_stabbing_beg_knife", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "knives (beginner)", - "description": "Practice the brutal art of shanking the shit out of something until it dies. Learn the form, where and how to stab to avoid your knife glancing off bone, and whether you should actually hold the knife in reverse grip. (It depends.)", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "manual_cutting", 1 ], [ "manual_knives", 0 ] ], - "//": "Too many damn knives. Someone else can flesh out the list if they want, but this should be enough that you'll almost always have at least one of these before you get others.", - "proficiencies": [ { "proficiency": "prof_knives_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ] ] - }, - { - "id": "prac_stabbing_int_knife", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "knives (intermediate)", - "description": "Get in touch with your inner commando and practice some advanced knife-fighting techniques on a training dummy.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "manual_cutting", 3 ], [ "manual_knives", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_knives_familiar", "required": true }, - { "proficiency": "prof_knives_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ], - [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] - ] - }, - { - "id": "prac_stabbing_beg_shiv", + "id": "prac_stabbing_beg_spear", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "shivs (beginner)", - "description": "You wouldn't think it, but there is more to stabbing someone with something small and pointy. Practice shanking an imaginary enemy where it hurts most.", + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "spears (beginner)", + "description": "Practice the basics of spears, the most popular melee weapon throughout history. Learn the footwork, how to thrust with power, where to place your hands, and the right way to hold the damn thing. Dominant hand back, non-dominant forward!", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "manual_knives", 1 ], [ "manual_melee", 1 ] ], - "proficiencies": [ { "proficiency": "prof_shivs_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "screwdriver", "glass_shiv", "sharp_toothbrush", "scissors_child", "scissors_medical", "scissors" ] ] - }, - { - "id": "prac_stabbing_int_shiv", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "shivs (intermediate)", - "description": "Practice shanking the ever living hell out of a dummy to hone your accuracy and grip while you gut someone.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "manual_knives", 3 ], [ "manual_melee", 3 ] ], - "proficiencies": [ - { "proficiency": "prof_shivs_familiar", "required": true }, - { "proficiency": "prof_shivs_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "screwdriver", "sharp_toothbrush", "scissors_child", "scissors_medical", "scissors" ], - [ "pseudo_training_dummy_light" ] - ] - }, - { - "id": "prac_bashing_beg_baton", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "batons (beginner)", - "description": "Practice the basics of using a baton or small club in combat.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "book_learn": [ [ "mag_bashing", 1 ], [ "manual_bashing", 0 ] ], - "proficiencies": [ { "proficiency": "prof_batons_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "tonfa", "baton-extended", "PR24-extended", "cudgel", "stick", "pipe" ] ] - }, - { - "id": "prac_bashing_int_baton", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "batons (intermediate)", - "description": "Train your backswing, overhead strike, and up strike against a dummy.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "book_learn": [ [ "mag_bashing", 3 ], [ "manual_bashing", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_batons_familiar", "required": true }, - { "proficiency": "prof_batons_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "tonfa", "baton-extended", "PR24-extended", "cudgel", "stick", "pipe" ], - [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] - ] - }, - { - "id": "prac_cutting_beg_med_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "medium swords (beginner)", - "description": "Footwork is key, practice dancing around an imaginary opponent with your sword.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], - "proficiencies": [ { "proficiency": "prof_medium_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "arming_sword", "cavalry_sabre", "cutlass", "sword_wood", "sword_crude", "sword_sheets_welded" ] ] - }, - { - "id": "prac_cutting_int_med_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "medium swords (intermediate)", - "description": "Perform solo drills to practice advanced techniques, such as feints and moulinet cuts.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_medium_swords_familiar", "required": true }, - { "proficiency": "prof_medium_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "arming_sword", "cavalry_sabre", "cutlass", "sword_sheets_welded" ], [ "water", "water_clean" ] ], - "//1": "Standard Blade Training Cost", - "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] - }, - { - "id": "prac_cutting_beg_short_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "short swords (beginner)", - "description": "Practice putting your weight behind your strike, cutting through an imaginary enemy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "book_learn": [ [ "mag_cutting", 1 ], [ "manual_swords", 0 ] ], - "proficiencies": [ { "proficiency": "prof_short_swords_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "sword_xiphos", "khopesh", "machete", "survivor_machete" ] ] - }, - { - "id": "prac_cutting_int_short_sword", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "short swords (intermediate)", - "description": "Practice drills in delivering quick and precise strikes against a dummy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "book_learn": [ [ "mag_cutting", 3 ], [ "manual_swords", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_short_swords_familiar", "required": true }, - { "proficiency": "prof_short_swords_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "sword_xiphos", "khopesh", "machete", "survivor_machete" ], [ "water", "water_clean" ] ], - "//1": "Standard Blade Training Cost", - "components": [ [ [ "duct_tape", 10 ] ], [ [ "stick", 1 ], [ "2x4", 1 ] ], [ [ "paper", 10 ] ] ] - }, - { - "id": "prac_bashing_beg_staff", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "quarterstaves (beginner)", - "description": "Practice swinging your staff, getting used to the balance and weight.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "bashing", 2 ] ], - "book_learn": [ [ "mag_bashing", 1 ], [ "manual_bashing", 0 ] ], - "proficiencies": [ { "proficiency": "prof_quarterstaves_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "bo", "q_staff", "i_staff", "mop", "stick_long" ] ] - }, - { - "id": "prac_bashing_int_staff", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "quarterstaves (intermediate)", - "description": "Practice using your staff against a dummy, familiarizing yourself with its length.", - "skill_used": "bashing", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "bashing", 4 ] ], - "book_learn": [ [ "mag_bashing", 3 ], [ "manual_bashing", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_quarterstaves_familiar", "required": true }, - { "proficiency": "prof_quarterstaves_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "bo", "q_staff", "i_staff", "mop", "stick_long" ], - [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] - ] + "book_learn": [ [ "manual_stabbing", 0 ] ], + "//": "Long stick works as a spear here, no tip is needed to practice form.", + "tools": [ [ "stick_long", "spear_shaft" ] ] }, { "id": "prac_stabbing_beg_fencing", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "fencing (beginner)", + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "fencing", "description": "Practice the basics of the noble art of fencing. Learn how to angle your body, aim your lunges, and parry pretend swords. Not that the undead are using swords. Hopefully.", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "mag_stabbing", 1 ] ], + "book_learn": [ [ "mag_stabbing", 0 ] ], "//": "Basically anything that works with the fencing MA should work here, but the list is truncated for my sanity.", - "proficiencies": [ { "proficiency": "prof_fencing_weapons_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], "tools": [ [ "cudgel", "fencing_epee", "fencing_foil", "fencing_sabre" ] ] }, { - "id": "prac_stabbing_int_fencing", + "id": "prac_stabbing_beg_knife", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "fencing (intermediate)", - "description": "Further develop your footwork and timing by fighting against a dummy. En garde!", + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "knives (beginner)", + "description": "Practice the brutal art of shanking the shit out of something until it dies. Learn the form, where and how to stab to avoid your knife glancing off bone, and whether you should actually hold the knife in reverse grip. (It depends.)", "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "mag_stabbing", 3 ], [ "manual_fencing", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_fencing_weapons_familiar", "required": true }, - { "proficiency": "prof_fencing_weapons_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ - [ "cudgel", "fencing_epee", "fencing_foil", "fencing_sabre" ], - [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] - ] - }, - { - "id": "prac_cutting_beg_claw", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "claw weapons (beginner)", - "description": "Practice the basics of fighting with claw weapon by shadowboxing while using them.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_claws_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "bagh_nakha", "bio_claws_weapon" ] ] + "autolearn": [ [ "stabbing", 2 ] ], + "book_learn": [ [ "manual_cutting", 0 ], [ "manual_knives", 0 ] ], + "//": "Too many damn knives. Someone else can flesh out the list if they want, but this should be enough that you'll almost always have at least one of these before you get others.", + "tools": [ [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ] ] }, { - "id": "prac_cutting_int_claw", + "id": "prac_stabbing_int_spear", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "claw weapons (intermediate)", - "description": "Practice your strikes against a dummy, focusing on speed, accuracy, and power.", - "skill_used": "cutting", + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "spears (intermediate)", + "description": "Practice advanced spear moves and accurate thrusts against a training dummy. It's not glamorous, but spears were the workhorses of armed combat for millenia with good reason.", + "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_claws_familiar", "required": true }, - { "proficiency": "prof_claws_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "bagh_nakha", "bio_claws_weapon" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] - }, - { - "id": "prac_cutting_beg_hooking", - "type": "practice", - "activity_level": "BRISK_EXERCISE", - "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "hooking weapons (beginner)", - "description": "Practice tripping an imaginary with the hook of your weapon in between swings.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], - "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_hooking_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "fire_ax", "battleaxe", "brush_axe", "bronze_brush_axe", "primitive_axe", "scythe", "ax", "hoe" ] ] + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "manual_stabbing", 2 ] ], + "tools": [ [ "stick_long", "spear_shaft" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] }, { - "id": "prac_cutting_int_hooking", + "id": "prac_stabbing_int_knife", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "hooking weapons (intermediate)", - "description": "Train by hooking a dummy and knocking it to the ground while practicing your footwork.", - "skill_used": "cutting", + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "knives (intermediate)", + "description": "Get in touch with your inner commando and practice some advanced knife-fighting techniques on a training dummy.", + "skill_used": "stabbing", "skills_required": [ [ "melee", 1 ] ], "time": "1 h", "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_hooking_familiar", "required": true }, - { "proficiency": "prof_hooking_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], + "autolearn": [ [ "stabbing", 4 ] ], + "book_learn": [ [ "manual_cutting", 2 ], [ "manual_knives", 2 ] ], "tools": [ - [ "fire_ax", "battleaxe", "brush_axe", "bronze_brush_axe", "scythe", "ax", "hoe" ], + [ "makeshift_knife", "primitive_knife", "knife_trench", "knife_combat", "knife_chef", "knife_rambo" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] }, { - "id": "prac_stabbing_beg_polearm", + "id": "prac_unarmed_beg", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "polearms (beginner)", - "description": "Practice slicing and stabbing with your polearm against an imaginary opponent.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "unarmed (beginner)", + "description": "Do a bit of shadowboxing as practice just in case you're left without a weapon versus the undead. There's not much you can learn without someone to correct your mistakes, though.", + "skill_used": "unarmed", "time": "1 h", - "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "stabbing", 2 ] ], - "book_learn": [ [ "mag_stabbing", 1 ], [ "manual_stabbing", 0 ] ], - "proficiencies": [ { "proficiency": "prof_polearms_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "//": "Top-heavy reach weapons could all be used to train polearms", - "tools": [ [ "pike", "halberd", "brush_axe", "stick_long" ] ] + "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, + "autolearn": [ [ "unarmed", 0 ] ] }, { - "id": "prac_stabbing_int_polearm", + "id": "prac_unarmed_int", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "polearms (intermediate)", - "description": "Perform solo exercises against a dummy to train your distance management and endurance with a polearm.", - "skill_used": "stabbing", - "skills_required": [ [ "melee", 1 ] ], + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "unarmed (intermediate)", + "description": "Learn how to throw a punch without breaking your wrist or kick without falling over with the help of a punching bag or training dummy.", + "skill_used": "unarmed", "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "stabbing", 4 ] ], - "book_learn": [ [ "mag_stabbing", 3 ], [ "manual_stabbing", 2 ] ], - "proficiencies": [ - { "proficiency": "prof_polearms_familiar", "required": true }, - { "proficiency": "prof_polearms_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "pike", "halberd", "brush_axe", "stick_long" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + "practice_data": { "min_difficulty": 1, "max_difficulty": 2, "skill_limit": 3 }, + "autolearn": [ [ "unarmed", 3 ] ], + "book_learn": [ [ "mag_unarmed", 1 ], [ "manual_brawl", 1 ] ], + "tools": [ [ "pseudo_training_dummy_light", "pseudo_punching_bag" ] ] }, { - "id": "prac_cutting_beg_bionics", + "id": "prac_dancing", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "bionic weapons (beginner)", - "description": "Perform basic fighting drills to learn to fight with your new bionic weapons.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "dancing", + "description": "Practice some dancing moves with your imaginary partner.", + "skill_used": "dodge", "time": "1 h", "practice_data": { "min_difficulty": 0, "max_difficulty": 1, "skill_limit": 2 }, - "autolearn": [ [ "cutting", 2 ] ], - "proficiencies": [ { "proficiency": "prof_bionics_familiar", "time_multiplier": 1.5, "skill_penalty": 0 } ], - "tools": [ [ "bio_blade_weapon", "bio_claws_weapon" ] ] + "book_learn": [ [ "mag_dodge", 0 ], [ "manual_dodge", 0 ] ] }, { - "id": "prac_cutting_int_bionics", + "id": "prac_dodge_beg", "type": "practice", "activity_level": "BRISK_EXERCISE", "category": "CC_PRACTICE", - "subcategory": "CSC_PRACTICE_MELEE", - "name": "bionic weapons (intermediate)", - "description": "Drill advanced methods of using your bionic weapons, with the help of a dummy.", - "skill_used": "cutting", - "skills_required": [ [ "melee", 1 ] ], + "subcategory": "CSC_PRACTICE_COMBAT", + "name": "dodge (beginner)", + "description": "Practice your dodging with some side hops, backsteps, and maybe a somersault or two to learn why you shouldn't somersault in a fight. Without someone attacking you to actually dodge all you can practice is footwork, but hopefully it'll help prevent you tripping over your shoelaces in a panic.", + "skill_used": "dodge", "time": "1 h", - "practice_data": { "min_difficulty": 2, "max_difficulty": 3, "skill_limit": 4 }, - "autolearn": [ [ "cutting", 4 ] ], - "proficiencies": [ - { "proficiency": "prof_bionics_familiar", "required": true }, - { "proficiency": "prof_bionics_pro", "time_multiplier": 2, "skill_penalty": 0 } - ], - "tools": [ [ "bio_blade_weapon", "bio_claws_weapon" ], [ "pseudo_training_dummy_light", "pseudo_training_dummy_heavy" ] ] + "practice_data": { "min_difficulty": 0, "max_difficulty": 0, "skill_limit": 1 }, + "autolearn": [ [ "dodge", 0 ] ] } ] From de0a2214890beae81f2ad2733084def4e40dc4a1 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:00:12 +0500 Subject: [PATCH 14/29] Add files via upload Co-authored-by: lispcoc --- src/condition.cpp | 14 ++++++++++++++ src/condition.h | 3 ++- src/talker.h | 3 +++ src/talker_character.cpp | 8 ++++++++ src/talker_character.h | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/condition.cpp b/src/condition.cpp index 090b0d32c76c1..1488fe74a6cee 100644 --- a/src/condition.cpp +++ b/src/condition.cpp @@ -3087,6 +3087,16 @@ void conditional_t::set_has_wielded_with_flag( const JsonObject &jo, const std:: }; } +void conditional_t::set_has_wielded_with_weapon_category( const JsonObject &jo, + const std::string &member, + bool is_npc ) +{ + str_or_var w_cat = get_str_or_var( jo.get_member( member ), member, true ); + condition = [w_cat, is_npc]( dialogue const & d ) { + return d.actor( is_npc )->wielded_with_weapon_category( weapon_category_id( w_cat.evaluate( d ) ) ); + }; +} + void conditional_t::set_can_see( bool is_npc ) { condition = [is_npc]( dialogue const & d ) { @@ -3388,6 +3398,10 @@ conditional_t::conditional_t( const JsonObject &jo ) set_has_wielded_with_flag( jo, "u_has_wielded_with_flag" ); } else if( jo.has_member( "npc_has_wielded_with_flag" ) ) { set_has_wielded_with_flag( jo, "npc_has_wielded_with_flag", is_npc ); + } else if( jo.has_member( "u_has_wielded_with_weapon_category" ) ) { + set_has_wielded_with_weapon_category( jo, "u_has_wielded_with_weapon_category" ); + } else if( jo.has_member( "npc_has_wielded_with_weapon_category" ) ) { + set_has_wielded_with_weapon_category( jo, "npc_has_wielded_with_weapon_category", is_npc ); } else if( jo.has_member( "u_is_on_terrain" ) ) { set_is_on_terrain( jo, "u_is_on_terrain" ); } else if( jo.has_member( "npc_is_on_terrain" ) ) { diff --git a/src/condition.h b/src/condition.h index 480f4b80501d9..a19db6145c0cd 100644 --- a/src/condition.h +++ b/src/condition.h @@ -31,7 +31,7 @@ const std::unordered_set simple_string_conds = { { } }; const std::unordered_set complex_conds = { { - "u_has_any_trait", "npc_has_any_trait", "u_has_trait", "npc_has_trait", + "u_has_any_trait","u_has_wielded_with_weapon_category", "npc_has_wielded_with_weapon_category", "npc_has_any_trait", "u_has_trait", "npc_has_trait", "u_has_flag", "npc_has_flag", "u_has_species", "npc_has_species", "u_bodytype", "npc_bodytype", "npc_has_class", "u_has_mission", "u_monsters_in_direction", "u_safe_mode_trigger", "u_has_strength", "npc_has_strength", "u_has_dexterity", "npc_has_dexterity", "u_has_intelligence", "npc_has_intelligence", "u_has_perception", "npc_has_perception", @@ -130,6 +130,7 @@ struct conditional_t { void set_is_on_terrain_with_flag( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_is_in_field( const JsonObject &jo, const std::string &member, bool is_npc = false ); + void set_has_wielded_with_weapon_category( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_one_in_chance( const JsonObject &jo, const std::string &member ); void set_query( const JsonObject &jo, const std::string &member, bool is_npc = false ); void set_x_in_y_chance( const JsonObject &jo, std::string_view member ); diff --git a/src/talker.h b/src/talker.h index d55687393a782..26f28af912a28 100644 --- a/src/talker.h +++ b/src/talker.h @@ -528,6 +528,9 @@ class talker virtual double armor_at( damage_type_id &, bodypart_id & ) const { return 0; } + virtual bool wielded_with_weapon_category( const weapon_category_id & ) const { + return false; + } virtual bool worn_with_flag( const flag_id &, const bodypart_id & ) const { return false; } diff --git a/src/talker_character.cpp b/src/talker_character.cpp index 771e68121c320..f7508b85642f3 100644 --- a/src/talker_character.cpp +++ b/src/talker_character.cpp @@ -4,8 +4,10 @@ #include "character_martial_arts.h" #include "effect.h" #include "item.h" +#include "itype.h" #include "magic.h" #include "npc.h" +#include "npctalk.h" #include "pimpl.h" #include "player_activity.h" #include "point.h" @@ -654,6 +656,12 @@ bool talker_character_const::wielded_with_flag( const flag_id &flag ) const return me_chr_const->get_wielded_item() && me_chr_const->get_wielded_item()->has_flag( flag ); } +bool talker_character_const::wielded_with_weapon_category( const weapon_category_id &w_cat ) const +{ + return me_chr_const->get_wielded_item() && + me_chr_const->get_wielded_item()->typeId()->weapon_category.count( w_cat ) > 0; +} + bool talker_character_const::has_item_with_flag( const flag_id &flag ) const { return me_chr_const->has_item_with_flag( flag ); diff --git a/src/talker_character.h b/src/talker_character.h index 3e31dbf58e98a..9be25bef18e1f 100644 --- a/src/talker_character.h +++ b/src/talker_character.h @@ -125,6 +125,7 @@ class talker_character_const: public talker_cloner bool worn_with_flag( const flag_id &flag, const bodypart_id &bp ) const override; bool wielded_with_flag( const flag_id &flag ) const override; + bool wielded_with_weapon_category( const weapon_category_id &w_cat ) const override; bool has_item_with_flag( const flag_id &flag ) const override; int item_rads( const flag_id &flag, aggregate_type agg_func ) const override; From ad06d495878f9e321b1eaf7779373b6260c25178 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:10:49 +0500 Subject: [PATCH 15/29] Update release.yml Co-authored-by: Andrew Krieger --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8b2ade85d42b..4bd98dae635cb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -166,7 +166,7 @@ jobs: id: runvcpkg with: vcpkgDirectory: '${{ runner.workspace }}/b/vcpkg' - vcpkgGitCommitId: '5b1214315250939257ef5d62ecdcbca18cf4fb1c' + vcpkgGitCommitId: '66444e13a86da7087ee24c342f91801cc6eb9877' - name: Install dependencies (windows msvc) (3/3) if: runner.os == 'Windows' run: | From a31bcdd2624d062ec00209e5cc1283699df1d6ae Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:11:11 +0500 Subject: [PATCH 16/29] Update msvc-full-features.yml Co-authored-by: Andrew Krieger --- .github/workflows/msvc-full-features.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/msvc-full-features.yml b/.github/workflows/msvc-full-features.yml index cdc648b21145e..6dde983aa1894 100644 --- a/.github/workflows/msvc-full-features.yml +++ b/.github/workflows/msvc-full-features.yml @@ -76,7 +76,7 @@ jobs: id: runvcpkg with: vcpkgDirectory: '${{ runner.workspace }}/b/vcpkg' - vcpkgGitCommitId: '5b1214315250939257ef5d62ecdcbca18cf4fb1c' + vcpkgGitCommitId: '66444e13a86da7087ee24c342f91801cc6eb9877' - name: Integrate vcpkg run: | From 68b1748310aa60a2c768c6cf494ac871a3b8d372 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 19:57:29 +0500 Subject: [PATCH 17/29] Update src/condition.h Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/condition.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/condition.h b/src/condition.h index a19db6145c0cd..1d815321aae1c 100644 --- a/src/condition.h +++ b/src/condition.h @@ -31,7 +31,7 @@ const std::unordered_set simple_string_conds = { { } }; const std::unordered_set complex_conds = { { - "u_has_any_trait","u_has_wielded_with_weapon_category", "npc_has_wielded_with_weapon_category", "npc_has_any_trait", "u_has_trait", "npc_has_trait", + "u_has_any_trait", "u_has_wielded_with_weapon_category", "npc_has_wielded_with_weapon_category", "npc_has_any_trait", "u_has_trait", "npc_has_trait", "u_has_flag", "npc_has_flag", "u_has_species", "npc_has_species", "u_bodytype", "npc_bodytype", "npc_has_class", "u_has_mission", "u_monsters_in_direction", "u_safe_mode_trigger", "u_has_strength", "npc_has_strength", "u_has_dexterity", "npc_has_dexterity", "u_has_intelligence", "npc_has_intelligence", "u_has_perception", "npc_has_perception", From 5da6ee11742136c01bb102b0160f213f4c13b931 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 22:22:19 +0500 Subject: [PATCH 18/29] Add files via upload Co-authored-by: MNG-cataclysm <58958654+MNG-cataclysm@users.noreply.github.com> Co-authored-by: Empyrean-Heaven <134475898+Empyrean-Heaven@users.noreply.github.com> --- data/json/snippets/epilogue_npc.json | 64 ++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/data/json/snippets/epilogue_npc.json b/data/json/snippets/epilogue_npc.json index f75942f0d9de0..6a2f2b4030f6a 100644 --- a/data/json/snippets/epilogue_npc.json +++ b/data/json/snippets/epilogue_npc.json @@ -218,6 +218,38 @@ { "id": "epilogue_npc_male_55", "text": " He got sick soon after your death, and died without any medical help. His last words were 'Why did I live long enough to suffer like that?'" + }, + { + "id": "epilogue_npc_male_56", + "text": " Went mad soon after learning of your death, leading him to believe he was the predestined savior who would bring sinners into paradise. Ended up perishing in a siege against the Hell's Raiders that lasted for a grueling, protracted month." + }, + { + "id": "epilogue_npc_male_57", + "text": " He had a dream he told no other about. It was a grand ideal, a fantasy out of a long-dead era. He aspired to become a leader who would shield humanity from the tribulations of the new world. He gathered survivors and built a settlement with the fledging numbers he had. They held out for as long as they could, but the dream of civilization could not flourish. He died a heartbroken man." + }, + { + "id": "epilogue_npc_male_58", + "text": " He had a dream he told no other about. It was a grand ideal, a fantasy out of a long-dead era. He aspired to become a leader who would shield humanity from the tribulations of the new world. He gathered survivors and built a settlement with the fledging numbers he had. With his unshakeable spirit and exceptional talent, he managed to lift up his people into a brighter dawn. Before long, his realm encompassed vast swaths of land. He honored you as one of the founders of his kingdom." + }, + { + "id": "epilogue_npc_male_59", + "text": " Lived a troubled life after your passing. Trusting no one but himself, he struggled viciously at the end of the world. Through great effort, he formed a minor village that would end up becoming a safe haven for mutants. In their humble hovel, he would later be acclaimed as a saint." + }, + { + "id": "epilogue_npc_male_60", + "text": " He increasingly grew fanatical as the whole world decayed around him. In due time, he saw himself as something more than human. Arriving at an abandoned cathedral, he climbed to the top of its spire before ringing the bells again and again. He belched out holy harangues at the heathens below and laughed maniacally as the undead eventually tore through his body." + }, + { + "id": "epilogue_npc_male_61", + "text": " Started fervently devouring the Gospel and soon had absolute conviction that he was the Godson. In his anguished throes of madness, he ended up seeing the vision of a land without sin over the horizon as he stepped off the edge of a skyscraper. Upon cold lips, his last breath was uttered. 'Eden.'" + }, + { + "id": "epilogue_npc_male_62", + "text": " He lost his mind as he witnessed the death of all around him. He began to accept the notion that he brought about all this chaos. With bloody tears streaming down his cheeks, he sacrificed himself to save the world." + }, + { + "id": "epilogue_npc_male_63", + "text": " He lived desperately in the Cataclysm for a few years before meeting a female survivor while digging through a dumpster. Both were wary of one another and were soon at each other's throats. Neither side secured a victory. Wounded and scarred, they each went to their respective hideouts. Not long after, they met again. The woman initiated a conversation with him, asking for his help. It was foolish to fight when they could work together instead. He acquiesced. In this cruel and forlorn world, they soon fell in love. If they had each other, everything would be all right. Decades passed and they grew old holding hands. One day, the wife fell ill, and with her dying breath, she said she was happy all these years with him. Stay strong without me. The husband wept and laid down beside his wife. Without you, nothing else matters. He swallowed a bitter poison and departed this world to find his wife who was waiting for him." } ] }, @@ -428,6 +460,38 @@ { "id": "epilogue_npc_female_51", "text": " Became obsessed with chems, and died of an overdose a few months after your death." + }, + { + "id": "epilogue_npc_female_52", + "text": " Started fervently devouring the Gospel and soon had absolute conviction that she was the Virgin Mother. In her anguished throes of madness, she ended up seeing the vision of the good sheperd over the horizon as she stepped off the edge of a skyscraper." + }, + { + "id": "epilogue_npc_female_53", + "text": " She lost her mind as she witnessed the death of all around her. She began to accept the notion that she brought about all this chaos. With bloody tears streaming down her cheeks, she sacrificed herself to save the world." + }, + { + "id": "epilogue_npc_female_54", + "text": " She lived desperately in the Cataclysm for a few years before meeting a male survivor while digging through a dumpster. Both were wary of one another and were soon at each other's throats. Neither side secured a victory. Wounded and scarred, they each went to their respective hideouts. Not long after, they met again. The man initiated a conversation with her, asking for her help. It was foolish to fight when they could work together instead. She acquiesced. In this cruel and forlorn world, they soon fell in love. If they had each other, everything would be all right. Decades passed and they grew old holding hands. One day, the husband fell ill, and with his dying breath, he said he was happy all these years with her. Stay strong without me. The wife wept and laid down beside her husband. Without you, nothing else matters. She swallowed a bitter poison and departed this world to find her husband who was waiting for her." + }, + { + "id": "epilogue_npc_female_55", + "text": " Went mad soon after learning of your death, leading her to believe she was the predestined savior who would bring sinners into paradise. Ended up perishing in a siege against the Hell's Raiders that lasted for a grueling, protracted month." + }, + { + "id": "epilogue_npc_female_56", + "text": " She had a dream she told no other about. It was a grand ideal, a fantasy out of a long-dead era. She aspired to become a leader who would shield humanity from the tribulations of the new world. She gathered survivors and built a settlement with the fledging numbers she had. They held out for as long as they could, but the dream of civilization could not flourish. She died a heartbroken woman." + }, + { + "id": "epilogue_npc_female_57", + "text": " She had a dream she told no other about. It was a grand ideal, a fantasy out of a long-dead era. She aspired to become a leader who would shield humanity from the tribulations of the new world. She gathered survivors and built a settlement with the fledging numbers she had. With her infinite grace and unyielding devotion, she managed to lift up her people into a brighter dawn. Before long, her realm encompassed vast swaths of land. She honored you as one of the founders of her kingdom." + }, + { + "id": "epilogue_npc_female_58", + "text": " Lived a troubled life after your passing. Trusting no one but herself, she struggled viciously at the end of the world. Through great effort, she formed a minor village that would end up becoming a safe haven for mutants. In their humble hovel, she would later be acclaimed as a saintess." + }, + { + "id": "epilogue_npc_female_59", + "text": " She increasingly grew fanatical as the whole world decayed around her. In due time, she saw herself as something more than human. Arriving at an abandoned cathedral, she climbed to the top of its spire before ringing the bells again and again. She belched out holy harangues at the heathens below and laughed maniacally as the undead eventually tore through her body." } ] } From 8ef4ed7839cfabc5b1a0ae6408348ebb4b51009e Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:08:10 +0500 Subject: [PATCH 19/29] Update harvest.json Co-authored-by: PatrikLundell --- data/json/harvest.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data/json/harvest.json b/data/json/harvest.json index 36ef069dddd0d..b07b0eee2d49b 100644 --- a/data/json/harvest.json +++ b/data/json/harvest.json @@ -1962,6 +1962,7 @@ { "id": "biollante", "type": "harvest", + "message": "", "//": "todo: add biollante item", "entries": [ { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.5 }, @@ -1972,6 +1973,7 @@ { "id": "triffid_small", "type": "harvest", + "message": "", "entries": [ { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.5 }, { "drop": "veggy", "type": "flesh", "mass_ratio": 0.2 }, @@ -1981,6 +1983,7 @@ { "id": "triffid_paralytic", "type": "harvest", + "message": "", "entries": [ { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.4 }, { "drop": "veggy", "type": "flesh", "mass_ratio": 0.2 }, @@ -1993,6 +1996,7 @@ "id": "triffid_acid", "//": "acid blood type for plant based creaturs.", "type": "harvest", + "message": "", "entries": [ { "drop": "blood_acid_plant", "type": "blood", "mass_ratio": 0.1 }, { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.5 }, @@ -2003,6 +2007,7 @@ { "id": "triffid_fungal_fighter", "type": "harvest", + "message": "", "entries": [ { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.4 }, { "drop": "veggy", "type": "flesh", "mass_ratio": 0.2 }, @@ -2015,6 +2020,7 @@ { "id": "triffid_queen", "type": "harvest", + "message": "", "entries": [ { "drop": "log", "type": "bone", "mass_ratio": 0.35 }, { "drop": "stick_fiber", "type": "bone", "mass_ratio": 0.15 }, From 4d62a7c8267ecec19e3945fdb2d8964af30c04da Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:09:05 +0500 Subject: [PATCH 20/29] Add files via upload Co-authored-by: PatrikLundell --- .../triffid_weakpoints.json | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 data/json/monster_weakpoints/triffid_weakpoints.json diff --git a/data/json/monster_weakpoints/triffid_weakpoints.json b/data/json/monster_weakpoints/triffid_weakpoints.json new file mode 100644 index 0000000000000..baa865e108e72 --- /dev/null +++ b/data/json/monster_weakpoints/triffid_weakpoints.json @@ -0,0 +1,93 @@ +[ + { + "type": "weakpoint_set", + "id": "wps_triffid", + "weakpoints": [ + { + "id": "branch", + "name": "the branch", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 4, "melee": 3 }, + "coverage_mult": { "point": 0.75 }, + "effects": [ + { "effect": "staggered", "chance": 15, "message": "The %s is knocked off-balance!", "damage_required": [ 10, 30 ] }, + { + "effect": "staggered", + "chance": 25, + "message": "The %s is knocked off-balance!", + "damage_required": [ 31, 100 ] + } + ], + "coverage": 6 + }, + { + "id": "root", + "name": "the root", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 3, "melee": 1 }, + "coverage_mult": { "point": 0.75 }, + "effects": [ + { "effect": "downed", "chance": 5, "message": "The %s is knocked down!", "damage_required": [ 10, 30 ] }, + { "effect": "downed", "chance": 15, "message": "The %s is knocked down!", "damage_required": [ 31, 50 ] }, + { "effect": "downed", "chance": 25, "message": "The %s is knocked down!", "damage_required": [ 51, 100 ] } + ], + "coverage": 15 + }, + { + "id": "flower", + "name": "the flower", + "coverage": 5, + "crit_mult": { "all": 1.1 }, + "armor_mult": { "physical": 0.75 }, + "difficulty": { "melee": 2, "ranged": 5 }, + "effects": [ + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 5, + "message": "The %s is stunned!", + "damage_required": [ 1, 10 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 25, + "message": "The %s is stunned!", + "damage_required": [ 11, 50 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 45, + "message": "The %s is stunned!", + "damage_required": [ 51, 100 ] + } + ] + }, + { + "id": "gap", + "name": "a small gap in the bark", + "coverage": 5, + "difficulty": { "melee": 4, "ranged": 5 }, + "coverage_mult": { "broad": 0.5 }, + "armor_mult": { "all": 0.25 } + }, + { + "id": "joint", + "name": "a soft fold in the thick bark", + "coverage": 10, + "difficulty": { "melee": 3, "ranged": 5 }, + "coverage_mult": { "point": 0.75 }, + "armor_mult": { "all": 0.5 } + }, + { + "id": "thick bark", + "name": "a particularly thick patch of the bark", + "armor_mult": { "all": 1.25 }, + "crit_mult": { "all": 0.75 }, + "coverage_mult": { "melee": 0.75 }, + "coverage": 3 + } + ] + } +] From 2de87a82cf437881a13410b60a50f153711e7ed9 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:12:02 +0500 Subject: [PATCH 21/29] Update triffid.json Co-authored-by: PatrikLundell --- data/json/monsters/triffid.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/json/monsters/triffid.json b/data/json/monsters/triffid.json index 08dabe3a2a763..7a43a184d91e5 100644 --- a/data/json/monsters/triffid.json +++ b/data/json/monsters/triffid.json @@ -45,6 +45,8 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 80, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "biollante", "dissect": "dissect_plant_sample_single", "special_attacks": [ [ "SPIT_SAP", 2 ] ], @@ -70,6 +72,8 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 50, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "GROW_VINE", 60 ] ], "death_function": { "effect": { "id": "death_kill_vines", "hit_self": true, "min_level": 1 }, "corpse_type": "NO_CORPSE" }, @@ -94,6 +98,8 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 80, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "VINE", 100 ] ], "death_function": { "effect": { "id": "death_kill_vines", "hit_self": true }, "corpse_type": "NO_CORPSE" }, @@ -120,6 +126,8 @@ "melee_dice": 1, "melee_dice_sides": 1, "melee_damage": [ { "damage_type": "cut", "amount": 1 } ], + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_small", "upgrades": { "age_grow": 14, "into": "mon_triffid_young" }, "flags": [ "HEARS", "SMELLS", "NOHEAD", "STUMBLES" ], @@ -145,6 +153,8 @@ "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], "bleed_rate": 75, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_paralytic", "dissect": "dissect_plant_sample_single", "upgrades": { "age_grow": 14, "into": "mon_triffid" }, @@ -174,6 +184,8 @@ "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 6 } ], "bleed_rate": 60, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_paralytic", "dissect": "dissect_plant_sample_single", "fungalize_into": "mon_fungaloid", @@ -201,6 +213,8 @@ "melee_dice_sides": 8, "melee_damage": [ { "damage_type": "cut", "amount": 8 } ], "bleed_rate": 40, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_queen", "dissect": "dissect_plant_sample_small", "special_attacks": [ [ "GROWPLANTS", 20 ] ], @@ -231,6 +245,8 @@ "special_attacks": [ { "id": "grab", "cooldown": 7 }, { "id": "grab_2", "cooldown": 12 } ], "dodge": 4, "bleed_rate": 10, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_small", "dissect": "dissect_plant_sample_single", "flags": [ "HEARS", "GOODHEARING", "NOHEAD", "HARDTOSHOOT", "GRABS", "SWIMS", "PLASTIC", "WATER_CAMOUFLAGE" ], @@ -257,6 +273,8 @@ "melee_dice_sides": 6, "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], "bleed_rate": 60, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_fungal_fighter", "dissect": "dissect_plant_sample_single", "attack_effs": [ { "id": "paralyzepoison", "intensity": [ 3, 6 ], "duration": [ 20, 60 ] } ], @@ -284,6 +302,8 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 60, + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "emit_fields": [ { "emit_id": "emit_pollen_stream", "delay": "1 s" } ], "harvest": "triffid_paralytic", "dissect": "dissect_plant_sample_small", @@ -309,6 +329,8 @@ "aggression": 100, "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_triffid" ], + "families": [ "prof_intro_biology", "prof_wp_triffid_basic", "prof_wp_triffid_advanced" ], "harvest": "triffid_small", "dissect": "dissect_plant_sample_huge", "special_attacks": [ [ "TRIFFID_HEARTBEAT", 50 ] ], From de223ac0cbdac9de65a794400ee752b6bf5658b7 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:13:30 +0500 Subject: [PATCH 22/29] Update weakpoints.json Co-authored-by: PatrikLundell --- data/json/proficiencies/weakpoints.json | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/data/json/proficiencies/weakpoints.json b/data/json/proficiencies/weakpoints.json index 19cc472fafd3d..32887f1301777 100644 --- a/data/json/proficiencies/weakpoints.json +++ b/data/json/proficiencies/weakpoints.json @@ -206,5 +206,29 @@ "required_proficiencies": [ "prof_intro_biology" ], "default_weakpoint_bonus": 4, "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_triffid_basic", + "category": "prof_weakpoint", + "name": { "str": "Triffid basic anatomy" }, + "description": "Study of triffids has given you insights into their anatomy that allows you to aim for some weak spots.", + "can_learn": true, + "required_proficiencies": [ "prof_intro_biology" ], + "time_to_learn": "6 h", + "default_weakpoint_bonus": 1, + "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_triffid_advanced", + "category": "prof_weakpoint", + "name": { "str": "Triffid detailed anatomy" }, + "description": "Extensive study of triffids has provided you with a good understanding of their strengths and weaknesses when it comes to combat. A scientific study of them might yield further biological insights, but you don't have the time to spend years cooped up in a lab.", + "can_learn": true, + "time_to_learn": "24 h", + "required_proficiencies": [ "prof_wp_triffid_basic" ], + "default_weakpoint_bonus": 2, + "default_weakpoint_penalty": -2 } ] From e1d85ce87fde8116642544dd5d279b0ca37dc82e Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Sun, 26 Nov 2023 23:14:04 +0500 Subject: [PATCH 23/29] Add files via upload Co-authored-by: PatrikLundell --- data/json/snippets/triffid_anatomy.json | 30 +++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 data/json/snippets/triffid_anatomy.json diff --git a/data/json/snippets/triffid_anatomy.json b/data/json/snippets/triffid_anatomy.json new file mode 100644 index 0000000000000..0102623c2ce10 --- /dev/null +++ b/data/json/snippets/triffid_anatomy.json @@ -0,0 +1,30 @@ +[ + { + "type": "snippet", + "category": "", + "text": [ + "The bark of this \"plant\" has a bark like texture, but is more leathery in consistency.", + "The smell emanating from the creature when you dissect it reminds you of vegetables.", + "The monster's sap is sticky and somewhat greenish.", + "While outwardly plant like, the creature's muscles look surprisingly similar to those of normal animals.", + "Thick fibers are found throughout the body of the creature. Perhaps they serve a scaffolding purpose similar to that of (very flexible) bones.", + "The creature's whip like sting drips from poison. You take extra care not to accidentally scratch yourself on it." + ] + }, + { + "type": "snippet", + "category": "", + "text": [ + "The creature appears to have a vascular system vaguely similar to those of animals, with a branching network of vein, although the organization is unfamiliar.", + "You find what you think is a heart, although it doesn't look like any configuration you know of from Earth. In fact, you find four hearts, each seemingly supporting a lateral quarter of the body.", + "A sac connected to the sting is filled with some fluid. Might it perhaps have some useful properties?", + "While the roots of the plant creature contain muscles and veins, they also contain finer networks indicating a use for nutrient uptake when the roots are lodged into the soil.", + "At the top of the creature you find what you assume is a brain, although it seems to employ quadrilateral symmetry and thus is shaped and organized completely differently from that of terrestial versions." + ] + }, + { + "type": "snippet", + "category": "", + "text": [ "", "", " " ] + } +] From f0b8493f382b1c04add454be0b0d4b33b99b5d58 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:33:53 +0500 Subject: [PATCH 24/29] Update harvest.json Co-authored-by: PatrikLundell --- data/json/harvest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/data/json/harvest.json b/data/json/harvest.json index b07b0eee2d49b..844bd17180141 100644 --- a/data/json/harvest.json +++ b/data/json/harvest.json @@ -1925,6 +1925,7 @@ { "id": "fungaloid", "type": "harvest", + "message": "", "entries": [ { "drop": "veggy_tainted", "type": "flesh", "mass_ratio": 0.5 }, { "drop": "plant_sac", "type": "offal", "mass_ratio": 0.2 }, From ab2cb2c2d126ab5c52c4b9fcc9e3335621f4e038 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:36:00 +0500 Subject: [PATCH 25/29] Add files via upload Co-authored-by: PatrikLundell --- .../fungaloid_weakpoints.json | 99 +++++++++++++++++++ .../monster_weakpoints/slime_weakpoints.json | 80 +++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 data/json/monster_weakpoints/fungaloid_weakpoints.json create mode 100644 data/json/monster_weakpoints/slime_weakpoints.json diff --git a/data/json/monster_weakpoints/fungaloid_weakpoints.json b/data/json/monster_weakpoints/fungaloid_weakpoints.json new file mode 100644 index 0000000000000..e212b215d2d60 --- /dev/null +++ b/data/json/monster_weakpoints/fungaloid_weakpoints.json @@ -0,0 +1,99 @@ +[ + { + "type": "weakpoint_set", + "id": "wps_fungaloid", + "weakpoints": [ + { + "id": "arm", + "name": "the arm", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 4, "melee": 3 }, + "coverage_mult": { "point": 0.75 }, + "effects": [ + { "effect": "staggered", "chance": 15, "message": "The %s is knocked off-balance!", "damage_required": [ 10, 30 ] }, + { + "effect": "staggered", + "chance": 25, + "message": "The %s is knocked off-balance!", + "damage_required": [ 31, 100 ] + } + ], + "coverage": 6 + }, + { + "id": "leg", + "name": "the leg", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 3, "melee": 1 }, + "coverage_mult": { "point": 0.75 }, + "effects": [ + { "effect": "downed", "chance": 5, "message": "The %s is knocked down!", "damage_required": [ 10, 30 ] }, + { "effect": "downed", "chance": 15, "message": "The %s is knocked down!", "damage_required": [ 31, 50 ] }, + { "effect": "downed", "chance": 25, "message": "The %s is knocked down!", "damage_required": [ 51, 100 ] } + ], + "coverage": 15 + }, + { + "id": "head", + "name": "the head", + "coverage": 5, + "crit_mult": { "all": 1.1 }, + "armor_mult": { "physical": 0.75 }, + "difficulty": { "melee": 2, "ranged": 5 }, + "effects": [ + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 5, + "message": "The %s is stunned!", + "damage_required": [ 1, 10 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 25, + "message": "The %s is stunned!", + "damage_required": [ 11, 50 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 45, + "message": "The %s is stunned!", + "damage_required": [ 51, 100 ] + } + ] + } + ] + }, + { + "type": "weakpoint_set", + "id": "wps_fungaloid_structure", + "weakpoints": [ + { + "id": "gap", + "name": "a small gap in the thick wall", + "coverage": 5, + "difficulty": { "melee": 4, "ranged": 5 }, + "coverage_mult": { "broad": 0.5 }, + "armor_mult": { "all": 0.25 } + }, + { + "id": "joint", + "name": "a soft fold in the thick wall", + "coverage": 10, + "difficulty": { "melee": 3, "ranged": 5 }, + "coverage_mult": { "point": 0.75 }, + "armor_mult": { "all": 0.5 } + }, + { + "id": "hard_hide", + "name": "a particularly thick patch of the wall", + "armor_mult": { "all": 1.25 }, + "crit_mult": { "all": 0.75 }, + "coverage_mult": { "melee": 0.75 }, + "coverage": 3 + } + ] + } +] diff --git a/data/json/monster_weakpoints/slime_weakpoints.json b/data/json/monster_weakpoints/slime_weakpoints.json new file mode 100644 index 0000000000000..8226ae9e6fe0f --- /dev/null +++ b/data/json/monster_weakpoints/slime_weakpoints.json @@ -0,0 +1,80 @@ +[ + { + "type": "weakpoint_set", + "id": "wps_slime", + "weakpoints": [ + { + "id": "body", + "name": "the body", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 4, "melee": 3 }, + "coverage_mult": { "point": 0.75 }, + "effects": [ + { "effect": "staggered", "chance": 15, "message": "The %s is knocked off-balance!", "damage_required": [ 10, 30 ] }, + { + "effect": "staggered", + "chance": 25, + "message": "The %s is knocked off-balance!", + "damage_required": [ 31, 100 ] + } + ], + "coverage": 6 + }, + { + "id": "insensitive_spot", + "name": "a spot with virtually nothing to damage", + "armor_mult": { "all": 1.25 }, + "crit_mult": { "all": 0.75 }, + "coverage_mult": { "melee": 0.75 }, + "coverage": 3 + }, + { + "id": "organ", + "name": "an organ inside the slime, causing the slime to freeze up briefly as it reconstitutes it", + "crit_mult": { "all": 0.75 }, + "difficulty": { "melee": 3, "ranged": 5 }, + "coverage_mult": { "melee": 0.75 }, + "effects": [ + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 5, + "message": "The %s is stunned!", + "damage_required": [ 1, 10 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 25, + "message": "The %s is stunned!", + "damage_required": [ 11, 50 ] + }, + { + "effect": "stunned", + "duration": [ 1, 2 ], + "chance": 45, + "message": "The %s is stunned!", + "damage_required": [ 51, 100 ] + } + ], + "coverage": 3 + }, + { + "id": "fragment", + "name": "the body, separating a fragment that you manage to keep from rejoining the slime until the fragment melts away", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 3, "melee": 1 }, + "coverage_mult": { "point": 0.75 }, + "coverage": 5 + }, + { + "id": "pseudopod", + "name": "a pseudopod reaching out to strike you when you deftly counter strike it", + "crit_mult": { "all": 0.75 }, + "difficulty": { "ranged": 7, "melee": 5 }, + "coverage_mult": { "point": 0.75 }, + "coverage": 5 + } + ] + } +] From 221e4d216b2793ad566bb456f99c245e230395ca Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:43:12 +0500 Subject: [PATCH 26/29] Update fungus.json Co-authored-by: PatrikLundell --- data/json/monsters/fungus.json | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/data/json/monsters/fungus.json b/data/json/monsters/fungus.json index 0660140e83df5..2f565c6c8f452 100644 --- a/data/json/monsters/fungus.json +++ b/data/json/monsters/fungus.json @@ -18,6 +18,8 @@ "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "luminance": 40, "harvest": "exempt", "special_attacks": [ [ "FUNGUS_HAZE", 25 ] ], @@ -47,6 +49,8 @@ "melee_dice_sides": 3, "melee_damage": [ { "damage_type": "cut", "amount": 4 } ], "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "FUNGUS_BRISTLE", 10 ] ], "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, @@ -76,6 +80,8 @@ "melee_damage": [ { "damage_type": "cut", "amount": 3 } ], "dodge": 4, "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "FUNGUS_INJECT", 10 ] ], "death_function": { "corpse_type": "NO_CORPSE", "effect": { "id": "death_fungus", "hit_self": true } }, @@ -104,6 +110,8 @@ "melee_dice_sides": 10, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "FUNGUS", 10 ] ], "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, @@ -133,6 +141,8 @@ "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "fungaloid", "special_attacks": [ [ "FUNGUS", 30 ] ], "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, @@ -151,6 +161,8 @@ "hp": 150, "speed": 20, "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "special_attacks": [ [ "FUNGUS", 20 ], { @@ -187,6 +199,8 @@ "aggression": 100, "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "special_attacks": [ [ "FUNGUS_SPROUT", 10 ] ], "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, "harvest": "fungaloid_mass", @@ -211,6 +225,8 @@ "aggression": 100, "morale": 100, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "luminance": 200, "special_attacks": [ [ "FUNGUS_BIG_BLOSSOM", 10 ] ], "death_function": { "effect": { "id": "death_fungus", "hit_self": true } }, @@ -239,6 +255,8 @@ "melee_dice": 3, "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 5 } ], + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "dodge": 3, "special_attacks": [ [ "FUNGUS_FORTIFY", 10 ] ], "death_drops": "marloss_yellow_drops", @@ -270,6 +288,8 @@ "melee_damage": [ { "damage_type": "cut", "amount": 2 } ], "dodge": 1, "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "fungaloid", "special_attacks": [ [ "FUNGUS_GROWTH", 10000 ] ], "flags": [ "HEARS", "POISON", "NO_BREATHE", "NOHEAD" ], @@ -295,6 +315,8 @@ "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "dodge": 2, "bleed_rate": 0, + "weakpoint_sets": [ "wps_fungaloid_structure" ], + "families": [ "prof_intro_biology", "prof_physiology", "prof_wp_fungaloid_basic", "prof_wp_fungaloid_advanced" ], "harvest": "exempt", "special_attacks": [ [ "PLANT", 100 ] ], "death_function": { "message": "The %s disintegrates!", "corpse_type": "NO_CORPSE" }, From c7c527cf84906230fe18f87e7fef9b5d17749625 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:45:00 +0500 Subject: [PATCH 27/29] Update slimes.json Co-authored-by: PatrikLundell --- data/json/monsters/slimes.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/data/json/monsters/slimes.json b/data/json/monsters/slimes.json index 308faeee9bb5a..b265f3f1571c8 100644 --- a/data/json/monsters/slimes.json +++ b/data/json/monsters/slimes.json @@ -23,6 +23,8 @@ "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 30, + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "harvest": "exempt", "special_attacks": [ [ "FORMBLOB", 30 ] ], "death_function": { @@ -57,6 +59,8 @@ "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 20, + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "harvest": "exempt", "special_attacks": [ [ "CALLBLOBS", 0 ] ], "death_function": { @@ -92,6 +96,8 @@ "melee_dice_sides": 6, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], "bleed_rate": 30, + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "harvest": "exempt", "special_attacks": [ [ "FORMBLOB", 20 ] ], "death_function": { @@ -125,6 +131,8 @@ "melee_dice": 1, "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "harvest": "exempt", "death_function": { "message": "The %s's body melts away.", "corpse_type": "NO_CORPSE" }, "death_drops": "mon_blob_small_deathdrops", @@ -152,6 +160,8 @@ "melee_dice": 2, "melee_dice_sides": 3, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "harvest": "exempt", "death_drops": "slime_sample_small", "special_attacks": [ [ "FORMBLOB", 4 ] ], @@ -182,6 +192,8 @@ "melee_dice": 2, "melee_dice_sides": 4, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "dodge": 1, "vision_day": 16, "vision_night": 10, @@ -219,6 +231,8 @@ "melee_dice": 4, "melee_dice_sides": 6, "melee_damage": [ { "damage_type": "cut", "amount": 0 } ], + "weakpoint_sets": [ "wps_slime" ], + "families": [ "prof_intro_biology", "prof_wp_slime_basic", "prof_wp_slime_advanced" ], "vision_day": 30, "vision_night": 10, "harvest": "exempt", From a96a8d0e06494e9382e9b5be3e02b6a4c31d9feb Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:47:21 +0500 Subject: [PATCH 28/29] Update weakpoints.json Co-authored-by: PatrikLundell --- data/json/proficiencies/weakpoints.json | 48 +++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/data/json/proficiencies/weakpoints.json b/data/json/proficiencies/weakpoints.json index 32887f1301777..2479b8b3c2dd9 100644 --- a/data/json/proficiencies/weakpoints.json +++ b/data/json/proficiencies/weakpoints.json @@ -230,5 +230,53 @@ "required_proficiencies": [ "prof_wp_triffid_basic" ], "default_weakpoint_bonus": 2, "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_slime_basic", + "category": "prof_weakpoint", + "name": { "str": "Slime basic weaknesses" }, + "description": "After having engaged slimes to a significant extent you have started to get better at exploiting weaknesses in their behavior and, for lack of better terms, \"physiology\".", + "can_learn": true, + "required_proficiencies": [ "prof_intro_biology" ], + "time_to_learn": "6 h", + "default_weakpoint_bonus": 1, + "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_slime_advanced", + "category": "prof_weakpoint", + "name": { "str": "Slime detailed weaknesses" }, + "description": "You've probably reached the pinnacle of slime weakness exploitation, but it has taken an enormous amount of combat to acquire it.", + "can_learn": true, + "time_to_learn": "24 h", + "required_proficiencies": [ "prof_wp_slime_basic" ], + "default_weakpoint_bonus": 2, + "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_fungaloid_basic", + "category": "prof_weakpoint", + "name": { "str": "Fungaloid basic anatomy" }, + "description": "You have studied fungaloids sufficiently to get an idea of which parts are the more sensitive ones. While seeming to be a weird mixture of fungus and animal, it at least has a structure with commonalities between different types of fungaloids.", + "can_learn": true, + "required_proficiencies": [ "prof_intro_biology" ], + "time_to_learn": "6 h", + "default_weakpoint_bonus": 1, + "default_weakpoint_penalty": -2 + }, + { + "type": "proficiency", + "id": "prof_wp_fungaloid_advanced", + "category": "prof_weakpoint", + "name": { "str": "Fungaloid detailed anatomy" }, + "description": "You have advanced your understanding of the fungaloid body sufficiently to have a pretty good idea of where you can harm it and where it's better protected. You don't really understand it's biological functions, although it seems it would be possible for someone with much more time than you have to glean some insight into it, but you've gotten an understanding of how to hurt it, and that's what's important here.", + "can_learn": true, + "time_to_learn": "24 h", + "required_proficiencies": [ "prof_wp_fungaloid_basic" ], + "default_weakpoint_bonus": 2, + "default_weakpoint_penalty": -2 } ] From c84112dcbe19cc043731d66bcfb8bff307d50725 Mon Sep 17 00:00:00 2001 From: Kenshut <120565475+Kenshut@users.noreply.github.com> Date: Wed, 29 Nov 2023 20:47:48 +0500 Subject: [PATCH 29/29] Add files via upload Co-authored-by: PatrikLundell --- data/json/snippets/fungaloid_anatomy.json | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 data/json/snippets/fungaloid_anatomy.json diff --git a/data/json/snippets/fungaloid_anatomy.json b/data/json/snippets/fungaloid_anatomy.json new file mode 100644 index 0000000000000..356e93f658a1b --- /dev/null +++ b/data/json/snippets/fungaloid_anatomy.json @@ -0,0 +1,32 @@ +[ + { + "type": "snippet", + "category": "", + "text": [ + "While cutting through the skin of the creature you notice a resemblance to both mushroom skin and animal skin. Odd.", + "Cutting the creature open makes its smell more noticeable. The smell is strange, but not unpleasant, and has a hint of mushroom.", + "What passes for blood in this creature is a clear fluid, but there isn't a lot of it outside of sacs distributed around the body.", + "What you think are muscles aren't too dissimilar from that of animals, if you're looking at it from a very general perspective and disregard the pale color and rubbery texture.", + "The fibers you find inside the creatures are more akin to plant fibers than anything found in animals or terrestial fungii.", + "You narrowly dodge a puff of spores when you accidentally cut into the spore sac.", + "The fungaloid has a number of rather primitive looking eyes, but they're distributed all over the body." + ] + }, + { + "type": "snippet", + "category": "", + "text": [ + "You cannot find anything resembling a vascular system, but instead the whole structure is slightly spongy and rubbery.", + "The creature seems to have regions of slightly different tissue, but you cannot find any regular organs to speak of.", + "The gills of the fungaloid seems to be used to release spores only, with no discernible connection to anything resembling blood vessels and with the connected sac used to expel spores being smooth with no hint of having a respiratory function.", + "You find that the tendrils at the base of the creature seem to serve a dual role of providing mobility as well as to connect to a mycelium, with a capillary network within them possibly serving to transfer nutrients, but the network ends a short distance into the base.", + "A further look at some of the creatures eyes indicates they may are lense less membranes over cavities probably operating according to the camera obscura principle. However, you cannot distinguish the tissue where a retina ought to be from the general structure of the creature.", + "Despite searching, you're unable to find anything resembling a brain, or even anything resembling nerves. You can't find any clue to how the creature is able to think or coordinate movements." + ] + }, + { + "type": "snippet", + "category": "", + "text": [ "", "", " " ] + } +]