Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Martial Mastery: Duelist Combos & Five point Exploding Heart Technique #79614

Merged
merged 2 commits into from
Feb 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions data/mods/Perk_melee/EOC/duelist_eocs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
[
{
"id": "EOC_PERK_duelist_insert_reach",
"type": "effect_on_condition",
"condition": {
"and": [
{ "math": [ "u_effect_intensity('mabuff:buff_perk_momentum') <= 1" ] },
{ "u_has_flag": "MELEE_PERK_DUELIST_LUNGE" },
{
"or": [
{ "u_has_wielded_with_weapon_category": "LONG_THRUSTING_SWORDS" },
{ "u_has_wielded_with_weapon_category": "FENCING_WEAPONRY" }
]
}
]
},
"effect": [
{ "turn_cost": 0.05 },
{
"u_run_inv_eocs": "all",
"search_data": [ { "wielded_only": true } ],
"true_eocs": [
{
"id": "_melee_perk_insert_reach",
"effect": [
{
"if": { "not": { "npc_has_flag": "REACH_ATTACK" } },
"then": [ { "npc_set_flag": "REACH_ATTACK" }, { "math": [ "n_duelist_reach_modified = 1" ] } ]
}
]
}
]
}
],
"false_effect": [ { "run_eocs": "EOC_PERK_duelist_remove_reach" } ]
},
{
"id": "EOC_PERK_duelist_remove_reach",
"type": "effect_on_condition",
"effect": [
{
"u_run_inv_eocs": "all",
"search_data": [ { "wielded_only": true }, { "condition": { "math": [ "n_duelist_reach_modified == 1" ] } } ],
"true_eocs": [
{
"id": "_melee_perk_remove_reach",
"effect": [ { "npc_unset_flag": "REACH_ATTACK" }, { "math": [ "n_duelist_reach_modified = 0" ] } ]
}
]
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_PERK_duelist_remove_reach_effect",
"eoc_type": "EVENT",
"required_event": "character_loses_effect",
"condition": { "and": [ { "compare_string": [ "mabuff:buff_perk_momentum", { "context_val": "effect" } ] } ] },
"effect": [ { "run_eocs": [ "EOC_PERK_duelist_remove_reach" ] } ]
}
]
14 changes: 14 additions & 0 deletions data/mods/Perk_melee/EOC/eoc_clears.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,19 @@
"id": "EOC_CLEAR_MOMENTUM",
"type": "effect_on_condition",
"effect": [ { "u_lose_effect": [ "mabuff:buff_perk_momentum", "perk_dex_bonus" ] } ]
},
{
"id": "EOC_CLEAR_MOMENTUM_DUELIST",
"type": "effect_on_condition",
"condition": {
"and": [
{ "math": [ "u_effect_intensity('mabuff:buff_perk_momentum') > 1" ] },
{ "u_has_flag": "MELEE_PERK_MOMENTUM_DUELIST" }
]
},
"effect": [
{ "u_lose_effect": [ "mabuff:buff_perk_momentum", "perk_dex_bonus" ] },
{ "run_eocs": [ "EOC_PERK_MOMENTUM_2", "EOC_PERK_MOMENTUM_MANUAL", "EOC_PERK_duelist_insert_reach" ] }
]
}
]
47 changes: 47 additions & 0 deletions data/mods/Perk_melee/EOC/pressure_strikes_eocs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
[
{
"type": "effect_on_condition",
"id": "EOC_PERK_PRESSURE_STRIKES_MONSTER",
"eoc_type": "EVENT",
"required_event": "monster_takes_damage",
"condition": { "and": [ "has_beta", "has_alpha", { "npc_has_flag": "MELEE_PERK_PRESSURE_STRIKES" }, { "not": "npc_has_weapon" } ] },
"effect": [
{ "math": [ "u_pressure_redeal_damage", "+=", "_damage" ] },
{
"if": { "math": [ "u_pressure_redeal_queued", "!=", "1" ] },
"then": [ { "math": [ "u_pressure_redeal_queued = 1" ] }, { "math": [ "u_timer_pressure_redeal = time('now')" ] } ]
}
]
},
{
"type": "effect_on_condition",
"id": "EOC_PERK_PRESSURE_STRIKES_SCHEDULE",
"//": "Timing can be wonky so we also schedule ahead.",
"effect": [
{ "run_eocs": "EOC_PERK_PRESSURE_STRIKES_DEAL_DAMAGE", "time_in_future": 4 },
{ "run_eocs": "EOC_PERK_PRESSURE_STRIKES_DEAL_DAMAGE", "time_in_future": 6 }
]
},
{
"id": "EOC_PERK_PRESSURE_STRIKES_DEAL_DAMAGE",
"type": "effect_on_condition",
"effect": [
{
"u_run_monster_eocs": [
{
"id": "_pressure_point_mon_redeal",
"condition": {
"and": [ { "math": [ "u_pressure_redeal_queued == 1" ] }, { "math": [ "time_since(u_timer_pressure_redeal) > time(' 3s')" ] } ]
},
"effect": [
{ "math": [ "u_pressure_redeal_queued = 0" ] },
{ "u_deal_damage": "pure", "amount": { "u_val": "pressure_redeal_damage" }, "bodypart": "torso" },
{ "math": [ "u_timer_pressure_redeal = time('now')+ time('60h')" ] },
{ "math": [ "u_pressure_redeal_damage = 0" ] }
]
}
]
}
]
}
]
62 changes: 58 additions & 4 deletions data/mods/Perk_melee/EOC/shared_eocs.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,22 @@
}
]
},
{
"id": "EOC_PERK_VICTIM_AFFLICTOR_MON",
"type": "effect_on_condition",
"eoc_type": "EVENT",
"required_event": "character_melee_attacks_monster",
"condition": { "math": [ "_hits == true" ] },
"effect": [ { "npc_add_effect": "perk_hit_marker", "duration": "2 seconds" } ]
},
{
"id": "EOC_PERK_VICTIM_AFFLICTOR_CHAR",
"type": "effect_on_condition",
"eoc_type": "EVENT",
"required_event": "character_melee_attacks_character",
"condition": { "math": [ "_hits == true" ] },
"effect": [ { "npc_add_effect": "perk_hit_marker", "duration": "2 seconds" } ]
},
{
"id": "EOC_EXECUTION_EXTA_EFFECTS",
"type": "effect_on_condition",
Expand All @@ -63,6 +79,15 @@
}
]
},
{
"id": "EOC_PERK_STEP_CLOSER",
"type": "effect_on_condition",
"effect": [
{ "run_eocs": "EOC_PERK_TRY_STEP_CLOSER", "condition": { "math": [ "u_done_step_closer != 1" ] }, "iterations": 20 },
{ "run_eocs": "EOC_PERK_MOMENTUM_UPDATE" },
{ "math": [ "u_done_step_closer = 0" ] }
]
},
{
"id": "EOC_PERK_DODGE_RETREAT_MANUAL",
"type": "effect_on_condition",
Expand All @@ -75,12 +100,25 @@
}
]
},
{
"id": "EOC_PERK_MOVEMENT_ATTACK",
"type": "effect_on_condition",
"effect": [
{ "set_string_var": { "mutator": "valid_technique" }, "target_var": { "context_val": "random_attack" } },
{ "u_attack": { "context_val": "random_attack" } }
]
},
{
"id": "EOC_PERK_TEMPO_MANUAL",
"type": "effect_on_condition",
"condition": { "u_has_trait": "MELEE_PERK_TEMPO" },
"effect": { "u_add_effect": "mabuff:buff_perk_tempo", "duration": "2 seconds" }
},
{
"id": "EOC_PERK_MOMENTUM_UPDATE",
"type": "effect_on_condition",
"effect": [ { "run_eocs": [ "EOC_PERK_MOMENTUM_MANUAL", "EOC_PERK_MOMENTUM_2", "EOC_PERK_duelist_insert_reach" ] } ]
},
{
"id": "EOC_PERK_MOMENTUM_MANUAL",
"type": "effect_on_condition",
Expand All @@ -93,6 +131,25 @@
"condition": { "u_has_trait": "MELEE_PERK_MOMENTUM_2" },
"effect": { "u_add_effect": "perk_dex_bonus", "duration": "2 seconds" }
},
{
"id": "EOC_PERK_TRY_STEP_CLOSER",
"type": "effect_on_condition",
"effect": [
{ "u_location_variable": { "context_val": "original_pos" } },
{ "npc_location_variable": { "context_val": "attempt" }, "min_radius": 1, "max_radius": 1 },
{ "u_teleport": { "context_val": "attempt" } },
{
"run_eocs": [
{
"id": "_VALID_STEP_CLOSER",
"condition": { "math": [ "distance(_original_pos, _attempt ) > 1" ] },
"effect": [ { "u_teleport": { "context_val": "original_pos" } } ],
"false_effect": [ { "math": [ "u_done_step_closer = 1" ] } ]
}
]
}
]
},
{
"id": "EOC_PERK_TRY_RETREAT",
"type": "effect_on_condition",
Expand All @@ -105,10 +162,7 @@
{
"id": "_VALID_RETREAT",
"condition": { "math": [ "u_monsters_nearby('radius': 1) == 0" ] },
"effect": [
{ "u_add_effect": "mabuff:buff_perk_momentum", "duration": 2 },
{ "run_eocs": [ "EOC_PERK_MOMENTUM_2", "EOC_PERK_MOMENTUM_MANUAL" ] }
],
"effect": [ { "run_eocs": [ "EOC_PERK_MOMENTUM_UPDATE" ] } ],
"false_effect": [ { "u_teleport": { "context_val": "original_pos" } } ]
}
]
Expand Down
69 changes: 69 additions & 0 deletions data/mods/Perk_melee/EOC/tempo_eocs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
[
{
"id": "EOC_PERK_tempo_assault_char",
"type": "effect_on_condition",
"eoc_type": "EVENT",
"required_event": "character_melee_attacks_character",
"condition": { "and": [ { "math": [ "_hits == true" ] }, { "u_has_flag": "MELEE_PERK_TEMPO_ASSAULT" }, { "not": "npc_is_alive" } ] },
"effect": [
{ "npc_location_variable": { "context_val": "pos" } },
{ "u_location_variable": { "context_val": "pos2" } },
{
"if": { "math": [ "distance(_pos, _pos2 ) <= 1" ] },
"then": [ { "run_eocs": [ "EOC_PERK_tempo_assault" ] } ]
}
]
},
{
"id": "EOC_PERK_tempo_assault_mon",
"type": "effect_on_condition",
"eoc_type": "EVENT",
"required_event": "character_kills_monster",
"condition": { "and": [ { "u_has_flag": "MELEE_PERK_TEMPO_ASSAULT" } ] },
"effect": [
{ "npc_location_variable": { "context_val": "pos" } },
{ "u_location_variable": { "context_val": "pos2" } },
{
"if": { "math": [ "distance(_pos, _pos2 ) <= 1" ] },
"then": [ { "run_eocs": [ "EOC_PERK_tempo_assault" ] } ]
}
]
},
{
"id": "EOC_PERK_tempo_assault",
"type": "effect_on_condition",
"effect": [
{ "npc_location_variable": { "context_val": "pos" } },
{ "u_teleport": { "context_val": "pos" } },
{ "run_eocs": [ "EOC_PERK_MOMENTUM_UPDATE" ] },
{
"u_run_monster_eocs": [
{
"id": "EOC_PERK_tempo_assault_attack",
"condition": { "math": [ "u_assault_attacked != 1" ] },
"effect": [
{ "run_eocs": "EOC_PERK_MOVEMENT_ATTACK", "alpha_loc": "avatar", "beta_talker": "u" },
{ "math": [ "u_assault_attacked = 1" ] }
]
}
],
"monster_range": 1,
"monster_must_see": true
},
{ "math": [ "u_assault_attacked = 0" ] }
]
},
{
"id": "EOC_PERK_tempo_zoning",
"type": "effect_on_condition",
"condition": { "and": [ { "u_has_flag": "MELEE_PERK_TEMPO_ZONING" } ] },
"effect": [
{
"run_eocs": "EOC_PERK_TRY_RETREAT",
"condition": { "math": [ "u_monsters_nearby('radius': 1) > 0" ] },
"iterations": 10
},
{ "run_eocs": [ "EOC_CLEAR_COMBAT_TEMPO" ] }
]
}
]
8 changes: 8 additions & 0 deletions data/mods/Perk_melee/PERKS/momentum.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,13 @@
"description": "If you have at least 4 momentum stacks, gain a 5% chance to dodge any ranged attack for every point of dexterity you have. If you have less than 4 momentum stacks, gain a 1% chance to dodge any ranged attack for every point of dexterity you have.",
"flags": "MELEE_PERK_MOMENTUM_BULLET_DODGE",
"enchantments": [ "melee_perk_ench_momentum_bullet_dodge" ]
},
{
"type": "mutation",
"id": "MELEE_PERK_MOMENTUM_DUELIST",
"copy-from": "MELEE_PERK_BASE",
"name": { "str": "Duelist Form" },
"description": "If you have more than 1 momentum stack, your momentum will be set to 1 whenever you wait a turn.",
"flags": "MELEE_PERK_MOMENTUM_DUELIST"
}
]
8 changes: 8 additions & 0 deletions data/mods/Perk_melee/PERKS/perks.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@
"description": "You aren't even trying.\nYou clear all combat buffs whenever you wait.",
"flags": "MELEE_PERK_CAREFREE_STANCE"
},
{
"type": "mutation",
"id": "MELEE_PERK_PRESSURE_STRIKES",
"copy-from": "MELEE_PERK_BASE",
"name": { "str": "Pressure Points" },
"description": "Your unarmed melee attacks will redeal damage to their targets after 4 turns.",
"flags": "MELEE_PERK_PRESSURE_STRIKES"
},
{
"type": "mutation",
"id": "MELEE_PERK_MOVING_DODGE",
Expand Down
25 changes: 25 additions & 0 deletions data/mods/Perk_melee/PERKS/tempo.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@
"description": "Perfect. Now do it again.\nAttacks generate stacks of combat tempo. Tempo greatly favors the strong.",
"flags": "MELEE_PERK_TEMPO"
},
{
"type": "mutation",
"id": "MELEE_PERK_COMBAT_TEMPO_2",
"copy-from": "MELEE_PERK_BASE",
"name": { "str": "Perfect Tempo" },
"description": "You gain +15 quickness as long as you have the maximum number of combat tempo stacks.",
"flags": "MELEE_PERK_PERFECT_TEMPO",
"enchantments": [ "melee_perk_ench_perfect_tempo" ]
},
{
"type": "mutation",
"id": "MELEE_PERK_TEMPO_SHIFT",
Expand All @@ -15,6 +24,22 @@
"description": "Gain a stack of combat tempo whenever you successfully block an attack.",
"flags": "MELEE_PERK_TEMPO_SHIFT"
},
{
"type": "mutation",
"id": "MELEE_PERK_TEMPO_ASSAULT",
"copy-from": "MELEE_PERK_BASE",
"name": { "str": "Unrelenting Assault" },
"description": "Whenever you kill an enemy in melee, you'll advance into their position and automatically attack an adjacent enemy. You'll gain a momentum stack if you can normally gain them.",
"flags": "MELEE_PERK_TEMPO_ASSAULT"
},
{
"type": "mutation",
"id": "MELEE_PERK_TEMPO_ZONING",
"copy-from": "MELEE_PERK_BASE",
"name": { "str": "Zoning" },
"description": "If you have the maximum number of combat tempo stacks, killing an enemy will move you away from any other adjacent enemies. This movement action will consume all of your combat tempo stacks, and grant you a momentum stack if can normally gain them.",
"flags": "MELEE_PERK_TEMPO_ZONING"
},
{
"type": "mutation",
"id": "MELEE_PERK_TEMPO_THROW",
Expand Down
10 changes: 9 additions & 1 deletion data/mods/Perk_melee/enchantments.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
"special_vision": [
{
"distance": 10,
"descriptions": [ { "id": "moving_creature", "symbol": "?", "color": "c_white", "text": "Your sixth sense point you here." } ]
"descriptions": [ { "id": "moving_creature", "symbol": "?", "color": "c_white", "text": "Something hides here." } ]
}
]
},
Expand All @@ -26,6 +26,14 @@
"condition": { "math": [ "u_effect_intensity('perk_insight')", ">", "9" ] },
"values": [ { "value": "DODGE_CHANCE", "add": 25 } ]
},
{
"type": "enchantment",
"id": "melee_perk_ench_perfect_tempo",
"name": { "str": "Perfect Tempo" },
"description": " +15 quickness as long as you have the maximum number of combat tempo stacks.",
"condition": { "math": [ "u_effect_intensity('mabuff:buff_perk_tempo')", ">", "2" ] },
"values": [ { "value": "SPEED", "add": 15 } ]
},
{
"type": "enchantment",
"id": "melee_perk_ench_insight_mystic_shot",
Expand Down
Loading
Loading