11832 lines
360 KiB
Text
11832 lines
360 KiB
Text
|
|
namespace = single_combat
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# # SINGLE COMBAT EVENTS
|
||
|
|
# 0001 - 0020 Participant Events
|
||
|
|
# 0021 - 0030 Round End Events
|
||
|
|
# 0031 - 0050 Results Events
|
||
|
|
# 1001 - 1020 Debug Events
|
||
|
|
#
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# MISC SCRIPTED TRIGGERS
|
||
|
|
|
||
|
|
# If scope:fatality = flag:default, then will a character die when the duel is concluded?
|
||
|
|
scripted_trigger fatality_default_will_die_trigger = {
|
||
|
|
scope:sc_attacker = {
|
||
|
|
OR = {
|
||
|
|
#scope:sc_attacker is tribal.
|
||
|
|
AND = {
|
||
|
|
is_ruler = yes
|
||
|
|
government_has_flag = government_is_tribal
|
||
|
|
}
|
||
|
|
#scope:sc_attacker has a tribal court_owner.
|
||
|
|
AND = {
|
||
|
|
is_ruler = no
|
||
|
|
exists = court_owner
|
||
|
|
scope:sc_attacker.court_owner = { government_has_flag = government_is_tribal}
|
||
|
|
}
|
||
|
|
#scope:sc_attacker has a tribal host.
|
||
|
|
AND = {
|
||
|
|
is_ruler = no
|
||
|
|
exists = host
|
||
|
|
scope:sc_attacker.host = { government_has_flag = government_is_tribal }
|
||
|
|
}
|
||
|
|
#scope:sc_attacker is isolated & landless, in which case we check scope:sc_defender.
|
||
|
|
AND = {
|
||
|
|
is_ruler = no
|
||
|
|
NOR = {
|
||
|
|
exists = court_owner
|
||
|
|
exists = host
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
OR = {
|
||
|
|
#scope:sc_defender is tribal.
|
||
|
|
AND = {
|
||
|
|
is_ruler = yes
|
||
|
|
government_has_flag = government_is_tribal
|
||
|
|
}
|
||
|
|
#scope:sc_defender has a tribal court_owner.
|
||
|
|
AND = {
|
||
|
|
is_ruler = no
|
||
|
|
exists = court_owner
|
||
|
|
scope:sc_defender.court_owner = { government_has_flag = government_is_tribal}
|
||
|
|
}
|
||
|
|
#scope:sc_defender has a tribal host.
|
||
|
|
AND = {
|
||
|
|
is_ruler = no
|
||
|
|
exists = host
|
||
|
|
scope:sc_defender.host = { government_has_flag = government_is_tribal }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Will the duel end in the death of your opponent for any reason?
|
||
|
|
scripted_trigger duel_will_end_in_opponent_death_trigger = {
|
||
|
|
# Hard disable if fatality has been disabled.
|
||
|
|
NOT = { scope:fatality = flag:no }
|
||
|
|
OR = {
|
||
|
|
# The duel has default fatality enabled & validated.
|
||
|
|
fatality_default_will_die_trigger = yes
|
||
|
|
# The duel has fatality possible & your opponent is already critically wounded.
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:fatality = flag:possible
|
||
|
|
scope:sc_defender = { has_trait = wounded_3 }
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:fatality = flag:possible
|
||
|
|
scope:sc_attacker = { has_trait = wounded_3 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Fatality has been force-enabled.
|
||
|
|
scope:fatality = flag:always
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
scripted_trigger duel_will_end_in_my_death_trigger = {
|
||
|
|
# Hard disable if fatality has been disabled.
|
||
|
|
NOT = { scope:fatality = flag:no }
|
||
|
|
OR = {
|
||
|
|
# The duel has default fatality enabled & validated.
|
||
|
|
fatality_default_will_die_trigger = yes
|
||
|
|
# The duel has fatality possible & you are already critically wounded.
|
||
|
|
AND = {
|
||
|
|
scope:fatality = flag:possible
|
||
|
|
has_trait = wounded_3
|
||
|
|
}
|
||
|
|
# Fatality has been force-enabled.
|
||
|
|
scope:fatality = flag:always
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
scripted_trigger house_not_allowed_to_yell_motto_trigger = {
|
||
|
|
OR = {
|
||
|
|
NOT = { exists = house }
|
||
|
|
# Historical
|
||
|
|
dynasty = dynasty:1055
|
||
|
|
house = house:house_british_isles_wessex
|
||
|
|
# Vanity: because they're long.
|
||
|
|
dynasty = dynasty:vanity_riedinger
|
||
|
|
dynasty = dynasty:vanity_kaltsogiannis
|
||
|
|
# Vanity: because their punctuation screws things up.
|
||
|
|
dynasty = dynasty:vanity_bjarnehed
|
||
|
|
dynasty = dynasty:vanity_daflos
|
||
|
|
dynasty = dynasty:vanity_welch
|
||
|
|
dynasty = dynasty:vanity_opara
|
||
|
|
dynasty = dynasty:vanity_beaumont
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
scripted_trigger rocky_locale_trigger = {
|
||
|
|
OR = {
|
||
|
|
terrain = hills
|
||
|
|
terrain = mountains
|
||
|
|
terrain = desert_mountains
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# GENERAL SCRIPTED EFFECTS
|
||
|
|
|
||
|
|
# Grab a single special move from the list for this character to use this round.
|
||
|
|
scripted_effect select_special_tier_move_effect = {
|
||
|
|
#First, we flag that the character now has a special move option.
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_special_slot_used_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
#Then, we pick which move they get.
|
||
|
|
random_list = {
|
||
|
|
# High Secondary Skill moves
|
||
|
|
## Reason You Suck Speech
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_reason_you_suck_speech_flag }
|
||
|
|
diplomacy >= very_high_skill_rating
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_reason_you_suck_speech_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Technique from Legend
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_technique_from_legend_flag }
|
||
|
|
learning >= very_high_skill_rating
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_technique_from_legend_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Like a Viper
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_like_a_viper_flag }
|
||
|
|
intrigue >= very_high_skill_rating
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:like_a_viper
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:like_a_viper
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_like_a_viper_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Pocket Silver
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_pocket_silver_flag }
|
||
|
|
stewardship >= very_high_skill_rating
|
||
|
|
short_term_gold >= combat_move_pocket_silver_value
|
||
|
|
# Move essentially requires two arms, I'm afraid.
|
||
|
|
NOT = { has_trait = maimed }
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:pocket_silver
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_silver
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_pocket_silver_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Martial Voice
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_martial_voice_flag }
|
||
|
|
martial >= very_high_skill_rating
|
||
|
|
# For now, the loc relies on your opponent being noble, so you ironically can't use your peasant-commanding voice on actual peasants.
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = {
|
||
|
|
exists = house
|
||
|
|
NOR = {
|
||
|
|
has_trait = peasant_leader
|
||
|
|
government_has_flag = government_is_republic
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = {
|
||
|
|
exists = house
|
||
|
|
NOR = {
|
||
|
|
has_trait = peasant_leader
|
||
|
|
government_has_flag = government_is_republic
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:martial_voice
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:martial_voice
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_martial_voice_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Mocking Boast
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_mocking_boast_flag }
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker.prestige_level > scope:sc_defender.prestige_level
|
||
|
|
# A humble opponent doesn't give two shits.
|
||
|
|
scope:sc_defender = {
|
||
|
|
NOT = { has_trait = humble }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender.prestige_level > scope:sc_attacker.prestige_level
|
||
|
|
# A humble opponent doesn't give two shits.
|
||
|
|
scope:sc_attacker = {
|
||
|
|
NOT = { has_trait = humble }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:mocking_boast
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:mocking_boast
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_mocking_boast_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Location-Specific moves
|
||
|
|
## Is that a Crocodile?!
|
||
|
|
1 = { #Super-rare, pretty much an instant kill.
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_is_that_a_crocodile_flag }
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
# Can't have already had a crocodile used by either party this duel.
|
||
|
|
NOT = { exists = scope:had_crocodile }
|
||
|
|
# Must be in a place that has crocodiles.
|
||
|
|
single_combat_location_has_crocodilians_trigger = yes
|
||
|
|
# Duel must be one that would end in fatality.
|
||
|
|
duel_will_end_in_opponent_death_trigger = yes
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_is_that_a_crocodile_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# No down-weight for something that's already 0.001%.
|
||
|
|
}
|
||
|
|
## Desert Warrior
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_desert_warrior_flag }
|
||
|
|
has_trait = desert_warrior
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
#Both characters being experts cancel each other out.
|
||
|
|
NAND = {
|
||
|
|
scope:sc_attacker = { has_trait = desert_warrior }
|
||
|
|
scope:sc_defender = { has_trait = desert_warrior }
|
||
|
|
}
|
||
|
|
scope:sc_defender.location = {
|
||
|
|
OR = {
|
||
|
|
terrain = desert
|
||
|
|
terrain = drylands
|
||
|
|
terrain = oasis
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:desert_warrior
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:desert_warrior
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_desert_warrior_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Jungle Stalker
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_jungle_stalker_flag }
|
||
|
|
has_trait = jungle_stalker
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
#Both characters being experts cancel each other out.
|
||
|
|
NAND = {
|
||
|
|
scope:sc_attacker = { has_trait = jungle_stalker }
|
||
|
|
scope:sc_defender = { has_trait = jungle_stalker }
|
||
|
|
}
|
||
|
|
scope:sc_defender.location = {
|
||
|
|
terrain = jungle
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_jungle_stalker_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Open Terrain Expert
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_open_terrain_expert_flag }
|
||
|
|
has_trait = open_terrain_expert
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
#Both characters being experts cancel each other out.
|
||
|
|
NAND = {
|
||
|
|
scope:sc_attacker = { has_trait = open_terrain_expert }
|
||
|
|
scope:sc_defender = { has_trait = open_terrain_expert }
|
||
|
|
}
|
||
|
|
scope:sc_defender.location = {
|
||
|
|
OR = {
|
||
|
|
terrain = farmlands
|
||
|
|
terrain = plains
|
||
|
|
terrain = steppe
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_open_terrain_expert_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Rough Terrain Expert
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_rough_terrain_expert_flag }
|
||
|
|
has_trait = rough_terrain_expert
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
#Both characters being experts cancel each other out.
|
||
|
|
NAND = {
|
||
|
|
scope:sc_attacker = { has_trait = rough_terrain_expert }
|
||
|
|
scope:sc_defender = { has_trait = rough_terrain_expert }
|
||
|
|
}
|
||
|
|
scope:sc_defender.location = {
|
||
|
|
OR = {
|
||
|
|
terrain = hills
|
||
|
|
terrain = mountains
|
||
|
|
terrain = desert_mountains #Technically a desert, but not for single combat purposes.
|
||
|
|
terrain = wetlands
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_rough_terrain_expert_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Forest Fighter
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_forest_fighter_flag }
|
||
|
|
has_trait = forest_fighter
|
||
|
|
# Must be happening in a wild environment.
|
||
|
|
scope:locale = flag:terrain_scope
|
||
|
|
#Both characters being experts cancel each other out.
|
||
|
|
NAND = {
|
||
|
|
scope:sc_attacker = { has_trait = forest_fighter }
|
||
|
|
scope:sc_defender = { has_trait = forest_fighter }
|
||
|
|
}
|
||
|
|
scope:sc_defender.location = {
|
||
|
|
OR = {
|
||
|
|
terrain = forest
|
||
|
|
terrain = taiga
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:forest_fighter
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:forest_fighter
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_forest_fighter_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Trait-Specific moves
|
||
|
|
## RAAARGH!
|
||
|
|
5000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_raaargh_flag }
|
||
|
|
has_trait = berserker
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:raaargh
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:raaargh
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_raaargh_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Hard Grit
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_hard_grit_flag }
|
||
|
|
has_trait = shieldmaiden
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:hard_grit
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:hard_grit
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_hard_grit_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Feint & Stab
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_feint_and_stab_flag }
|
||
|
|
has_trait = lifestyle_hunter
|
||
|
|
# Move specifically requires two arms, I'm afraid.
|
||
|
|
NOT = { has_trait = maimed }
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_feint_and_stab_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Butchery
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_butchery_flag }
|
||
|
|
has_trait = viking
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_butchery_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Stoic Veteran
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_stoic_veteran_flag }
|
||
|
|
has_trait = varangian
|
||
|
|
# Can't use the Varangian trait against the Eastern Roman Emperor, as that's just not cricket.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = { has_title = title:e_byzantium }
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = { has_title = title:e_byzantium }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_stoic_veteran_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Blade Dance
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_blade_dance_flag }
|
||
|
|
has_trait = lifestyle_blademaster
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:blade_dance
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:blade_dance
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_blade_dance_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Wrath of [HighGod]
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_wrath_of_highgod_flag }
|
||
|
|
has_trait = zealous
|
||
|
|
faith = {
|
||
|
|
NOT = { has_doctrine_parameter = holy_wars_forbidden }
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_wrath_of_highgod_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Hurt Me Better
|
||
|
|
2000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_hurt_me_better_flag }
|
||
|
|
OR = {
|
||
|
|
has_trait = deviant
|
||
|
|
any_secret = { type = secret_deviant }
|
||
|
|
}
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_hurt_me_better_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Misc moves
|
||
|
|
## Kick a rock at their shin.
|
||
|
|
1 = { #Fallback move; we don't really ever want to see this.
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_special_fallback_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_special_fallback_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# No down-weight for something that's already 0.001%.
|
||
|
|
}
|
||
|
|
## Something to Hide
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_something_to_hide_flag }
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
has_usable_hook = scope:sc_defender
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
has_usable_hook = scope:sc_attacker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# The single combat cannot be fatal, or this is moot.
|
||
|
|
duel_will_end_in_opponent_death_trigger = no
|
||
|
|
# Block special moves twice in a row.
|
||
|
|
NOR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:something_to_hide
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_something_to_hide_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Select a single tier 1 combat move from the list.
|
||
|
|
scripted_effect select_tier_1_move_effect = {
|
||
|
|
random_list = {
|
||
|
|
#Ordinary moves.
|
||
|
|
70 = {
|
||
|
|
random_list = {
|
||
|
|
# Wait and Hope
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_wait_and_hope_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_wait_and_hope_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Unsure Attack
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_unsure_attack_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_unsure_attack_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:unsure_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:unsure_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Enthusiastic Onslaught
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_enthusiastic_onslaught_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_enthusiastic_onslaught_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Hail Mary
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_hail_mary_flag }
|
||
|
|
#Only valid against an opponent who _truly_ outclasses you.
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_defender
|
||
|
|
value <= -10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_attacker
|
||
|
|
value <= -10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_hail_mary_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:hail_mary
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:hail_mary
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Pocket Sand
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_pocket_sand_flag }
|
||
|
|
#Only valid against opponents who really won't be able to see it coming a mile away.
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender.prowess <= medium_scsk
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker.prowess <= medium_scsk
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Move essentially requires two arms, I'm afraid.
|
||
|
|
NOT = { has_trait = maimed }
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_pocket_sand_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:pocket_sand
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_sand
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Nut 'em
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_nut_em_flag }
|
||
|
|
#No special requirements.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_nut_em_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:nut_em
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:nut_em
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Special moves.
|
||
|
|
30 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_special_slot_used_flag }
|
||
|
|
}
|
||
|
|
select_special_tier_move_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Select a single tier 2 combat move from the list.
|
||
|
|
scripted_effect select_tier_2_move_effect = {
|
||
|
|
random_list = {
|
||
|
|
#Ordinary moves.
|
||
|
|
70 = {
|
||
|
|
random_list = {
|
||
|
|
# Guard
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_guard_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_guard_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:guard
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Probing Attack
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_probing_attack_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_probing_attack_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:probing_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:probing_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Onslaught
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_onslaught_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_onslaught_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Surprise Attack
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_surprise_attack_flag }
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = {
|
||
|
|
NOT = { has_trait = paranoid }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = {
|
||
|
|
NOT = { has_trait = paranoid }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_surprise_attack_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:surprise_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:surprise_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Taunt
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_taunt_flag }
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = {
|
||
|
|
is_ai = yes
|
||
|
|
NOT = { has_trait = calm }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = {
|
||
|
|
is_ai = yes
|
||
|
|
NOT = { has_trait = calm }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_taunt_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:taunt
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:taunt
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Put the Boot In
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_put_the_boot_in_flag }
|
||
|
|
#No special requirements.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_put_the_boot_in_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Special moves.
|
||
|
|
30 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_special_slot_used_flag }
|
||
|
|
}
|
||
|
|
select_special_tier_move_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Select a single tier 3 combat move from the list.
|
||
|
|
scripted_effect select_tier_3_move_effect = {
|
||
|
|
random_list = {
|
||
|
|
#Ordinary moves.
|
||
|
|
70 = {
|
||
|
|
random_list = {
|
||
|
|
# Strict Guard
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_strict_guard_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_strict_guard_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:strict_guard
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:strict_guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Confident Attack
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_confident_attack_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_confident_attack_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:confident_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:confident_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Expert Onslaught
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_expert_onslaught_flag }
|
||
|
|
#Fallback, always available.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_expert_onslaught_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Attempt Disarm
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_attempt_disarm_flag }
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = {
|
||
|
|
prowess >= decent_scsk
|
||
|
|
# Blademasters cannot be wrong-footed by a disarmament attempt.
|
||
|
|
NOT = { has_trait = lifestyle_blademaster }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = {
|
||
|
|
prowess >= decent_scsk
|
||
|
|
# Blademasters cannot be wrong-footed by a disarmament attempt.
|
||
|
|
NOT = { has_trait = lifestyle_blademaster }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_attempt_disarm_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Lightning Assault
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_lightning_assault_flag }
|
||
|
|
scope:sc_defender.var:current_round = 1
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_lightning_assault_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:lightning_assault
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:lightning_assault
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Tire Opponent
|
||
|
|
1000 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_tire_opponent_flag }
|
||
|
|
#No special requirements.
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = combat_move_tire_opponent_flag
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
# Weight down repeat moves
|
||
|
|
modifier = {
|
||
|
|
add = sce_regular_combat_repeat_down_weight
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_defender_last_move = flag:tire_opponent
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_attacker_last_move = flag:tire_opponent
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Special moves.
|
||
|
|
30 = {
|
||
|
|
trigger = {
|
||
|
|
NOT = { exists = local_var:combat_move_special_slot_used_flag }
|
||
|
|
}
|
||
|
|
select_special_tier_move_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Determine what tier of moves a character is getting this round, then pick them.
|
||
|
|
scripted_effect select_combat_options_from_pool_effect = {
|
||
|
|
# DOCUMENTATION
|
||
|
|
# First, we look at the single combat skill rating of the combatant, and use this to set tier variables for moves.
|
||
|
|
## Only the best and worst combatants get guaranteed tier moves, all best & all worst tier respectively.
|
||
|
|
## Second best and second worst have an even 50:50 to get all best/worst tier moves respectively, or to vary one of their move's tier levels by one (e.g., second worst getting x1 tier 2 move and x2 tier 1 moves).
|
||
|
|
## Each subsequent step towards the middle of the skill_ratings moves the standard tier ratings by 1. So if mediocre_scsk and below is x3 tier 1 moves by default, then medium_scsk is x2 tier 1 and x1 tier 2 moves by default.
|
||
|
|
## Medium, decent, high, and very_high skill_ratings then have a 33:34:33 chance to vary their tier moves down by one, use their default, or go up by one.
|
||
|
|
### This gives us an element of randomness, but one that can be gamed within combat encounters by obtaining modifiers, and stacks the odds in favour of skilled warriors without making them the automatic victors every time.
|
||
|
|
|
||
|
|
# MECHANICS
|
||
|
|
# Roll for tier draws.
|
||
|
|
## For the sake of easy tweakability, all tiers include all variables, so each one can be adjusted as needed for balance.
|
||
|
|
## low_scsk or below
|
||
|
|
if = {
|
||
|
|
limit = { prowess <= low_scsk }
|
||
|
|
#low_scsk *always* draws x3 tier 1 moves.
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## mediocre_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= mediocre_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
50 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
50 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## medium_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= medium_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
34 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Good roll, +1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## decent_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= decent_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
34 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Good roll, +1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## high_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= high_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
34 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Good roll, +1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## very_high_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= very_high_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
34 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Good roll, +1 to tier set.
|
||
|
|
33 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## extremely_high_scsk or below
|
||
|
|
else_if = {
|
||
|
|
limit = { prowess <= extremely_high_scsk }
|
||
|
|
random_list = {
|
||
|
|
#Bad roll, -1 to tier set.
|
||
|
|
50 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Average roll, default tier set.
|
||
|
|
50 = {
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## more than extremely_high_scsk
|
||
|
|
else = {
|
||
|
|
#Better than extremely_high_scsk always draws x3 tier 3 moves.
|
||
|
|
set_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# DOCUMENTATION
|
||
|
|
# Next, clear all previous combat flags from the character, & iterate through each tier value up to three times, selecting valid moves from the set.
|
||
|
|
## Every time we select a move, we reduce that tier's tier count variable by 1, so the player will only ever have three options available.
|
||
|
|
## Each select_tier_[X]_move_effect set incorporates a mix of flat combat moves and special moves triggered by locations, traits, special circumstances, etc. Special moves are available at all tiers, but you can only roll x1 per round.
|
||
|
|
## Every tier has at least three ordinary, standard moves that all characters can access, so characters will never not have a full roster of moves.
|
||
|
|
|
||
|
|
# MECHANICS
|
||
|
|
# Clear previous combat flags.
|
||
|
|
remove_single_combat_character_local_variables_effect = yes
|
||
|
|
# Iterate through combat move sets for each tier till we've got a full roster of moves.
|
||
|
|
## Tier 1
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_1_counter
|
||
|
|
var:tier_1_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_1_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_1_counter
|
||
|
|
var:tier_1_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_1_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_1_counter
|
||
|
|
var:tier_1_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_1_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_1_move_effect = yes
|
||
|
|
}
|
||
|
|
## Tier 2
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_2_counter
|
||
|
|
var:tier_2_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_2_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_2_counter
|
||
|
|
var:tier_2_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_2_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_2_counter
|
||
|
|
var:tier_2_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_2_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_2_move_effect = yes
|
||
|
|
}
|
||
|
|
## Tier 3
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_3_counter
|
||
|
|
var:tier_3_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_3_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_3_counter
|
||
|
|
var:tier_3_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_3_move_effect = yes
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# Check that the variable exists; strictly unnecessary, but stops a false positive clogging the error log.
|
||
|
|
has_variable = tier_3_counter
|
||
|
|
var:tier_3_counter > 0
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = tier_3_counter
|
||
|
|
add = -1
|
||
|
|
}
|
||
|
|
select_tier_3_move_effect = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Determine whether scope:sc_loser will be unharmed, wounded, or killed at the end of a duel.
|
||
|
|
scripted_effect work_out_wounds_or_death_effect = {
|
||
|
|
#Fatality:Practice - no wounds, please
|
||
|
|
if = {
|
||
|
|
limit = { scope:fatality = flag:practice }
|
||
|
|
# No extra effect.
|
||
|
|
}
|
||
|
|
# Fatality:No = death has been disabled.
|
||
|
|
if = {
|
||
|
|
limit = { scope:fatality = flag:no }
|
||
|
|
scope:sc_loser = {
|
||
|
|
increase_wounds_no_death_effect = { REASON = duel }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Fatality:Possible = death is only possible via wounds.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fatality = flag:possible }
|
||
|
|
scope:sc_loser = {
|
||
|
|
increase_wounds_effect = { REASON = duel }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Fatality:Default = death is only possible for non-tribals, and always for tribals, taking scope:sc_attacker as the instigating government.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fatality = flag:default }
|
||
|
|
if = {
|
||
|
|
limit = { fatality_default_will_die_trigger = yes }
|
||
|
|
scope:sc_loser = {
|
||
|
|
death = {
|
||
|
|
killer = scope:sc_victor
|
||
|
|
death_reason = death_duel
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_victor = {
|
||
|
|
faith = {
|
||
|
|
has_doctrine = tenet_cranial_trophies
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
tgp_cranial_trophies_beheading_effect = {
|
||
|
|
KILLER = scope:sc_victor
|
||
|
|
DEAD = scope:sc_loser
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:sc_loser = {
|
||
|
|
increase_wounds_effect = { REASON = duel }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Fatality:Always = losing is always fatal.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fatality = flag:always }
|
||
|
|
scope:sc_victor = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
NOT = { has_execute_reason = scope:sc_loser }
|
||
|
|
}
|
||
|
|
add_kinslayer_trait_or_nothing_effect = { VICTIM = scope:sc_loser }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_loser = {
|
||
|
|
death = {
|
||
|
|
killer = scope:sc_victor
|
||
|
|
death_reason = death_duel
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_victor = {
|
||
|
|
faith = {
|
||
|
|
has_doctrine = tenet_cranial_trophies
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
tgp_cranial_trophies_beheading_effect = {
|
||
|
|
KILLER = scope:sc_victor
|
||
|
|
DEAD = scope:sc_loser
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Sort the end of combat rigmarole & clean-up.
|
||
|
|
scripted_effect finalise_combat_results_effect = {
|
||
|
|
# Determine if a death rattle is applicable, and if so, set which one.
|
||
|
|
scope:sc_loser = {
|
||
|
|
if = {
|
||
|
|
limit = { duel_will_end_in_my_death_trigger = yes }
|
||
|
|
# First off, we look to see if scope:sc_loser is prevented from talking.
|
||
|
|
## wordless
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
OR = {
|
||
|
|
scope:sc_attacker_last_move = flag:technique_from_legend
|
||
|
|
scope:sc_attacker_last_move = flag:hail_mary
|
||
|
|
scope:sc_attacker_last_move = flag:like_a_viper
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
OR = {
|
||
|
|
scope:sc_defender_last_move = flag:onslaught
|
||
|
|
scope:sc_defender_last_move = flag:strict_guard
|
||
|
|
scope:sc_defender_last_move = flag:pocket_silver
|
||
|
|
scope:sc_defender_last_move = flag:blade_dance
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:wordless
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## muffled
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
OR = {
|
||
|
|
scope:sc_attacker_last_move = flag:is_that_a_crocodile
|
||
|
|
AND = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
# Scope:sc_attacker currently only suffers this for the wetlands death. It'll need to be sub-AND'ed as above if any more are added.
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:muffled
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## choking
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
OR = {
|
||
|
|
scope:sc_attacker_last_move = flag:wait_and_hope
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_sand
|
||
|
|
scope:sc_attacker_last_move = flag:expert_onslaught
|
||
|
|
scope:sc_attacker_last_move = flag:reason_you_suck_speech
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_silver
|
||
|
|
scope:sc_attacker_last_move = flag:raaargh
|
||
|
|
scope:sc_attacker_last_move = flag:hard_grit
|
||
|
|
scope:sc_attacker_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
OR = {
|
||
|
|
scope:sc_defender_last_move = flag:wait_and_hope
|
||
|
|
scope:sc_defender_last_move = flag:unsure_attack
|
||
|
|
scope:sc_defender_last_move = flag:pocket_sand
|
||
|
|
scope:sc_defender_last_move = flag:nut_em
|
||
|
|
scope:sc_defender_last_move = flag:tire_opponent
|
||
|
|
scope:sc_defender_last_move = flag:martial_voice
|
||
|
|
scope:sc_defender_last_move = flag:is_that_a_crocodile
|
||
|
|
scope:sc_defender_last_move = flag:desert_warrior
|
||
|
|
scope:sc_defender_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:choking
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## pleading screams
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
# We actually don't use this for scope:sc_defender anywhere at present.
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:pleading_screams
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Then, we go through possible relations, ordered by importance/rarity.
|
||
|
|
## has soulmate
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
any_relation = {
|
||
|
|
type = soulmate
|
||
|
|
count >= 1
|
||
|
|
this != scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_relation = {
|
||
|
|
type = soulmate
|
||
|
|
save_scope_as = sc_loser_soulmate
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:soulmate
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## has best_friend
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
any_relation = {
|
||
|
|
type = best_friend
|
||
|
|
count >= 1
|
||
|
|
this != scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_relation = {
|
||
|
|
type = best_friend
|
||
|
|
save_scope_as = sc_loser_best_friend
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:best_friend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_soulmate
|
||
|
|
else_if = {
|
||
|
|
limit = { has_relation_soulmate = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_soulmate
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_best_friend
|
||
|
|
else_if = {
|
||
|
|
limit = { has_relation_best_friend = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_best_friend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_nemesis
|
||
|
|
else_if = {
|
||
|
|
limit = { has_relation_nemesis = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_nemesis
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_close_or_extended_family
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
any_close_or_extended_family_member = { this = scope:sc_victor }
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_close_or_extended_family
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## is sinner
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
num_sinful_traits >= 3
|
||
|
|
piety_level <= 0
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:sinner
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## is saint
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
num_virtuous_traits >= 3
|
||
|
|
piety_level >= 5
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:saint
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## is legend
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prestige_level >= 5
|
||
|
|
NOT = { has_trait = humble }
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:legend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_rival
|
||
|
|
else_if = {
|
||
|
|
limit = { has_relation_rival = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_rival
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_friend_or_lover
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_relation_friend = scope:sc_victor
|
||
|
|
has_relation_lover = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_friend_or_lover
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_spouse
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
any_spouse = { this = scope:sc_victor }
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_spouse
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_your_head_of_faith
|
||
|
|
else_if = {
|
||
|
|
limit = { faith.religious_head = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_your_head_of_faith
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_another_head_of_faith
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
faith.religious_head != scope:sc_victor
|
||
|
|
scope:sc_victor.faith.religious_head = scope:sc_victor
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_another_head_of_faith
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_cultural_head
|
||
|
|
else_if = {
|
||
|
|
limit = { culture.culture_head = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_cultural_head
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_house_head
|
||
|
|
else_if = {
|
||
|
|
limit = { house.house_head = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_house_head
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## killed_by_dynasty_head
|
||
|
|
else_if = {
|
||
|
|
limit = { dynasty.dynast = scope:sc_victor }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:killed_by_dynasty_head
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## believes in valhalla
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
# Specific to Germanic pagans.
|
||
|
|
religion = religion:germanic_religion
|
||
|
|
# And they gotta be warlike.
|
||
|
|
faith = {
|
||
|
|
OR = {
|
||
|
|
has_doctrine_parameter = warmonger
|
||
|
|
has_doctrine_parameter = conquest_cb_enabled
|
||
|
|
has_doctrine_parameter = invasion_cb_enabled
|
||
|
|
has_doctrine_parameter = great_holy_wars_active_if_reformed
|
||
|
|
has_doctrine_parameter = clergy_can_fight
|
||
|
|
has_doctrine_parameter = cheaper_holy_wars_active
|
||
|
|
has_doctrine_parameter = great_holy_wars_active
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:valhalla
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Otherwise, we default to the fallback.
|
||
|
|
## scream
|
||
|
|
else = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = death_rattle
|
||
|
|
value = flag:scream
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Send out results events.
|
||
|
|
## We do this before death calculation so that the loser isn't too dead to be told that they've died (if they died).
|
||
|
|
scope:sc_loser = { trigger_event = single_combat.0031 }
|
||
|
|
scope:sc_victor = { trigger_event = single_combat.0041 }
|
||
|
|
# Setup for artifact.4080
|
||
|
|
scope:sc_victor = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_character_artifact = {
|
||
|
|
is_equipped = yes
|
||
|
|
artifact_slot_type = primary_armament
|
||
|
|
NOT = { has_variable = artifact_duel_var }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_character_artifact = {
|
||
|
|
limit = {
|
||
|
|
is_equipped = yes
|
||
|
|
artifact_slot_type = primary_armament
|
||
|
|
NOT = { has_variable = artifact_duel_var }
|
||
|
|
}
|
||
|
|
set_variable = {
|
||
|
|
name = artifact_duel_var
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
any_character_artifact = {
|
||
|
|
is_equipped = yes
|
||
|
|
artifact_slot_type = primary_armament
|
||
|
|
has_variable = artifact_duel_var
|
||
|
|
}
|
||
|
|
}
|
||
|
|
random_character_artifact = {
|
||
|
|
limit = {
|
||
|
|
is_equipped = yes
|
||
|
|
artifact_slot_type = primary_armament
|
||
|
|
has_variable = artifact_duel_var
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = artifact_duel_var
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Legend seed setup
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_loser = {
|
||
|
|
OR = {
|
||
|
|
highest_held_title_tier >= tier_empire
|
||
|
|
any_held_title = { is_head_of_faith = yes }
|
||
|
|
mpo_has_greatest_of_khans_nickname_trigger = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
has_dlc_feature = legends
|
||
|
|
NOT = { has_game_rule = historical_legends_only }
|
||
|
|
}
|
||
|
|
create_legend_seed = {
|
||
|
|
type = heroic
|
||
|
|
quality = illustrious
|
||
|
|
chronicle = legendary_battle
|
||
|
|
properties = {
|
||
|
|
winner = root
|
||
|
|
loser = scope:sc_loser
|
||
|
|
location = root.location
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Sort glory allocation.
|
||
|
|
scope:sc_victor = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
accolade ?= { is_accolade_active = yes }
|
||
|
|
}
|
||
|
|
# Glory is relative to the prowess difference between two characters. Beating someone equally matched or better is worth more.
|
||
|
|
## Massively outclassed.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= -20
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = monumental_glory_gain }
|
||
|
|
}
|
||
|
|
## Majorly outclassed.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= -15
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = massive_glory_gain }
|
||
|
|
}
|
||
|
|
## Somewhat outclassed.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= -8
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = major_glory_gain }
|
||
|
|
}
|
||
|
|
## Slightly outclassed.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= -4
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = medium_glory_gain }
|
||
|
|
}
|
||
|
|
## Evenly matched.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = minor_glory_gain }
|
||
|
|
}
|
||
|
|
## Slightly in your favour.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
prowess_diff = {
|
||
|
|
target = scope:sc_loser
|
||
|
|
value <= 4
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = minimal_glory_gain }
|
||
|
|
}
|
||
|
|
## Below this, things are too much in your favour and you're not earning glory, you're defending what you already have.
|
||
|
|
|
||
|
|
#Beating your rival means additional glory gain
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_relation_rival = scope:sc_loser
|
||
|
|
has_relation_nemesis = scope:sc_loser
|
||
|
|
}
|
||
|
|
}
|
||
|
|
accolade = { add_glory = minor_glory_gain }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Calculate wounds/death; we use an effect so that we can show it as a tooltip elsewhere.
|
||
|
|
work_out_wounds_or_death_effect = yes
|
||
|
|
# Send the final output event & clean up.
|
||
|
|
remove_single_combat_info_effect = yes
|
||
|
|
scope:sc_defender = {
|
||
|
|
if = {
|
||
|
|
limit = { is_alive = yes }
|
||
|
|
remove_variable = engaged_in_single_combat
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_attacker = {
|
||
|
|
if = {
|
||
|
|
limit = { is_alive = yes }
|
||
|
|
remove_variable = engaged_in_single_combat
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## We use the initiator if they're alive...
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_initiator = { is_alive = yes }
|
||
|
|
}
|
||
|
|
scope:sc_initiator = {
|
||
|
|
trigger_event = { saved_event_id = scope:follow_up_event }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Or otherwise the other person.
|
||
|
|
### Doesn't hugely matter, technically, since the output event should be from a neutral scope, but if they're dead then the event won't fire and the chain silently invalidates.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_defender = { is_alive = yes }
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
trigger_event = { saved_event_id = scope:follow_up_event }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:sc_attacker = {
|
||
|
|
trigger_event = { saved_event_id = scope:follow_up_event }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Determine the current chances for either party to injure themselves _before_ the next move is made.
|
||
|
|
scripted_effect calculate_injury_risks_effect = {
|
||
|
|
scope:sc_attacker = {
|
||
|
|
set_variable = {
|
||
|
|
name = sc_attacker_injury_risk_check
|
||
|
|
value = {
|
||
|
|
value = scope:sc_attacker.var:sc_attacker_injury_risk_score
|
||
|
|
add = scope:sc_attacker.var:sc_attacker_injury_bonus
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
set_variable = {
|
||
|
|
name = sc_defender_injury_risk_check
|
||
|
|
value = {
|
||
|
|
value = scope:sc_defender.var:sc_defender_injury_risk_score
|
||
|
|
add = scope:sc_defender.var:sc_defender_injury_bonus
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Determine which of the two parties, if either, is currently closest to winning the single combat via skill.
|
||
|
|
scripted_effect calculate_success_chances_effect = {
|
||
|
|
scope:sc_attacker = {
|
||
|
|
set_variable = {
|
||
|
|
name = sc_attacker_success_check
|
||
|
|
value = {
|
||
|
|
value = scope:sc_attacker.var:sc_attacker_duel_success_score
|
||
|
|
subtract = scope:sc_defender.var:sc_defender_duel_success_score
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
set_variable = {
|
||
|
|
name = sc_defender_success_check
|
||
|
|
value = {
|
||
|
|
value = scope:sc_defender.var:sc_defender_duel_success_score
|
||
|
|
subtract = scope:sc_attacker.var:sc_attacker_duel_success_score
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# COMBAT MOVE SCRIPTED EFFECTS
|
||
|
|
|
||
|
|
# Update the results of the current combat move.
|
||
|
|
scripted_effect adjust_risk_reward_effect = {
|
||
|
|
# Adjust scope:sc_attacker's scores if we're looking at them.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_injury_risk_score
|
||
|
|
add = $INJURY_RISK$
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_duel_success_score
|
||
|
|
add = $DUEL_SUCCESS$
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Adjust scope:sc_defender's scores if we're looking at them.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_injury_risk_score
|
||
|
|
add = $INJURY_RISK$
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_duel_success_score
|
||
|
|
add = $DUEL_SUCCESS$
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Inform the current scope about how this will impact duel_success_score.
|
||
|
|
if = {
|
||
|
|
limit = { $DUEL_SUCCESS$ = duel_success_none }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.duel_success.none.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.duel_success.none }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $DUEL_SUCCESS$ = duel_success_low }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.duel_success.low.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.duel_success.low }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $DUEL_SUCCESS$ = duel_success_medium }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.duel_success.medium.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.duel_success.medium }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $DUEL_SUCCESS$ = duel_success_high }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.duel_success.high.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.duel_success.high }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $DUEL_SUCCESS$ = duel_success_very_high }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.duel_success.very_high.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.duel_success.very_high }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Aaaand finally tell current scope how this'll impact injury_risk_score.
|
||
|
|
if = {
|
||
|
|
limit = { $INJURY_RISK$ = injury_risk_none }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.injury.none.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.injury.none }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $INJURY_RISK$ = injury_risk_low }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.injury.low.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.injury.low }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $INJURY_RISK$ = injury_risk_medium }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.injury.medium.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.injury.medium }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $INJURY_RISK$ = injury_risk_high }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.injury.high.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.injury.high }
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { $INJURY_RISK$ = injury_risk_very_high }
|
||
|
|
# If this is a past tense tooltip, refer to scope:my_foe grammatically.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:my_foe }
|
||
|
|
custom_tooltip = single_combat.0001.injury.very_high.has_happened
|
||
|
|
}
|
||
|
|
# Otherwise, we do it from first person.
|
||
|
|
else = { custom_tooltip = single_combat.0001.injury.very_high }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Add positive prowess character modifiers from the current move.
|
||
|
|
scripted_effect increment_combat_buffs_effect = {
|
||
|
|
# Determine what our current level of combat buff is.
|
||
|
|
## Hidden effect for easy folding & readability.
|
||
|
|
hidden_effect = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOR = {
|
||
|
|
has_character_modifier = duel_edge_buff_01_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_02_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_03_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_04_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_05_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_06_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_07_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_08_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_09_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_10_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_11_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_12_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_13_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_14_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_15_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_16_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_17_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_18_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_19_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_20_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_21_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_22_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_23_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_24_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_25_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_26_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_27_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_28_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_29_modifier
|
||
|
|
has_character_modifier = duel_edge_buff_30_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_01_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_02_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_03_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_04_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 4
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_05_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_06_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 6
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_07_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 7
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_08_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 8
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_09_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 9
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_10_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_11_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 11
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_12_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 12
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_13_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 13
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_14_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 14
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_15_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 15
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_16_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 16
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_17_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 17
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_18_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 18
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_19_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 19
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_20_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 20
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_21_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 21
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_22_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 22
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_23_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 23
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_24_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 24
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_25_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 25
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_26_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 26
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_27_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 27
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_28_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 28
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_29_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 29
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_buff_30_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
value = 30
|
||
|
|
}
|
||
|
|
#Show a tooltip in case the character is overflowing at max buff.
|
||
|
|
custom_tooltip = single_combat.0001.tt.maximum_buff_reached
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Grab the amount we want to add and change the combat modifier accordingly.
|
||
|
|
change_local_variable = {
|
||
|
|
name = current_duel_edge_buff
|
||
|
|
add = $BUFF_INCREMENT$
|
||
|
|
}
|
||
|
|
# Remove any existing duel edge buffs.
|
||
|
|
hidden_effect = { remove_temporary_duel_edge_buff_modifiers_effect = yes }
|
||
|
|
# Add the buff corresponding to our new level of edge.
|
||
|
|
if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 1 }
|
||
|
|
add_character_modifier = duel_edge_buff_01_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 2 }
|
||
|
|
add_character_modifier = duel_edge_buff_02_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 3 }
|
||
|
|
add_character_modifier = duel_edge_buff_03_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 4 }
|
||
|
|
add_character_modifier = duel_edge_buff_04_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 5 }
|
||
|
|
add_character_modifier = duel_edge_buff_05_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 6 }
|
||
|
|
add_character_modifier = duel_edge_buff_06_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 7 }
|
||
|
|
add_character_modifier = duel_edge_buff_07_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 8 }
|
||
|
|
add_character_modifier = duel_edge_buff_08_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 9 }
|
||
|
|
add_character_modifier = duel_edge_buff_09_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 10 }
|
||
|
|
add_character_modifier = duel_edge_buff_10_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 11 }
|
||
|
|
add_character_modifier = duel_edge_buff_11_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 12 }
|
||
|
|
add_character_modifier = duel_edge_buff_12_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 13 }
|
||
|
|
add_character_modifier = duel_edge_buff_13_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 14 }
|
||
|
|
add_character_modifier = duel_edge_buff_14_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 15 }
|
||
|
|
add_character_modifier = duel_edge_buff_15_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 16 }
|
||
|
|
add_character_modifier = duel_edge_buff_16_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 17 }
|
||
|
|
add_character_modifier = duel_edge_buff_17_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 18 }
|
||
|
|
add_character_modifier = duel_edge_buff_18_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 19 }
|
||
|
|
add_character_modifier = duel_edge_buff_19_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 20 }
|
||
|
|
add_character_modifier = duel_edge_buff_20_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 21 }
|
||
|
|
add_character_modifier = duel_edge_buff_21_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 22 }
|
||
|
|
add_character_modifier = duel_edge_buff_22_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 23 }
|
||
|
|
add_character_modifier = duel_edge_buff_23_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 24 }
|
||
|
|
add_character_modifier = duel_edge_buff_24_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 25 }
|
||
|
|
add_character_modifier = duel_edge_buff_25_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 26 }
|
||
|
|
add_character_modifier = duel_edge_buff_26_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 27 }
|
||
|
|
add_character_modifier = duel_edge_buff_27_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 28 }
|
||
|
|
add_character_modifier = duel_edge_buff_28_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff = 29 }
|
||
|
|
add_character_modifier = duel_edge_buff_29_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_buff >= 30 }
|
||
|
|
add_character_modifier = duel_edge_buff_30_modifier
|
||
|
|
#Show a tooltip in case the character is overflowing at max buff.
|
||
|
|
custom_tooltip = single_combat.0001.tt.maximum_buff_reached
|
||
|
|
}
|
||
|
|
# Finally, note that the character needs a stats recalc.
|
||
|
|
add_character_flag = sce_needs_forced_recalc_flag
|
||
|
|
}
|
||
|
|
|
||
|
|
# Add negative prowess character modifiers from the current move.
|
||
|
|
scripted_effect increment_combat_debuffs_effect = {
|
||
|
|
# Determine what our current level of combat buff is.
|
||
|
|
## Hidden effect for easy folding & readability.
|
||
|
|
hidden_effect = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOR = {
|
||
|
|
has_character_modifier = duel_edge_debuff_01_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_02_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_03_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_04_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_05_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_06_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_07_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_08_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_09_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_10_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_11_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_12_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_13_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_14_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_15_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_16_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_17_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_18_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_19_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_20_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_21_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_22_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_23_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_24_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_25_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_26_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_27_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_28_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_29_modifier
|
||
|
|
has_character_modifier = duel_edge_debuff_30_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_01_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_02_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_03_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_04_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 4
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_05_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 5
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_06_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 6
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_07_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 7
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_08_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 8
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_09_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 9
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_10_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 10
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_11_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 11
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_12_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 12
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_13_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 13
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_14_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 14
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_15_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 15
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_16_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 16
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_17_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 17
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_18_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 18
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_19_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 19
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_20_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 20
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_21_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 21
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_22_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 22
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_23_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 23
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_24_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 24
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_25_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 25
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_26_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 26
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_27_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 27
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_28_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 28
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_29_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 29
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_character_modifier = duel_edge_debuff_30_modifier }
|
||
|
|
set_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
value = 30
|
||
|
|
}
|
||
|
|
#Show a tooltip in case the character is overflowing at max buff.
|
||
|
|
custom_tooltip = single_combat.0001.tt.maximum_debuff_reached
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Grab the amount we want to add and change the combat modifier accordingly.
|
||
|
|
change_local_variable = {
|
||
|
|
name = current_duel_edge_debuff
|
||
|
|
add = $DEBUFF_INCREMENT$
|
||
|
|
}
|
||
|
|
# Remove any existing duel edge buffs.
|
||
|
|
hidden_effect = { remove_temporary_duel_edge_debuff_modifiers_effect = yes }
|
||
|
|
# Add the buff corresponding to our new level of edge.
|
||
|
|
if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 1 }
|
||
|
|
add_character_modifier = duel_edge_debuff_01_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 2 }
|
||
|
|
add_character_modifier = duel_edge_debuff_02_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 3 }
|
||
|
|
add_character_modifier = duel_edge_debuff_03_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 4 }
|
||
|
|
add_character_modifier = duel_edge_debuff_04_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 5 }
|
||
|
|
add_character_modifier = duel_edge_debuff_05_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 6 }
|
||
|
|
add_character_modifier = duel_edge_debuff_06_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 7 }
|
||
|
|
add_character_modifier = duel_edge_debuff_07_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 8 }
|
||
|
|
add_character_modifier = duel_edge_debuff_08_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 9 }
|
||
|
|
add_character_modifier = duel_edge_debuff_09_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 10 }
|
||
|
|
add_character_modifier = duel_edge_debuff_10_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 11 }
|
||
|
|
add_character_modifier = duel_edge_debuff_11_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 12 }
|
||
|
|
add_character_modifier = duel_edge_debuff_12_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 13 }
|
||
|
|
add_character_modifier = duel_edge_debuff_13_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 14 }
|
||
|
|
add_character_modifier = duel_edge_debuff_14_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 15 }
|
||
|
|
add_character_modifier = duel_edge_debuff_15_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 16 }
|
||
|
|
add_character_modifier = duel_edge_debuff_16_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 17 }
|
||
|
|
add_character_modifier = duel_edge_debuff_17_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 18 }
|
||
|
|
add_character_modifier = duel_edge_debuff_18_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 19 }
|
||
|
|
add_character_modifier = duel_edge_debuff_19_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 20 }
|
||
|
|
add_character_modifier = duel_edge_debuff_20_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 21 }
|
||
|
|
add_character_modifier = duel_edge_debuff_21_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 22 }
|
||
|
|
add_character_modifier = duel_edge_debuff_22_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 23 }
|
||
|
|
add_character_modifier = duel_edge_debuff_23_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 24 }
|
||
|
|
add_character_modifier = duel_edge_debuff_24_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 25 }
|
||
|
|
add_character_modifier = duel_edge_debuff_25_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 26 }
|
||
|
|
add_character_modifier = duel_edge_debuff_26_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 27 }
|
||
|
|
add_character_modifier = duel_edge_debuff_27_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 28 }
|
||
|
|
add_character_modifier = duel_edge_debuff_28_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff = 29 }
|
||
|
|
add_character_modifier = duel_edge_debuff_29_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { local_var:current_duel_edge_debuff >= 30 }
|
||
|
|
add_character_modifier = duel_edge_debuff_30_modifier
|
||
|
|
#Show a tooltip in case the character is overflowing at max buff.
|
||
|
|
custom_tooltip = single_combat.0001.tt.maximum_debuff_reached
|
||
|
|
}
|
||
|
|
# Finally, note that the character needs a stats recalc.
|
||
|
|
add_character_flag = sce_needs_forced_recalc_flag
|
||
|
|
}
|
||
|
|
|
||
|
|
# Tier One move effects
|
||
|
|
scripted_effect combat_move_wait_and_hope_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Iterate last move for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_unsure_attack_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:unsure_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:unsure_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_high
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_enthusiastic_onslaught_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_very_high
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_hail_mary_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:hail_mary
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:hail_mary
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_high
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_pocket_sand_effect = {
|
||
|
|
# Your opponent gets grit in their eyes!
|
||
|
|
## Scope:sc_attacker first.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then scope:sc_defender.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:pocket_sand
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:pocket_sand
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_nut_em_effect = {
|
||
|
|
# A headbutt to the face often offends. Both parties, really.
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:nut_em
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:nut_em
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_high
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Tier Two move effects
|
||
|
|
scripted_effect combat_move_guard_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_probing_attack_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:probing_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:probing_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_onslaught_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_high
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_surprise_attack_effect = {
|
||
|
|
#Special effects taken care of in risk-reward section.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:surprise_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:surprise_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender = { has_trait = trusting }
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker = { has_trait = trusting }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
random_list = {
|
||
|
|
33 = {
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
34 = {
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
33 = {
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_taunt_effect = {
|
||
|
|
#Your AI opponent becomes enraged.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
add_character_modifier = { modifier = combat_move_taunt_modifier }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
add_character_modifier = { modifier = combat_move_taunt_modifier }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:taunt
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:taunt
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_put_the_boot_in_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_very_high
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Tier Three move effects
|
||
|
|
scripted_effect combat_move_strict_guard_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:strict_guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:strict_guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_confident_attack_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:confident_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:confident_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_expert_onslaught_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_attempt_disarm_effect = {
|
||
|
|
# You attempt to disarm your opponent, making their grip on their weapon shaky.
|
||
|
|
## Scope:sc_attacker first.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 6 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then scope:sc_defender.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 6 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_lightning_assault_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:lightning_assault
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:lightning_assault
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_high
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_tire_opponent_effect = {
|
||
|
|
# Drastically improve your own wound threshold due to relative tiredness.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_injury_risk_score
|
||
|
|
add = combat_move_wound_threshold_bonus_2
|
||
|
|
}
|
||
|
|
custom_tooltip = single_combat.0001.wound_threshold.medium_bonus.tt
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_injury_risk_score
|
||
|
|
add = combat_move_wound_threshold_bonus_2
|
||
|
|
}
|
||
|
|
custom_tooltip = single_combat.0001.wound_threshold.medium_bonus.tt
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:tire_opponent
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:tire_opponent
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# High Secondary Skill move effects
|
||
|
|
scripted_effect combat_move_reason_you_suck_speech_effect = {
|
||
|
|
# Explain, at length, why your opponent is a cad & you're rad.
|
||
|
|
add_prestige = combat_move_reason_you_suck_speech_value
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_technique_from_legend_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_like_a_viper_effect = {
|
||
|
|
# Drastically reduce your opponent's wound threshold by off-balancing them.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_injury_risk_score
|
||
|
|
add = combat_move_wound_threshold_malus_2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_tooltip = single_combat.0001.wound_threshold.medium_malus.tt
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_injury_risk_score
|
||
|
|
add = combat_move_wound_threshold_malus_2
|
||
|
|
}
|
||
|
|
}
|
||
|
|
custom_tooltip = single_combat.0001.wound_threshold.medium_malus.tt
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:like_a_viper
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:like_a_viper
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_pocket_silver_effect = {
|
||
|
|
# You fling a purse of silver right at your opponent's face.
|
||
|
|
## We deliberately don't use pay_short_term_gold, since that'll read weirdly to the player.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
remove_short_term_gold = combat_move_pocket_silver_value
|
||
|
|
scope:sc_defender = { add_gold = combat_move_pocket_silver_value }
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
remove_short_term_gold = combat_move_pocket_silver_value
|
||
|
|
scope:sc_attacker = { add_gold = combat_move_pocket_silver_value }
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:pocket_silver
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:pocket_silver
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_martial_voice_effect = {
|
||
|
|
# You go drill sergeant on your opponent.
|
||
|
|
## Scope:sc_attacker first.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
# Arrogant characters are a bit less susceptible to this.
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = arrogant }
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 }
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then we look at scope:sc_defender.
|
||
|
|
else_if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
# Arrogant characters are a bit less susceptible to this.
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = arrogant }
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 }
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:martial_voice
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:martial_voice
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_mocking_boast_effect = {
|
||
|
|
# Your opponent takes +4 levels of combat debuffs, and some stress.
|
||
|
|
## Scope:sc_attacker first.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 }
|
||
|
|
# Arrogant characters are a bit more susceptible.
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = arrogant }
|
||
|
|
add_stress = medium_stress_gain
|
||
|
|
}
|
||
|
|
else = { add_stress = minor_stress_gain }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then we look at scope:sc_defender.
|
||
|
|
else_if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 2 }
|
||
|
|
# Arrogant characters are a bit more susceptible.
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = arrogant }
|
||
|
|
add_stress = medium_stress_gain
|
||
|
|
}
|
||
|
|
else = { add_stress = minor_stress_gain }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:mocking_boast
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:mocking_boast
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Location-Specific move effects
|
||
|
|
scripted_effect combat_move_is_that_a_crocodile_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:is_that_a_crocodile
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:is_that_a_crocodile
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Maximum of one crocodile per fight.
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = had_crocodile
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_desert_warrior_effect = {
|
||
|
|
#Add +2 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:desert_warrior
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:desert_warrior
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_jungle_stalker_effect = {
|
||
|
|
#Add +2 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_open_terrain_expert_effect = {
|
||
|
|
#Add +2 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_rough_terrain_expert_effect = {
|
||
|
|
#Add +2 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_forest_fighter_effect = {
|
||
|
|
#Add +2 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:forest_fighter
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:forest_fighter
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Trait-Specific move effects
|
||
|
|
scripted_effect combat_move_raaargh_effect = {
|
||
|
|
#Going berserk is a major stress relief.
|
||
|
|
add_stress = medium_stress_loss
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:raaargh
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:raaargh
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_very_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_hard_grit_effect = {
|
||
|
|
#Add +4 ranks of combat buff.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 4 }
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:hard_grit
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:hard_grit
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_feint_and_stab_effect = {
|
||
|
|
# Quick-thinking is a habit.
|
||
|
|
add_character_modifier = {
|
||
|
|
modifier = combat_move_feint_and_stab_modifier
|
||
|
|
years = 5
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_butchery_effect = {
|
||
|
|
# Show people what happens when they mess with you.
|
||
|
|
add_dread = combat_move_butchery_dread_value
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_stoic_veteran_effect = {
|
||
|
|
# You didn't die in Miklagard, you won't die here, you won't even die soon.
|
||
|
|
add_character_modifier = {
|
||
|
|
modifier = combat_move_stoic_veteran_modifier
|
||
|
|
years = 5
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_blade_dance_effect = {
|
||
|
|
# Show off your skill with the blade.
|
||
|
|
add_prestige = combat_move_blade_dance_value
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:blade_dance
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:blade_dance
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_high
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Not a separate combat move, just an effect inside the subsequent one.
|
||
|
|
scripted_effect combat_move_wrath_of_highgod_piety_reward_effect = {
|
||
|
|
# Non-scripted values used to keep the piety amount low; you might take this option several times in one duel, so we don't really want you to be farming piety from it.
|
||
|
|
|
||
|
|
# Righteous faiths give little piety
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
faith = {
|
||
|
|
faith_hostility_level = {
|
||
|
|
target = $MY_FOE$.faith
|
||
|
|
value = faith_fully_accepted_level
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_piety = 10
|
||
|
|
}
|
||
|
|
# Astray faiths are a bit further from the light
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
faith = {
|
||
|
|
faith_hostility_level = {
|
||
|
|
target = $MY_FOE$.faith
|
||
|
|
value = faith_astray_level
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_piety = 25
|
||
|
|
}
|
||
|
|
# Hostile faiths make HighGod sit up and take notice
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
faith = {
|
||
|
|
faith_hostility_level = {
|
||
|
|
target = $MY_FOE$.faith
|
||
|
|
value = faith_hostile_level
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_piety = 50
|
||
|
|
}
|
||
|
|
# Evil faiths are actually worth writing home about
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
faith = {
|
||
|
|
faith_hostility_level = {
|
||
|
|
target = $MY_FOE$.faith
|
||
|
|
value = faith_evil_level
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_piety = 75
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_wrath_of_highgod_effect = {
|
||
|
|
#Earn piety scaling with how intolerant you are of your opponent.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
combat_move_wrath_of_highgod_piety_reward_effect = { MY_FOE = scope:sc_defender }
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
combat_move_wrath_of_highgod_piety_reward_effect = { MY_FOE = scope:sc_attacker }
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_hurt_me_better_effect = {
|
||
|
|
# Deviant characters can cancel out their wound penalties, or gain a moderate buff otherwise.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
# To cancel out wounded, they must have any wounded trait.
|
||
|
|
has_trait = wounded
|
||
|
|
# And must not have cancelled it out already.
|
||
|
|
NOR = {
|
||
|
|
has_character_modifier = combat_move_hurt_me_better_wounded_1_modifier
|
||
|
|
has_character_modifier = combat_move_hurt_me_better_wounded_2_modifier
|
||
|
|
has_character_modifier = combat_move_hurt_me_better_wounded_3_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = wounded_1 }
|
||
|
|
add_character_modifier = combat_move_hurt_me_better_wounded_1_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_trait = wounded_2 }
|
||
|
|
add_character_modifier = combat_move_hurt_me_better_wounded_2_modifier
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { has_trait = wounded_3 }
|
||
|
|
add_character_modifier = combat_move_hurt_me_better_wounded_3_modifier
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
# Otherwise, we just buff their duel edge twice.
|
||
|
|
increment_combat_buffs_effect = { BUFF_INCREMENT = 2 }
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_medium
|
||
|
|
DUEL_SUCCESS = duel_success_medium
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Misc move effects
|
||
|
|
scripted_effect combat_move_special_fallback_effect = {
|
||
|
|
#No special effects.
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:special_fallback
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:special_fallback
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_low
|
||
|
|
DUEL_SUCCESS = duel_success_low
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scripted_effect combat_move_something_to_hide_effect = {
|
||
|
|
# You imply that things might go poorly for your opponent if they don't back down.
|
||
|
|
## Scope:sc_attacker first.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
# If the hook is strong, then add +8 ranks of combat debuff for your opponent.
|
||
|
|
if = {
|
||
|
|
limit = { has_strong_usable_hook = scope:sc_defender }
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 8 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Otherwise, we only add +4 ranks.
|
||
|
|
else = {
|
||
|
|
scope:sc_defender = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then scope:sc_defender.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
# If the hook is strong, then add +8 ranks of combat debuff for your opponent.
|
||
|
|
if = {
|
||
|
|
limit = { has_strong_usable_hook = scope:sc_attacker }
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 8 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Otherwise, we only add +4 ranks.
|
||
|
|
else = {
|
||
|
|
scope:sc_attacker = {
|
||
|
|
increment_combat_debuffs_effect = { DEBUFF_INCREMENT = 4 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Change the last move registered for loc purposes.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_attacker_last_move
|
||
|
|
value = flag:something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_defender_last_move
|
||
|
|
value = flag:something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#And adjust risk-reward scores.
|
||
|
|
adjust_risk_reward_effect = {
|
||
|
|
INJURY_RISK = injury_risk_none
|
||
|
|
DUEL_SUCCESS = duel_success_none
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Artifact damage effect - input slot type, chance for damage to happen at all, and max possible damage as percent of max possible
|
||
|
|
scripted_effect may_damage_artifact_effect = {
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
any_equipped_character_artifact = { artifact_slot_type = $TYPE$ }
|
||
|
|
}
|
||
|
|
random_equipped_character_artifact = {
|
||
|
|
limit = { artifact_slot_type = $TYPE$ }
|
||
|
|
random = {
|
||
|
|
chance = $CHANCE$
|
||
|
|
add_durability = {
|
||
|
|
value = artifact_max_durability
|
||
|
|
multiply = {
|
||
|
|
value = {
|
||
|
|
integer_range = {
|
||
|
|
min = 5
|
||
|
|
max = $PERCENT$
|
||
|
|
}
|
||
|
|
}
|
||
|
|
multiply = -0.01
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# SINGLE COMBAT EVENTS
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# Participant Events
|
||
|
|
# by Ewan Cowhig Croft
|
||
|
|
# 0001 - 0020
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
# Standard combat event.
|
||
|
|
single_combat.0001 = {
|
||
|
|
type = character_event
|
||
|
|
window = duel_event
|
||
|
|
title = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_defender }
|
||
|
|
desc = single_combat.0001.t
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_attacker }
|
||
|
|
desc = single_combat.0011.t
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
#If we're scope:sc_defender, give us defensive descs.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_defender }
|
||
|
|
desc = {
|
||
|
|
# First round.
|
||
|
|
## We just play an intro spiel.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:current_round = 1 }
|
||
|
|
desc = single_combat.0001.desc.sc_defender.intro
|
||
|
|
}
|
||
|
|
## Slightly different capstone speeches, depending on how deadly the duel is expected to be.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender.var:current_round = 1
|
||
|
|
duel_will_end_in_opponent_death_trigger = no
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.capstone.intro.first_blood
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender.var:current_round = 1
|
||
|
|
duel_will_end_in_opponent_death_trigger = yes
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.capstone.intro.deadly
|
||
|
|
}
|
||
|
|
# Scope:sc_defender feedback.
|
||
|
|
## So you can see a bit of fairly-static feedback on how your selected combat move went.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { exists = scope:sc_defender_last_move }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:wait_and_hope
|
||
|
|
duel_will_end_in_my_death_trigger = yes
|
||
|
|
NOT = { has_trait = brave }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_die
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:wait_and_hope
|
||
|
|
OR = {
|
||
|
|
duel_will_end_in_my_death_trigger = no
|
||
|
|
has_trait = brave
|
||
|
|
}
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_live
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:guard }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:lightning_assault }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.lightning_assault
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Scope:sc_attacker responses.
|
||
|
|
## What move did your opponent pick, and how does that play out from your POV?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { exists = scope:sc_attacker_last_move }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
scope:sc_attacker = { house_not_allowed_to_yell_motto_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.banned_house
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
scope:sc_attacker.house = scope:sc_defender.house
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.own_house
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
#Otherwise, we can shout the motto.
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.motto
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:lightning_assault }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.lightning_assault
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Duel status updates.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:current_round > 1 }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
# Injury updates.
|
||
|
|
## For scope:sc_defender.
|
||
|
|
### Injury chance very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.very_unlikely
|
||
|
|
}
|
||
|
|
### Injury chance unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.unlikely
|
||
|
|
}
|
||
|
|
### Injury chance moderate.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_neutral_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.moderate
|
||
|
|
}
|
||
|
|
### Injury chance likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_likely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.likely
|
||
|
|
}
|
||
|
|
### Injury chance very likely.
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.very_likely
|
||
|
|
}
|
||
|
|
first_valid = {
|
||
|
|
## For scope:sc_attacker.
|
||
|
|
### Injury chance very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.very_unlikely
|
||
|
|
}
|
||
|
|
### Injury chance unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.unlikely
|
||
|
|
}
|
||
|
|
### Injury chance moderate.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_neutral_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.moderate
|
||
|
|
}
|
||
|
|
### Injury chance likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_likely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.likely
|
||
|
|
}
|
||
|
|
### Injury chance very likely.
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.very_likely
|
||
|
|
}
|
||
|
|
first_valid = {
|
||
|
|
# Success updates.
|
||
|
|
## Victory almost impossible.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_almost_impossible_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.almost_impossible
|
||
|
|
}
|
||
|
|
## Victory very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.very_unlikely
|
||
|
|
}
|
||
|
|
## Victory unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.unlikely
|
||
|
|
}
|
||
|
|
## Victory in the balance.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_likely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.moderate
|
||
|
|
}
|
||
|
|
## Victory likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_very_likely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.likely
|
||
|
|
}
|
||
|
|
## Victory very likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:sc_defender_success_check <= single_combat_success_almost_certain_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.very_likely
|
||
|
|
}
|
||
|
|
## Victory almost certain.
|
||
|
|
desc = single_combat.0001.desc.success_check.almost_certain
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Otherwise, give us the offensive descs. Triggered_desc kept for indenting.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_attacker }
|
||
|
|
desc = {
|
||
|
|
# First round.
|
||
|
|
## We just play an intro spiel.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:current_round = 1 }
|
||
|
|
desc = single_combat.0001.desc.sc_attacker.intro
|
||
|
|
}
|
||
|
|
## Slightly different capstone speeches, depending on how deadly the duel is expected to be.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender.var:current_round = 1
|
||
|
|
duel_will_end_in_opponent_death_trigger = no
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.capstone.intro.first_blood
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender.var:current_round = 1
|
||
|
|
duel_will_end_in_opponent_death_trigger = yes
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.capstone.intro.deadly
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:current_round = 1 }
|
||
|
|
desc = single_combat.0001.desc.sc_attacker.intro.epilogue
|
||
|
|
}
|
||
|
|
# Scope:sc_attacker feedback.
|
||
|
|
## So you can see a bit of fairly-static feedback on how your selected combat move went.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { exists = scope:sc_attacker_last_move }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:wait_and_hope
|
||
|
|
duel_will_end_in_my_death_trigger = yes
|
||
|
|
NOT = { has_trait = brave }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_die
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:wait_and_hope
|
||
|
|
OR = {
|
||
|
|
duel_will_end_in_my_death_trigger = no
|
||
|
|
has_trait = brave
|
||
|
|
}
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wait_and_hope.will_live
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:lightning_assault }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.lightning_assault
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.my_feedback.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0001.desc.my_feedback.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Scope:sc_defender responses.
|
||
|
|
## What move did your opponent pick, and how does that play out from your POV?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { exists = scope:sc_defender_last_move }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:enthusiastic_onslaught
|
||
|
|
scope:sc_defender = { house_not_allowed_to_yell_motto_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.banned_house
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:enthusiastic_onslaught
|
||
|
|
scope:sc_defender.house = scope:sc_attacker.house
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.own_house
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:enthusiastic_onslaught
|
||
|
|
#Otherwise, we can shout the motto.
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.enthusiastic_onslaught.motto
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:guard }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:lightning_assault }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.lightning_assault
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0001.desc.opponent_response.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0001.desc.opponent_response.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Duel status updates.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender.var:current_round > 1 }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
# Injury updates.
|
||
|
|
## For scope:sc_attacker.
|
||
|
|
### Injury chance very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.very_unlikely
|
||
|
|
}
|
||
|
|
### Injury chance unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.unlikely
|
||
|
|
}
|
||
|
|
### Injury chance moderate.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_neutral_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.moderate
|
||
|
|
}
|
||
|
|
### Injury chance likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_attacker_injury_check_actual <= single_combat_injury_likely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.likely
|
||
|
|
}
|
||
|
|
### Injury chance very likely.
|
||
|
|
desc = single_combat.0001.desc.injury_check.personal.very_likely
|
||
|
|
}
|
||
|
|
first_valid = {
|
||
|
|
## For scope:sc_defender.
|
||
|
|
### Injury chance very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.very_unlikely
|
||
|
|
}
|
||
|
|
### Injury chance unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.unlikely
|
||
|
|
}
|
||
|
|
### Injury chance moderate.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_neutral_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.moderate
|
||
|
|
}
|
||
|
|
### Injury chance likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { sc_defender_injury_check_actual <= single_combat_injury_likely_value }
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.likely
|
||
|
|
}
|
||
|
|
### Injury chance very likely.
|
||
|
|
desc = single_combat.0001.desc.injury_check.opponent.very_likely
|
||
|
|
}
|
||
|
|
first_valid = {
|
||
|
|
# Success updates.
|
||
|
|
## Victory almost impossible.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_almost_impossible_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.almost_impossible
|
||
|
|
}
|
||
|
|
## Victory very unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_very_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.very_unlikely
|
||
|
|
}
|
||
|
|
## Victory unlikely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_unlikely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.unlikely
|
||
|
|
}
|
||
|
|
## Victory in the balance.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_likely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.moderate
|
||
|
|
}
|
||
|
|
## Victory likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_very_likely_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.likely
|
||
|
|
}
|
||
|
|
## Victory very likely.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker.var:sc_attacker_success_check <= single_combat_success_almost_certain_value }
|
||
|
|
desc = single_combat.0001.desc.success_check.very_likely
|
||
|
|
}
|
||
|
|
## Victory almost certain.
|
||
|
|
desc = single_combat.0001.desc.success_check.almost_certain
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
theme = martial
|
||
|
|
left_portrait = {
|
||
|
|
character = scope:myself
|
||
|
|
triggered_animation = {
|
||
|
|
trigger = {
|
||
|
|
portrait_should_wield_sword_trigger = yes
|
||
|
|
culture = { has_cultural_pillar = heritage_japonic }
|
||
|
|
}
|
||
|
|
animation = chudan_no_kamae
|
||
|
|
}
|
||
|
|
triggered_animation = {
|
||
|
|
trigger = { always = yes }
|
||
|
|
scripted_animation = duel_wield_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
right_portrait = {
|
||
|
|
character = scope:my_foe
|
||
|
|
scripted_animation = duel_wield_weapon
|
||
|
|
}
|
||
|
|
artifact = {
|
||
|
|
target = scope:myself.var:signature_weapon_scope
|
||
|
|
position = lower_left_portrait
|
||
|
|
trigger = { exists = scope:myself.var:signature_weapon_scope }
|
||
|
|
}
|
||
|
|
|
||
|
|
artifact = {
|
||
|
|
target = scope:my_foe.var:signature_weapon_scope
|
||
|
|
position = lower_right_portrait
|
||
|
|
trigger = { exists = scope:my_foe.var:signature_weapon_scope }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Background Logic
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:terrain_scope }
|
||
|
|
reference = terrain_scope
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:battlefield }
|
||
|
|
reference = battlefield
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_night }
|
||
|
|
reference = alley_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_day }
|
||
|
|
reference = alley_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:temple }
|
||
|
|
reference = temple
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_night }
|
||
|
|
reference = corridor_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_day }
|
||
|
|
reference = corridor_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:courtyard }
|
||
|
|
reference = courtyard
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:dungeon }
|
||
|
|
reference = dungeon
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:docks }
|
||
|
|
reference = docks
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:feast }
|
||
|
|
reference = feast
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:market }
|
||
|
|
reference = market
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:tavern }
|
||
|
|
reference = tavern
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:throne_room }
|
||
|
|
reference = throne_room
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:army_camp }
|
||
|
|
reference = army_camp
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:ep2_travel_bridge }
|
||
|
|
reference = ep2_travel_bridge
|
||
|
|
}
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
play_music_cue = "mx_cue_combat_stinger"
|
||
|
|
# Generate combat options.
|
||
|
|
select_combat_options_from_pool_effect = yes
|
||
|
|
# Set up portraits for this event, putting the current actor always on the left.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_defender = { save_scope_as = myself }
|
||
|
|
scope:sc_attacker = { save_scope_as = my_foe }
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:sc_attacker = { save_scope_as = myself }
|
||
|
|
scope:sc_defender = { save_scope_as = my_foe }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Show opponent's move effect.
|
||
|
|
if = {
|
||
|
|
# Check that there's a last move kicking about to look at.
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
exists = scope:sc_attacker_last_move
|
||
|
|
exists = scope:sc_defender_last_move
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:wait_and_hope
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_wait_and_hope_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:unsure_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:unsure_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_unsure_attack_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_enthusiastic_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:hail_mary
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:hail_mary
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_hail_mary_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_sand
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:pocket_sand
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_pocket_sand_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:nut_em
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:nut_em
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_nut_em_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:guard
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_guard_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:probing_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:probing_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_probing_attack_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:surprise_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:surprise_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_surprise_attack_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:taunt
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:taunt
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_taunt_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:put_the_boot_in
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_put_the_boot_in_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:strict_guard
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:strict_guard
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_strict_guard_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:confident_attack
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:confident_attack
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_confident_attack_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:expert_onslaught
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_expert_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:attempt_disarm
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_attempt_disarm_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:lightning_assault
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:lightning_assault
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_lightning_assault_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:tire_opponent
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:tire_opponent
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_tire_opponent_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:reason_you_suck_speech
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_reason_you_suck_speech_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:technique_from_legend
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_technique_from_legend_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:like_a_viper
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:like_a_viper
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_like_a_viper_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:pocket_silver
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:pocket_silver
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_pocket_silver_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:martial_voice
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:martial_voice
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_martial_voice_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:mocking_boast
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:mocking_boast
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_mocking_boast_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:is_that_a_crocodile
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:is_that_a_crocodile
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_is_that_a_crocodile_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:desert_warrior
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:desert_warrior
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_desert_warrior_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:jungle_stalker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_jungle_stalker_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:open_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_open_terrain_expert_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:rough_terrain_expert
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_rough_terrain_expert_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:forest_fighter
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:forest_fighter
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_forest_fighter_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:raaargh
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:raaargh
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_raaargh_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:hard_grit
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:hard_grit
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_hard_grit_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:feint_and_stab
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_feint_and_stab_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:butchery
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_butchery_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:stoic_veteran
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_stoic_veteran_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:blade_dance
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:blade_dance
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_blade_dance_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:wrath_of_highgod
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_wrath_of_highgod_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:hurt_me_better
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_hurt_me_better_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:special_fallback
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:special_fallback
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_special_fallback_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_defender
|
||
|
|
scope:sc_attacker_last_move = flag:something_to_hide
|
||
|
|
}
|
||
|
|
AND = {
|
||
|
|
this = scope:sc_attacker
|
||
|
|
scope:sc_defender_last_move = flag:something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:my_foe = {
|
||
|
|
show_as_tooltip = { combat_move_something_to_hide_effect = yes }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Stress_impact in the options is deliberately left out of the ai_chance weightings. It's not a huge amount for anyone (typically miniscule for standard moves, minor for special ones), since many of these options can repeat within one combat, and it's no bad thing to have characters come out of duels increasingly stressed.
|
||
|
|
|
||
|
|
#Wait and Hope
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.wait_and_hope
|
||
|
|
trigger = { exists = local_var:combat_move_wait_and_hope_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.wait_and_hope
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_wait_and_hope_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_wait_and_hope_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
patient = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
impatient = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Unsure Attack
|
||
|
|
option = {
|
||
|
|
name = {
|
||
|
|
trigger = { scope:fatality = flag:yes }
|
||
|
|
text = single_combat.0001.unsure_attack
|
||
|
|
}
|
||
|
|
name = {
|
||
|
|
trigger = { scope:fatality = flag:no }
|
||
|
|
text = single_combat.0001.unsure_attack_non_fatal
|
||
|
|
}
|
||
|
|
trigger = { exists = local_var:combat_move_unsure_attack_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.unsure_attack
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_unsure_attack_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_unsure_attack_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No stress for middle-ground standard options.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_rational_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Enthusiastic Onslaught
|
||
|
|
option = {
|
||
|
|
# Since we yell the house motto here, we need slight separation between variants.
|
||
|
|
## Firstly, if your house is on the banned list, you use a fallback.
|
||
|
|
name = {
|
||
|
|
trigger = { house_not_allowed_to_yell_motto_trigger = yes }
|
||
|
|
text = single_combat.0001.enthusiastic_onslaught.banned_house
|
||
|
|
}
|
||
|
|
## Secondly, if you're fighting another member of your own house, you use a different fallback.
|
||
|
|
name = {
|
||
|
|
trigger = {
|
||
|
|
house_not_allowed_to_yell_motto_trigger = no
|
||
|
|
scope:sc_attacker.house = scope:sc_defender.house
|
||
|
|
}
|
||
|
|
text = single_combat.0001.enthusiastic_onslaught.own_house
|
||
|
|
}
|
||
|
|
## Thirdly, if you're a shouty house who isn't fighting another person from your shouty house, then you use your motto.
|
||
|
|
name = {
|
||
|
|
trigger = {
|
||
|
|
house_not_allowed_to_yell_motto_trigger = no
|
||
|
|
scope:sc_attacker.house != scope:sc_defender.house
|
||
|
|
}
|
||
|
|
text = single_combat.0001.enthusiastic_onslaught.motto
|
||
|
|
}
|
||
|
|
trigger = { exists = local_var:combat_move_enthusiastic_onslaught_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.enthusiastic_onslaught
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_enthusiastic_onslaught_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_enthusiastic_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
wrathful = miniscule_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
calm = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Hail Mary
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.hail_mary
|
||
|
|
trigger = { exists = local_var:combat_move_hail_mary_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.hail_mary
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_hail_mary_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_hail_mary_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
brave = minor_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
craven = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Pocket Sand
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.pocket_sand
|
||
|
|
trigger = { exists = local_var:combat_move_pocket_sand_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.pocket_sand
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_pocket_sand_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_pocket_sand_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = miniscule_stress_impact_loss
|
||
|
|
arbitrary = miniscule_stress_impact_loss
|
||
|
|
honest = miniscule_stress_impact_gain
|
||
|
|
just = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Nut 'em
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.nut_em
|
||
|
|
trigger = { exists = local_var:combat_move_nut_em_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.nut_em
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_nut_em_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_nut_em_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = miniscule_stress_impact_loss
|
||
|
|
arbitrary = miniscule_stress_impact_loss
|
||
|
|
honest = miniscule_stress_impact_gain
|
||
|
|
just = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Guard
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.guard
|
||
|
|
trigger = { exists = local_var:combat_move_guard_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.guard
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_guard_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_guard_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
patient = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
impatient = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Probing Attack
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.probing_attack
|
||
|
|
trigger = { exists = local_var:combat_move_probing_attack_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.probing_attack
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_probing_attack_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_probing_attack_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No stress for middle-ground standard options.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_rational_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Onslaught
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.onslaught
|
||
|
|
trigger = { exists = local_var:combat_move_onslaught_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.onslaught
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_onslaught_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
wrathful = miniscule_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
calm = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Surprise Attack
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.surprise_attack
|
||
|
|
trigger = { exists = local_var:combat_move_surprise_attack_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.surprise_attack
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_surprise_attack_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_surprise_attack_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No need for stress weighting here; fairly standard tactic that anyone would try.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_rational_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Taunt
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.taunt
|
||
|
|
trigger = { exists = local_var:combat_move_taunt_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.taunt
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_taunt_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_taunt_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
callous = miniscule_stress_impact_loss
|
||
|
|
sadistic = miniscule_stress_impact_loss
|
||
|
|
compassionate = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Put the Boot In
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.put_the_boot_in
|
||
|
|
trigger = { exists = local_var:combat_move_put_the_boot_in_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.put_the_boot_in
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_put_the_boot_in_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_put_the_boot_in_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
brave = minor_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
craven = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Strict Guard
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.strict_guard
|
||
|
|
trigger = { exists = local_var:combat_move_strict_guard_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.strict_guard
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_strict_guard_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_strict_guard_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
patient = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
impatient = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Confident Attack
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.confident_attack
|
||
|
|
trigger = { exists = local_var:combat_move_confident_attack_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.confident_attack
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_confident_attack_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_confident_attack_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No stress for middle-ground standard options.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_rational_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Expert Onslaught
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.expert_onslaught
|
||
|
|
trigger = { exists = local_var:combat_move_expert_onslaught_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.expert_onslaught
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_expert_onslaught_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_expert_onslaught_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
wrathful = miniscule_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
calm = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Attempt Disarm
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.attempt_disarm
|
||
|
|
trigger = { exists = local_var:combat_move_attempt_disarm_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.attempt_disarm
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_attempt_disarm_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_attempt_disarm_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
patient = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
impatient = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_timid_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Lightning Assault
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.lightning_assault
|
||
|
|
trigger = { exists = local_var:combat_move_lightning_assault_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.lightning_assault
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_lightning_assault_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_lightning_assault_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
impatient = miniscule_stress_impact_loss
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
patient = miniscule_stress_impact_gain
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_aggressive_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Tire Opponent
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.tire_opponent
|
||
|
|
trigger = { exists = local_var:combat_move_tire_opponent_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.tire_opponent
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_tire_opponent_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_tire_opponent_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_rational_personality_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Reason You Suck Speech
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.reason_you_suck_speech
|
||
|
|
trigger = { exists = local_var:combat_move_reason_you_suck_speech_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.reason_you_suck_speech
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
skill = diplomacy
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_reason_you_suck_speech_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_reason_you_suck_speech_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
callous = miniscule_stress_impact_loss
|
||
|
|
sadistic = miniscule_stress_impact_loss
|
||
|
|
gregarious = miniscule_stress_impact_loss
|
||
|
|
compassionate = miniscule_stress_impact_gain
|
||
|
|
shy = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_enjoys_arrogant_speeches_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Technique from Legend
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.technique_from_legend
|
||
|
|
trigger = { exists = local_var:combat_move_technique_from_legend_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.technique_from_legend
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
skill = learning
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_technique_from_legend_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_technique_from_legend_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
brave = minor_stress_impact_loss
|
||
|
|
trusting = minor_stress_impact_loss # A trusting character *totally* believes the legends are both true and accurate!
|
||
|
|
craven = minor_stress_impact_gain
|
||
|
|
paranoid = minor_stress_impact_gain # Whereas a paranoid character is 99% sure they're bullshit, but is hoping against hope anyway.
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
# Weight up relevant traits: scholar
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_medium
|
||
|
|
has_trait = scholar
|
||
|
|
}
|
||
|
|
# Weight up relevant traits: theologian
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_light
|
||
|
|
has_trait = theologian
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Like a Viper
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.like_a_viper
|
||
|
|
trigger = { exists = local_var:combat_move_like_a_viper_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.like_a_viper
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
skill = intrigue
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_like_a_viper_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_like_a_viper_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = minor_stress_impact_loss
|
||
|
|
arbitrary = minor_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_gain
|
||
|
|
just = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
# Weight up relevant traits: schemer
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_heavy
|
||
|
|
has_trait = schemer
|
||
|
|
}
|
||
|
|
# Weight up relevant traits: torturer
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_medium
|
||
|
|
has_trait = torturer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Pocket Silver
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.pocket_silver
|
||
|
|
trigger = { exists = local_var:combat_move_pocket_silver_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.pocket_silver
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
skill = stewardship
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_pocket_silver_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_pocket_silver_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = miniscule_stress_impact_loss
|
||
|
|
arbitrary = miniscule_stress_impact_loss
|
||
|
|
generous = miniscule_stress_impact_loss
|
||
|
|
honest = miniscule_stress_impact_gain
|
||
|
|
just = miniscule_stress_impact_gain
|
||
|
|
greedy = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
ai_value_modifier = { ai_greed = -0.5 }
|
||
|
|
# Weight up relevant traits: avaricious
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_down_weight_medium
|
||
|
|
has_trait = avaricious
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Martial Voice
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.martial_voice
|
||
|
|
trigger = { exists = local_var:combat_move_martial_voice_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.martial_voice
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
skill = martial
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_martial_voice_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_martial_voice_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
callous = miniscule_stress_impact_loss
|
||
|
|
sadistic = miniscule_stress_impact_loss
|
||
|
|
gregarious = miniscule_stress_impact_loss
|
||
|
|
compassionate = miniscule_stress_impact_gain
|
||
|
|
shy = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_enjoys_arrogant_speeches_scripted_modifier = yes
|
||
|
|
# Weight up relevant traits: strategist
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_medium
|
||
|
|
has_trait = strategist
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Mocking Boast
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.mocking_boast
|
||
|
|
trigger = { exists = local_var:combat_move_mocking_boast_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.mocking_boast
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_mocking_boast_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_mocking_boast_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
callous = miniscule_stress_impact_loss
|
||
|
|
sadistic = miniscule_stress_impact_loss
|
||
|
|
arrogant = miniscule_stress_impact_loss
|
||
|
|
compassionate = miniscule_stress_impact_gain
|
||
|
|
humble = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_enjoys_arrogant_speeches_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Is that a Crocodile?!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.is_that_a_crocodile
|
||
|
|
trigger = { exists = local_var:combat_move_is_that_a_crocodile_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.is_that_a_crocodile
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_is_that_a_crocodile_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_is_that_a_crocodile_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Though it might be stressful for your opponent, a crocodile is not stressful for you.
|
||
|
|
ai_chance = {
|
||
|
|
base = 300
|
||
|
|
# If you get the good option, use the good option.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Desert Warrior
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.desert_warrior
|
||
|
|
trigger = { exists = local_var:combat_move_desert_warrior_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.desert_warrior
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = desert_warrior
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_desert_warrior_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_desert_warrior_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Jungle Stalker
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.jungle_stalker
|
||
|
|
trigger = { exists = local_var:combat_move_jungle_stalker_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.jungle_stalker
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = jungle_stalker
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_jungle_stalker_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_jungle_stalker_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Open Terrain Expert
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.open_terrain_expert
|
||
|
|
trigger = { exists = local_var:combat_move_open_terrain_expert_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.open_terrain_expert
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = open_terrain_expert
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_open_terrain_expert_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_open_terrain_expert_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Rough Terrain Expert
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.rough_terrain_expert
|
||
|
|
trigger = { exists = local_var:combat_move_rough_terrain_expert_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.rough_terrain_expert
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = rough_terrain_expert
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_rough_terrain_expert_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_rough_terrain_expert_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Forest Fighter
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.forest_fighter
|
||
|
|
trigger = { exists = local_var:combat_move_forest_fighter_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.forest_fighter
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = forest_fighter
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_forest_fighter_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_forest_fighter_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
diligent = miniscule_stress_impact_loss
|
||
|
|
calm = miniscule_stress_impact_loss
|
||
|
|
lazy = miniscule_stress_impact_gain
|
||
|
|
wrathful = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#RAAARGH!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.raaargh
|
||
|
|
trigger = { exists = local_var:combat_move_raaargh_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.raaargh
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = berserker
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_raaargh_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_raaargh_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No stress for RAAARGH!, as it gives stress loss.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Hard Grit
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.hard_grit
|
||
|
|
trigger = { exists = local_var:combat_move_hard_grit_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.hard_grit
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = shieldmaiden
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_hard_grit_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_hard_grit_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Loc here implies stoic professionalism, so doesn't seem fair to apply stress over that.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Feint & Stab
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.feint_and_stab
|
||
|
|
trigger = { exists = local_var:combat_move_feint_and_stab_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.feint_and_stab
|
||
|
|
|
||
|
|
#Spawn Info; use individual traits so that the unlock trait shows in the option UI.
|
||
|
|
trait = lifestyle_hunter
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_feint_and_stab_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_feint_and_stab_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = minor_stress_impact_loss
|
||
|
|
arbitrary = minor_stress_impact_loss
|
||
|
|
honest = minor_stress_impact_gain
|
||
|
|
just = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Butchery
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.butchery
|
||
|
|
trigger = { exists = local_var:combat_move_butchery_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.butchery
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = viking
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_butchery_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_butchery_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
callous = minor_stress_impact_loss
|
||
|
|
sadistic = minor_stress_impact_loss
|
||
|
|
compassionate = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Stoic Veteran
|
||
|
|
option = {
|
||
|
|
name = {
|
||
|
|
trigger = {
|
||
|
|
NOT = {
|
||
|
|
scope:my_foe = { has_trait = varangian }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
text = single_combat.0001.stoic_veteran.general
|
||
|
|
}
|
||
|
|
name = {
|
||
|
|
trigger = {
|
||
|
|
scope:my_foe = { has_trait = varangian }
|
||
|
|
}
|
||
|
|
text = single_combat.0001.stoic_veteran.other_varangian
|
||
|
|
}
|
||
|
|
trigger = { exists = local_var:combat_move_stoic_veteran_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.stoic_veteran
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = varangian
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_stoic_veteran_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_stoic_veteran_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Loc here implies stoic professionalism, so doesn't seem fair to apply stress over that.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Blade Dance
|
||
|
|
option = {
|
||
|
|
name = {
|
||
|
|
text = single_combat.0001.blade_dance
|
||
|
|
trigger = { is_landed = yes }
|
||
|
|
}
|
||
|
|
name = {
|
||
|
|
text = single_combat.0001.blade_dance_unlanded
|
||
|
|
trigger = { is_landed = no }
|
||
|
|
}
|
||
|
|
trigger = { exists = local_var:combat_move_blade_dance_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.blade_dance
|
||
|
|
|
||
|
|
#Spawn Info; use individual traits so that the unlock trait shows in the option UI.
|
||
|
|
trait = lifestyle_blademaster
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_blade_dance_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_blade_dance_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# No appropriate stress loss for blade dance; arguably arrogant, as we portray them as haughty in the loc, but it's a bit mean to both hit the player verbally and mechanically for something that's up for interpretation.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_preferred_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Wrath of [HighGod]
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.wrath_of_highgod
|
||
|
|
trigger = { exists = local_var:combat_move_wrath_of_highgod_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.wrath_of_highgod
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = zealous
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_wrath_of_highgod_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_wrath_of_highgod_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
# Takes a bold human to stop fighting entirely and pray, however loudly, in the middle of a duel.
|
||
|
|
craven = miniscule_stress_impact_loss
|
||
|
|
brave = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_enjoys_arrogant_speeches_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Hurt Me Better
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.hurt_me_better
|
||
|
|
trigger = { exists = local_var:combat_move_hurt_me_better_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.hurt_me_better
|
||
|
|
|
||
|
|
#Spawn Info
|
||
|
|
trait = deviant
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_hurt_me_better_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_hurt_me_better_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# We draw the line at stress loss/gain for lustful/chaste: we're already being a bit mean to deviant characters here, no need to ramp up the Hellraiser vibes *that* much.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_shrewd_fighter_scripted_modifier = yes
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Special Fallback: kick 'em in the shin
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.special_fallback
|
||
|
|
trigger = { exists = local_var:combat_move_special_fallback_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.special_fallback
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_special_fallback_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_special_fallback_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
# Shins, and the kicking thereof, have no particularly stressful effects on the human psyche.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
# Errr... I can't even begin to imagine how you'd set AI preferences for this.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Something to Hide
|
||
|
|
option = {
|
||
|
|
name = single_combat.0001.something_to_hide
|
||
|
|
trigger = { exists = local_var:combat_move_something_to_hide_flag }
|
||
|
|
|
||
|
|
#Move clarification
|
||
|
|
custom_tooltip = single_combat.0001.tt.something_to_hide
|
||
|
|
|
||
|
|
#Move effects
|
||
|
|
## First, we show the move's effects with no guff.
|
||
|
|
show_as_tooltip = { combat_move_something_to_hide_effect = yes }
|
||
|
|
## Then, we check to make sure if scope:my_foe is still around to suffer the effects. This prevents errors if they die mid-combat.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:my_foe = { is_alive = yes }
|
||
|
|
}
|
||
|
|
hidden_effect = { combat_move_something_to_hide_effect = yes }
|
||
|
|
}
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
deceitful = miniscule_stress_impact_loss
|
||
|
|
arbitrary = miniscule_stress_impact_loss
|
||
|
|
honest = miniscule_stress_impact_gain
|
||
|
|
just = miniscule_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
sce_enjoys_arrogant_speeches_scripted_modifier = yes
|
||
|
|
# Weight up relevant traits: schemer
|
||
|
|
modifier = {
|
||
|
|
add = sce_ai_mod_trait_weight_light
|
||
|
|
has_trait = schemer
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
#Work out the post-event effects.
|
||
|
|
after = {
|
||
|
|
# First, see if the next round is still valid.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
scope:sc_attacker = { is_alive = no }
|
||
|
|
scope:sc_defender = { is_alive = no }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# First, clean up assorted things around the duels.
|
||
|
|
hidden_effect = { remove_single_combat_info_effect = yes }
|
||
|
|
# Then manually clear the duelling flag.
|
||
|
|
scope:sc_defender = {
|
||
|
|
if = {
|
||
|
|
# Restrict to live characters to prevent errors.
|
||
|
|
limit = { is_alive = yes }
|
||
|
|
remove_variable = engaged_in_single_combat
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_attacker = {
|
||
|
|
if = {
|
||
|
|
# Restrict to live characters to prevent errors.
|
||
|
|
limit = { is_alive = yes }
|
||
|
|
remove_variable = engaged_in_single_combat
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Finally, fire the invalidation cleanup event.
|
||
|
|
scope:sc_attacker = {
|
||
|
|
#trigger_event = { saved_event_id = scope:invalidation_event }
|
||
|
|
trigger_event = single_combat.1006
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Otherwise, we can go through the usual flow.
|
||
|
|
else = {
|
||
|
|
#If either character has had an edge modifier added, update character skills to account for duel edge stuff.
|
||
|
|
scope:sc_attacker = {
|
||
|
|
if = {
|
||
|
|
limit = { has_character_flag = sce_needs_forced_recalc_flag }
|
||
|
|
force_character_skill_recalculation = yes
|
||
|
|
remove_character_flag = sce_needs_forced_recalc_flag
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
if = {
|
||
|
|
limit = { has_character_flag = sce_needs_forced_recalc_flag }
|
||
|
|
force_character_skill_recalculation = yes
|
||
|
|
remove_character_flag = sce_needs_forced_recalc_flag
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Calculate injury risks for descs.
|
||
|
|
calculate_injury_risks_effect = yes
|
||
|
|
#And success chances.
|
||
|
|
calculate_success_chances_effect = yes
|
||
|
|
#If we're scope:sc_defender, send scope:sc_attacker their instance of the event.
|
||
|
|
if = {
|
||
|
|
limit = { this = scope:sc_defender }
|
||
|
|
scope:sc_attacker = { trigger_event = single_combat.0001 }
|
||
|
|
}
|
||
|
|
#Otherwise we're scope:sc_attacker, so end the round.
|
||
|
|
else = { trigger_event = single_combat.0021 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# Round End Events
|
||
|
|
# by Ewan Cowhig Croft
|
||
|
|
# 0021 - 0030
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
# Standard round end event.
|
||
|
|
single_combat.0021 = {
|
||
|
|
hidden = yes
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
# Check what round we're at, and reduce the threshold variables as appropriate if we're in a late enough round.
|
||
|
|
## Reduce injury thresholds for both characters.
|
||
|
|
if = {
|
||
|
|
limit = { scope:sc_defender.var:current_round = round_injury_bonus_lower }
|
||
|
|
debug_log = "single combat variable error-check: round_injury_bonus_lower"
|
||
|
|
debug_log_scopes = yes
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_injury_bonus
|
||
|
|
add = round_injury_adjustment_lower
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_injury_bonus
|
||
|
|
add = round_injury_adjustment_lower
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { scope:sc_defender.var:current_round = round_injury_bonus_lowest }
|
||
|
|
debug_log = "single combat variable error-check: round_injury_bonus_lowest"
|
||
|
|
debug_log_scopes = yes
|
||
|
|
change_variable = {
|
||
|
|
name = sc_attacker_injury_bonus
|
||
|
|
add = round_injury_adjustment_lowest
|
||
|
|
}
|
||
|
|
scope:sc_defender = {
|
||
|
|
change_variable = {
|
||
|
|
name = sc_defender_injury_bonus
|
||
|
|
add = round_injury_adjustment_lowest
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Reduce success threshold.
|
||
|
|
if = {
|
||
|
|
limit = { scope:sc_defender.var:current_round = round_success_threshold_lower }
|
||
|
|
debug_log = "single combat variable error-check: round_success_threshold_lower"
|
||
|
|
debug_log_scopes = yes
|
||
|
|
scope:sc_defender = {
|
||
|
|
change_variable = {
|
||
|
|
name = success_threshold
|
||
|
|
add = round_success_adjustment_lower
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = { scope:sc_defender.var:current_round = round_success_threshold_lowest }
|
||
|
|
debug_log = "single combat variable error-check: round_success_threshold_lowest"
|
||
|
|
debug_log_scopes = yes
|
||
|
|
scope:sc_defender = {
|
||
|
|
change_variable = {
|
||
|
|
name = success_threshold
|
||
|
|
add = round_success_adjustment_lowest
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Check to see if either character has achieved a suitable success score.
|
||
|
|
calculate_success_chances_effect = yes
|
||
|
|
## Check scope:sc_attacker first, seeing if they have more success chance than the minimum threshold for victory.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_attacker.var:sc_attacker_success_check >= scope:sc_defender.var:success_threshold
|
||
|
|
# Excepting things if the match is fixed.
|
||
|
|
NOT = { scope:fixed = flag:sc_defender }
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_defender = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:skill
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## Then check scope:sc_defender, performing the same calculation in reverse.
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_defender.var:sc_defender_success_check >= scope:sc_defender.var:success_threshold
|
||
|
|
# Excepting things if the match is fixed.
|
||
|
|
NOT = { scope:fixed = flag:sc_attacker }
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_defender = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:skill
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# If we have no victor yet, and we're past the first round, look at injuries.
|
||
|
|
## Set up injury risks for this round; we do this regardless, since we look at these to work out injury chances for the desc block.
|
||
|
|
calculate_injury_risks_effect = yes
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { exists = scope:sc_finished }
|
||
|
|
scope:sc_defender.var:current_round > 1
|
||
|
|
}
|
||
|
|
# Check scope:sc_attacker to see if they can injure themselves due to having more risk than success.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_attacker.var:sc_attacker_injury_risk_check >= scope:sc_attacker.var:sc_attacker_duel_success_score
|
||
|
|
# Excepting things if the match is fixed.
|
||
|
|
NOT = { scope:fixed = flag:sc_defender }
|
||
|
|
}
|
||
|
|
random = {
|
||
|
|
chance = {
|
||
|
|
value = 0
|
||
|
|
add = scope:sc_attacker.var:sc_attacker_injury_risk_check
|
||
|
|
subtract = scope:sc_attacker.var:sc_attacker_duel_success_score
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_defender = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:mistake
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Then check scope:sc_defender in the same fashion.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_defender.var:sc_defender_injury_risk_check >= scope:sc_defender.var:sc_defender_duel_success_score
|
||
|
|
# Excepting things if the match is fixed.
|
||
|
|
NOT = { scope:fixed = flag:sc_attacker }
|
||
|
|
}
|
||
|
|
random = {
|
||
|
|
chance = {
|
||
|
|
value = 0
|
||
|
|
add = scope:sc_defender.var:sc_defender_injury_risk_check
|
||
|
|
subtract = scope:sc_defender.var:sc_defender_duel_success_score
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_defender = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:mistake
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# If we now have a victor, work out the cleanup.
|
||
|
|
if = {
|
||
|
|
limit = { exists = scope:sc_finished }
|
||
|
|
finalise_combat_results_effect = yes
|
||
|
|
}
|
||
|
|
# If we don't, and this round is at or over the round_cap_limit, enter into sudden death.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:sc_defender.var:current_round >= round_cap_limit }
|
||
|
|
# Has the match been fixed?
|
||
|
|
## ... for scope:sc_attacker.
|
||
|
|
if = {
|
||
|
|
limit = { scope:fixed = flag:sc_attacker }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_defender = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
## ... for scope:sc_defender.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fixed = flag:sc_defender }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_defender = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# If scope:sc_attacker has the highest prowess, then they win.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:sc_attacker.prowess > scope:sc_defender.prowess }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_defender = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# If scope:sc_defender has the highest prowess, then *they* win.
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:sc_defender.prowess > scope:sc_attacker.prowess }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_defender = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Otherwise, their prowess must be even, so we do a toss-up.
|
||
|
|
else = {
|
||
|
|
random_list = {
|
||
|
|
#Scope:sc_attacker wins.
|
||
|
|
50 = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_defender = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Scope:sc_defender wins.
|
||
|
|
50 = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = sc_finished
|
||
|
|
value = yes
|
||
|
|
}
|
||
|
|
scope:sc_defender = { save_scope_as = sc_victor }
|
||
|
|
scope:sc_attacker = { save_scope_as = sc_loser }
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = victory_type
|
||
|
|
value = flag:sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Sort the end of combat.
|
||
|
|
finalise_combat_results_effect = yes
|
||
|
|
}
|
||
|
|
# If we don't, and we've not yet hit the round_cap_limit, increment the round_number & fire off the next round.
|
||
|
|
else = {
|
||
|
|
scope:sc_defender = {
|
||
|
|
# We change the round number right at the end, so that it doesn't mess up any calculations elsewhere.
|
||
|
|
change_variable = {
|
||
|
|
name = current_round
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
trigger_event = single_combat.0001
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# Results Events
|
||
|
|
# by Ewan Cowhig Croft
|
||
|
|
# 0031 - 0050
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
scripted_effect sce_loser_end_result_tooltip_effect = {
|
||
|
|
#Clarify the results.
|
||
|
|
if = {
|
||
|
|
limit = { scope:victory_type = flag:skill }
|
||
|
|
custom_tooltip = single_combat.0031.desc.result.skill
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:victory_type = flag:mistake }
|
||
|
|
custom_tooltip = single_combat.0031.desc.result.mistake
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:victory_type = flag:sudden_death }
|
||
|
|
custom_tooltip = single_combat.0031.desc.result.sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
scripted_effect sce_victor_end_result_tooltip_effect = {
|
||
|
|
#Clarify the results.
|
||
|
|
if = {
|
||
|
|
limit = { scope:victory_type = flag:skill }
|
||
|
|
custom_tooltip = single_combat.0041.desc.result.skill
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:victory_type = flag:mistake }
|
||
|
|
custom_tooltip = single_combat.0041.desc.result.mistake
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:victory_type = flag:sudden_death }
|
||
|
|
custom_tooltip = single_combat.0041.desc.result.sudden_death
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# scope:sc_loser's confirmation event.
|
||
|
|
single_combat.0031 = {
|
||
|
|
type = character_event
|
||
|
|
window = duel_event
|
||
|
|
title = single_combat.0031.t
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
# Are we in scope:sc_defender's POV?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_defender }
|
||
|
|
desc = {
|
||
|
|
# Our POV tells us that we did X.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:rough_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.rough_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0031.desc.sc_defender.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# And scope:sc_attacker successfully countered with Y.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:rough_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.rough_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Leading to Z-1: injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = no }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wait_and_hope.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.unsure_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hail_mary.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_sand.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.nut_em.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.probing_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.surprise_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.taunt.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.put_the_boot_in.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.strict_guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.confident_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.expert_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.attempt_disarm.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.tire_opponent.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.technique_from_legend.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.like_a_viper.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_silver.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.martial_voice.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.mocking_boast.injury
|
||
|
|
}
|
||
|
|
# No need for an is_that_a_crocodile, as it's never just an injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.desert_warrior.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.jungle_stalker.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.open_terrain_expert.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.injury.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.injury.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.forest_fighter.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.raaargh.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hard_grit.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.feint_and_stab.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.butchery.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.stoic_veteran.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.blade_dance.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wrath_of_highgod.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hurt_me_better.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.special_fallback.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.something_to_hide.injury
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or Z-2: death.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wait_and_hope.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.unsure_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.enthusiastic_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hail_mary.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_sand.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.nut_em.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.probing_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.surprise_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.taunt.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.put_the_boot_in.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.strict_guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.confident_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.expert_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.attempt_disarm.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.tire_opponent.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.reason_you_suck_speech.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.technique_from_legend.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.like_a_viper.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.pocket_silver.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.martial_voice.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.mocking_boast.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.is_that_a_crocodile.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.desert_warrior.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.jungle_stalker.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.open_terrain_expert.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.fatality.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.opponent_response.rough_terrain_expert.fatality.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.forest_fighter.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.raaargh.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hard_grit.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.feint_and_stab.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.butchery.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.stoic_veteran.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.blade_dance.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.wrath_of_highgod.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.hurt_me_better.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.opponent_response.special_fallback.fatality
|
||
|
|
}
|
||
|
|
# No need for a something_to_hide, as it's never fatal.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or scope:sc_attacker's?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_attacker }
|
||
|
|
desc = {
|
||
|
|
# Our POV tells us that we went straight in with Y.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:put_the_boot_in
|
||
|
|
has_trait = one_legged
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.peg_leg
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Leading to Z-1: injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = no }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wait_and_hope.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.unsure_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hail_mary.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_sand.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.nut_em.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.probing_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.surprise_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.taunt.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.strict_guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.confident_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.expert_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.attempt_disarm.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.tire_opponent.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.technique_from_legend.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.like_a_viper.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_silver.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.martial_voice.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.mocking_boast.injury
|
||
|
|
}
|
||
|
|
# No need for an is_that_a_crocodile, as it's never just an injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.desert_warrior.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.jungle_stalker.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.open_terrain_expert.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.injury.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.injury.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.forest_fighter.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.raaargh.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hard_grit.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.feint_and_stab.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.butchery.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.stoic_veteran.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.blade_dance.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hurt_me_better.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.special_fallback.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.something_to_hide.injury
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or Z-2: death.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wait_and_hope.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.unsure_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.enthusiastic_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hail_mary.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_sand.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.nut_em.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.probing_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.surprise_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.taunt.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.put_the_boot_in.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.strict_guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.confident_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.expert_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.attempt_disarm.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.tire_opponent.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.reason_you_suck_speech.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.technique_from_legend.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.like_a_viper.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.pocket_silver.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.martial_voice.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.mocking_boast.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.is_that_a_crocodile.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.desert_warrior.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.jungle_stalker.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.open_terrain_expert.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.fatality.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.rough_terrain_expert.fatality.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.forest_fighter.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.raaargh.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hard_grit.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.feint_and_stab.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.butchery.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.stoic_veteran.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.blade_dance.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.wrath_of_highgod.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.hurt_me_better.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0031.desc.sc_attacker.special_fallback.fatality
|
||
|
|
}
|
||
|
|
# No need for a something_to_hide, as it's never fatal.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
theme = skull
|
||
|
|
left_portrait = {
|
||
|
|
character = scope:sc_loser
|
||
|
|
triggered_animation = {
|
||
|
|
trigger = { portrait_should_wield_sword_trigger = yes }
|
||
|
|
animation = sword_yield_start
|
||
|
|
}
|
||
|
|
animation = pain
|
||
|
|
}
|
||
|
|
right_portrait = {
|
||
|
|
character = scope:sc_victor
|
||
|
|
scripted_animation = duel_celebrate
|
||
|
|
}
|
||
|
|
# Background Logic
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:terrain_scope }
|
||
|
|
reference = terrain_scope
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:battlefield }
|
||
|
|
reference = battlefield
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_night }
|
||
|
|
reference = alley_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_day }
|
||
|
|
reference = alley_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:temple }
|
||
|
|
reference = temple
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_night }
|
||
|
|
reference = corridor_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_day }
|
||
|
|
reference = corridor_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:courtyard }
|
||
|
|
reference = courtyard
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:dungeon }
|
||
|
|
reference = dungeon
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:docks }
|
||
|
|
reference = docks
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:feast }
|
||
|
|
reference = feast
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:market }
|
||
|
|
reference = market
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:tavern }
|
||
|
|
reference = tavern
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:throne_room }
|
||
|
|
reference = throne_room
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:army_camp }
|
||
|
|
reference = army_camp
|
||
|
|
}
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
#Death/wounding enacted elsewhere.
|
||
|
|
if = {
|
||
|
|
limit = { duel_will_end_in_my_death_trigger = yes }
|
||
|
|
show_as_tooltip = {
|
||
|
|
death = {
|
||
|
|
killer = scope:sc_victor
|
||
|
|
death_reason = death_duel
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fatality = flag:practice }
|
||
|
|
# If we're only practicing, there's no harm done.
|
||
|
|
custom_tooltip = single_combat.result.tt.practice_no_wounds
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
show_as_tooltip = {
|
||
|
|
increase_wounds_no_death_effect = { REASON = duel }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Add Tournament Trait XP
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = tourney_participant }
|
||
|
|
add_trait_xp = {
|
||
|
|
trait = tourney_participant
|
||
|
|
track = foot
|
||
|
|
value = { 1 3 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_loser = {
|
||
|
|
every_vassal = {
|
||
|
|
limit = {
|
||
|
|
has_vassal_stance = belligerent
|
||
|
|
}
|
||
|
|
add_opinion = {
|
||
|
|
modifier = liege_lost_duel
|
||
|
|
target = scope:sc_loser
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#Acknowledge loss of temporary combat modifiers.
|
||
|
|
custom_tooltip = single_combat.result.tt.temporary_modifiers_removed
|
||
|
|
# Damage equipped artifacts for loser
|
||
|
|
may_damage_artifact_effect = {
|
||
|
|
TYPE = primary_armament
|
||
|
|
CHANCE = 66 # 33% chance of no damage
|
||
|
|
PERCENT = 15 # 5-15 percent of max durability lost
|
||
|
|
}
|
||
|
|
may_damage_artifact_effect = {
|
||
|
|
TYPE = armor
|
||
|
|
CHANCE = 66 # 33% chance of no damage
|
||
|
|
PERCENT = 15 # 5-15 percent of max durability lost
|
||
|
|
}
|
||
|
|
#Nomads fighting upstart family members event
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_loser = {
|
||
|
|
has_character_flag = duelling_defecting_family_flag
|
||
|
|
this = scope:sc_attacker
|
||
|
|
}
|
||
|
|
}
|
||
|
|
scope:sc_loser = {
|
||
|
|
set_designated_heir = scope:sc_victor
|
||
|
|
remove_character_flag = duelling_defecting_family_flag
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# I die!
|
||
|
|
option = {
|
||
|
|
# Standard death-scream.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:scream }
|
||
|
|
text = single_combat.0031.a.scream
|
||
|
|
}
|
||
|
|
# Wordless death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:wordless }
|
||
|
|
text = single_combat.0031.a.wordless
|
||
|
|
}
|
||
|
|
# Muffled death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:muffled }
|
||
|
|
text = single_combat.0031.a.muffled
|
||
|
|
}
|
||
|
|
# Choking death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:choking }
|
||
|
|
text = single_combat.0031.a.choking
|
||
|
|
}
|
||
|
|
# Pleading death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:pleading_screams }
|
||
|
|
text = single_combat.0031.a.pleading
|
||
|
|
}
|
||
|
|
# Soulmate death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:soulmate }
|
||
|
|
text = single_combat.0031.a.soulmate
|
||
|
|
}
|
||
|
|
# Sinner death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:sinner }
|
||
|
|
text = single_combat.0031.a.sinner
|
||
|
|
}
|
||
|
|
# Saint death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:saint }
|
||
|
|
text = single_combat.0031.a.saint
|
||
|
|
}
|
||
|
|
# Legend death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:legend }
|
||
|
|
text = single_combat.0031.a.legend
|
||
|
|
}
|
||
|
|
# Valhalla death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:valhalla }
|
||
|
|
text = single_combat.0031.a.valhalla
|
||
|
|
}
|
||
|
|
# Best Friend death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:best_friend }
|
||
|
|
text = single_combat.0031.a.best_friend
|
||
|
|
}
|
||
|
|
# Killed by rival death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_rival }
|
||
|
|
text = single_combat.0031.a.killed_by_rival
|
||
|
|
}
|
||
|
|
# Killed by nemesis death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_nemesis }
|
||
|
|
text = single_combat.0031.a.killed_by_nemesis
|
||
|
|
}
|
||
|
|
# Killed by spouse death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_spouse }
|
||
|
|
text = single_combat.0031.a.killed_by_spouse
|
||
|
|
}
|
||
|
|
# Killed by your HoF death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_your_head_of_faith }
|
||
|
|
text = single_combat.0031.a.killed_by_your_head_of_faith
|
||
|
|
}
|
||
|
|
# Killed by another HoF death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_another_head_of_faith }
|
||
|
|
text = single_combat.0031.a.killed_by_another_head_of_faith
|
||
|
|
}
|
||
|
|
# Killed by cultural head death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_cultural_head }
|
||
|
|
text = single_combat.0031.a.killed_by_cultural_head
|
||
|
|
}
|
||
|
|
# Killed by house head death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_house_head }
|
||
|
|
text = single_combat.0031.a.killed_by_house_head
|
||
|
|
}
|
||
|
|
# Killed by dynasty head death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_dynasty_head }
|
||
|
|
text = single_combat.0031.a.killed_by_dynasty_head
|
||
|
|
}
|
||
|
|
# Killed by close or extended family death.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_close_or_extended_family }
|
||
|
|
text = single_combat.0031.a.killed_by_close_or_extended_family
|
||
|
|
}
|
||
|
|
# Killed by friend or lover.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_friend_or_lover }
|
||
|
|
text = single_combat.0031.a.killed_by_friend_or_lover
|
||
|
|
}
|
||
|
|
# Killed by soulmate.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_soulmate }
|
||
|
|
text = single_combat.0031.a.killed_by_soulmate
|
||
|
|
}
|
||
|
|
# Killed by best friend.
|
||
|
|
name = {
|
||
|
|
trigger = { scope:death_rattle = flag:killed_by_best_friend }
|
||
|
|
text = single_combat.0031.a.killed_by_best_friend
|
||
|
|
}
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = yes }
|
||
|
|
|
||
|
|
#Confirmation of the duel ending & explanation.
|
||
|
|
sce_loser_end_result_tooltip_effect = yes
|
||
|
|
|
||
|
|
#No stress for single-option events.
|
||
|
|
#No AI chance needed for single-option events.
|
||
|
|
}
|
||
|
|
|
||
|
|
# Yield! Yield!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0031.b
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = no }
|
||
|
|
|
||
|
|
#Confirmation of the duel ending & explanation.
|
||
|
|
sce_loser_end_result_tooltip_effect = yes
|
||
|
|
|
||
|
|
#No stress involved, as we don't want to force rivalries out of every duel.
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
ai_value_modifier = {
|
||
|
|
ai_vengefulness = -0.75
|
||
|
|
ai_energy = -0.25
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You will rue the day you messed with scope:sc_loser!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0031.c
|
||
|
|
trigger = { duel_will_end_in_my_death_trigger = no }
|
||
|
|
|
||
|
|
#Confirmation of the duel ending & explanation.
|
||
|
|
sce_loser_end_result_tooltip_effect = yes
|
||
|
|
#Aaaaand set-up some rivalry.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
NOT = { has_relation_rival = scope:sc_victor }
|
||
|
|
}
|
||
|
|
progress_towards_rival_effect = {
|
||
|
|
REASON = rival_lost_duel
|
||
|
|
CHARACTER = scope:sc_victor
|
||
|
|
OPINION = 0
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Consolation prize for being a sore loser to a rival.
|
||
|
|
else = { add_stress = minor_stress_loss }
|
||
|
|
|
||
|
|
stress_impact = {
|
||
|
|
arrogant = minor_stress_impact_loss
|
||
|
|
vengeful = medium_stress_impact_loss
|
||
|
|
humble = minor_stress_impact_gain
|
||
|
|
forgiving = minor_stress_impact_gain
|
||
|
|
}
|
||
|
|
ai_chance = {
|
||
|
|
base = 100
|
||
|
|
ai_value_modifier = {
|
||
|
|
ai_vengefulness = 0.5
|
||
|
|
ai_energy = 0.25
|
||
|
|
}
|
||
|
|
modifier = { #Weight up for stress.
|
||
|
|
add = 10
|
||
|
|
has_trait = arrogant
|
||
|
|
}
|
||
|
|
modifier = { #Weight up for stress.
|
||
|
|
add = 20
|
||
|
|
has_trait = vengeful
|
||
|
|
}
|
||
|
|
modifier = { #Weight down for stress.
|
||
|
|
add = -10
|
||
|
|
has_trait = humble
|
||
|
|
}
|
||
|
|
modifier = { #Weight down for stress.
|
||
|
|
add = -20
|
||
|
|
has_trait = forgiving
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
after = {
|
||
|
|
if = { #If dueled an AI, clear everything
|
||
|
|
limit = {
|
||
|
|
scope:sc_victor = { is_ai = yes }
|
||
|
|
}
|
||
|
|
single_combat_clean_shirtlessness_effect = {
|
||
|
|
ATTACKER = scope:sc_loser
|
||
|
|
DEFENDER = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = { #If both players, clear own only
|
||
|
|
limit = { is_ai = no }
|
||
|
|
if = {
|
||
|
|
limit = { has_character_flag = single_combat_stripped_to_waist }
|
||
|
|
remove_character_flag = single_combat_stripped_to_waist
|
||
|
|
}
|
||
|
|
else_if = { # If a player who dueled a player, clear only own flags
|
||
|
|
limit = { has_character_flag = single_combat_duel_armor }
|
||
|
|
remove_character_flag = single_combat_duel_armor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = { #If dueled an AI, clear everything
|
||
|
|
limit = {
|
||
|
|
scope:sc_victor = { is_ai = yes }
|
||
|
|
}
|
||
|
|
single_combat_clean_temp_weapon_effect = {
|
||
|
|
ATTACKER = scope:sc_loser
|
||
|
|
DEFENDER = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = { #If both players, clear own only
|
||
|
|
limit = { is_ai = no }
|
||
|
|
if = { #check for variables set up in set_temporary_signature_weapon
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_variable = og_signature_weapon
|
||
|
|
has_variable = temporary_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = { #remove the signature_weapon variable if the character didn't have anything before
|
||
|
|
limit = {
|
||
|
|
var:og_signature_weapon = flag:no_signature_weapon_yet
|
||
|
|
}
|
||
|
|
remove_variable = signature_weapon
|
||
|
|
}
|
||
|
|
else = { #restore the original signature_weapon
|
||
|
|
set_variable = {
|
||
|
|
name = signature_weapon
|
||
|
|
value = var:og_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#remove all variables set up in set_temporary_signature_weapon
|
||
|
|
remove_variable = temporary_signature_weapon
|
||
|
|
remove_variable = og_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# scope:sc_victor's confirmation event.
|
||
|
|
single_combat.0041 = {
|
||
|
|
type = character_event
|
||
|
|
window = duel_event
|
||
|
|
title = single_combat.0041.t
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
# Are we in scope:sc_defender's POV?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_defender }
|
||
|
|
desc = {
|
||
|
|
# Our POV tells us that we did X.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.put_the_boot_in
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:rough_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.rough_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_defender_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0041.desc.sc_defender.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# And scope:sc_attacker failed to counter with Y.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:put_the_boot_in
|
||
|
|
has_trait = one_legged
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.put_the_boot_in.peg_leg
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.put_the_boot_in.fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Leading to Z-1: injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = no }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wait_and_hope.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.unsure_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hail_mary.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_sand.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.nut_em.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.probing_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.surprise_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.taunt.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.put_the_boot_in.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.strict_guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.confident_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.expert_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.attempt_disarm.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.tire_opponent.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.technique_from_legend.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.like_a_viper.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_silver.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.martial_voice.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.mocking_boast.injury
|
||
|
|
}
|
||
|
|
# No need for an is_that_a_crocodile, as it's never just an injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.desert_warrior.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.jungle_stalker.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.open_terrain_expert.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.injury.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.injury.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.forest_fighter.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.raaargh.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hard_grit.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.feint_and_stab.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.butchery.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.stoic_veteran.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.blade_dance.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wrath_of_highgod.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hurt_me_better.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.special_fallback.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.something_to_hide.injury
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or Z-2: death.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wait_and_hope.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.unsure_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.enthusiastic_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hail_mary.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_sand.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.nut_em.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.probing_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.surprise_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.taunt.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.put_the_boot_in.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.strict_guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.confident_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.expert_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.attempt_disarm.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.tire_opponent.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.reason_you_suck_speech.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.technique_from_legend.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.like_a_viper.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.pocket_silver.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.martial_voice.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.mocking_boast.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.is_that_a_crocodile.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.desert_warrior.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.jungle_stalker.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.open_terrain_expert.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.fatality.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.opponent_response.rough_terrain_expert.fatality.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.forest_fighter.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.raaargh.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hard_grit.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.feint_and_stab.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.butchery.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.stoic_veteran.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.blade_dance.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.wrath_of_highgod.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.hurt_me_better.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.opponent_response.special_fallback.fatality
|
||
|
|
}
|
||
|
|
# No need for a something_to_hide, as it's never fatal.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or scope:sc_attacker's?
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { this = scope:sc_attacker }
|
||
|
|
desc = {
|
||
|
|
# Our POV tells us that we went straight in with Y.
|
||
|
|
triggered_desc = {
|
||
|
|
#This trigger should always exist, but the desc structure is required for code reasons.
|
||
|
|
trigger = { always = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wait_and_hope
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.unsure_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hail_mary
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_sand
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.nut_em
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.probing_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.surprise_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.taunt
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:put_the_boot_in
|
||
|
|
has_trait = one_legged
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.peg_leg
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.strict_guard
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.confident_attack
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.expert_onslaught
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.attempt_disarm
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.tire_opponent
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.technique_from_legend
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.like_a_viper
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_silver
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.martial_voice
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.mocking_boast
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.is_that_a_crocodile
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.desert_warrior
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.jungle_stalker
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.open_terrain_expert
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.forest_fighter
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.raaargh
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hard_grit
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.feint_and_stab
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.butchery
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.stoic_veteran
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.blade_dance
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hurt_me_better
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.special_fallback
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.something_to_hide
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Leading to Z-1: injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = no }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wait_and_hope.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.unsure_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hail_mary.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_sand.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.nut_em.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.probing_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.surprise_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.taunt.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.strict_guard.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.confident_attack.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.expert_onslaught.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.attempt_disarm.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.tire_opponent.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.technique_from_legend.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.like_a_viper.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_silver.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.martial_voice.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.mocking_boast.injury
|
||
|
|
}
|
||
|
|
# No need for an is_that_a_crocodile, as it's never just an injury.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.desert_warrior.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.jungle_stalker.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.open_terrain_expert.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.injury.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.injury.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.forest_fighter.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.raaargh.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hard_grit.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.feint_and_stab.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.butchery.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.stoic_veteran.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.blade_dance.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hurt_me_better.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.special_fallback.injury
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:something_to_hide }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.something_to_hide.injury
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Or Z-2: death.
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = yes }
|
||
|
|
desc = {
|
||
|
|
first_valid = {
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wait_and_hope }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wait_and_hope.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:unsure_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.unsure_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:enthusiastic_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.enthusiastic_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hail_mary }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hail_mary.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_sand }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_sand.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:nut_em }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.nut_em.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:probing_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.probing_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:surprise_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.surprise_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:taunt }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.taunt.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:put_the_boot_in }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.put_the_boot_in.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:strict_guard }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.strict_guard.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:confident_attack }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.confident_attack.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:expert_onslaught }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.expert_onslaught.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:attempt_disarm }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.attempt_disarm.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:tire_opponent }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.tire_opponent.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:reason_you_suck_speech }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.reason_you_suck_speech.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:technique_from_legend }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.technique_from_legend.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:like_a_viper }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.like_a_viper.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:pocket_silver }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.pocket_silver.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:martial_voice }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.martial_voice.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:mocking_boast }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.mocking_boast.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:is_that_a_crocodile }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.is_that_a_crocodile.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:desert_warrior }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.desert_warrior.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:jungle_stalker }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.jungle_stalker.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:open_terrain_expert }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.open_terrain_expert.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { rocky_locale_trigger = yes }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.fatality.rocky
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = {
|
||
|
|
scope:sc_attacker_last_move = flag:rough_terrain_expert
|
||
|
|
scope:sc_defender.location = { terrain = wetlands }
|
||
|
|
}
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.rough_terrain_expert.fatality.boggy
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:forest_fighter }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.forest_fighter.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:raaargh }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.raaargh.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hard_grit }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hard_grit.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:feint_and_stab }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.feint_and_stab.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:butchery }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.butchery.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:stoic_veteran }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.stoic_veteran.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:blade_dance }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.blade_dance.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:wrath_of_highgod }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.wrath_of_highgod.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:hurt_me_better }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.hurt_me_better.fatality
|
||
|
|
}
|
||
|
|
triggered_desc = {
|
||
|
|
trigger = { scope:sc_attacker_last_move = flag:special_fallback }
|
||
|
|
desc = single_combat.0041.desc.sc_attacker.special_fallback.fatality
|
||
|
|
}
|
||
|
|
# No need for a something_to_hide, as it's never fatal.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
theme = skull
|
||
|
|
left_portrait = {
|
||
|
|
character = scope:sc_victor
|
||
|
|
scripted_animation = duel_celebrate
|
||
|
|
}
|
||
|
|
right_portrait = {
|
||
|
|
character = scope:sc_loser
|
||
|
|
triggered_animation = {
|
||
|
|
trigger = { is_alive = no }
|
||
|
|
animation = loss_1
|
||
|
|
}
|
||
|
|
animation = sword_yield_start
|
||
|
|
}
|
||
|
|
# Background Logic
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:terrain_scope }
|
||
|
|
reference = terrain_scope
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:battlefield }
|
||
|
|
reference = battlefield
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_night }
|
||
|
|
reference = alley_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:alley_day }
|
||
|
|
reference = alley_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:temple }
|
||
|
|
reference = temple
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_night }
|
||
|
|
reference = corridor_night
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:corridor_day }
|
||
|
|
reference = corridor_day
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:courtyard }
|
||
|
|
reference = courtyard
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:dungeon }
|
||
|
|
reference = dungeon
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:docks }
|
||
|
|
reference = docks
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:feast }
|
||
|
|
reference = feast
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:market }
|
||
|
|
reference = market
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:tavern }
|
||
|
|
reference = tavern
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:throne_room }
|
||
|
|
reference = throne_room
|
||
|
|
}
|
||
|
|
override_background = {
|
||
|
|
trigger = { scope:locale = flag:army_camp }
|
||
|
|
reference = army_camp
|
||
|
|
}
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
#Death/wounding enacted elsewhere.
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
duel_will_end_in_opponent_death_trigger = yes
|
||
|
|
}
|
||
|
|
scope:sc_loser = {
|
||
|
|
show_as_tooltip = {
|
||
|
|
death = {
|
||
|
|
killer = scope:sc_victor
|
||
|
|
death_reason = death_duel
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:sc_victor.faith = { has_doctrine = tenet_cranial_trophies }
|
||
|
|
}
|
||
|
|
show_as_tooltip = {
|
||
|
|
tgp_cranial_trophies_beheading_effect = {
|
||
|
|
KILLER = scope:sc_victor
|
||
|
|
DEAD = scope:sc_loser
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = { scope:fatality = flag:practice }
|
||
|
|
# If we're only practicing, there's no harm done.
|
||
|
|
custom_tooltip = single_combat.result.tt.practice_no_wounds
|
||
|
|
}
|
||
|
|
else = {
|
||
|
|
scope:sc_loser = {
|
||
|
|
show_as_tooltip = {
|
||
|
|
increase_wounds_no_death_effect = { REASON = duel }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Add Blademaster Trait XP
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = lifestyle_blademaster }
|
||
|
|
add_trait_xp = {
|
||
|
|
trait = lifestyle_blademaster
|
||
|
|
value = lifestyle_blademaster_xp_gain_minor_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Add Tournament Trait XP
|
||
|
|
if = {
|
||
|
|
limit = { has_trait = tourney_participant }
|
||
|
|
add_trait_xp = {
|
||
|
|
trait = tourney_participant
|
||
|
|
track = foot
|
||
|
|
value = tournament_hastiludes_xp_gain_minor_value
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
scope:sc_victor = {
|
||
|
|
every_vassal = {
|
||
|
|
limit = {
|
||
|
|
has_vassal_stance = belligerent
|
||
|
|
}
|
||
|
|
custom = every_belligerent_vassal
|
||
|
|
add_opinion = {
|
||
|
|
modifier = liege_won_duel
|
||
|
|
target = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Add Hereward killing a Norman XP
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
has_trait = the_wake
|
||
|
|
scope:sc_loser = {
|
||
|
|
culture = culture:norman
|
||
|
|
}
|
||
|
|
}
|
||
|
|
add_trait_xp = {
|
||
|
|
trait = the_wake
|
||
|
|
value = { 5 10 }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Add Nomadic Legitimacy gain
|
||
|
|
if = { # Nomads gain Legitimacy from duels
|
||
|
|
limit = {
|
||
|
|
has_mpo_dlc_trigger = yes
|
||
|
|
is_valid_for_nomadic_legitimacy_change = yes
|
||
|
|
}
|
||
|
|
add_legitimacy = medium_legitimacy_gain
|
||
|
|
}
|
||
|
|
|
||
|
|
# Increase the Strength of Ushiwakamaru
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_character_modifier = tgp_japan_ushiwakamaru
|
||
|
|
has_character_modifier = tgp_japan_ushiwakamaru_2
|
||
|
|
has_character_modifier = tgp_japan_ushiwakamaru_3
|
||
|
|
}
|
||
|
|
}
|
||
|
|
change_variable = {
|
||
|
|
name = ushiwakamaru_duels_won
|
||
|
|
add = 1
|
||
|
|
}
|
||
|
|
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
var:ushiwakamaru_duels_won >= 60
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 }
|
||
|
|
}
|
||
|
|
remove_character_modifier = tgp_japan_ushiwakamaru_3
|
||
|
|
add_character_modifier = {
|
||
|
|
modifier = tgp_japan_ushiwakamaru_4
|
||
|
|
years = -1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
var:ushiwakamaru_duels_won >= 40
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 }
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_3 }
|
||
|
|
}
|
||
|
|
remove_character_modifier = tgp_japan_ushiwakamaru_2
|
||
|
|
add_character_modifier = {
|
||
|
|
modifier = tgp_japan_ushiwakamaru_3
|
||
|
|
years = -1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = {
|
||
|
|
limit = {
|
||
|
|
var:ushiwakamaru_duels_won >= 20
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_4 }
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_3 }
|
||
|
|
NOT = { has_character_modifier = tgp_japan_ushiwakamaru_2 }
|
||
|
|
}
|
||
|
|
remove_character_modifier = tgp_japan_ushiwakamaru
|
||
|
|
add_character_modifier = {
|
||
|
|
modifier = tgp_japan_ushiwakamaru_2
|
||
|
|
years = -1
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Damage equipped artifacts
|
||
|
|
may_damage_artifact_effect = {
|
||
|
|
TYPE = primary_armament
|
||
|
|
CHANCE = 50 # 50% chance of no damage
|
||
|
|
PERCENT = 10 # 5-10 percent of max durability lost
|
||
|
|
}
|
||
|
|
may_damage_artifact_effect = {
|
||
|
|
TYPE = armor
|
||
|
|
CHANCE = 50 # 50% chance of no damage
|
||
|
|
PERCENT = 10 # 5-10 percent of max durability lost
|
||
|
|
}
|
||
|
|
#Acknowledge loss of temporary combat modifiers.
|
||
|
|
custom_tooltip = single_combat.result.tt.temporary_modifiers_removed
|
||
|
|
}
|
||
|
|
|
||
|
|
# They died!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0041.a
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = yes }
|
||
|
|
|
||
|
|
#Confirmation of the duel ending & explanation.
|
||
|
|
sce_victor_end_result_tooltip_effect = yes
|
||
|
|
|
||
|
|
#No stress for single-option events.
|
||
|
|
#No AI chance needed for single-option events.
|
||
|
|
}
|
||
|
|
|
||
|
|
# I am victorious!
|
||
|
|
option = {
|
||
|
|
name = single_combat.0041.b
|
||
|
|
trigger = { duel_will_end_in_opponent_death_trigger = no }
|
||
|
|
|
||
|
|
#Confirmation of the duel ending & explanation.
|
||
|
|
sce_victor_end_result_tooltip_effect = yes
|
||
|
|
|
||
|
|
#No stress for single-option events.
|
||
|
|
#No AI chance needed for single-option events.
|
||
|
|
}
|
||
|
|
|
||
|
|
after = {
|
||
|
|
# Everyone puts their shirts back on.
|
||
|
|
if = { #If dueled an AI, clear everything
|
||
|
|
limit = {
|
||
|
|
scope:sc_loser = { is_ai = yes }
|
||
|
|
}
|
||
|
|
single_combat_clean_shirtlessness_effect = {
|
||
|
|
ATTACKER = scope:sc_loser
|
||
|
|
DEFENDER = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = { #If both players, clear own only
|
||
|
|
limit = { is_ai = no }
|
||
|
|
if = {
|
||
|
|
limit = { has_character_flag = single_combat_stripped_to_waist }
|
||
|
|
remove_character_flag = single_combat_stripped_to_waist
|
||
|
|
}
|
||
|
|
else_if = { # If a player who dueled a player, clear only own flags
|
||
|
|
limit = { has_character_flag = single_combat_duel_armor }
|
||
|
|
remove_character_flag = single_combat_duel_armor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Everyone puts their signature weapons back on.
|
||
|
|
if = { #If dueled an AI, clear everything
|
||
|
|
limit = {
|
||
|
|
scope:sc_loser = { is_ai = yes }
|
||
|
|
}
|
||
|
|
single_combat_clean_temp_weapon_effect = {
|
||
|
|
ATTACKER = scope:sc_loser
|
||
|
|
DEFENDER = scope:sc_victor
|
||
|
|
}
|
||
|
|
}
|
||
|
|
else_if = { #If both players, clear own only
|
||
|
|
limit = { is_ai = no }
|
||
|
|
if = { #check for variables set up in set_temporary_signature_weapon
|
||
|
|
limit = {
|
||
|
|
OR = {
|
||
|
|
has_variable = og_signature_weapon
|
||
|
|
has_variable = temporary_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = { #remove the signature_weapon variable if the character didn't have anything before
|
||
|
|
limit = {
|
||
|
|
var:og_signature_weapon = flag:no_signature_weapon_yet
|
||
|
|
}
|
||
|
|
remove_variable = signature_weapon
|
||
|
|
}
|
||
|
|
else = { #restore the original signature_weapon
|
||
|
|
set_variable = {
|
||
|
|
name = signature_weapon
|
||
|
|
value = var:og_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#remove all variables set up in set_temporary_signature_weapon
|
||
|
|
remove_variable = temporary_signature_weapon
|
||
|
|
remove_variable = og_signature_weapon
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
##################################################
|
||
|
|
# Test Events
|
||
|
|
# by Ewan Cowhig Croft
|
||
|
|
# 1001+
|
||
|
|
##################################################
|
||
|
|
|
||
|
|
# Spawn a duel, with a random knight as defender.
|
||
|
|
single_combat.1001 = {
|
||
|
|
hidden = yes
|
||
|
|
orphan = yes
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
random_knight = {
|
||
|
|
limit = { can_start_single_combat_trigger = yes }
|
||
|
|
save_scope_as = fighter_mc_fighter_chap
|
||
|
|
}
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = root
|
||
|
|
SC_ATTACKER = root
|
||
|
|
SC_DEFENDER = scope:fighter_mc_fighter_chap
|
||
|
|
FATALITY = default
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Spawn a duel, with a random knight as attacker.
|
||
|
|
single_combat.1002 = {
|
||
|
|
hidden = yes
|
||
|
|
orphan = yes
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
random_knight = {
|
||
|
|
limit = { can_start_single_combat_trigger = yes }
|
||
|
|
save_scope_as = fighter_mc_fighter_chap
|
||
|
|
}
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = root
|
||
|
|
SC_ATTACKER = scope:fighter_mc_fighter_chap
|
||
|
|
SC_DEFENDER = root
|
||
|
|
FATALITY = no
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Error suppression.
|
||
|
|
single_combat.1003 = {
|
||
|
|
hidden = yes
|
||
|
|
orphan = yes
|
||
|
|
|
||
|
|
immediate = {
|
||
|
|
# Fatality flags
|
||
|
|
hidden_effect = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fatality
|
||
|
|
value = flag:default
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fatality
|
||
|
|
value = flag:possible
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fatality
|
||
|
|
value = flag:no
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fatality
|
||
|
|
value = flag:always
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Match fixing flags
|
||
|
|
hidden_effect = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fixed
|
||
|
|
value = flag:sc_attacker
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = fixed
|
||
|
|
value = flag:sc_defender
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:fixed = flag:sc_attacker
|
||
|
|
scope:fixed = flag:sc_defender
|
||
|
|
}
|
||
|
|
# Nothing.
|
||
|
|
}
|
||
|
|
# Background flags
|
||
|
|
hidden_effect = {
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:terrain_scope
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:battlefield
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:alley_night
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:alley_day
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:temple
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:corridor_night
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:corridor_day
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:courtyard
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:dungeon
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:docks
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:feast
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:market
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:tavern
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:throne_room
|
||
|
|
}
|
||
|
|
save_scope_value_as = {
|
||
|
|
name = locale
|
||
|
|
value = flag:army_camp
|
||
|
|
}
|
||
|
|
}
|
||
|
|
# Victory type flags
|
||
|
|
if = {
|
||
|
|
limit = {
|
||
|
|
scope:victory_type = flag:skill
|
||
|
|
scope:victory_type = flag:mistake
|
||
|
|
scope:victory_type = flag:sudden_death
|
||
|
|
}
|
||
|
|
#Nothing.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Debug event to duel a character.
|
||
|
|
single_combat.1004 = {
|
||
|
|
type = character_event
|
||
|
|
window = duel_event
|
||
|
|
title = single_combat.1004.t
|
||
|
|
desc = single_combat.1004.desc
|
||
|
|
left_portrait = {
|
||
|
|
character = scope:actor
|
||
|
|
animation = anger
|
||
|
|
}
|
||
|
|
right_portrait = {
|
||
|
|
character = scope:recipient
|
||
|
|
animation = fear
|
||
|
|
}
|
||
|
|
theme = skull
|
||
|
|
|
||
|
|
# You are the attacker, default
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.a
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:actor
|
||
|
|
SC_DEFENDER = scope:recipient
|
||
|
|
FATALITY = default
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You are the defender, default
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.b
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:recipient
|
||
|
|
SC_DEFENDER = scope:actor
|
||
|
|
FATALITY = default
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You are the attacker, fatal
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.c
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:actor
|
||
|
|
SC_DEFENDER = scope:recipient
|
||
|
|
FATALITY = always
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You are the defender, fatal
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.d
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:recipient
|
||
|
|
SC_DEFENDER = scope:actor
|
||
|
|
FATALITY = always
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You are the attack, non-lethal
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.e
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:actor
|
||
|
|
SC_DEFENDER = scope:recipient
|
||
|
|
FATALITY = no
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# You are the defender, non-lethal
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.f
|
||
|
|
|
||
|
|
configure_start_single_combat_effect = {
|
||
|
|
SC_INITIATOR = scope:actor
|
||
|
|
SC_ATTACKER = scope:recipient
|
||
|
|
SC_DEFENDER = scope:actor
|
||
|
|
FATALITY = no
|
||
|
|
FIXED = no
|
||
|
|
LOCALE = terrain_scope
|
||
|
|
OUTPUT_EVENT = single_combat.1006
|
||
|
|
INVALIDATION_EVENT = single_combat.1006 #In a real event, this would obviously be a different even to the output.
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Actually, never mind
|
||
|
|
option = {
|
||
|
|
name = single_combat.1004.g
|
||
|
|
}
|
||
|
|
|
||
|
|
after = {
|
||
|
|
single_combat_apply_default_shirtlessness_effect = {
|
||
|
|
ATTACKER = scope:actor
|
||
|
|
DEFENDER = scope:recipient
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
# Hidden empty event for testing purposes.
|
||
|
|
single_combat.1006 = {
|
||
|
|
hidden = yes
|
||
|
|
}
|