From d2cae1e61fb372a44850eff3ee10cf1713cc6a36 Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Sat, 13 Nov 2021 16:29:21 +0100 Subject: [PATCH 1/7] Marshal Class --- tpdatasrc/tpgamefiles/mes/auras.mes | 78 ++++ .../tpgamefiles/mes/help/marshal_help.tab | 31 ++ tpdatasrc/tpgamefiles/mes/stat_ext.mes | 15 + .../rules/char_class/class083_marshal.py | 76 ++++ ...action08301_marshal_activate_minor_aura.py | 18 + ...action08302_marshal_activate_major_aura.py | 18 + .../action08303_marshal_dismiss_minor_aura.py | 18 + .../action08304_marshal_dismiss_major_aura.py | 18 + .../action08305_marshal_adrenaline_boost.py | 18 + .../action08311_marshal_learn_minor_aura.py | 18 + .../action08312_marshal_learn_major_aura.py | 18 + .../rules/feats/major aura hardy soldiers.txt | 5 + .../rules/feats/major aura motivate ardor.txt | 5 + .../feats/major aura motivate attack.txt | 5 + .../rules/feats/major aura motivate care.txt | 5 + .../feats/major aura motivate urgency.txt | 5 + .../feats/major aura resilient troops.txt | 5 + .../rules/feats/major aura steady hand.txt | 5 + .../rules/feats/marshal adrenaline boost.txt | 5 + .../rules/feats/marshal major auras.txt | 5 + .../rules/feats/marshal minor auras.txt | 5 + .../feats/minor aura accurate strike.txt | 5 + .../rules/feats/minor aura art of war.txt | 5 + .../feats/minor aura demand fortitude.txt | 5 + .../feats/minor aura determined caster.txt | 5 + .../rules/feats/minor aura force of will.txt | 5 + .../minor aura master of opportunity.txt | 5 + .../feats/minor aura master of tactics.txt | 5 + .../feats/minor aura motivate charisma.txt | 5 + .../minor aura motivate constitution.txt | 5 + .../feats/minor aura motivate dexterity.txt | 5 + .../minor aura motivate intelligence.txt | 5 + .../feats/minor aura motivate strength.txt | 5 + .../feats/minor aura motivate wisdom.txt | 5 + .../rules/feats/minor aura over the top.txt | 5 + .../rules/feats/minor aura watchful eye.txt | 5 + .../indicators/marshal_adrenaline_boost.txt | 5 + .../rules/indicators/marshal_major_aura.txt | 5 + .../rules/indicators/marshal_minor_aura.txt | 5 + .../spells/3831 - Marshal Minor Aura.txt | 15 + .../spells/3832 - Marshal Major Aura.txt | 15 + .../3833 - Marshal Adreanline Boost.txt | 15 + .../scr/Spell3831 - Marshal Minor Aura.py | 38 ++ .../scr/Spell3832 - Marshal Major Aura.py | 38 ++ .../Spell3833 - Marshal Adrenaline Boost.py | 34 ++ tpdatasrc/tpgamefiles/scr/aura_utils.py | 396 ++++++++++++++++++ .../tpgamefiles/scr/tpModifiers/marshal.py | 226 ++++++++++ .../sp_marshal_adrenaline_boost.py | 46 ++ .../scr/tpModifiers/sp_marshal_major_aura.py | 134 ++++++ .../scr/tpModifiers/sp_marshal_minor_aura.py | 162 +++++++ 50 files changed, 1585 insertions(+) create mode 100644 tpdatasrc/tpgamefiles/mes/auras.mes create mode 100644 tpdatasrc/tpgamefiles/mes/help/marshal_help.tab create mode 100644 tpdatasrc/tpgamefiles/rules/char_class/class083_marshal.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08301_marshal_activate_minor_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08302_marshal_activate_major_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08303_marshal_dismiss_minor_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08304_marshal_dismiss_major_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08305_marshal_adrenaline_boost.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08311_marshal_learn_minor_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/d20_actions/action08312_marshal_learn_major_aura.py create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura hardy soldiers.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura motivate ardor.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura motivate attack.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura motivate care.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura motivate urgency.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura resilient troops.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/major aura steady hand.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/marshal adrenaline boost.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/marshal major auras.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/marshal minor auras.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura accurate strike.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura art of war.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura demand fortitude.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura determined caster.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura force of will.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura master of opportunity.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura master of tactics.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate charisma.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate constitution.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate dexterity.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate intelligence.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate strength.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura motivate wisdom.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura over the top.txt create mode 100644 tpdatasrc/tpgamefiles/rules/feats/minor aura watchful eye.txt create mode 100644 tpdatasrc/tpgamefiles/rules/indicators/marshal_adrenaline_boost.txt create mode 100644 tpdatasrc/tpgamefiles/rules/indicators/marshal_major_aura.txt create mode 100644 tpdatasrc/tpgamefiles/rules/indicators/marshal_minor_aura.txt create mode 100644 tpdatasrc/tpgamefiles/rules/spells/3831 - Marshal Minor Aura.txt create mode 100644 tpdatasrc/tpgamefiles/rules/spells/3832 - Marshal Major Aura.txt create mode 100644 tpdatasrc/tpgamefiles/rules/spells/3833 - Marshal Adreanline Boost.txt create mode 100644 tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py create mode 100644 tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py create mode 100644 tpdatasrc/tpgamefiles/scr/Spell3833 - Marshal Adrenaline Boost.py create mode 100644 tpdatasrc/tpgamefiles/scr/aura_utils.py create mode 100644 tpdatasrc/tpgamefiles/scr/tpModifiers/marshal.py create mode 100644 tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_adrenaline_boost.py create mode 100644 tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py create mode 100644 tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py diff --git a/tpdatasrc/tpgamefiles/mes/auras.mes b/tpdatasrc/tpgamefiles/mes/auras.mes new file mode 100644 index 000000000..fe04d6bcf --- /dev/null +++ b/tpdatasrc/tpgamefiles/mes/auras.mes @@ -0,0 +1,78 @@ +// Aura List +// Used by Marshal, Dragon Shaman and Draconic Aura Feats + +// Marshal Auras +// 1-15 Minor Auras +// 16-22 Major Auras + +{1}{Accurate Strike} +{2}{Art of War} +{3}{Demand Fortitude} +{4}{Determined Caster} +{5}{Force of Will} +{6}{Master of Opportunity} +{7}{Master of Tactics} +{8}{Motivate Charisma} +{9}{Motivate Constitution} +{10}{Motivate Dexterity} +{11}{Motivate Intelligence} +{12}{Motivate Strength} +{13}{Motivate Wisdom} +{14}{Over the Top} +{15}{Watchful Eye} +{16}{Hardy Soldiers} +{17}{Motivate Ardor} +{18}{Motivate Attack} +{19}{Motivate Care} +{20}{Motivate Urgency} +{21}{Resilient Troops} +{22}{Steady Hand} + +// Draconic Auras +// PHB II: 23-29 +// Dragon Magic 30+ +{23}{Energy Shield} +{24}{Power} +{25}{Presence} +{26}{Resistance} +{27}{Senses} +{28}{Toughness} +{29}{Vigor} +{30}{Break Spell Resistance} // Renamed from Power as a different Aura is already named Power +{31}{Energy} +{32}{Insight} +{33}{Resolve} +{34}{Stamina} +{35}{Swiftness} + +// Aura Tags +// Enums are +1000 +{1001}{TAG_AURA_ACCURATE_STRIKE} +{1002}{TAG_AURA_ART_OF_WAR} +{1003}{TAG_AURA_DEMAND_FORTITUDE} +{1004}{TAG_AURA_DETERMINED_CASTER} +{1005}{TAG_AURA_FORCE_OF_WILL} +{1006}{TAG_AURA_MASTER_OF_OPPORTUNITY} +{1007}{TAG_AURA_MASTER_OF_TACTICS} +{1008}{TAG_AURA_MOTIVATE_CHARISMA} +{1009}{TAG_AURA_MOTIVATE_CONSTITUTION} +{1010}{TAG_AURA_MOTIVATE_DEXTERITY} +{1011}{TAG_AURA_MOTIVATE_INTELLIGENCE} +{1012}{TAG_AURA_MOTIVATE_STRENGTH} +{1013}{TAG_AURA_MOTIVATE_WISDOM} +{1014}{TAG_AURA_OVER_THE_TOP} +{1015}{TAG_AURA_WATCHFUL_EYE} +{1016}{TAG_AURA_HARDY_SOLDIERS} +{1017}{TAG_AURA_MOTIVATE_ARDOR} +{1018}{TAG_AURA_MOTIVATE_ATTACK} +{1019}{TAG_AURA_MOTIVATE_CARE} +{1020}{TAG_AURA_MOTIVATE_URGENCY} +{1021}{TAG_AURA_RESILIENT_TROOPS} +{1022}{TAG_AURA_STEADY_HAND} +{1023}{TAG_AURA_ENERGY_SHIELD} +{1024}{TAG_AURA_POWER} +{1025}{TAG_AURA_PRESENCE} +{1026}{TAG_AURA_RESISTANCE} +{1027}{TAG_AURA_SENSES} +{1028}{TAG_AURA_TOUGHNESS} +{1029}{TAG_AURA_VIGOR} diff --git a/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab b/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab new file mode 100644 index 000000000..6b0ac4aaa --- /dev/null +++ b/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab @@ -0,0 +1,31 @@ +TAG_MARSHALS TAG_NONCORE_CLASSES Marshals Sometimes it is not enough to be a conquering warrior, a champion of all that's right, an experienced sellsword, or an elite foot soldier. Sometimes the circumstances require a solid commander of soldiers and situations. Sometimes the circumstances demand a marshal. Most Stormlords are cleric, druids, or cleric/sorcerers, although other class combinations, particulalry those including fighter or even barbarian are not unknown. Hit Die: d8 Requirements: To qualify to become a Stormlord, a character must fulfill all the following criteria. Alignment: Chaotic or Neutral Evil or Chaotic Neutral. Feats: ~Great Fortitude~[TAG_GREAT_FORT], ~Weapon Focus~[TAG_WEAPON_FOCUS](any spear or javelin). Base Save Bonus: ~Fortitude~[TAG_FORTITUDE] +4 Spells: Able to cast 3rd-level divine spells. Omitted: Feat Endurance(not in the game) Patron: Talos Special: The character must have been hit by a bolt of lightning, whether a natural bolt or one created by magic, and survived. Base Attack and Base Save Bonuses: see ~table~[TAG_CLASS_FEATURES_STORMLORD_TABLES] Class Skills: TBD Skill Points at Each Level: 2 + Int modifier Class Features: [CMD_CHILDREN] +TAG_CLASS_FEATURES_MARSHAL_WEAPON_ARMOR_PROF TAG_MARSHALS Weapon and Armor Proficiency Marshals are proficient with all simple and martial weapons, with all types of armor (heavy, medium, and light), and with shields (except tower shields). +TAG_CLASS_FEATURES_MARSHAL_AURAS TAG_MARSHALS Marshal Auras The marshal exerts an effect on allies in his vicinity. He can learn to produce different effects, or auras, over the course of his career. The marshal may project one minor aura and (starting at 2nd level) one major aura at a time. Projecting an aura is a swift action. The aura remains in effect until the marshal uses a free action to dismiss it or activates another aura of the same kind (major or minor). A marshal can have an aura active continually; thus, an aura can be in effect at the start of a combat encounter even before the marshal takes his first turn. Activating an aura involves haranguing, ordering, directing, encouraging, cajoling, or calming allies. A marshal sizes up the enemy, allies, and the terrain, then gives allies the direction that they can use to do their best. Unless otherwise noted, a marshal's aura affects all allies within 60 feet (including himself) who can hear the marshal. An ally must have an Intelligence score of 3 or higher and be able to understand the marshal's language to gain the bonus. A marshal's aura is dismissed if he is dazed, unconscious, stunned, paralyzed, or otherwise unable to be heard or understood by his allies. A marshal begins play knowing one minor aura of his choice. As his marshal level increases, he gains access to new auras, as indicated on Table 1-5: The Marshal. All bonuses granted by a marshal's auras are circumstance bonuses that do not stack with each other. Minor Auras: A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. ~Minor Aura List~[TAG_MINOR_AURA][CMD_CHILDREN_SORTED] Major Auras: Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. ~Major Aura List~[TAG_MAJOR_AURA][CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS TAG_MARSHALS Minor Auras A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. ~Minor Aura List~[TAG_MINOR_AURA][CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS TAG_MARSHALS Major Auras Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. ~Major Aura List~[TAG_MAJOR_AURA][CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL_SKILL_FOCUS TAG_MARSHALS Skill Focus(Diplomacy) Because a marshal has a way with people, he gains this feat as a bonus feat. If the marshal already has the feat, he can choose a different one. +TAG_CLASS_FEATURES_MARSHAL_ADRENALINE_BOOST TAG_MARSHALS Adrenaline Boost Starting at 4th level, you can exhort your allies to discover a reservoir of energy they didn't think they had. Once per day, as a standard action, you can grant temporary hit points equal to your marshal level to any or all of your allies within 30 feet (but not to yourself). If the ally's current hit point total is no more than half his full normal hit points, the number of temporary hit points granted to that character is doubled (to twice your marshal level). This ability only affects allies with an Intelligence score of 3 or higher who can hear you and understand your language. The temporary hit points last for up to 1 minute per marshal level. At 8th level, you can use this ability twice per day. You can use it three times per day at 12th level, four times per day at 16th level, and five times per day at 20th level. If you use this ability on a creature that is still under the effect of a previous use, the new temporary hit points overlap (do not stack with) the temporary hit points the creature had remaining. +TAG_MINOR_AURA TAG_AURA Minor Auras [CMD_CHILDREN_SORTED] +TAG_MAJOR_AURA TAG_AURA Major Auras [CMD_CHILDREN_SORTED] +TAG_AURA_ACCURATE_STRIKE TAG_AURA TAG_MINOR_AURA Accurate Strike Minor Aura Bonus on rolls made to confirm critical hits. +TAG_AURA_ART_OF_WAR TAG_AURA TAG_MINOR_AURA Art of War Minor Aura Bonus on disarm, trip, bull rush, and sunder attempts. +TAG_AURA_DEMAND_FORTITUDE TAG_AURA TAG_MINOR_AURA Demand Fortitude Minor Aura Bonus on Fortitude saves. +TAG_AURA_DETERMINED_CASTER TAG_AURA TAG_MINOR_AURA Determined Caster Minor Aura Bonus on rolls to overcome spell resistance. +TAG_AURA_FORCE_OF_WILL TAG_AURA TAG_MINOR_AURA Force of Will Minor Aura Bonus on Will saves. +TAG_AURA_MASTER_OF_OPPORTUNITY TAG_AURA TAG_MINOR_AURA Master of Opportunity Minor Aura Bonus to Armor Class against attacks of opportunity. +TAG_AURA_MASTER_OF_TACTICS TAG_AURA TAG_MINOR_AURA Master of Tactics Minor Aura Bonus on damage rolls when flanking. +TAG_AURA_MOTIVATE_CHARISMA TAG_AURA TAG_MINOR_AURA Motivate Charisma Minor Aura Bonus on Charisma checks and Charisma-based skill checks. +TAG_AURA_MOTIVATE_CONSTITUTION TAG_AURA TAG_MINOR_AURA Motivate Constitution Minor Aura Bonus on Constitution checks and Constitution-based skill checks. +TAG_AURA_MOTIVATE_DEXTERITY TAG_AURA TAG_MINOR_AURA Motivate Dexterity Minor Aura Bonus on Dexterity checks and Dexterity-based skill checks. +TAG_AURA_MOTIVATE_INTELLIGENCE TAG_AURA TAG_MINOR_AURA Motivate Intelligence Minor Aura Bonus on Intelligence checks and Intelligence-based skill checks. +TAG_AURA_MOTIVATE_STRENGTH TAG_AURA TAG_MINOR_AURA Motivate Strength Minor Aura Bonus on Strength checks and Strength-based skill checks. +TAG_AURA_MOTIVATE_WISDOM TAG_AURA TAG_MINOR_AURA Motivate Wisdom Minor Aura Bonus on Wisdom checks and Wisdom-based skill checks. +TAG_AURA_OVER_THE_TOP TAG_AURA TAG_MINOR_AURA Over the Top Minor Aura Bonus on damage rolls when charging. +TAG_AURA_WATCHFUL EYE TAG_AURA TAG_MINOR_AURA Watchful Eye Minor Aura Bonus on Reflex saves. +TAG_AURA_HARDY_SOLDIERS TAG_AURA TAG_MAJOR_AURA Hardy Soldiers Major Aura The marshal's allies gain damage reduction equal to the amount of bonus the aura provides. For example, if the marshal is 10th level, everyone affected gains DR 2/-. +TAG_AURA_MOTIVATE_ARDOR TAG_AURA TAG_MAJOR_AURA Motivate Ardor Major Aura Bonus on damage rolls. +TAG_AURA_MOTIVATE_ATTACK TAG_AURA TAG_MAJOR_AURA Motivate Attack Major Aura Bonus on melee attack rolls. +TAG_AURA_MOTIVATE_CARE TAG_AURA TAG_MAJOR_AURA Motivate Care Major Aura Bonus to Armor Class. +TAG_AURA_MOTIVATE_URGENCY TAG_AURA TAG_MAJOR_AURA Motivate Urgency Major Aura Allies' base land speed is increased by a number of feet equal to 5 x the amount of bonus the aura provides. For example, the allies of a 10th-level marshal (+2 major aura) add 10 feet to their base land speed. +TAG_AURA_RESILIENT_TROOPS TAG_AURA TAG_MAJOR_AURA Resilient Troops Major Aura Bonus on all saves. +TAG_AURA_STEADY_HAND TAG_AURA TAG_MAJOR_AURA Steady Hand Major Aura Bonus on ranged attack rolls. diff --git a/tpdatasrc/tpgamefiles/mes/stat_ext.mes b/tpdatasrc/tpgamefiles/mes/stat_ext.mes index 71e43bbf3..6755f16a2 100644 --- a/tpdatasrc/tpgamefiles/mes/stat_ext.mes +++ b/tpdatasrc/tpgamefiles/mes/stat_ext.mes @@ -65,6 +65,9 @@ // {82}{Fochlucan Lyrist} +{83}{Marshal} +{84}{Dragon Shaman} +{85}{Dragonheart Mage} {300}{Psi Points} // max {301}{Psi Points} // cur @@ -137,6 +140,9 @@ {1080}{Rkvn} {1081}{Ssnj} {1082}{Foch} +{1083}{Mrshl} +{1084}{DrgSh} +{1085}{DrgHrt} @@ -323,6 +329,15 @@ Bardic knowledge, Speak Druidic, Evasion. Spells: 1st-level arcane and divine spells. Decipher Script 7, Diplomacy 7, Gather Information 7, Perform 13, Sleight of Hand 7 } +{13076}Marshal{Sometimes it is not enough to be a conquering warrior, a champion of all that's right, an experienced sellsword, or an elite foot soldier. Sometimes the circumstances require a solid commander of soldiers and situations. Sometimes the circumstances demand a marshal.} +{13077}Dragon Shaman{Dragon Shamans TBD!} +{13078}Dragonheart Mage{Dragonheart Mage TBD! + +Requirements +Spellcasting: Ability to spontaneously cast arcance spells. +Skills: Knowledge (arcana) 8 +Feats: Draconic Heritage +} // Cannot Pick Class Short Help Goes in the range of 20007+ {20007} Arcane Archer{Arcane Archer requirements: diff --git a/tpdatasrc/tpgamefiles/rules/char_class/class083_marshal.py b/tpdatasrc/tpgamefiles/rules/char_class/class083_marshal.py new file mode 100644 index 000000000..22880b52b --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/char_class/class083_marshal.py @@ -0,0 +1,76 @@ +from toee import * +import char_class_utils +import char_editor +################################################### + +def GetConditionName(): # used by API + return "Marshal" + +def GetCategory(): + return "Miniatures Handbook Base Classes" + +def GetClassDefinitionFlags(): + return CDF_BaseClass + +def GetClassHelpTopic(): + return "TAG_MARSHALS" + +classEnum = stat_level_marshal + +################################################### + +class_feats = { + +1: (feat_armor_proficiency_light, feat_armor_proficiency_medium, feat_armor_proficiency_heavy, feat_shield_proficiency, feat_simple_weapon_proficiency, +feat_martial_weapon_proficiency_all, feat_skill_focus_diplomacy, "Marshal Minor Auras"), +2: ("Marshal Major Auras",), +4: ("Marshal Adrenaline Boost",) +} + +class_skills = (skill_bluff, skill_diplomacy, skill_handle_animal, skill_intimidate, skill_knowledge_all, skill_listen, skill_perform, skill_ride, skill_sense_motive, skill_spot, skill_wilderness_lore, skill_swim) + +def IsEnabled(): + return 1 + +def GetHitDieType(): + return 8 + +def GetSkillPtsPerLevel(): + return 4 + +def GetBabProgression(): + return base_attack_bonus_type_semi_martial + +def IsFortSaveFavored(): + return 1 + +def IsRefSaveFavored(): + return 0 + +def IsWillSaveFavored(): + return 1 + +def GetSpellListType(): + return spell_list_type_none + +def IsClassSkill(skillEnum): + return char_class_utils.IsClassSkill(class_skills, skillEnum) + +def IsClassFeat(featEnum): + return char_class_utils.IsClassFeat(class_feats, featEnum) + +def GetClassFeats(): + return class_feats + +def IsAlignmentCompatible(alignment): + return 1 + +def ObjMeetsPrereqs(obj): + return 1 + +def GetDeityClass(): + return stat_level_fighter + + ## Levelup +def LevelupSpellsFinalize( obj, classLvlNew = -1 ): + return 0 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08301_marshal_activate_minor_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08301_marshal_activate_minor_aura.py new file mode 100644 index 000000000..64ca13c10 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08301_marshal_activate_minor_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Activate Marshal Minor Aura" + +def GetActionDefinitionFlags(): + return D20ADF_MagicEffectTargeting + +def GetTargetingClassification(): + return D20TC_CastSpell + +def GetActionCostType(): + return D20ACT_Swift_Action + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08302_marshal_activate_major_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08302_marshal_activate_major_aura.py new file mode 100644 index 000000000..a7716a9bc --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08302_marshal_activate_major_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Activate Marshal Major Aura" + +def GetActionDefinitionFlags(): + return D20ADF_MagicEffectTargeting + +def GetTargetingClassification(): + return D20TC_CastSpell + +def GetActionCostType(): + return D20ACT_Swift_Action + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08303_marshal_dismiss_minor_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08303_marshal_dismiss_minor_aura.py new file mode 100644 index 000000000..7f9194f75 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08303_marshal_dismiss_minor_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Dismiss Marshal Minor Aura" + +def GetActionDefinitionFlags(): + return D20ADF_None + +def GetTargetingClassification(): + return D20TC_Target0 + +def GetActionCostType(): + return D20ACT_NULL + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08304_marshal_dismiss_major_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08304_marshal_dismiss_major_aura.py new file mode 100644 index 000000000..1cae17a29 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08304_marshal_dismiss_major_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Dismiss Marshal Major Aura" + +def GetActionDefinitionFlags(): + return D20ADF_None + +def GetTargetingClassification(): + return D20TC_Target0 + +def GetActionCostType(): + return D20ACT_NULL + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08305_marshal_adrenaline_boost.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08305_marshal_adrenaline_boost.py new file mode 100644 index 000000000..0ee4b2685 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08305_marshal_adrenaline_boost.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Marshal Adrenaline Boost" + +def GetActionDefinitionFlags(): + return D20ADF_MagicEffectTargeting + +def GetTargetingClassification(): + return D20TC_CastSpell + +def GetActionCostType(): + return D20ACT_Standard_Action + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08311_marshal_learn_minor_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08311_marshal_learn_minor_aura.py new file mode 100644 index 000000000..343f83251 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08311_marshal_learn_minor_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Marshal Learn Minor Aura" + +def GetActionDefinitionFlags(): + return D20ADF_None + +def GetTargetingClassification(): + return D20TC_Target0 + +def GetActionCostType(): + return D20ACT_NULL + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/d20_actions/action08312_marshal_learn_major_aura.py b/tpdatasrc/tpgamefiles/rules/d20_actions/action08312_marshal_learn_major_aura.py new file mode 100644 index 000000000..cc525e0ea --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/d20_actions/action08312_marshal_learn_major_aura.py @@ -0,0 +1,18 @@ +from toee import * +import tpactions + +def GetActionName(): + return "Marshal Learn Major Aura" + +def GetActionDefinitionFlags(): + return D20ADF_None + +def GetTargetingClassification(): + return D20TC_Target0 + +def GetActionCostType(): + return D20ACT_NULL + +def AddToSequence(d20action, action_seq, tb_status): + action_seq.add_action(d20action) + return AEC_OK \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura hardy soldiers.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura hardy soldiers.txt new file mode 100644 index 000000000..d8a7bd3d8 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura hardy soldiers.txt @@ -0,0 +1,5 @@ +name: Major Aura Hardy Soldiers +flags: 8 +prereqs: +description: The marshal's allies gain damage reduction equal to the amount of bonus the aura provides. For example, if the marshal is 10th level, everyone affected gains DR 2/-. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura motivate ardor.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate ardor.txt new file mode 100644 index 000000000..4dddce96f --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate ardor.txt @@ -0,0 +1,5 @@ +name: Major Aura Motivate Ardor +flags: 8 +prereqs: +description: Bonus on damage rolls. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura motivate attack.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate attack.txt new file mode 100644 index 000000000..45205fe00 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate attack.txt @@ -0,0 +1,5 @@ +name: Major Aura Motivate Attack +flags: 8 +prereqs: +description: Bonus on melee attack rolls. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura motivate care.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate care.txt new file mode 100644 index 000000000..9a75ce91f --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate care.txt @@ -0,0 +1,5 @@ +name: Major Aura Motivate Care +flags: 8 +prereqs: +description: Bonus to Armor Class. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura motivate urgency.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate urgency.txt new file mode 100644 index 000000000..6fe246081 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura motivate urgency.txt @@ -0,0 +1,5 @@ +name: Major Aura Motivate Urgency +flags: 8 +prereqs: +description: Allies' base land speed is increased by a number of feet equal to 5 x the amount of bonus the aura provides. For example, the allies of a 10th-level marshal (+2 major aura) add 10 feet to their base land speed. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura resilient troops.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura resilient troops.txt new file mode 100644 index 000000000..072a60b31 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura resilient troops.txt @@ -0,0 +1,5 @@ +name: Major Aura Resilient Troops +flags: 8 +prereqs: +description: Bonus on all saves. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/major aura steady hand.txt b/tpdatasrc/tpgamefiles/rules/feats/major aura steady hand.txt new file mode 100644 index 000000000..fe6a48f63 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/major aura steady hand.txt @@ -0,0 +1,5 @@ +name: Major Aura Steady Hand +flags: 8 +prereqs: +description: Bonus on ranged attack rolls. +prereq descr: Marshal 2 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/marshal adrenaline boost.txt b/tpdatasrc/tpgamefiles/rules/feats/marshal adrenaline boost.txt new file mode 100644 index 000000000..4bc375d5a --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/marshal adrenaline boost.txt @@ -0,0 +1,5 @@ +name: Marshal Adrenaline Boost +flags: 8 +prereqs: +description: Grant Temporary Hit Points to Allies +prereq descr: Marshal 4 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/marshal major auras.txt b/tpdatasrc/tpgamefiles/rules/feats/marshal major auras.txt new file mode 100644 index 000000000..c07e4ce3a --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/marshal major auras.txt @@ -0,0 +1,5 @@ +name: Marshal Major Auras +flags: 8 +prereqs: +description: Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/marshal minor auras.txt b/tpdatasrc/tpgamefiles/rules/feats/marshal minor auras.txt new file mode 100644 index 000000000..894424b51 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/marshal minor auras.txt @@ -0,0 +1,5 @@ +name: Marshal Minor Auras +flags: 8 +prereqs: +description: Marshal Minor Auras grant a bonus equal to the Charisma Modifier of the Marshal. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura accurate strike.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura accurate strike.txt new file mode 100644 index 000000000..385358a0b --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura accurate strike.txt @@ -0,0 +1,5 @@ +name: Minor Aura Accurate Strike +flags: 8 +prereqs: +description: Minor Aura Accurate Strike adds the Marshal's Charisma bonus (if any) to rolls made to confirm critical hits. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura art of war.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura art of war.txt new file mode 100644 index 000000000..9398b7c7d --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura art of war.txt @@ -0,0 +1,5 @@ +name: Minor Aura Art of War +flags: 8 +prereqs: +description: Bonus on disarm, trip, bull rush, and sunder attempts. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura demand fortitude.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura demand fortitude.txt new file mode 100644 index 000000000..d88ce456a --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura demand fortitude.txt @@ -0,0 +1,5 @@ +name: Minor Aura Demand Fortitude +flags: 8 +prereqs: +description: Bonus on Fortitude saves. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura determined caster.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura determined caster.txt new file mode 100644 index 000000000..292a78fa9 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura determined caster.txt @@ -0,0 +1,5 @@ +name: Minor Aura Determined Caster +flags: 8 +prereqs: +description: Bonus on rolls to overcome spell resistance. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura force of will.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura force of will.txt new file mode 100644 index 000000000..7f3e742b4 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura force of will.txt @@ -0,0 +1,5 @@ +name: Minor Aura Force of Will +flags: 8 +prereqs: +description: Bonus on Will saves. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura master of opportunity.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura master of opportunity.txt new file mode 100644 index 000000000..7d81adc7b --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura master of opportunity.txt @@ -0,0 +1,5 @@ +name: Minor Aura Master of Opportunity +flags: 8 +prereqs: +description: Bonus to Armor Class against attacks of opportunity. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura master of tactics.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura master of tactics.txt new file mode 100644 index 000000000..785814b2a --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura master of tactics.txt @@ -0,0 +1,5 @@ +name: Minor Aura Master of Tactics +flags: 8 +prereqs: +description: Lets allies add the Marshal's Charisma bonus damage rolls when flanking. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate charisma.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate charisma.txt new file mode 100644 index 000000000..d3a15cc1b --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate charisma.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Charisma +flags: 8 +prereqs: +description: Bonus on Charisma checks and Charisma-based skill checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate constitution.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate constitution.txt new file mode 100644 index 000000000..192f8fe52 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate constitution.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Constitution +flags: 8 +prereqs: +description: Bonus on Constitution checks and Constitution-based skill checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate dexterity.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate dexterity.txt new file mode 100644 index 000000000..89bc018d8 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate dexterity.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Dexterity +flags: 8 +prereqs: +description: Bonus on Dexterity checks, Dexterity-based skill checks, and initiative checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate intelligence.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate intelligence.txt new file mode 100644 index 000000000..397783336 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate intelligence.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Intelligence +flags: 8 +prereqs: +description: Bonus on Intelligence checks and Intelligence-based skill checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate strength.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate strength.txt new file mode 100644 index 000000000..1d6b8bd37 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate strength.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Strength +flags: 8 +prereqs: +description: Bonus on Strength checks and Strength-based skill checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate wisdom.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate wisdom.txt new file mode 100644 index 000000000..52461f6e9 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura motivate wisdom.txt @@ -0,0 +1,5 @@ +name: Minor Aura Motivate Wisdom +flags: 8 +prereqs: +description: Bonus on Wisdom checks and Wisdom-based skill checks. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura over the top.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura over the top.txt new file mode 100644 index 000000000..b1a0ea60d --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura over the top.txt @@ -0,0 +1,5 @@ +name: Minor Aura Over the Top +flags: 8 +prereqs: +description: Bonus on damage rolls when charging. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/feats/minor aura watchful eye.txt b/tpdatasrc/tpgamefiles/rules/feats/minor aura watchful eye.txt new file mode 100644 index 000000000..1c8787b6e --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/feats/minor aura watchful eye.txt @@ -0,0 +1,5 @@ +name: Minor Aura Watchful Eye +flags: 8 +prereqs: +description: Bonus on Reflex saves. +prereq descr: Marshal 1 \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/indicators/marshal_adrenaline_boost.txt b/tpdatasrc/tpgamefiles/rules/indicators/marshal_adrenaline_boost.txt new file mode 100644 index 000000000..321d9fd2a --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/indicators/marshal_adrenaline_boost.txt @@ -0,0 +1,5 @@ +ID_string: MARSHAL_ADRENALINE_BOOST +effect_type: 0 +texture_file: art\interface\player_conditions\buffs\spell heroism.tga +help_topic: TAG_CLASS_FEATURES_MARSHAL_ADRENALINE_BOOST +tooltip_base_text: Marshal Adrenaline Boost diff --git a/tpdatasrc/tpgamefiles/rules/indicators/marshal_major_aura.txt b/tpdatasrc/tpgamefiles/rules/indicators/marshal_major_aura.txt new file mode 100644 index 000000000..9ae797036 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/indicators/marshal_major_aura.txt @@ -0,0 +1,5 @@ +ID_string: MARSHAL_MAJOR_AURA +effect_type: 0 +texture_file: art\interface\player_conditions\buffs\spell heroism.tga +help_topic: TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS +tooltip_base_text: Marshal Major Aura diff --git a/tpdatasrc/tpgamefiles/rules/indicators/marshal_minor_aura.txt b/tpdatasrc/tpgamefiles/rules/indicators/marshal_minor_aura.txt new file mode 100644 index 000000000..8a2010d74 --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/indicators/marshal_minor_aura.txt @@ -0,0 +1,5 @@ +ID_string: MARSHAL_MINOR_AURA +effect_type: 0 +texture_file: art\interface\player_conditions\buffs\spell aid.tga +help_topic: TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS +tooltip_base_text: Marshal Minor Aura diff --git a/tpdatasrc/tpgamefiles/rules/spells/3831 - Marshal Minor Aura.txt b/tpdatasrc/tpgamefiles/rules/spells/3831 - Marshal Minor Aura.txt new file mode 100644 index 000000000..cfc17983d --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/spells/3831 - Marshal Minor Aura.txt @@ -0,0 +1,15 @@ +School: None +Casting Time: 1 action +Range: Personal +Saving Throw: None +Spell Resistance: No +Projectile: No +flags_Target: Range +flags_Target: Radius +inc_flags_Target: Self +inc_flags_Target: Other +exc_flags_Target: Dead +exc_flags_Target: Non-critter +mode_Target: Personal +radius_Target: 60 +ai_type: ai_action_defensive \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/spells/3832 - Marshal Major Aura.txt b/tpdatasrc/tpgamefiles/rules/spells/3832 - Marshal Major Aura.txt new file mode 100644 index 000000000..cfc17983d --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/spells/3832 - Marshal Major Aura.txt @@ -0,0 +1,15 @@ +School: None +Casting Time: 1 action +Range: Personal +Saving Throw: None +Spell Resistance: No +Projectile: No +flags_Target: Range +flags_Target: Radius +inc_flags_Target: Self +inc_flags_Target: Other +exc_flags_Target: Dead +exc_flags_Target: Non-critter +mode_Target: Personal +radius_Target: 60 +ai_type: ai_action_defensive \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/rules/spells/3833 - Marshal Adreanline Boost.txt b/tpdatasrc/tpgamefiles/rules/spells/3833 - Marshal Adreanline Boost.txt new file mode 100644 index 000000000..55a55725e --- /dev/null +++ b/tpdatasrc/tpgamefiles/rules/spells/3833 - Marshal Adreanline Boost.txt @@ -0,0 +1,15 @@ +School: None +Casting Time: 1 action +Range: Personal +Saving Throw: None +Spell Resistance: No +Projectile: No +flags_Target: Range +flags_Target: Radius +inc_flags_Target: Other +exc_flags_Target: Dead +exc_flags_Target: Non-critter +exc_flags_Target: Self +mode_Target: Personal +radius_Target: 30 +ai_type: ai_action_defensive \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py b/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py new file mode 100644 index 000000000..cfa7970cd --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py @@ -0,0 +1,38 @@ +from toee import * +import aura_utils + +def OnBeginSpellCast(spell): + print "Marshal Minor Aura OnBeginSpellCast" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + +def OnSpellEffect(spell): + print "Marshal Minor Aura OnSpellEffect" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + print "spell.id= ", spell.id + + ### Workaround caster level ### + if spell.caster_level < 1: + spell.caster_level = spell.caster.stat_level_get(stat_level_marshal) + + targetsToRemove = [] + spell.duration = 0 + + auraRadius = 60.0 + (spell.caster.radius / 12.0) + auraEventId = spell.caster.object_event_append(OLC_CRITTERS, auraRadius) + auraEnum = spell.caster.d20_query_with_data("PQ_Activated_Aura", spell.id, 0) + spell.caster.condition_add_with_args("sp-Marshal Minor Aura", spell.id, auraEnum, auraEventId, 0, 0) + auraName = aura_utils.getAuraName(auraEnum) + for spellTarget in spell.target_list: + if spellTarget.obj.is_friendly(spell.caster) and aura_utils.verifyTarget(spellTarget.obj): + spellTarget.obj.condition_add_with_args("Marshal Minor Aura {}".format(auraName), spell.id, auraEnum, auraEventId, 0, 0) + else: + targetsToRemove.append(spellTarget.obj) + spell.target_list.remove_list(targetsToRemove) + +def OnBeginRound(spell): + print "Marshal Minor Aura OnBeginRound" + +def OnEndSpellCast(spell): + print "Marshal Minor Aura OnEndSpellCast" \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py b/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py new file mode 100644 index 000000000..9b36d23d9 --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py @@ -0,0 +1,38 @@ +from toee import * +import aura_utils + +def OnBeginSpellCast(spell): + print "Marshal Major Aura OnBeginSpellCast" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + +def OnSpellEffect(spell): + print "Marshal Major Aura OnSpellEffect" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + print "spell.id= ", spell.id + + ### Workaround caster level ### + if spell.caster_level < 1: + spell.caster_level = spell.caster.stat_level_get(stat_level_marshal) + + targetsToRemove = [] + spell.duration = 0 + + auraRadius = 60.0 + (spell.caster.radius / 12.0) + auraEventId = spell.caster.object_event_append(OLC_CRITTERS, auraRadius) + auraEnum = spell.caster.d20_query_with_data("PQ_Activated_Aura", spell.id, 0) + spell.caster.condition_add_with_args("sp-Marshal Major Aura", spell.id, auraEnum, auraEventId, 0, 0) + auraName = aura_utils.getAuraName(auraEnum) + for spellTarget in spell.target_list: + if spellTarget.obj.is_friendly(spell.caster) and aura_utils.verifyTarget(spellTarget.obj): + spellTarget.obj.condition_add_with_args("Marshal Major Aura {}".format(auraName), spell.id, auraEnum, auraEventId, 0, 0) + else: + targetsToRemove.append(spellTarget.obj) + spell.target_list.remove_list(targetsToRemove) + +def OnBeginRound(spell): + print "Marshal Major Aura OnBeginRound" + +def OnEndSpellCast(spell): + print "Marshal Major Aura OnEndSpellCast" \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/scr/Spell3833 - Marshal Adrenaline Boost.py b/tpdatasrc/tpgamefiles/scr/Spell3833 - Marshal Adrenaline Boost.py new file mode 100644 index 000000000..df8e8b582 --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/Spell3833 - Marshal Adrenaline Boost.py @@ -0,0 +1,34 @@ +from toee import * +from aura_utils import verifyTarget + +def OnBeginSpellCast(spell): + print "Marshal Adrenaline Boost OnBeginSpellCast" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + +def OnSpellEffect(spell): + print "Marshal Adrenaline Boost OnSpellEffect" + print "spell.target_list=", spell.target_list + print "spell.caster=", spell.caster, " caster.level= ", spell.caster_level + + ### Workaround caster level ### + if spell.caster_level < 1: + spell.caster_level = spell.caster.stat_level_get(stat_level_marshal) + + targetsToRemove = [] + spell.duration = 10 * spell.caster_level + + for spellTarget in spell.target_list: + if spellTarget.obj.is_friendly(spell.caster) and verifyTarget(spellTarget.obj): + game.particles('sp-Cure Minor Wounds', spellTarget.obj) + spellTarget.obj.float_text_line("Adrenaline Boost") + spellTarget.obj.condition_add_with_args("sp-Marshal Adrenaline Boost", spell.id, spell.duration, 0, 0) + else: + targetsToRemove.append(spellTarget.obj) + spell.target_list.remove_list(targetsToRemove) + +def OnBeginRound(spell): + print "Marshal Adrenaline Boost OnBeginRound" + +def OnEndSpellCast(spell): + print "Marshal Adrenaline Boost OnEndSpellCast" \ No newline at end of file diff --git a/tpdatasrc/tpgamefiles/scr/aura_utils.py b/tpdatasrc/tpgamefiles/scr/aura_utils.py new file mode 100644 index 000000000..33be5c55a --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/aura_utils.py @@ -0,0 +1,396 @@ +from templeplus.pymod import PythonModifier +from toee import * +import tpdp +from utilities import * +import tpactions + +########## Python Action Enums ########## +activateMinorAuraEnum = 8301 +activateMajorAuraEnum = 8302 +dismissMinorAuraEnum = 8303 +dismissMajorAuraEnum = 8304 +activateDraconicAuraEnum = 8451 +activateDoubleDraconicAuraEnum = 8452 +dismissDraconicAuraEnum = 8453 +dismissDoubleDraconicAuraEnum = 8454 +######################################### + +def getMinorAuraList(): + minor_auras = [ + aura_accurate_strike, + aura_art_of_war, + aura_Demand_fortitude, + aura_Determined_caster, + aura_force_of_will, + aura_master_of_opportunity, + aura_master_of_tactics, + aura_motivate_charisma, + aura_motivate_constitution, + aura_motivate_dexterity, + aura_motivate_intelligence, + aura_motivate_strength, + aura_motivate_wisdom, + aura_over_the_top, + aura_watchful_eye + ] + return minor_auras + +def getMajorAuraList(): + major_auras = [ + aura_hardy_soldiers, + aura_motivate_ardor, + aura_motivate_attack, + aura_motivate_care, + aura_motivate_urgency, + aura_resilient_troops, + aura_steady_hand + ] + return major_auras + +def getDraconicAuras(): + draconic_auras = [ + aura_energy_shield, + aura_power, + aura_presence, + aura_resistance, + aura_senses, + aura_toughness, + aura_vigor, + aura_break_spell_resistance, + aura_energy, + aura_insight, + aura_resolve, + aura_stamina, + aura_swiftness + ] + return draconic_auras + +def getAuraName(auraEnum): + return game.get_mesline('mes\\auras.mes', auraEnum) + +def getAuraTag(auraEnum): + return game.get_mesline('mes\\auras.mes', (auraEnum + 1000)) + +def getLearnedAuras(attachee, auraType): + learnedAuras = [] + if auraType == aura_type_minor: + auraList = getMinorAuraList() + auraTypeString = "Minor Aura" + elif auraType == aura_type_major: + auraList = getMajorAuraList() + auraTypeString = "Major Aura" + elif auraType == aura_type_draconic or auraType == aura_type_double_draconic: + auraList = getDraconicAuras() + auraTypeString = "Draconic Aura" + for auraEnum in auraList: + auraName = getAuraName(auraEnum) + if attachee.has_feat("{} {}".format(auraTypeString, auraName)): + learnedAuras.append(auraEnum) + return learnedAuras + +def getMinorAuraBonus(auraCaster): + #auraBonus can't be lower than 0 + charismaValue = auraCaster.stat_level_get(stat_charisma) + auraBonus = int((charismaValue -10)/2) + return max(auraBonus, 0) + +def getMajorAuraBonus(auraCasterLevel): + if auraCasterLevel < 7: + return 1 + elif auraCasterLevel < 14: + return 2 + elif auraCasterLevel < 20: + return 3 + return 4 + +def getDraconicAuraBonus(auraCaster): + sorcLevel = auraCaster.stat_level_get(stat_level_sorcerer) + dragonShamanLevel = auraCaster.stat_level_get(stat_level_dragon_shaman) + if sorcLevel: + charLevel = auraCaster.stat_level_get(stat_level) + if charLevel < 7: + sorcBonus = 1 + elif charLevel < 14: + sorcBonus = 2 + elif charLevel < 20: + sorcBonus = 3 + else: + sorcBonus = 4 + else: + sorcBonus = 0 + if dragonShamanLevel: + dragonShamanBonus = 1 + (dragonShamanLevel / 5) + else: + dragonShamanBonus = 0 + return max(sorcBonus, dragonShamanBonus) + +def getAuraTypeString(auraType): + if auraType == aura_type_minor: + return "Marshal Minor Aura" + elif auraType == aura_type_major: + return "Marshal Major Aura" + elif auraType == aura_type_draconic or auraType == aura_type_double_draconic: + return "Draconic Aura" + return 0 + +def auraAddBonusList(attachee, args, evt_obj): + auraType = args.get_param(0) + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = getAuraName(auraEnum) + auraTag = getAuraTag(auraEnum) + auraTypeString = getAuraTypeString(auraType) + if auraType == aura_type_minor: + auraBonus = getMinorAuraBonus(auraSpellPacket.caster) + auraBonusType = 21 #ID 21 = Circumstance Bonus + elif auraType == aura_type_major: + auraBonus = getMajorAuraBonus(auraSpellPacket.caster) + auraBonusType = 21 #ID 21 = Circumstance Bonus + elif auraType == aura_type_draconic: + auraBonus = getDraconicAuraBonus(auraSpellPacket.caster) + auraBonusType = 190 # new ID for Draconic Auras + evt_obj.bonus_list.add(auraBonus, auraBonusType, "~{}: {}~[{}]".format(auraTypeString, auraName, auraTag)) + return 0 + +def getTargetsInAura(auraSpellPacket): + targetCount = auraSpellPacket.target_count + targetList = [] + counter = 0 + for counter in range(0, targetCount): + target = auraSpellPacket.get_target(counter) + targetList.append(target) + counter += 1 + return targetList + +# Marshal Targets are not automatically affected and need to be checked +def verifyTarget(auraTarget): + if auraTarget.stat_level_get(stat_intelligence) < 3: + return False + elif auraTarget.d20_query(Q_Critter_Is_Deafened): + return False + return True + +##### class AuraModifier ##### +def onLeaveAura(attachee, args, evt_obj): + auraSpellPacket = tpdp.SpellPacket(args.get_arg(0)) + auraEventId = args.get_arg(2) + if auraEventId != evt_obj.evt_id: + return 0 + auraSpellPacket.remove_target(attachee) + #args.condition_remove() + args.remove_spell_mod() + return 0 + +def auraEndSignal(attachee, args, evt_obj): + signalId = evt_obj.data1 + spellId = args.get_arg(0) + if signalId == spellId: + #args.condition_remove() + args.remove_spell_mod() + return 0 + +def auraTooltip(attachee, args, evt_obj): + auraEnum = args.get_arg(1) + auraName = getAuraName(auraEnum) + if auraEnum in getMinorAuraList(): + evt_obj.append("Minor Aura: {}".format(auraName)) + elif auraEnum in getMajorAuraList(): + evt_obj.append("Major Aura: {}".format(auraName)) + else: + evt_obj.append("Draconic Aura: {}".format(auraName)) + return 0 + +def auraEffectTooltip(attachee, args, evt_obj): + #ToDo: Customize EffectToolTip icons and text + auraEnum = args.get_arg(1) + auraName = getAuraName(auraEnum) + if auraEnum in getMinorAuraList(): + evt_obj.append(tpdp.hash("MARSHAL_MINOR_AURA"), -2, " ({})".format(auraName)) + elif auraEnum in getMajorAuraList(): + evt_obj.append(tpdp.hash("MARSHAL_MAJOR_AURA"), -2, " ({})".format(auraName)) + else: + evt_obj.append(tpdp.hash("DRACONIC_AURA"), -2, " ({})".format(auraName)) + return 0 + +def auraAddPreActions(attachee, args, evt_obj): + #ToDo: Add Deafen and inteligence drop remove + return 0 + +class AuraModifier(PythonModifier): + # AuraModifier have 5 arguments: + # 0: auraSpellId, 1: auraEnum, 2: auraEventId, 3 + 4: empty + def __init__(self, name): + PythonModifier.__init__(self, name, 5, True) + self.AddHook(ET_OnObjectEvent, EK_OnLeaveAoE, onLeaveAura, ()) + #self.AddHook(ET_OnD20PythonSignal, "PS_Aura_End", auraEndSignal, ()) + self.AddHook(ET_OnD20Signal, EK_S_Spell_End, auraEndSignal, ()) + self.AddHook(ET_OnGetTooltip, EK_NONE, auraTooltip, ()) + self.AddHook(ET_OnGetEffectTooltip, EK_NONE, auraEffectTooltip, ()) + self.AddSpellTeleportPrepareStandard() + self.AddSpellTeleportReconnectStandard() + + def marshalAuraAddPreActions(self): + self.AddHook(ET_OnConditionAddPre, EK_NONE, auraAddPreActions, ()) + + def addSkillBonus(self, auraType, *args): + for skill in args: + eventKey = skill + 20 + self.AddHook(ET_OnGetSkillLevel, eventKey, auraAddBonusList, (auraType,)) + + +##### class auraRadialModifier ##### +##### used by Marshal Class for both Minor and Majro Aura ##### +##### and by the Draconic Aura Feats ##### +def getAuraSpellEnum(auraType): + if auraType == aura_type_minor: + return spell_marshal_minor_aura + elif auraType == aura_type_major: + return spell_marshal_major_aura + elif auraType == aura_type_draconic: + return spell_draconic_aura + elif auraType == aura_type_double_draconic: + return spell_double_draconic_aura + return 0 + +def getPythonEnum(auraType): + if auraType == aura_type_minor: + return activateMinorAuraEnum + elif auraType == aura_type_major: + return activateMajorAuraEnum + elif auraType == aura_type_draconic: + return activateDraconicAuraEnum + elif auraType == aura_type_double_draconic: + return activateDoubleDraconicAuraEnum + return 0 + +def radialAura(attachee, args, evt_obj): + #auraType = args.get_param(0) + auraType = args.get_arg(1) + learnedAuras = getLearnedAuras(attachee, auraType) + spellClass = stat_level_sorcerer if auraType == aura_type_draconic else stat_level_marshal + if not learnedAuras: + return 0 + #Add the top level menu + auraTypeString = getAuraTypeString(auraType) + pythonEnum = getPythonEnum(auraType) + pythonDismissEnum = pythonEnum + 2 + auraSpellEnum = getAuraSpellEnum(auraType) + radialAuraTop = tpdp.RadialMenuEntryParent(auraTypeString) + radialAuraTopId = radialAuraTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + #Add aura childs + for auraEnum in learnedAuras: + auraName = getAuraName(auraEnum) + auraTag = getAuraTag(auraEnum) + auraRadialId = tpdp.RadialMenuEntryPythonAction(auraName, D20A_PYTHON_ACTION, pythonEnum, auraEnum, auraTag) + spellData = tpdp.D20SpellData(auraSpellEnum) + casterLevel = attachee.stat_level_get(spellClass) + spellData.set_spell_class(spellClass) + spellData.set_spell_level(casterLevel) + auraRadialId.set_spell_data(spellData) + auraRadialId.add_as_child(attachee, radialAuraTopId) + #Add Dismiss Radial + activeAura = args.get_arg(3) + if activeAura: + activeAuraName = getAuraName(activeAura) + dismissAuraId = tpdp.RadialMenuEntryPythonAction("Dismiss {}".format(activeAuraName), D20A_PYTHON_ACTION, pythonDismissEnum, activeAura, auraTag) + dismissAuraId.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + return 0 + +def activateAura(attachee, args, evt_obj): + # check if toggle needs to deactivate an already active Aura first + oldSpellId = args.get_arg(2) + if oldSpellId: + attachee.d20_send_signal(S_Spell_End,oldSpellId) + args.set_arg(2, 0) + args.set_arg(3, 0) + # activate new Aura + auraEnum = evt_obj.d20a.data1 + currentSequence = tpactions.get_cur_seq() + spellPacket = currentSequence.spell_packet + newSpellId = tpactions.get_new_spell_id() + args.set_arg(2, newSpellId) + args.set_arg(3, auraEnum) + tpactions.register_spell_cast(spellPacket, newSpellId) + tpactions.trigger_spell_effect(newSpellId) + auraName = getAuraName(auraEnum) + auraTag = getAuraTag(auraEnum) + attachee.float_text_line("{} activated".format(auraName)) + game.create_history_freeform("{} activates ~{}~[{}]\n\n".format(attachee.description, auraName, auraTag)) + return 0 + +def queryActivatedAura(attachee, args, evt_obj): + spellId = args.get_arg(2) + signalId = evt_obj.data1 + if spellId == signalId: + evt_obj.return_val = args.get_arg(3) + return 0 + +def dismissAura(attachee, args, evt_obj): + if args.get_arg(3): + attachee.d20_send_signal(S_Spell_End, args.get_arg(2)) + args.set_arg(2, 0) + args.set_arg(3, 0) + return 0 + +def checkDeactivateMarshal(attachee, args, evt_obj): + #Deactivate Aura if specific conditions are added + #panicked & fascinated missing + #Basically all conditions that prohibit communication will end the auras + if (evt_obj.is_modifier("Unconscious") + or evt_obj.is_modifier("Dead") + or evt_obj.is_modifier("sp-Silence") + or evt_obj.is_modifier("Held") + or evt_obj.is_modifier("sp-Daze") + or evt_obj.is_modifier("Nauseated Condition") + or evt_obj.is_modifier("Paralyzed") + or evt_obj.is_modifier("Stunned")): + if args.get_arg(3): + attachee.d20_send_signal(S_Spell_End, args.get_arg(2)) + args.set_arg(2, 0) + args.set_arg(3, 0) + return 0 + +def checkDeactivateDraconic(attachee, args, evt_obj): + #Deactivate Aura if specific conditions are added + #panicked & fascinated missing + #Basically all conditions that prohibit communication will end the auras + if (evt_obj.is_modifier("Unconscious") + or evt_obj.is_modifier("Dead")): + if args.get_arg(3): + attachee.d20_send_signal(S_Spell_End, args.get_arg(2)) + args.set_arg(2, 0) + args.set_arg(3, 0) + return 0 + +class AuraRadialModifier(PythonModifier): + # AuraRadialModifier have 5 arguments: + # 0: featEnum, 1: auraType, 2: spellId, 3: activeAuraEnum 4: empty + # use MapToFeat("[Name]", feat_cond_arg2 = aura_type_minor/major/draconic) + # to set arg1 to the aura the modifier should handle + def __init__(self, name): + PythonModifier.__init__(self, name, 5, True) + self.AddHook(ET_OnBuildRadialMenuEntry, EK_NONE, radialAura, ()) + self.AddHook(ET_OnD20PythonQuery, "PQ_Activated_Aura", queryActivatedAura, ()) + self.AddHook(ET_OnNewDay, EK_NEWDAY_REST, dismissAura, ()) + + # Add aura specific fuction to the Modifier + def marshalMinorAuraActions(self): + self.AddHook(ET_OnConditionAddPre, EK_NONE, checkDeactivateMarshal, ()) + self.AddHook(ET_OnD20PythonActionPerform, activateMinorAuraEnum, activateAura, ()) + self.AddHook(ET_OnD20PythonActionPerform, dismissMinorAuraEnum, dismissAura, ()) + + def marshalMajorAuraActions(self): + self.AddHook(ET_OnConditionAddPre, EK_NONE, checkDeactivateMarshal, ()) + self.AddHook(ET_OnD20PythonActionPerform, activateMajorAuraEnum, activateAura, ()) + self.AddHook(ET_OnD20PythonActionPerform, dismissMajorAuraEnum, dismissAura, ()) + + def draconicAuraActions(self): + self.AddHook(ET_OnConditionAddPre, EK_NONE, checkDeactivateDraconic, ()) + self.AddHook(ET_OnD20PythonActionPerform, activateDraconicAuraEnum, activateAura, ()) + self.AddHook(ET_OnD20PythonActionPerform, dismissDraconicAuraEnum, dismissAura, ()) + + def doubleDraconicAuraActions(self): + self.AddHook(ET_OnConditionAddPre, EK_NONE, checkDeactivateDraconic, ()) + self.AddHook(ET_OnD20PythonActionPerform, activateDoubleDraconicAuraEnum, activateAura, ()) + self.AddHook(ET_OnD20PythonActionPerform, dismissDoubleDraconicAuraEnum, dismissAura, ()) diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/marshal.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/marshal.py new file mode 100644 index 000000000..73d893606 --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/marshal.py @@ -0,0 +1,226 @@ +from templeplus.pymod import PythonModifier +from toee import * +import tpdp +import char_class_utils +import aura_utils +import tpactions + +################################################### + +def GetConditionName(): + return "Marshal" + +print "Registering {}".format(GetConditionName()) + +classEnum = stat_level_marshal +classSpecModule = __import__('class083_marshal') + +################################################### + +########## Python Action ID's ########## +adrenalineBoostEnum = 8305 +learnMinorAuraEnum = 8311 #workaround +learnMajorAuraEnum = 8312 #workaround +######################################## + + +#### standard callbacks - BAB and Save values +def OnGetToHitBonusBase(attachee, args, evt_obj): + classLvl = attachee.stat_level_get(classEnum) + babvalue = game.get_bab_for_class(classEnum, classLvl) + evt_obj.bonus_list.add(babvalue, 0, 137) # untyped, description: "Class" + return 0 + +def OnGetSaveThrowFort(attachee, args, evt_obj): + value = char_class_utils.SavingThrowLevel(classEnum, attachee, D20_Save_Fortitude) + evt_obj.bonus_list.add(value, 0, 137) + return 0 + +def OnGetSaveThrowReflex(attachee, args, evt_obj): + value = char_class_utils.SavingThrowLevel(classEnum, attachee, D20_Save_Reflex) + evt_obj.bonus_list.add(value, 0, 137) + return 0 + +def OnGetSaveThrowWill(attachee, args, evt_obj): + value = char_class_utils.SavingThrowLevel(classEnum, attachee, D20_Save_Will) + evt_obj.bonus_list.add(value, 0, 137) + return 0 + +classSpecObj = PythonModifier(GetConditionName(), 4) #numberMinorAurasLearned, numberMajorAurasLearned, empty, empty +classSpecObj.AddHook(ET_OnToHitBonusBase, EK_NONE, OnGetToHitBonusBase, ()) +classSpecObj.AddHook(ET_OnSaveThrowLevel, EK_SAVE_FORTITUDE, OnGetSaveThrowFort, ()) +classSpecObj.AddHook(ET_OnSaveThrowLevel, EK_SAVE_REFLEX, OnGetSaveThrowReflex, ()) +classSpecObj.AddHook(ET_OnSaveThrowLevel, EK_SAVE_WILL, OnGetSaveThrowWill, ()) + +#### Marshal Class Mechanics + +### Learn Auras +##### Workaround until Class Features are implemented ##### +## Can't be done via Bonus Feats, as there is no flag to mark feats as bonus feat only + +# Minor Auras Learn +def newMinorAuraAvailible(classLevel, numberAurasLearned): + dictKnownAuras = { + 1: 1, + 2: 1, + 3: 2, + 4: 2, + 5: 3, + 6: 3, + 7: 4, + 8: 4, + 9: 5, + 10: 5, + 11: 5, + 12: 6, + 13: 6, + 14: 6, + 15: 7, + 16: 7, + 17: 7, + 18: 7, + 19: 7, + 20: 8 + } + return True if dictKnownAuras[classLevel] > numberAurasLearned else False + +def radialLearnMinorAura(attachee, args, evt_obj): + print "radialLearnMinorAura Hook" + classLevel = attachee.stat_level_get(classEnum) + minorAuras = aura_utils.getMinorAuraList() + learnedAuras = aura_utils.getLearnedAuras(attachee, aura_type_minor) + numberAurasLearned = args.get_arg(0) + if newMinorAuraAvailible(classLevel, numberAurasLearned): + radialLearnTop = tpdp.RadialMenuEntryParent("Learn New Minor Aura") + radialLearnTopId = radialLearnTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + for auraEnum in minorAuras: + if not auraEnum in learnedAuras: + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + radialLearnAuraId = tpdp.RadialMenuEntryPythonAction(auraName, D20A_PYTHON_ACTION, learnMinorAuraEnum, auraEnum, auraTag) + radialLearnAuraId.add_as_child(attachee, radialLearnTopId) + return 0 + +def addNewMinorAura(attachee, args, evt_obj): + auraEnum = evt_obj.d20a.data1 + auraName = aura_utils.getAuraName(auraEnum) + attachee.feat_add("Minor Aura {}".format(auraName)) + attachee.float_text_line("{} learned".format(auraName)) + aurasLearned = args.get_arg(0) + aurasLearned +=1 + args.set_arg(0, aurasLearned) + return 0 + +classSpecObj.AddHook(ET_OnBuildRadialMenuEntry , EK_NONE, radialLearnMinorAura, ()) +classSpecObj.AddHook(ET_OnD20PythonActionPerform, learnMinorAuraEnum, addNewMinorAura, ()) + +# Major Auras Learn +def newMajorAuraAvailible(classLevel, numberAurasLearned): + dictKnownAuras = { + 1: 0, + 2: 1, + 3: 1, + 4: 1, + 5: 2, + 6: 2, + 7: 2, + 8: 2, + 9: 3, + 10: 3, + 11: 3, + 12: 3, + 13: 3, + 14: 4, + 15: 4, + 16: 4, + 17: 4, + 18: 4, + 19: 4, + 20: 5 + } + return True if dictKnownAuras[classLevel] > numberAurasLearned else False + +def radialLearnMajorAura(attachee, args, evt_obj): + classLevel = attachee.stat_level_get(classEnum) + majorAuras = aura_utils.getMajorAuraList() + learnedAuras = aura_utils.getLearnedAuras(attachee, aura_type_major) + numberAurasLearned = args.get_arg(1) + if newMajorAuraAvailible(classLevel, numberAurasLearned): + radialLearnTop = tpdp.RadialMenuEntryParent("Learn New Major Aura") + radialLearnTopId = radialLearnTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + for auraEnum in majorAuras: + if not auraEnum in learnedAuras: + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + radialLearnAuraId = tpdp.RadialMenuEntryPythonAction(auraName, D20A_PYTHON_ACTION, learnMajorAuraEnum, auraEnum, auraTag) + radialLearnAuraId.add_as_child(attachee, radialLearnTopId) + return 0 + +def addNewMajorAura(attachee, args, evt_obj): + auraEnum = evt_obj.d20a.data1 + auraName = aura_utils.getAuraName(auraEnum) + attachee.feat_add("Major Aura {}".format(auraName)) + attachee.float_text_line("{} learned".format(auraName)) + aurasLearned = args.get_arg(1) + aurasLearned +=1 + args.set_arg(1, aurasLearned) + return 0 + +classSpecObj.AddHook(ET_OnBuildRadialMenuEntry , EK_NONE, radialLearnMajorAura, ()) +classSpecObj.AddHook(ET_OnD20PythonActionPerform, learnMajorAuraEnum, addNewMajorAura, ()) + +##### Workaround Learn Auras end ##### + +## Auras +marshalMinorAura = aura_utils.AuraRadialModifier("Marshal Minor Aura Feat") +marshalMinorAura.MapToFeat("Marshal Minor Auras", feat_cond_arg2 = aura_type_minor) +marshalMinorAura.marshalMinorAuraActions() + +marshalMajorAura = aura_utils.AuraRadialModifier("Marshal Major Aura Feat") +marshalMajorAura.MapToFeat("Marshal Major Auras", feat_cond_arg2 = aura_type_major) +marshalMajorAura.marshalMajorAuraActions() + +## Adrenaline Boost Alternate Class Feature +def adrenalineBoostRadial(attachee, args, evt_obj): + #Add the top level menu + radialAdrenalineId = tpdp.RadialMenuEntryPythonAction("Adrenaline Boost ({}/{})".format(args.get_arg(1), args.get_arg(2)), D20A_PYTHON_ACTION, adrenalineBoostEnum, 0, "TAG_CLASS_FEATURES_MARSHAL_ADRENALINE_BOOST") + spellData = tpdp.D20SpellData(spell_marshal_adrenaline_boost) + casterLevel = attachee.stat_level_get(classEnum) + spellData.set_spell_class(classEnum) + spellData.set_spell_level(casterLevel) + radialAdrenalineId.set_spell_data(spellData) + radialAdrenalineId.add_as_child(attachee, tpdp.RadialMenuStandardNode.Class) + return 0 + +def resetChargesToMax(attachee, args, evt_obj): + classLevel = attachee.stat_level_get(classEnum) + maxUses = classLevel/4 + args.set_arg(1, maxUses) + args.set_arg(2, maxUses) + return 0 + +def checkChargesAdrenalineBoost(attachee, args, evt_obj): + chargesLeft = args.get_arg(1) + if chargesLeft < 1: + evt_obj.return_val = AEC_OUT_OF_CHARGES + #ToDo: can't boost while silcened + return 0 + +def activateAdrenalineBoost(attachee, args, evt_obj): + currentSequence = tpactions.get_cur_seq() + spellPacket = currentSequence.spell_packet + newSpellId = tpactions.get_new_spell_id() + tpactions.register_spell_cast(spellPacket, newSpellId) + tpactions.trigger_spell_effect(newSpellId) + chargesLeft = args.get_arg(1) + chargesLeft -= 1 + args.set_arg(1, chargesLeft) + return 0 + +adrenalineBoost = PythonModifier("Adrenaline Boost Feat", 4) #featEnum, chargesLeft, maxUses, empty +adrenalineBoost.MapToFeat("Marshal Adrenaline Boost") +adrenalineBoost.AddHook(ET_OnBuildRadialMenuEntry , EK_NONE, adrenalineBoostRadial, ()) +adrenalineBoost.AddHook(ET_OnNewDay, EK_NEWDAY_REST, resetChargesToMax, ()) +adrenalineBoost.AddHook(ET_OnConditionAdd, EK_NONE, resetChargesToMax, ()) +adrenalineBoost.AddHook(ET_OnD20PythonActionCheck, adrenalineBoostEnum, checkChargesAdrenalineBoost, ()) +adrenalineBoost.AddHook(ET_OnD20PythonActionPerform, adrenalineBoostEnum, activateAdrenalineBoost, ()) diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_adrenaline_boost.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_adrenaline_boost.py new file mode 100644 index 000000000..f22b1509d --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_adrenaline_boost.py @@ -0,0 +1,46 @@ +from templeplus.pymod import PythonModifier +from toee import * +import tpdp +from utilities import * +import spell_utils +print "Registering sp-Marshal Adrenaline Boost" + +def onConditionPreActions(attachee, args, evt_obj): + #Adrenaline Boost does not stack with itself. + #If used again while old Boost is active + #tempHP will be reset; this is done by removing + #the old condition and apply the newer one + if evt_obj.is_modifier("sp-Marshal Adrenaline Boost"): + evt_obj.return_val = 1 + args.condition_remove() + return 0 + +def addTempHP(attachee, args, evt_obj): + spellId = args.get_arg(0) + spellPacket = tpdp.SpellPacket(spellId) + duration = args.get_arg(1) + currentHp = attachee.stat_level_get(stat_hp_current) + maxHp = attachee.stat_level_get(stat_hp_max) + tempHp = spellPacket.caster_level + #Adrenaline Boost TempHP are doubled if target is at or below half HP + if (currentHp * 2) <= maxHp: + tempHp *= 2 + attachee.condition_add_with_args('Temporary_Hit_Points', spellId, duration, tempHp) + return 0 + +def removeTempHp(attachee, args, evt_obj): + attachee.d20_send_signal(S_Spell_End, args.get_arg(0)) + return 0 + +marshalAdrenalineBoostSpell = PythonModifier("sp-Marshal Adrenaline Boost", 4, False) # spell_id, duration, empty, empty +marshalAdrenalineBoostSpell.AddHook(ET_OnConditionAddPre, EK_NONE, onConditionPreActions,()) +marshalAdrenalineBoostSpell.AddHook(ET_OnConditionAdd, EK_NONE, addTempHP,()) +marshalAdrenalineBoostSpell.AddHook(ET_OnConditionRemove, EK_NONE, removeTempHp, ()) +marshalAdrenalineBoostSpell.AddHook(ET_OnD20Signal, EK_S_Temporary_Hit_Points_Removed, spell_utils.removeTempHp, ()) +marshalAdrenalineBoostSpell.AddHook(ET_OnGetTooltip, EK_NONE, spell_utils.spellTooltip, ()) +marshalAdrenalineBoostSpell.AddHook(ET_OnGetEffectTooltip, EK_NONE, spell_utils.spellEffectTooltip, ()) +marshalAdrenalineBoostSpell.AddHook(ET_OnD20Signal, EK_S_Killed, spell_utils.spellKilled, ()) +marshalAdrenalineBoostSpell.AddSpellTeleportPrepareStandard() +marshalAdrenalineBoostSpell.AddSpellTeleportReconnectStandard() +marshalAdrenalineBoostSpell.AddSpellCountdownStandardHook() + diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py new file mode 100644 index 000000000..dbf326056 --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py @@ -0,0 +1,134 @@ +from templeplus.pymod import PythonModifier +from toee import * +import tpdp +import aura_utils + +print "Registering Marshal Major Auras" + +def onEnterMarshalMajorAura(attachee, args, evt_obj): + print "onEnterMarshalMajorAura Hook" + auraEventId = args.get_arg(2) + if auraEventId != evt_obj.evt_id: + return 0 + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraTarget = evt_obj.target + if auraTarget.is_friendly(attachee) and aura_utils.verifyTarget(auraTarget): + if auraSpellPacket.add_target(auraTarget, 0): + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTarget.condition_add_with_args("Marshal Major Aura {}".format(auraName), auraSpellId, auraEnum, auraEventId, 0, 0) + return 0 + +def onConditionRemoveActions(attachee, args, evt_obj): + spellId = args.get_arg(0) + spellPacket = tpdp.SpellPacket(spellId) + spellPacket.remove_target(attachee) + targetList = aura_utils.getTargetsInAura(spellPacket) + for target in targetList: + if target == OBJ_HANDLE_NULL: + break + target.d20_send_signal(S_Spell_End, spellId, 0) + spellPacket.remove_target(target) + return 0 + +marshalMajorAuraSpell = PythonModifier("sp-Marshal Major Aura", 5) #spell_id, activeAura, auraEventId, empty, empty +marshalMajorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMajorAura, ()) +marshalMajorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) +marshalMajorAuraSpell.AddAoESpellEndStandardHook() + +### All Major Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### +### All Auras have 5 args: auraSpellId, auraEnum, auraEventId, empty, empty (may get reduced to 4 in final version) + +### Marshal Major Aura Hardy Soldiers ### +def auraBonusHardySoldiers(attachee, args, evt_obj): + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraBonus = aura_utils.getMajorAuraBonus(auraSpellPacket.caster_level) + damageMesId = 126 + evt_obj.damage_packet.add_physical_damage_res(auraBonus, D20DAP_UNSPECIFIED, damageMesId) + return 0 + +majorAuraHardySoldiers = aura_utils.AuraModifier("Marshal Major Aura Hardy Soldiers") +majorAuraHardySoldiers.AddHook(ET_OnTakingDamage2, EK_NONE, auraBonusHardySoldiers, ()) +majorAuraHardySoldiers.marshalAuraAddPreActions() + + +### Marshal Major Aura Motivate Ardor ### +def auraBonusMotivateArdor(attachee, args, evt_obj): + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMajorAuraBonus(auraSpellPacket.caster_level) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.damage_packet.bonus_list.add(auraBonus, auraBonusType, "~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +majorAuraMotivateArdor = aura_utils.AuraModifier("Marshal Major Aura Motivate Ardor") +majorAuraMotivateArdor.AddHook(ET_OnDealingDamage2, EK_NONE, auraBonusMotivateArdor, ()) +majorAuraMotivateArdor.marshalAuraAddPreActions() + + +### Marshal Major Aura Motivate Attack ### +def auraBonusMotivateAttack(attachee, args, evt_obj): + if not evt_obj.attack_packet.get_flags() & D20CAF_RANGED: + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMajorAuraBonus(auraSpellPacket.caster_level) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.bonus_list.add(auraBonus, auraBonusType, "~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +majorAuraMotivateAttack = aura_utils.AuraModifier("Marshal Major Aura Motivate Attack") +majorAuraMotivateAttack.AddHook(ET_OnToHitBonus2, EK_NONE, auraBonusMotivateAttack, ()) +majorAuraMotivateAttack.marshalAuraAddPreActions() + +### Marshal Major Aura Motivate Care ### +majorAuraMotivateCare = aura_utils.AuraModifier("Marshal Major Aura Motivate Care") +majorAuraMotivateCare.AddHook(ET_OnGetAC, EK_NONE, aura_utils.auraAddBonusList, (aura_type_major,)) +majorAuraMotivateCare.marshalAuraAddPreActions() + +### Marshal Major Aura Motivate Urgency ### +def auraBonusMotivateUrgency(attachee, args, evt_obj): + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMajorAuraBonus(auraSpellPacket.caster_level) + auraBonusType = 21 #ID 21 = Circumstance Bonus + auraBonus *= 5 + evt_obj.bonus_list.add(auraBonus, auraBonusType, "~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +majorAuraMotivateUrgency = aura_utils.AuraModifier("Major Aura Motivate Urgency") +majorAuraMotivateUrgency.AddHook(ET_OnGetMoveSpeedBase, EK_NONE, auraBonusMotivateUrgency, ()) +majorAuraMotivateUrgency.marshalAuraAddPreActions() + + +### Marshal Major Aura Resilient Troops" ### +majorAuraResilientTroops = aura_utils.AuraModifier("Marshal Major Aura Resilient Troops") +majorAuraResilientTroops.AddHook(ET_OnSaveThrowLevel, EK_NONE, aura_utils.auraAddBonusList, (aura_type_major,)) +majorAuraResilientTroops.marshalAuraAddPreActions() + +### Marshal Major Aura Steady Hand ### +def auraBonusSteadyHand(attachee, args, evt_obj): + if evt_obj.attack_packet.get_flags() & D20CAF_RANGED: + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMajorAuraBonus(auraSpellPacket.caster_level) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.bonus_list.add(auraBonus, auraBonusType, "~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +majorAuraSteadyHand = aura_utils.AuraModifier("Marshal Major Aura Steady Hand") +majorAuraSteadyHand.AddHook(ET_OnToHitBonus2, EK_NONE, auraBonusSteadyHand, ()) +majorAuraSteadyHand.marshalAuraAddPreActions() diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py new file mode 100644 index 000000000..df7d6b350 --- /dev/null +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py @@ -0,0 +1,162 @@ +from templeplus.pymod import PythonModifier +from toee import * +import tpdp +import aura_utils + +print "Registering Marshal Minor Auras" + +def onEnterMarshalMinorAura(attachee, args, evt_obj): + print "onEnterMarshalMinorAura Hook" + auraEventId = args.get_arg(2) + if auraEventId != evt_obj.evt_id: + return 0 + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraTarget = evt_obj.target + if auraTarget.is_friendly(attachee) and aura_utils.verifyTarget(auraTarget): + if auraSpellPacket.add_target(auraTarget, 0): + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTarget.condition_add_with_args("Marshal Minor Aura {}".format(auraName), auraSpellId, auraEnum, auraEventId, 0, 0) + return 0 + +def onConditionRemoveActions(attachee, args, evt_obj): + spellId = args.get_arg(0) + spellPacket = tpdp.SpellPacket(spellId) + spellPacket.remove_target(attachee) + targetList = aura_utils.getTargetsInAura(spellPacket) + for target in targetList: + if target == OBJ_HANDLE_NULL: + break + target.d20_send_signal(S_Spell_End, spellId, 0) + spellPacket.remove_target(target) + return 0 + +marshalMinorAuraSpell = PythonModifier("sp-Marshal Minor Aura", 5) #spell_id, activeAura, auraEventId, empty, empty +marshalMinorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMinorAura, ()) +marshalMinorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) +marshalMinorAuraSpell.AddAoESpellEndStandardHook() + +### All Minor Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### +### All Auras have 5 args: auraSpellId, auraEnum, auraEventId, empty, empty (may get reduced to 4 in final version) + +### Marshal Minor Aura Accurate Strike ### +marshalMinorAuraAccurateStrike = aura_utils.AuraModifier("Marshal Minor Aura Accurate Strike") +marshalMinorAuraAccurateStrike.AddHook(ET_OnConfirmCriticalBonus, EK_NONE, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraAccurateStrike.marshalAuraAddPreActions() + +### Marshal Minor Aura Art of War ### +marshalMinorAuraArtOfWar = aura_utils.AuraModifier("Marshal Minor Aura Art of War") +marshalMinorAuraArtOfWar.AddHook(ET_OnGetAbilityCheckModifier, EK_NONE, aura_utils.auraAddBonusList, (aura_type_minor,)) #are there AbilityCheckModifier that are not disarm, trip, bull rush, or sunder? If yes redo! +marshalMinorAuraArtOfWar.marshalAuraAddPreActions() + +### Marshal Minor Aura Demand Fortitude ### +marshalMinorAuraDemandFortitude = aura_utils.AuraModifier("Marshal Minor Aura Demand Fortitude") +marshalMinorAuraDemandFortitude.AddHook(ET_OnSaveThrowLevel, EK_SAVE_FORTITUDE, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraDemandFortitude.marshalAuraAddPreActions() + +### Marshal Minor Aura Determined Caster ### +marshalMinorAuraDeterminedCaster= aura_utils.AuraModifier("Marshal Minor Aura Determined Caster") +marshalMinorAuraDeterminedCaster.AddHook(ET_OnSpellResistanceCheckBonus, EK_NONE, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraDeterminedCaster.marshalAuraAddPreActions() + +### Marshal Minor Aura Force of Will ### +marshalMinorAuraForceOfWill = aura_utils.AuraModifier("Marshal Minor Aura Force of Will") +marshalMinorAuraForceOfWill.AddHook(ET_OnSaveThrowLevel, EK_SAVE_WILL, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraForceOfWill.marshalAuraAddPreActions() + +### Marshal Minor Aura Master of Opportunity ### +def auraBonusMasterOfOpportunity(attachee, args, evt_obj): + if evt_obj.attack_packet.get_flags() & D20CAF_ATTACK_OF_OPPORTUNITY: + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMinorAuraBonus(auraSpellPacket.caster) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.bonus_list.add(auraBonus, auraBonusType,"~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +marshalMinorAuraMasterOfOpportunity = aura_utils.AuraModifier("Marshal Minor Aura Master of Opportunity") +marshalMinorAuraMasterOfOpportunity.AddHook(ET_OnGetAC, EK_NONE, auraBonusMasterOfOpportunity, ()) +marshalMinorAuraMasterOfOpportunity.marshalAuraAddPreActions() + +### Marshal Minor Aura Master of Tactics ### +def auraBonusMasterOfTactics(attachee, args, evt_obj): + if evt_obj.attack_packet.get_flags() & D20CAF_FLANKED: + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMinorAuraBonus(auraSpellPacket.caster) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.damage_packet.bonus_list.add(auraBonus, auraBonusType,"~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +marshalMinorAuraMasterOfTactics = aura_utils.AuraModifier("Marshal Minor Aura Master of Tactics") +marshalMinorAuraMasterOfTactics.AddHook(ET_OnDealingDamage2, EK_NONE, auraBonusMasterOfTactics, ()) +marshalMinorAuraMasterOfTactics.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Charisma ### +marshalMinorAuraMotivateCharisma = aura_utils.AuraModifier("Marshal Minor Aura Motivate Charisma") +marshalMinorAuraMotivateCharisma.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_CHARISMA, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateCharisma.addSkillBonus(aura_type_minor, skill_bluff, skill_diplomacy, skill_disguise, skill_gather_information, skill_handle_animal, +skill_intimidate, skill_perform, skill_use_magic_device) +marshalMinorAuraMotivateCharisma.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Constitution ### +marshalMinorAuraMotivateConstitution = aura_utils.AuraModifier("Marshal Minor Aura Motivate Constitution") +marshalMinorAuraMotivateConstitution.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_CONSTITUTION, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateConstitution.addSkillBonus(aura_type_minor, skill_concentration) +marshalMinorAuraMotivateConstitution.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Dexterity ### +marshalMinorAuraMotivateDexterity = aura_utils.AuraModifier("Marshal Minor Aura Motivate Dexterity") +marshalMinorAuraMotivateDexterity.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_DEXTERITY, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateDexterity.addSkillBonus(aura_type_minor, skill_balance, skill_balance, skill_escape_artist, skill_hide, skill_move_silently, +skill_open_lock, skill_ride, skill_pick_pocket, skill_tumble, skill_use_rope) +marshalMinorAuraMotivateDexterity.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Intelligence ### +marshalMinorAuraMotivateIntelligence = aura_utils.AuraModifier("Marshal Minor Aura Motivate Intelligence") +marshalMinorAuraMotivateIntelligence.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_INTELLIGENCE, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateIntelligence.addSkillBonus(aura_type_minor, skill_appraise, skill_craft, skill_decipher_script, skill_disable_device, skill_forgery, +skill_knowledge_arcana, skill_knowledge_religion, skill_knowledge_nature, skill_search, skill_spellcraft) +#marshalMinorAuraMotivateIntelligence.AddHook(ET_OnGetSkillLevel, EK_SKILL_KNOWLEDGE_ALL, auraAddBonusList, ()) +marshalMinorAuraMotivateIntelligence.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Strength ### +marshalMinorAuraMotivateStrength = aura_utils.AuraModifier("Marshal Minor Aura Motivate Strength") +marshalMinorAuraMotivateStrength.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_STRENGTH, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateStrength.addSkillBonus(aura_type_minor, skill_climb, skill_jump, skill_swim) +marshalMinorAuraMotivateStrength.marshalAuraAddPreActions() + +### Marshal Minor Aura Motivate Wisdom ### +marshalMinorAuraMotivateWisdom = aura_utils.AuraModifier("Marshal Minor Aura Motivate Wisdom") +marshalMinorAuraMotivateWisdom.AddHook(ET_OnGetAbilityCheckModifier, EK_STAT_WISDOM, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraMotivateWisdom.addSkillBonus(aura_type_minor, skill_heal, skill_listen, skill_sense_motive, skill_spot, skill_wilderness_lore) +marshalMinorAuraMotivateWisdom.marshalAuraAddPreActions() + +### Marshal Minor Aura Over the Top ### +def auraBonusMasterOfTactics(attachee, args, evt_obj): + if evt_obj.attack_packet.get_flags() & D20CAF_CHARGE: + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraEnum = args.get_arg(1) + auraName = aura_utils.getAuraName(auraEnum) + auraTag = aura_utils.getAuraTag(auraEnum) + auraBonus = aura_utils.getMinorAuraBonus(auraSpellPacket.caster) + auraBonusType = 21 #ID 21 = Circumstance Bonus + evt_obj.damage_packet.bonus_list.add(auraBonus, auraBonusType,"~Circumstance~[TAG_MODIFIER_CIRCUMSTANCE] : ~{}~[{}]".format(auraName, auraTag)) + return 0 + +marshalMinorAuraOverTheTop = aura_utils.AuraModifier("Marshal Minor Aura Over the Top") +marshalMinorAuraOverTheTop.AddHook(ET_OnDealingDamage2, EK_NONE, auraBonusMasterOfTactics, ()) +marshalMinorAuraOverTheTop.marshalAuraAddPreActions() + +### Marshal Minor Aura Watchful Eye ### +marshalMinorAuraWatchfulEye = aura_utils.AuraModifier("Marshal Minor Aura Watchful Eye") +marshalMinorAuraWatchfulEye.AddHook(ET_OnSaveThrowLevel, EK_SAVE_REFLEX, aura_utils.auraAddBonusList, (aura_type_minor,)) +marshalMinorAuraWatchfulEye.marshalAuraAddPreActions() From 09a6032eb14498679f55d231c4ac2e1a2b23a6bd Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Sat, 13 Nov 2021 16:45:01 +0100 Subject: [PATCH 2/7] Update constants.py --- tpdata/templeplus/lib/templeplus/constants.py | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/tpdata/templeplus/lib/templeplus/constants.py b/tpdata/templeplus/lib/templeplus/constants.py index a25f58c6c..8909ec6bf 100644 --- a/tpdata/templeplus/lib/templeplus/constants.py +++ b/tpdata/templeplus/lib/templeplus/constants.py @@ -3359,6 +3359,59 @@ spell_new_slot_lvl_9 = 1614 +# Marshal Spells +spell_marshal_minor_aura = 3831 +spell_marshal_major_aura = 3832 +spell_marshal_adrenaline_boost = 3833 + +# Dragon Shaman Spells +spell_draconic_aura = 3840 +spell_double_draconic_aura = 3841 + +# Aura Types +aura_type_minor = 1 +aura_type_major = 2 +aura_type_draconic = 3 +aura_type_double_draconic = 4 + +#Aura Enums +aura_accurate_strike = 1 +aura_art_of_war = 2 +aura_Demand_fortitude = 3 +aura_Determined_caster = 4 +aura_force_of_will = 5 +aura_master_of_opportunity = 6 +aura_master_of_tactics = 7 +aura_motivate_charisma = 8 +aura_motivate_constitution = 9 +aura_motivate_dexterity = 10 +aura_motivate_intelligence = 11 +aura_motivate_strength = 12 +aura_motivate_wisdom = 13 +aura_over_the_top = 14 +aura_watchful_eye = 15 +aura_hardy_soldiers = 16 +aura_motivate_ardor = 17 +aura_motivate_attack = 18 +aura_motivate_care = 19 +aura_motivate_urgency = 20 +aura_resilient_troops = 21 +aura_steady_hand = 22 +aura_energy_shield = 23 +aura_power = 24 +aura_presence = 25 +aura_resistance = 26 +aura_senses = 27 +aura_toughness = 28 +aura_vigor = 29 +aura_break_spell_resistance = 30 +aura_energy = 31 +aura_insight = 32 +aura_resolve = 33 +aura_stamina = 34 +aura_swiftness =35 + + stat_strength = 0 stat_dexterity = 1 stat_constitution = 2 From 6d688cc3fc6f4edbde09046b53dea98b62064456 Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Sat, 13 Nov 2021 17:26:03 +0100 Subject: [PATCH 3/7] regenerate tpgamefiles.dat --- tpdata/tpgamefiles.dat | Bin 3742483 -> 3767559 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tpdata/tpgamefiles.dat b/tpdata/tpgamefiles.dat index 17897a70fbf993d5632d598c63be1dab9794a712..6b5f430e43724e510330340ba57aaebbb9275727 100644 GIT binary patch delta 65376 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 E0Boq2d;kCd delta 40340 zcmaI82Rzp8`~QEDL_?CSTwH{V$SB@d8k9<<($+Gv%gUy4sT2*N(&-MRG&GDtl!nq! zByDLa4I0vx*6%o6r%s>yd;kCU<8ywzywB%xoO{0CifelzvGw?KiI`Z4SjpHfu~M;J zW2Ixe#mdCW#&(bG5!*AiSFBuY?^yZRKCue1ePb14`^757D#xnCs>Z6t_K#JM<;QBo zYQ_p;wPLkn2gK^c>c;BD4vf{0HHbBgHHsY+YaDA5JGjvFZr9>@vZkt1alxvl#lfm( zzokSALmrGfwqok6-{q%r7Vh_$rl311@YwU(`(NhFt$XuI%T(v`g>Gvk>?{m_e_J-? z8&AsMYV~8kJ2`t5BqhD}pPjO+S@qO%-+(3a(-JKs&Yd#8wq(xW45O+W=Pq8nn0NNn z@_)9aSPYCC@aaVG?yobvw^XgGKc9DYcu$uc&D=v5l&b4RB8xdWQJ?mdM$P%|p|SY1 zXt~Ze?-LorPG~$ECbj8Bj}s%EN1dwnGv8%-eBz7hD{W8rAG>wT)M}*8%H*bv2TC55 zRK?9R8DFxX?zP6@GfVr<*}L>i!I$#1K{?Aas;bU*AC=M6@aj!m#N$~n7J2nJ-NoQ> zO3I(UpOzQhAAUy8?D3edqKC&N(`{mU8#M~dA}sFBG`u8xp(Nve;e!3g?VoLxe-Yr7 z_V8|`!@UU$cT63+&0};yjQ$Cu#cBUIT5VkqWz)aEZ#h3$R5WY0UWjV1kH5X%AKiZY z;r7XT-vpnP7r5BI_Dxs(_&eZN@qW34@A-3wK0jR~>+;)p@mnd$CwDzly!VL=+n%pJ zw0KVFlJ{9&Qxbi)9CI*xTqqmdld0Ca%0>Z%L92OF}@82oXp*o zrG;*m0b5Qy?mJ5)r_yu($>vjGu~sikTtxjBwk%4iYLOY2x7;8r!*wnFRVi2fJnUOT(-!tAv)^L5~}y@GG_Vu-!7EIWMcX_5DTkC?Nozjx&5+^Jbjecn~>w9ZI;_RFT5d0y!&t?LOPJsys$e{z1S zAhzVSaBuXQ;vOY;UoMsTGWDnBF7JItKfhH^sMgw5ed&wng5cDT?&d3fFCA97{8A)1 z{C?)|Lp^Lm9w;tvN=w*L@1pfO(9^t9&2>xE*+X@ab~c)#^?j;d-Bb>9>hEJx{N%;p z^6{bxI}8`kk^dAvd-k%RkjT)`P*bUJwK0Q+E5sMhI(FA+k^91HUna`;S;@~+?7cBk z*M|%Iqi3JGE^;id>b7-|ZY!DctlzZ38O2$4`5WhS53P*sCov^Y>fz`S8|U2iIqA@l zQZ{$wtemGi&P?~5)?Kvfz>h;Kln$>yTYb{y)uX&QkMcHtRkqdptrmWEbE(U~M|roJ zN&Ps5dxu>6q-eQLdoj&_b-!DKHsslxZLZV^yS4eG@AyZBSpjv^tlnk!^}oH|^0i(6 zussRGZd9KX{{Q_iOzsyyYxr-`*hRzb78XiqfXsV>iipzuZ6z#^H3k}^yI;wD)ZCo8fNOps!o0JZyu$#sIGMJrwWmo zyT|Z%3BzJvKK?Pvc4ACh^u|6mg%&y*TO$*j-X&hzqIv2{U0TiCcc=68);{Q2ppd2CXU%o+&Y!~Xwx%Y~yIy9J=ELnz^DZ@9eY8x!V9;^(`dGOjZMhne^NrSw zN~K5@lUwJGa#g0$RgMcTWiL&TPKr!e@9aMBo9w04Utj7R_*Pw2_I$(51LyYIYXoKZ zc^VR}lmq)sL=BOV`|PhB`H~UjDvXzcCm8I{^bEu9;QhV}9{nEwqeb+AS>t(Ms*HOl6 z!O)?Kt8`xXI5uijwR**VlgpdZ>O6KnFB`NXVV~TOB_nE`-yD7;pb4iB5WdC~x?6STi?4YS#^wo?c$N-|rdHcV3r`Q!{eBiOxf#t@royNVmA^HI>a; z{4F8ATg){FXpPyds-N}GiTWi=)i;Dav^v+c-Ko4`*VQn;Gi^!RzvsqhjnLltE=8W_ z8qIUn$UPRLJD}~UwZWROt0JCUm%hwPGSd;W28`8@A= zS`N3yxVyF;*?o4=5xqe+f=cOzn?|b?of`IDxvjbQxs3VrX_~j2jE*#FDE4YLT5|66 z?`ICFOUK@DGnM+YIn(CGd69Cieq(T3x9gGzc9oQ+U?|UWHZ_?H~Mmf5BXD|D_oGV@Df zzI(a#?+lftq7eVg^1J=yE?EjP_2uhLmN?FJn%MVFGBLP1WzM^At0HzLHr)BvqOFtQ zAuXTa+#_)3g}V95t0$b@cI(p9>l-9SSe)T}%Qc!FUI-1SJC!RO8$4l1nCm~%f2QhW zE0Ck*=TjzJOGvsGbTY!RR66*yXzVWI?nYrpc3qk~c)RoGt<@qjSw6uhO5cDlh_#qy zq(pA_vswG0qJO07$N9S@yrVH`W4o4Ky3#!2*c6Yb6#A|xq7bE!DIRUeJl4w-uSE{XSwgJ;B08qy5Ioa)PZ}RTFrjm zGl&0T-_e1^Q&%jN$dE2RcKG_I{h15RD)xL{r7xYVeEit`?(@{`dL0aI*81MN-vCjR zW}--cm0I!0kkL507P)?vvD(V_31 zZ}zU<;C|4A_l3XhYSyIutBb4VTa5E}*nNBKI!}IlRBJcY)mIFs?2ol??E7JEkmB#{ zH_v`+J-YNs-{S0l92B)vR~2tskWd^tv@mW7L>YE)Ip`KWnaW z>2djiMc1-R%ZJJAlH_YD`81WT;D z_+`!O?ZWJF{-Vplab_x-F4gIulRalI&C~tUKWZ+2PR#A~1_uWXm-=Cw->+%jwAF^o zGorS4DdgQAVWnU?cCLg>R)X}&Jy$1mElJh-SYH<3Kh|xuvfF_4;e{XV{BIC7`+-J> zZ7aRg<+?@%uQL`_?G1}srBPG8!9vM%DQ{BMf<7g~s~#?Twt9t#n>}A{&!4d)zsHaM zdV21-M}{Y(brfc&Mf!v)etP1QpC*~CJz(bhEwYYjSL`O)-rTTx((rLf8nKzbE&YG_ z7b-;XBX3_wn8;VTFRx~`Vq@(^$)YW}%Pu)gc+!}>RJt}MF!#8r=oUO4p4rvWK zWjiPE@S*f$dzZhI(P)@umn>46nQC(F!J}z^q(2TfJYBb_-nV}4#J0^7J(ip=%#qES z+6{td8;OEazUcoxV@DpuJpUQQ*wU1#*(DmnIrWV&%66vD3d&Ej;w@q zX5Kst$JyaWD^Ij>mK@r1yT`d%L*@>>bNXzYSJDpGRnn7`2Gmb=Uq4ahxV$Lo z^@IWSv&og^``qnkbgj5>Z;6>_np*VWUuU1MeQ<1IW}Bs1{tS=0Daki>-WaEI&bq#f z&a`C9J=y(q;{&S^~++PWAfAl|yD%aSBZ(M8boNOhbD>~d&+T~o)+id}1-EW5#m8~CM5ZW^T zLvhTjqWr?=LD^wLWeeAA{Ca%Iy)C7h`tRz;_saW|=~U#dBym&b)R4s6=esISX_d_0 z)l>P0ZP6sJwSQp$=rdt#&xdBKvR=;^{Pc|KFa7CHM16g<-l$Jnq4#AN&tlD`p-(RC zdwui4he=vXMGwY)`81I4dQ;(5qvUv*MCXmSKmXXbaMCyL>df_Ukl}tx>GrLb!T!jirj#O`N~xzqOI%9!)l5m5cyv&3YyR8?rFyp0j#MiBo*GwoG*-I6 z$+%71-#*92yJ7mp0;x~i92w}_tZA%o#J-slf(|uhp%ge zvlRJ9beCBho~~X#QX^Gl`F-@zlX=6M;@n`f|nC z=>D_wqOi)>v1vN<Cn2?(a7K$g-8a5SMADVA*rR3Uxt++_g7{@4dXJy7Om(%JPG+bRth> zrOq&oZSwZnqIUOiUbRW)kax33RmO~Pw;MQTf^q$~kWIQ7<~{dM_GtQJ|4rRBI&<nAWcQwf&&z7R?60}WiOkbit6hd4p@i$YAS!P`DDj~ zsk=sMsHYlzJiSaQ(f<9QxBFHchznGam@{jHynM>u%Dq$XcF%N~o@VTlpVoEH@u#v@ zclHgGe_rpXt@0*s#IU-Q=AS(2TK8st*!titSEtl#W>xq8lHBN(HhyRCx1^16%oW8$n;MVu*tF4GuRd|RGIRBQ z*&XjkOp6`(=l1nXRat>SNoMkn74LRzmNZx)dbDS&-2PuRmp6R>qTHmvaQfn~P|n~; zQ8$yeX}A5imY3E}Ba4o_Z+-P9^0?CZegauP=hocJoCk;YxkSDQKl9<<@gW=R4L?i8 zCbyg|ST*b-tjWWb2}!!t+M|($ZnZ_%$I~@K? zJ14tqN$6q2uv=G8oUX|@QGG3G_0Ec$)1K@)9Q>^B-SoqgK8aQdEW)3wM;G+6t1VpU z_<6_VaWiZa6Yr*VdHADX$AtS26DQd#o;C=7p_+U%Z{xV`xm!XX41Mb{X{q4*6r14_ z_Fi1@)#@L=(#mW1wp;9~iv7nrc$AE-(Z?ePhZIbAeEKuFdDvFxenyJ=MYDqSezg9& z@Z{F}s1Y06-t|zP&?cLh7$DMIBr<$rHE8K*j|w=#t?2!z`BSJ$+#x$P--CtOPREwK zJ2t+jRK=nP!!EzMcJ%weBLz#83`%VZj-)#oTAuO~_}kWem^kmi^aK8ezx(|e6K*td zv~b>={r1a-*|C+;NXUt=3424Ty>}gR5+ywj zemzh>ys>_f)rzV9R!P;iuf{}eTEDqU_SL$A?sCV&N6rlt#oDagW3~9S#GVw1l~;le z-8|;L`k~I`FZG|+9k|;)Rq>Ex|MgxCbNfBo{j|-qc){s~rEi~le-JI$`{U<~b+teJ zd#_PGIOX22ME#vDX`^>%w8#&6GE6CA_2nLyJw(!T7r7=@Zm`z%-#YqJlH#TMtcz#N zy$9}ln{;4R@TR9XGACJ%IJ3L!ZDp$~4JU)M``SGjE*X2Wg z4qCHg#qVtq<3$%5HXKoppT`flFx=(aS*NCvF0v)@i<#xdRInGBHp(-)+{X0UF-U>2f-K-aUWy?&poD zviU-nisDrX20vfFar+$CO`@r8AVwijvndtCgoozYo3%Gh3RshkR#w>0 zMLj1uy&l|@y!-dMSw5xw?lz4Ni^h65po*6yrSswPIkJ^5f%e#hMHYuHu zQQ}oI{a{Ovm#$OxT7T)XCT2&Njzf!~{fzxDkL_M`_gS0rUHci^*Ss^|eD7D_lM5q$ zyx6+*d&%4QGc`xX4w~q9=cz7F{lo$Or{#r@e=V4J>CwZg=li?&Kbz68Gby6)9;K$) zO}EEQI+9XqxiDMwc0eEh)9xeBtcdzHZCcOkr=^>C2b-4Kaz``L(hhwv$oksrZQhvU z-i?MUQ@*?rHy?;3Kd?e}-RSG}jXJ@(3d zBv^J?wL0s4LD7;P;mME$aNX_YRhi{*TPYchlW!c|RixKsr`d%FVCh{SXUt^`$rUKXw7 z^rTX$ts==>$*D{6EFhu`5qnfWRzf8vq2ffKYEgxWFl+gsibdQIDZvm>?@{@n8W;n` z%17lM14V5`l^(-cOXYtB^&kd3+YAMzvJBerH>gOu^K9(235#vXdaovpbnt2LG@rYH%Q9qubJi= zZh(}lB}9x{1KG$%wQ3C@F%%gl)q>C7uYo?qS%ET+1r>v8391TI2T{p$pkASJLZ!PF zR3<8SRE?;1ujOo|OogCcqKZUiv<_4msvuM{!$1|SgLZR7^&M3zsu6LZ>QSvirEd-D zBB~%%vhkowP)&}93d{amz)kT`FOgXC+<2&$d{oa-HKI~m4@z(Zl;e8NSgHoiR;`D+ za>8dtsFF}Mp{hW|-vEl218Uj^sHWC-iw#gf-f(z!7L`4!U#Lp>K0IQ*5o0w#MQw!s zVvp)Lsw7mOP}QO`-2_UY3Ce#HSookiyos~!f}#l@wW1oB0Ln%H$}<7FP&}%=sA^C( zpi z2)&WRGQUO@gla$%Od#2)ypmvI2>R>(ND`+iRgV!@Fe3GDMDJvnXe!XNbutV=`2nDo zCBslH`-_}P=8UAAFyc)z&QGXJws0e)8c_wJGSvZ!g^ zql!lrjj9Y)&Q=(pt*G9kGR*^JwhgNpRUoQNR5_?>QN2MWk3-rZ1**gzl_x64qo8)D zVE@IuyhK%o%4j<`T1rM2)KXNAsESdgqWXoZ9@Q8EWs65I>rj=Uxok8~J(@)tn0 zceP;|9ABygBj#toyx)Q<36*{!sEepvQMF~jFib^dx)W3lDlb$rMWE7A*`T_)6S@oc z*L~kzoR(B1MsT~JN5x}_B6mUlYET_VrD6!`Gb&e9=9!?fQ3YkfXlp^0gNic(^%_+S zs)4&fRiN_N4Hoi)K0gsL7@CMu0Rpc+vvKxJwSY6q&I?x1Q>m7r3}0>$eAYGxLA zwnvqWDhX9Js#;V%_JR`h1ZBS$EPPO{LzR!}0;*P2lKVi}^a5prDjwBJR5hqhp;D0p z)rQIy6}KO{ZZ@h=R4u6TQE|ONy+sv+O8)>@RG{)gB`*(ZFDfTg&roHe5@dsFMCFXi zv=69sRFSCaP?e!lIS8|e>)$4ucaYQVq5#iVAA}SgQJq1RimDA&Ju1sXuo&t01+^4a z5UL}nN>IH*#Zv^OeHbk4Q8}YZLbU@`Evmby1pPoM90BEnY6_}+R2xvWqPm32MhTQ; z4tS17H3C%)sz_8S%Ag8RxuR;$0gG%@hPj|xP283 z=k0|s7G-exYu}F87IMl`wb;%J3Sn4RV5yP|IUT8_X4t#5Bi9PK{!;OXye)*?qRa_! ztXBle5tVBZR7NVQe^Aw9Y2~|9*6(z7(@-BjEFG6Vv6d@9S ztt)}Onu;YTg%hCcF&h(4z|>ufD)9tP?C9X;37BgIr{I~=NnC>PnbS$&eDGPuN#I&8 zf~r3W%R@ds(<{Y!8r9-bh}FLYDyI}?XIE6srC@7w8kEH;*wV(MT6PM!RE#}y3T#!* zfRa27sny^!yVDRWa~V|JY4Bo$s^T@eR#ZFX&&#LEHfEP1m`&|eiGC+R-5w{30}1qkC!ITka5KMJg3%A z<&wB&gA{nYd);_E-v~fR!g)?rw5jdCi!lN6V=vAVFC@s*&(Fm(GPJ!GeWP}d${wYHbp z-;Uu3zqj|cP`A*(^;AzY{eA?GSFOzBHOY~;7dRD%Z9o5Sjbj$3gOh9Eya!~>-N!B1 z#of;>B!nk(`TrJd8lW>EgcHY$Tz@`CYizVP;8+x5d;xBT1Q4mFjLhH9d zBJ&IxG7C`XUcC17OiekLMQ*_!CP7iWY--d`jmPto;qhh~Go#sH)R!3vA-A5vzV2vN zPt8_9m27~Ein5_*-T&ri4l%jJsm;79ZVFpKP60A;81w7|o)!OkHZyba^7Zx!^$bSW zj@0fXlynK$NsnT7b4mIoPK6&&kv2f00a-eRA@j(MOI-h%WfbX;Z3YAS&3J~)|DST1 z4RHx}3-A^v-b&4GgXeJY{KkQqEg&|RIn~*wmEv;!gxV^AmT;TKkcHs6A1jxoOGsd_ zyJxW2w+}V+f=;&qj1^}wLuZnAnN#CuQskQwkGBn)apyvYxR95ZVJfJl$Tsj`3CWv# zGQ^eWRB$@8<*URw91W9AB^1KPhaqnNlS6Y;7q?({AAdJ*Ppo=-YB&;xy$krZ@MngL z$j%B*ogYJySSUpQ?mXU>AcnY;dlj4pzl0*gq3^tg`79@zAs$5G3O8U@3q__vLQ#+q zS;Y{~|LGg%LtH$<<~MhFS6kZEJCgn841;Q7myQi4DlwF zkUBq=B9<_X^@P5WxPc))q{me#L%oS_`-FQJyvRca(-IltOU7O0w4GE2i;-R6VJ0MW zcnd=oLm6N?pu^2v=;9X`?CI|o($U4KX)?6oc<}yb8#7%(%D_86o+5i;MMPv=DntCp zpR1gJUq+Ei$m0#jKtdWr{K@c2=q#-i`3-qo0*LcYh6Ir4O7LQ8DlWzlJ*X>a&?}h? z2_(gp9G~w)5f|uBDbSx*A7)4p`B2H}&d8+5LRb<%0-~JHkfl%=uqe^W7y^UBJus}j zIcuraWw0WUMcE=|6-<1qVBV8A6KBt20AvpaW#&nSgpl1;&?W6D!UH4Xk%tQJ54Cyo21CM#@-%#dZ|Wi@BYmoF11Bnh467wri@82+3gD@i#bjT9+@=vMGD`UOKoM5YF^YkH0r z8jx#%4139t7&5(v8^n*K$Z0_S0MhLhLspSA^ioEVE`S^aM7oh7tI3NR*i*=y7boNk z$SpwfIw5O_@eR(L??@3BKq>)Q-Nd}alI1s`M5z?%JiED?Iy^Nu0w$>W<) zb-WAWghBzi2S{WyLpG3sw>TTVjJgh8fDCP6$R_d_ zk&=HQsvj7VK)Bo7P`*9Q3lLrOHIBxC(QuC2{NhCG5q0qGySqS}h zEMNyeF(ip7-+@`bg^u1lh{j&m{Fx!i#OV$sB!Kf4IN%in@*94>{KAkeWak}ju*ioZ z>j8NJ$n&oZ*$U5a%i{5O4sZzz_4NyBUzW_plhhwzgb>QVF*_XWFy_Q|zC6?JOa9Lu z7PopS5X^SK|KU92;^G_N8|vbMzFT3QfyaOU``K#7+XfHN?{<<_3+EXpii`pXLuZ5l z+P+)IZ2Ph-$AAsi#(CHuCBn2}{hhf@1sj;^d0xT3o&g>qKE6Sik!+fZKEzi0_3u_@Ae&YJ#;fDJd7dShH(skCAw#$x@u=+rW{#xOYB!m3E&#CuIrA*Bb z9!~_x8YqEhGPsWG$LD(fcU$d(1a*m99SkPM&#v8TA0>h8Bw8S?2{Hdb$kBLPV8hJ-|Fi zh%DT1R7vBd_=%R$0_1VdXeM4a6Z z5S<4>!H^+`i1Q=Z<~UIV4@9_fo$G`gCh3o0hEAf$4T#P{Pe#nk5%Ls}Srrt)>25!S z>4O-O1DFzip^Lz(vz@T>nVN_9;ZX_wgg-TI2_(5iSbitS{W;GndZXdFTixMVlGSJ88)qlTQFt>cD;UX z5$&E$snup68h~i+WOa(9fnyOR?-18lu)^`o#I39g(YfGj|5WDxE+U$S?ty+D z?e4gLu`?YRdk^gOiKvn5Ph=Z8d43GtQ4E6T1>je58e?nQ{pxx728*j9sFU9uV2e7j z_sOzG*oJ3QM2}{3(RAjnj+{fJo+9ReoB}WMGZ^xKbZde+M#WrQ*j|8~2c)VK@{rgA zqD~15AaIYec_wr6h{QL+nifxyY(TJ5-DWZ5F{#9K$|!=X;&t${cs4_xke;t$UTCEV zACN162x4Wb=U#II`I!{i z0*EAp__@qW1L^vP({ZY$2)6$k2pi@xw&%0iG4|?G(-Ez4-pp^Z^01Rzks=Wg@`)IZ|3CG zJ7GAXtXs&iMpDwzIW*zQ9{$l^DCYiN4YWPtpqvsiPIOgP(~dX zTslWAV$3^uh7(wjn{R+1G%(EFr#*YFH0g5?tpMRuCzEFQ9h<3r`WE0}#@F4=uiY%3 zn&HX*BOqNpAf*xT3(jEg;U`YPV!KeE;6U+CBcB@K+=|oAH#DL)EfOU2GpD9eOBn-L zAn=&7(vvYCB#7o0PQw81iQNLkqg;QexP7tFc0st|#qf{qxPgXiCuS!wLEen{Btg8s zaDus!*Tt=L2jUMvkn>^8XUGP&?$R({_a&YIE}>z;0UfQ&8z#2H`9BRpQ75}EV5did zzQTT`^$T>@Nb%nM6+Fg9cJyUQe3c;nU!gB9ZsvMvjB%-&N~5pTDGqckNaO6 ze`ePvK@7jaixo%8^aDTTz`X9n;4UB6zhF=IC4QbEA#Bx*q*l&AGy#zlz&!tyAgSMA z14A?2vBYl=WXLZt!{x92@>Z}2W)Y7Nd}-6(Gn1&HH9$DYg#|Ig-x5T=mDA9upv)_X z$C6E6%9uYA!~qyS?}oV6wt*kqKz-}Pz>DlwPIo3pk--pM4Q_q}GdB{@e{t-H^BA(k zH`w1dL_Fj&Y3Y-}tOtZEA8c62=VCi8D zks=}AVUn(=2%gdL5IH7-AzexFceuE8qJ0uaWHf}PPKY#-XyXR+Gbw^ML-zo2k7QoD zk;!d%mbxjfD%{dzhaDEh5E-(m4H9akUa+6w%)~`AM3&rb;{@{@sh41gUId}J6Ve?@ ziJOv;(7<4Sc!2@?9aMq{H$U;FB%T_F0OSF|aT)X9gE;=+2F@&_$RfxBZn_FPAw4@< zE6l^gGeF?!&vvX8w6$>l#{1pG<;-(0QuzaJkXk5$1MD++-m-!ra^M*UK?wESzAJ6- zs4CXtS{nvdIPI)k$*g*V6%I>k+c&ap7Ly{-9KQ5tK|HiB4#L0f_`#pGkhrX z7~=awSQx{QKL4Ae5MMvIMGy}iYGn!**zF=$F)Ib~=qIN#yM!XR1H+@J&1#191;==z zqnVEIg{o}#TThLagV7fNx~^eHieRKol7De(`eWcNbjN0$w$*U3z^S#ZlSMz0@C)7| zm_~`G({w=aE}vi(_5@x;_j?&Ekl$cT|B4Eh;R$>SrmpdRIp$?e!S71 zWglva)6XryUae!MD#Yy%eDCb>n^WRvQVtI)yCIy6W1Om(JB(Z{&t zxNkU|$N=q>3qk?Eg}O)s7dS}GlNd38NJt1(MA_6y14PS17@Euw9a=FFfqvn*AN7RS z@U$n^P_slZ!L#nzEzAt}I(SV3>kn*d zN9?o=qH$LgvW+>#jTMek@g~Y;QD7jwtZ}7Admu6qfcXuNp%~9oKA!Vc*Pd;@C^6$bAjzn$5yA2y2Wb3&8KY|b33HNsQr!y zKCS4uUK89Cr-V!Xb_fsKjcAh%B~?;F{)|YrF2N1+^^4*x?;^GQUD{q^ocM z--#k65RIqWr=5^t1%F(9GgqY0`irOt`1&<&J($LR%_r*oJ1MxT}#_VQZN0O`3 z!v0zuMX+IUIKJtGjDmzU$%Jk~zP5N0q3jXhaJ)qCVeV|m*lt2&$4I(dmO(Ubd6lvl zVhiqY6#BzN2K~z|K)k1Nr3JwXO@dI?$z(K%k`W3-*)-u&h~5FgaWC^a2E59{vjFU` zow`XqwK)cH*a2U6vatgj?CJr&k-nZGF5Z9FW0g8_h2e0=W{BB`3DHU&OEhJL>W+?` z7#!dH{VX%%Xc6)B>%vaI@wA9oBiLn&I+=_o8)bzW{CMg$52CSd9S$(B_T&;GWfZ~T zvKvBUCu9PV=q}Xcw^9U;2{`iBXEQGo$%yVkHIeB9aS?IAVP1?6GGr2D9|v6se82^( zQ@C$P$5iP3qn%``=|}GO6z_51}5vgd)!%8mC9uT!zdbHa&%^ z4lNX^f@mCrXFDPI5fx4d|FI#^esb)+5bDuB=xOt>^FDRueO~`&ayk?b!^H7mF58a?UC*s&k z*l&C`O%c}}5qQ6KmLYTD8CGs+5KXiF1K%2I(P#{JdyvQJWne*$^b)Gux6-J05Ooit zhF)UXpAXJpu$DX|!v0ZlL%*7+ZE!Ycb5r^_K4b{)PMK@V zcGvAMm7%1r)J_@f@Y{lMkC~k}{BvJIwK?$=35RYo1zcr5VTcd>uGEohGpKf7__*8K z7uQ#;M%u|IgC#B)%}<%7FF7MGRCS`hUqVm8!=l-9Ml6Qkp%aNK+G2={+tM(2&+0Dd zsFfP(-5P9PLe|H=WVTDl;65;S%RCkjXJyC$?naFo8RAD4_kp>@h9cd;OC5Nb^O_<4 zB&QF|-L*86c7WjZo7r221b|mu2itptrKO7pUWY=_d9<@S(@HaFW;TIf^S3>OmM)>b zo?ad8p-=64LRt?Yt%w$wyE}S$5OGuxs?BnwOg%7o>YMSA`Cj@zzBycEqdF=qlG>Sr z-Ba)#^qJWOld}rKfwLlMZ6NX*kZE5T64J@FnT4qfzM1N9ok?9=P}kP2%r2Bz_Z8~$ z^Qr4@fM7+dw=pD)tmrG`iyA4?2AvV#uYLW&knql_TbjE>1P1<1y`odWo`Bt@U(60? z2b@Xh-yH;m`G@d)Zujxh&|ef_0%Baw zsZMwC1dr{1mJqZ|d}T3ZAnes4MMIv&UjsD48MZwWA-qQJzh}N>;P)!ItSHoQ5SrskZ$STNcXZp$JBW5R+%#J3wxcf~o!7r|X21omR4 zE69j`a3-h3QHcEojzZ-av68IpCsduK0#yXb@E!r824QJ$hKL{n`>&~$C8R$lFd!7( zF9(XxuNBmF8`!8r*eK8JV#wQmLQVC1V$a7Q_8WLP(1#JL$Ur67oNyGu7f_D?*{Q&g z)x=FnsNLb@Fc57(EbGgNHDs3(Y|65!lS)AFHF}sLLt@DTCFqj%6p4rEm*}M*L)H?$ zGMqhBYQ?#&2Lu-#HzkIwBMX&byYEPmT!?-LUX~~`B#!J*7HaY1DH0CIJwTjP7!prv zm4)j3vQ9`XAcIvIvYzx&5f0*)(Oo{iMtlQEH#LTAAoEm&0-aXsrTyg&U>`dn8==_@ z!Hhf^Db&-)H`OxH;x3DCrk+DgS9Rua6VUyUHX9{Wc0$_pzPKvzis&`OGba15KB~cxM3SKjm7GZt{BQxiq-ioF ziPWh=Q`J%gFKS-_5+z_rGEq~5J|SNxEs zS0pntGgBz#bhju$pqIem?~y%*+T!)xN8pSHFxzdUS`D|Z6zM3crVc|=NT2?&XthuT zdu1JXk=13$cH+<es?T<%2v%4lc&XB3UQ(eP{o2c6ZU*JB z!wU@`xX=~f`cOlBHS!jq!hy{2AM&HWa3H^iBI^KY03=hNAv?$@bs=9z=Ak%;jezul zu*QHPX^=c0%!tGop{f>kEgMQ>c|JkRHbX|IlauODE0Gkzt2&$$;*1!QLB6O%-R4sy z3=n)}=rM>PI|;`Z8qaa0Jw6l=9Ef9#8L|tqg?kw@vmryp^V?Ys%c$GmByxzykts2a{>>*Yf&_|Of@)i&o2qmTr$s!>d zLT#rCir`-G7I-N$W5`}81uhO|W|n{3R$%w{vWoXuoX4GDic{WJb7s1ayu%DQ{R@e* zV90)Apb67V5=BmfmmlE8We7tKKn6768POOgRBLbD3QDVE*1%%kP)28yY)v>0@t%mY zwGyHqg7H#Ih8!eKnoxBdMX~^C1!S@nLk) z)-ESx$Psc_AmlsMQv|n2xb)f#V@OU%?FzArjK__xV74c`{S&W#D)r)GU?**#Jgk{% zE)i%!1{^6e13ckdOyl7U$s^8MP#N(Q!Cg{c2tFeil23MNK^v7(IGlR;5)*!F$_6QECxVcGO3sLH)??7+cBh=L?Kd3 zkq;1!?Q(uBLrTb5Ky>7viA&T`=u6`masm<`02M(#OcrXk_e*<9=Yca^4UUdy^hx5N zBh=@|P(%xm1AwI1Go+Lx>j>d5B`ER@5PbD8d;&vGk-fT5i~4kHh+7_PEr*E=IZfW` zLbqt4URnT=gD`dyL(ULGJ=hiLH;4;|J6uHwGaMLlmU!q1wfU|Txd74l_RxDWL&`{& z9yC|#zYyOk3^_*{^q~LMPz28(_)*J}sSG(!bOwSKndjoXbR-n&$dGd4F;J*I(1s#c z!2^B~5k8F}7oaV)pdyA?SrU=HP*r@<8A&bn0R0tWBc?Npi==TN^nrYeoCE|5=s$xY zmxzfzv`1qnFJHh*;7o>GCSm&EML_rV9a}?>Sq!NlrTWnDP88V>iTngFi)S| z9ZjOdMj&tz^qRv6+@<67Oi26R@OGRKlITt-xd*(Xh9k}dCyT#VNR?0{z5ZIzzm6`U z2H9|A!X1{*0%jmlMKTTG%~w5T(tyF6J>ydJ|B*Pjd6} zbPEmPRRH?$*K_zs(6=D;fOC=!PLm6_1>@*T;Y9vu)FGR;dxYG%_D@h(02?xxmpo|B&!M*H)Fy`hS zq=*+;G@oO{--tu@OlcKQ10(Ei!@`+Stt6Q?NGQ@ML&*)czOg zG1L+>o(>_qljT!MveX1V=ga<=ce|C$`!h*$$OIZ9p5}52^vnP#WJ4#WL6W>Qf!{dr7+8QO484E3f-!cf|8S_q(#Fz;O zX|zyg8N}n&kmq{FG)t1JX0W%=ekoyCMK*w z>Mey*8m^E@KzOb+j7VhcCrM&uAr#C_r3JYGAWn-JotV$yuhSTu;szg1y7>u42f~LT z(64H!sXCaR1k?3N%>5Thl5Zi@(vW#8t|vSnUIu1NGGo31JivA zW4=ie>me}OYUpTl0OlDmmpd`7k|cBpOpP`)EjwVa{SR(se!feRKSPAN`nKXPPa*e$ z72;NT2qex9+qW^gt(_jM;qxzMXbNL~ND_ykLOqR0nreri+nt!7k|b#;~Jl3f_qu&mOocK;L&lB*`c%JV;VR zNRiTX=A{c+W(6D8B#Pk07!H@X42DRNlUA_Rte{B895{0)L%NbSD}3SJEY3?cc)%%H zb{9jWi4})Sx19JswFBAL3F$_{IH6!(QU?M(8&^-;Oy)%frUX@ZMwf&c?cZ40c6?(6 zJ*I*h-od!XB4@0^WLm}jnqX^ETc*Z^53F$$6ghFjm z5Jfts`=Tu7r6=SP?{&nvbi}{Q5zK7=KpS${N=Hc>0A&zn>}7_y$H6@p{6Q-Y-V3wE z+p}Sw@F)II?7sW{ZqFqD$dMkygj$Y*+u}O^1hs`*{Ih5NGJo*>7QP}2ih_TDi2W(B zJvG634zDfNmoXE0vV0i4P!6I<(hwM?Jz#5ejv;-(s~ni&s}|-om0HY)T~jgi=n2=D zg#vjs40>}mtuh6O#tR1CO@{O(M%HjbtEY$sq=DUaINk`Qa~q9QMDKAcGP04cuB zkbb1t8V(JP6zL7SW?ax7-C>9l`DqOuzKmv92C6$2kV~};Q6|>Ip%XMxWDn#8cSsW- zFhqq!4TlTUc$yIY13mbDGWQ`vR7vS@7&h{E#O*T@5*h&s$v$R?8u>9CjzMMA3kUUr z*PY|)8PcEFj(|e9Qbeb#_ov2`BDY2ghw|g;WVjrViC9f<8KO;eM+pb2D~QW?1*$*~ zh#Ad{7(jeR!N_){nOB6It%Y==S{R~3vPKCFJDePZd@cau_XkGklBQ8mk1;fzY(N$P zGVc>Z^oXGiv_=U;P#gGyz^NBQEJ)NCsM8wir5e)k1w^VhLxzyD zF+wxGjH0+U>Mg59<1dwUU3=xvvW8q3Zl6nz9y;MU&jj9Y8My8L2 zyyR0aKj90SH{j)Xe}-6->|IE{k|T+mNky9)t{2W06$hKwQ^Zh%Nbc83pU$Y`=?Jb0;~UhEmrm^Q~dNRa` z_)f-mzO-I?!Q@c|UgUfjGMDV1EF7RtiAJd0Rv_wp88MH%m<;uwNz>7StV{vq<`Ra? zC#F;WUt3oKR%MxmuU!{RNn8O9MKQ(1gmHntdPXv*AUBXj%;j>~k?pc2YAkMv+lW*4 zVU}rAYG#V2Nmh!bMX5+;p8q@do@+Bb507#0`@Y}#&bMy|qrX$6 z3$jdOgny18rYXk+7<-aMq5$~=A_;i{nXYzCKp*Avjm|O|`vxHK`2v}tewly{$m^Vj z1fY+ihkPRU?ekYa64weOSG^m9n%K+FR4k6G94t2KF?4*W@eL;gQ>Z?THM;sf37P-5VPB+f#Twq@yr%0V49!r^ zBk84QhFc0@2CY_$@h{eg7Q4MLGskYm^Q_|pX%ay*(){lP{)9@5!zJ>-^V&7%vAmpv z+IH-$KxRRa7Oi~E(0Q}1iB*py^DjX;vRNo4>PVd7tWd%K(==lNV$rhZ1jq)VaPZnLnA;$SAkUEGir@GY4hPVF0h*c&YGAO z2<0iD?dm49d8!V|<^DhFOoc$@bwE6O2xLA!qnq?vxd=BD&AT~h<_XNA_Dh>hd%cCV z04%cr3JVb=7f1QPhj9UP3BkTBz6|zdJVo?csAeP>JtM1Flfs(OD~ql7h~^?_q7@_9 zk`8~H$a>wdXZi%%?xlf(eM%jGTzTREJ)5JJUkMYF?-R&k$WdwO*iE)%SA@@MCOrib zU23^7R7jPaucXxUV!Q)28%ZVG;R!o3V23Tli67C@vIGR$VZkertJOV!FLxVYKCR!{`f)v#jjXn`!lXLLh0si3&Xo^8_s1K{D4EK8wxN5gur zF~V664z+H6x=96MIjxI*IppbZc+w*R4_@KIrzfTA-XM_i;rMDCI1!Hu9@owuht(bf zwZpSu-b6H!XCef$5;VHwm@M&~5Mx(|n+s>&T43IX^x5&ktHNhgmni6RI>ixy=}~OT zGr<0a?>0^}@x#rIY!wJ_DuR|eLmrnfoSp^H;pvM}BL5FHcq%nOwjdc_)76B$7=b*k z>{HQ9Y8Y|`U(?gZs#t+MgEXnDLwM9&^#9I$t>=Vi;A=XgQE@_9?KIPMAX(4oV0`mA z(6-5fe%7jPkey9z#2$2c%V6uUDS}ZdWSZd<;~%ICfi|IN?_}RpfmB19nsZ93Jtcd# z4N<64b8*QPE=^$8Xtc2xfO>eku-2&Or_qxzhD=Ag)Z$Mk3gkIZ$N?#-MXAX}wshPj zCe>!n60KC}{$6~NP^hq}8uQCIvxgy$4==Fxpwy`4;9`9qdkyejI4!D9gqi#1o`6a zX6tu%;Doc;yHUxy-jq5e4q?_|xFj)lpYj%?HK4o+$(wwY;7f26!ZcpJc@ zKF@gvK7-S^f)5k$-Ni+MrOi#$Z(xfvP2X2B_AE}ch}ZZ=82%OV>sT%DR{*EBPR~COkxkb#JX)gS-OL&O=^mWp zA(_bMg|`trHOhwj52qOwj}pM2Z?crWBB)J3QC&kgCp?#quh zcIKE;V7KKsPo5K)@;e+)+kYpvFeM9Bjdm8P?>3`Gxl*ZM3N-@Scf7n+QrQ9q)jZ8` zMzDfuKKJUH_a$<20;I>b3F$Qzo@n@%M=>N4y5>=7jX<_Sm)xm!%~t|CeifuEnMaeB z6_8HdA-vb|8Fig$2v=X2k!MacH?#ejNQZ7dT-|Bn+nQbHHgzfy?^Ehnljcb@5qfx+ zXl{q5d6bWrBk9Gdh^L=nFD|6O%2c@5nK=)$vIkKqzTYj(8a2^w^ob50tbOqzd_nue z{_hB62gIpM;9y!9ABwX{wtvYNS1I6KvT$ogflY&*!(=}Gnb0(nE-u;T(R zBi3P{J_eDbLxP}f7|K;To(m#Qz711(n#beu2_=7$ne%|!1nrQ+!rZNLk}&dl1?gOk zMrRZV*vTUTc@w`=MM_5uFL@Dlo%59FiE|4WZD|n39x$lj+~1n`PuA`22u%Mc{I>9O z!Plzx$+W&?Bk17ZGVC1qr9j?NW0Q^E{h?F@r|OBq+<{cP z{!8$0bG~kWqU2!4TG)9X7zZ1L@y-xXsFQL%CaY#N-3y{s^VM$!{jTbsLKnQ*2bYRFLsL(z@ z<2ivGP@PkayJM;u;)e;w806(*lR)0X?=-g3!y}4{knWn^G%%|(L_?5v@I_(0uePV6 z`g(BG`XKaDK@hTE639VyAr-GjYfHI}iH?bYPiQ*^TjNCo($!nm|5;DmA}cef0pr4)oQ7IxZyIkoXL;!+#e}y*iv`^omMk z*$*Il0;#vVDUgpKOP#NKxJ$IECRSYx#b$in*lMI}1^2NUnQjD@Hzch+vZ?}w=D;gE z38euPnm?G7wBl@fa8JP!U`#cqGz+!j5K@}d88q7HrP8HcaD zyNUF1tGb+F^oXqCLQY`XIk<&Z zcA+6c`^Ktn&BTnUiZR_GL$mYQ!vxcaoi$it9LMHt1lUO>_0LGa3O0iR;9>u)`j zFnHczY@eb5%?K6nw*ZsF3kSOHBCcon9_T&=LtYpy@Y7bcHw!ECdN!6eZD|ibV2ohS z;4>Qh-2VVeJ!=NS?Nogl|0Z~v`A}&TI&98JG00)FGlytS!LVd!q%h8AfkGV}QCz`d zK=OHLt-oE2<8{)vSV{H3kvcIY}nw{qsK|6m7xvNMoNCE z(5_k4-T62M@LH(zeiYv6i~P?l6U=`g&5go6ZV7T9!K{8LG8(#IkrqN zzgyJ<1%`io;3A!`P++~bVD#)= z%b1ZUt^jCVTP2uVR`p{6wo{rJvj#ftq2se!Fn@r9WeTNlMqjbzrP?w% z82Y`%p!ZcmZ2^_5qXY^8r;4j%C9+FX63@+Rg@nKIT4)5uCUQ-~3wg_f(D7I&kXA^C zYZ1Z-W}6mK@L=)?oAZhkmrI)fGZ-bfr|;(urc*Irc>8$Pj3jClwcvM1t@C{vsTvtYD6uHc6-$iGs1 zCLgqRpiQn9S_gHr7&FxbhQt8U9*`M_1wtVc%z;TObLc~=OH3kj$mH}-gyad5S^t=X zzqDem;ZL*E`-0N}oRUw8^MKAKUBq@H=~#$J$YZL`zyOdsg0$dsNvM-L_5`-;f*H~R z$Y4NLekl;TkZa1iMJ=QXkieX#K{%5~UElk)a5{ry78Kn`wYj4HfmP4B9*%l87WM4f z_h31v+FexkEQ~OgCE8%x2cU)@eomC>Mmkwjgd26VJWR^gku56Nnv>9d3A)KY3WqMh z(PYRyqQz#$)2;nP;M-hq;X_-xgFt0glt*U+ZX3K|Y#A+p>4szKMHj0DJD(+Z`Q%^- zJztCir0$YHyrGNE%u-a4r^~Z}t)SR9V?gMBMZmOBq!k~9{`b(~G-<_rlyuYD4bv%d>Z0*O%Hxr{w{HrBwnJ!Xi2X|E(C9x+!_QzV%YnM(@rS_u)Q;IkujnXN z90A40p;*#3)U|@`4Mi$!&WbsupsE+avh{Fg1S-h!cEahS{N|uZRTC(`+MskWp#cOs)0@><2>n5z)x)gJIeau$H!Y(lEsiX{ z7~1OLpW3bhzei1&3;zT!(RE_OIDq+=H1kxtUA{&X?~NJoT}tjaY1; znp!$mW&O|bIUxd}O8=UzSDl+{bc#HU?Q;0bQt^ZSsp=DIzWO8BAU2{Ha|hbPM7(87 z7>?d8_}u-!f%yGi_17m6tRjQ+MCH8&7_T;A7Lp;k!D`l%MnKMbh8){~ZUW~Xd)**G zfRg8n96C8OeoEjieW#!t-_Yj9wBDjgx(Dk%8W0p0G;YVKDbHT=+qOR>_MtJ4CZl0s GCiq`}V<08~ From 6121f8b4c83afa60d5cf837dbc254c72fe2f6ba9 Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Sun, 14 Nov 2021 11:01:01 +0100 Subject: [PATCH 4/7] Marshal First Update Finished Help File Added Marshal to py00416standard_equipment_chest.py (used fighter starting equipment) Added teleport hooks to sp_marshal pys regenerated co8infra + tpgamefiles.dat Minor fixes --- tpdata/co8infra.dat | Bin 1272153 -> 1272170 bytes tpdata/tpgamefiles.dat | Bin 3767559 -> 3768517 bytes .../scr/py00416standard_equipment_chest.py | 3 + tpdatasrc/tpgamefiles/mes/auras.mes | 8 +++ .../tpgamefiles/mes/help/marshal_help.tab | 55 +++++++++--------- tpdatasrc/tpgamefiles/scr/aura_utils.py | 22 ++++--- .../scr/tpModifiers/sp_marshal_major_aura.py | 2 + .../scr/tpModifiers/sp_marshal_minor_aura.py | 2 + 8 files changed, 57 insertions(+), 35 deletions(-) diff --git a/tpdata/co8infra.dat b/tpdata/co8infra.dat index 5e048f7a6b5d0fabf3c713ad7b069edea8c00b96..00e958ccbfbc8b0c690d65332176ba4c88953b8f 100644 GIT binary patch delta 5147 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 diff --git a/tpdata/tpgamefiles.dat b/tpdata/tpgamefiles.dat index 6b5f430e43724e510330340ba57aaebbb9275727..4a8faef4cdafbd1fa41c2e62bafba0dbff659c96 100644 GIT binary patch delta 34682 zcmY(o2Rzr`_Xqywt&oiD8JTaR%y@^)5~Zwc8QGDDtnfy5WrY_at7L`Yb|Or?N@Cyup)^Uy^BbP7`DfurpYA|eCfAuR zyBjgb%SEgWswo~kxIjf(CFy;hIqjlez}EE-YZ_@^YlS8^Dql_LTz^(}LsV zYiKs#G_vD%uOxh={UGW4*LQwuygAMFwuXL_%ydwrPJzquv-SHwOVpjGWb_HCBlT9c z0Z*oiq<4I}&5uuXc&)~Y4lljz;SQ+3E-#&sa^3dY+ctuz;5Tmkz%5GBGBu9l^JZ>m zE1&Cyc8iiy_PB0zGV_*|Cyl=vH)nf3^HZYY3+4L}xnk92fx+VOX~a&z}?=>RA9VGmd7 z?6VIqx%rIj-CO)|{jXbVtlQxWH0C#IBttW%bYAwjxwU`twhb7S7U-~{%}iFA2<>s| zf8(EbbV{@1f1qMWTOZ#4~{hbkomC7;Xri8D!#D;79mA-NVqnf6tzu*L5!&YZt# zUCv7E9;0-6!ec^=2jxWO%;)vSb;*h=vtIM_K9+$F+%gdXN|Ba#?>%RksZ(CC#XHEH z$egMB`GGA^Hu^gwOI3!=j30jCLuD_&txT7HmR}EHOW+5&%-)Rx9=u~N8(*JrX1thp zcIZk5?Xyrjh7@@nug=QH_K95?O|6;ASWHS{%#^3`rj|HC@^0ViRkH-d<{-BWkCtVT zRF+^8W2~h+!3`rZy)1I4(pU11g73}Pb$5@i4isH#R~Qc_tF!NDQt9^!3$PWNB+Piq zInDNkoo%EO2;cBB%;Ni?DH)P2EYO#;Y>+Y2ZlkBpJ;5nYu(a~sYS$KM$~w!Q^Uks6fcw6mx@kZr4BiEiaGe}xA;$iD>u3ZPh%)z%%Z)nqc#Dyws(@`u(Z|XH_JhPw(=nM>GE9AkEz)5$sa{u&gV-$lu4Nx zGi0aMESM#J#^L>C0;O;O!@rc`Gp(K;d=Jh%e5~ceB4u`sfl8V|>hRg>_~8ea`TZN( zRuq}%cj?6ohm1os4O#Q$1S!+s@&A$NPotN{x)oAlOB4AjA`*`$t=#%HqnEBlhcVqS zf5xD8XG$KEk4yB(roU>XtEtLb;+4{VxUqLv_+Si0u(h3`M?b--ibX0R=wQEd{@-8q ztU~&&!DY6B63N1D46SThl;JY%H3k(j&PDpxbe>GbXCl6d$jap$nvVHWt9O%9`>>v1 zLdfgy;k}gnO}#P~E-Q91+lAb_(Owu4V`LYm`vK!~vFLrrI~8XeCpRb4Gdg`^ThZdr zjCpx2T-EO^{LuK$MUYrw;V1QyO&(6bU8h|%J}+jU{?WPM{HW9uii34V&J2eQ#jIQV z-v_g``O+kJd2tTe>yA+5XQ+?=9Q5iCYciMcdDVTv#Ri2dl!bQyS$7ECGTERG}ksvG`!1@Ea0F1;0f(R>$TI^muohJ>hpG-Wi-R%V|K~M zzbRU*Qwsdy@Kz$*J0^U-N?mLEwvLAI^+U`#5l>lN0zVh5EUEPh`Tf0b@#NcZC9f~@ z_HKuEscFguY^}cCd5s@J>n2@BjAzc2FecYWQ!^Gioqu&;viI>M$sPM+Hj_f{wOg~@ zs8vNare2&Ms&3Z}G!`b9z7LzPpKall62_1XigezjnRuctbeWnY zz3jl_wl^`<6FhGlc@s#CQgV-b@w>@n$X?O+l{>3eF!_b;%bW8L7Z;3NuE`n%MMNn| z%N+`~VIez~RCzezu*_X{w&(VJxzFAm8d_EQZkVJ0*o>9uoJj3wC2c}OXd{iHL~Qw5 z;CPL3Qa$cevuJ9Oi3h(DJA>kP7nRbXwlhp_3qpP(*k0zs(C3E^Tq){Lmhfwl^7ut{ ztF(!)=Yd?M;_Ev++O?nXI&(5ly!aiWqvI4RbYAtiCx{ovM5C;XL_>Yi<$1TW4_63dpsqhpr?Bs@A*4_=SqX0y-a z{+IJNdh5xD!i9U{8qbWEuUI7{2#D6_+siAK#)X~wJ_KHG9tXE9ab|P#rGh+H>`tw6FG>CPLe`s`HYE$8uV-i!eR{cL>$0LlYA&xG z+N1CC{9y6=$%mNanI=h(l{LZ-Grm*IKH?f#by+#&99qh+Ij%@-ov8a;)~z6_k-_nU z%-2HD;ynLpUzKgk*Nks?$axaAvmJ-HF4#X3iFU<^%Ix(m`v@*ox|Kl?vCX2V z^9qr+5x*WJ`OwBKKS&c;wD`4a^?53>V0Tlw`t)w_Epal%7uE6H%$+}iyl+3CZF+m) zV|iKC3S$~0(*@n_!vWXExU9U!2xa9pVyB&VUnHa-8y|hjw^cQ>x6??4tT65_J|A5e zudMB%pXz$^-0IQYOhWn2kIuTTnv|25=8@8KtG*Q+aV+;)XnAhS#C?{HLug;$qK!l9 zR(*$kH**U7fOFGu@&!+6El{7pdM>xV8qz2mH}-CplrV0%p%a_IKA ztPAjb{qTD)N;_AXy=bp#t@G>8W6kJ4F~Rk7`cl}`F_!$3_dnmwI#YjjVhPpdo}95cUniiNMW?n-bnQ_KS)snZ2M z6|;vJL}c!X4b5azT1JC@N!HTJ{-fgguU4_vFx zeNgGi`7M0nV{DV0U*gTK=D)l}r|nxgnV9E4s;oZ@580JJG3(y3DbrE#NBt)u{OV@d zA^D=GG)wxwOU*uBe-X=ge$w;8{fX!$+l%U{zcjkaKRtcadv($=I_7b#>6#kHsq|3y zykq(2X&4=Xt>}0R$>g70ij@z17qUC(#IIRa-E6-m%p z3~G)!2$m&rnSSyLP2sqrs@+kQ?5du#`Xa|8KKnQ82+PrcH2%pnYld{Kk^|`}F1#}V zU)6t=o7}xCaW#F>@7Br3J3jH9$l*)PB5Ha!jEB`8xvA5zH?L0eGJAGlsTP`k5o%Q$ z@30pqFclw4vFl5_TF_GOp678SQpVCWuFYDFNoKIJQOMbbZeejOh;gx?GYdO)!nnpCZ# ztp4o4@oxT{(aZ#rp>pSw8m#I^kP*It>)Gi@Rb0tBIp zKgw-0c1GgYpO_wP_41)yj}*03QMytn9(Tb>MN6Oj*Xv+sZIw#uwaRy!D-|EN4Ng9F zw}{X@EF&&(_RIOh_VT8zOQIB41FQKP*+`Gh3mrPn(ybPIDza8=I#=WUeEuiHL^XnP zx00G%_8Gjxk5b37#UEu>9id#Q0oUr}B_jv>{G&WZ&${ZEXNei#s1SX(;l%#%CSTie zVcK02pUGZF$y1JRgi1@E&=?xMtUc^zo-Q~b@u=$4WVqtAJikq#-R@|O~E6D%6SQ#BSH^oH$kM>ee?G)o}r}o`` z!qSG|)27YllqZmxIw3{`2i zS0MkZ%KIIb5p8jAV}yGH&EAK#F>97a{C?K1_+v6}_pYvfSlL-4j{u7mCJav)?%>t>!UQ|NiLq zD}?5oP}SVR_Qx-#ZIhaZg;~T`ukjdPEav_q?d`gJyEC0C3w|K;gaQB99R-L&W;(y+=bp_0Eb%0`aX ztuut@yw909jqm4-GdiAP8QtxDf4NlPI2@Mt}%4yy+A#9A(Gw%^* zH%!u~!rl3ib}O9vPt^y$tSLCx3h|eQ3~f0P@r7T{qZB8>xN9ZXx}IwJW8N9d_Un(b>yeW?*}xP(Fe%x zuK|)Qhd%GT>#A0fhc8xN*~GXm*EOAfl4s~mO7`Q6?%dS%AxZrDxZ3QADTM=f4fA`c99EA1TZ+GP< zvhO5a(BA#y_NOW2oR-ZP7tLnE+s3LWm!iB)Bu~RmJ!RzYm8rSfH}4{k&g?vq;M&Mk z+8G)ANz#z3%aZr%W%1$hw?j)CueirmN5|Fg`QLw0!_N^;FuRz#1M}YIFViT+c5TKt zi#EiKn8zlnT!~ow@@!kY&eCyc0{i#LB`m|==rcNHg9)Pww3A1JH0ZgqUOre|3GnG| zy6LYh+x|wvPhUauO|qhRrpNB$uUw%q@wkj(Y@ zl=a;@xAjxu#T=pa?OV2yw&axDOk1HRcPXx;5IP9LfAE|DBWT_HS^Lo8_xu>M*@tcktGC-f5?j1kS*}c0&^P$~WMRP)X`M$$Hfa+N!T^Vh=V;4nox?BgXT93k7K)2{YgGf6xmooJ2Zj=PC70~J z9iBeJsWrsYI7y?=8n-@Lw?(=c{9T>)wtnD|=)f;uzAS$^ffrsob;PwnbC~zIpHD@` zjHK4|-Pd$Kt_eH%ZOXaB@=jsvh!)n5bGDj#0-<8DVnYA9R zj%SW%{+;il;Kd%`cQidU^Z4M;Wz8Z5k)cuk_PeU4y3uNv+9qgklT)0Zkb@U&CjRSs zm?!O=4YjMm(Sd--16(tvQY{qc%Hk(&EWhN7c3-3Zvtkx~%ObY?rR*QA(H2*=eC^A3 zgC4ja@rw2Fq4?7=)fe^7mWD7!_)I%B7!}*PqEjAqm-lz0+F_A1NjkZ=%_g6!%RV*b zylCyopx5##oYE**jQO1H$FI@{Nt;uJBec@5Hd^GI*KCMaGH{4C**Owc^)FSS(c-73 z%%dLCPv`%ttf&;0{gM?|`xJy_yZDwl-7fTrvy}aCs^5`Df3b%#X)L~3D+GL&t!@zc z!Vzia=zx%{2?NPT7eC5ey^zoSFZUmlcGB61ts_5QZrJ;DO&R=rbSLMV{rh#924_bT`R%bq;^=aWmAzfBv(Hsk6? ziVDB^7ua?a$ph-2=u=uuLe2*LB|W-7J1KoqXvYT@jt17Wc^x)Of@mc%vhzR`f%<%tgx1#(9`Z-jU>F z$Vc{Jx=SRV54?8j^gX1?vwcYE_3fuaUSGc(A1lOhxSsRcA$!Io?59fOUvEiHs3bHw zk&tNBh2Q+bW^4AK=jPjzD#jcwIZ0V9K_PEkMqPsv#hBLA*kTE*;>~gusnL%MEy^2_d zyx@^J{^C@*A6hH}Ya=w~wjZb19cKxhxH!RkG1fo73$3m8S+ekVd@U|EGV%E772lS> z?lpJy?ekjUK40mUU-nBk)=PfGY+e>PE$W3XPD5~nlre&YROZtv~&ROgs=|A;8 z{gLeHzHl5*Zqj-?qp&b1zeTTb1)ml|L5QdoFTaQ>1P-_6v(?Hw;@Q|n#WCOp^o zym;d=v$svl5?$Dz2Y;xC2Q}rLwhJ$~yZ7hMmOYu>8exp=9EmmJM-0v1=QQ+;$+24! zlF3Ri2MvqTr-wW4sReHED5cZ&raoT0>`?kkl`2_bhwjUANMYgl@#n=gou0aPk~SnW zD-ABb+hbRAY)TJ{OpUKRnR@QCD5n_VUQe;u(8!T9AvOcAj{PHBx*niqdF!=)prU{2 zy5SsiHKmzfRg96U^xNy1AMQD|9XU{Y`TV2AY_r!5x?d`820FiQ^#AOYIKdN}eA;mO z%vm+b1I3jJwdCUsH4!DZ^xO>}iaDvysL~$j_O@r4%*qzM{zNjS$dej7hGseH zmrhG9ePui}CnGLxqt96#9-(1N*|ME~=Ed1Jq3X_tXKkICcIggvg*q58|56j9M#6R~ z&NVPT3kk6qbk?ue%O4PU92BZsLL*+p>9TmauSk}oV)gUT;dcl4Oi!pBOK4K!w@uH# zKu{B6kYyGVbniJx9!$%NgbR=<>&ksjd1HH4%JiCs|Gz4u`&GF|{i!I&6y{WTm0ers ze&YCBrk%SvzXyr$ys&GQ+CCWm`0lza%4$CzpRCq*_Uf#Q)kyA1u#1 zLXsC{UXF1l%GTSCw8{#FUX&cW{}&%SQK3z!T34T-e#*QcE;K-y^zT7!{o*6zLbtcm zzqu+c9gX`dY7Pl=(A>^wYcYA8u+*VVLS65s{b?OPThf{9Xd3W9TRPqCIj6D7wGD4m zNv8g78LKRLduQ{WEE89|_>E%!{*M}dk7Dd9?w?aUtvXsSH#nAj@d_t$@x97;*!Ss+ zMuZ6qj;DvIR=tnZs}+g3-JyFra{Z=9?eS_~p*R!@)apJ)`S)+ZUWxzHeBUF(lsDiMQ8USv8nh zcdgV3dHaUDs8OCpg+5~NPG9@o^}a|6E4?-=0+Y5*@^*?FiOiW9hAFIw)tuJ>mS+K~ zUfE9Vu0n~8Tv>)U$6TfF{86*iO8$5%%*WDZBX)J*7(aRIz;yUy!aZp;~_Qkc$ z(-{QrCl@q38zP0|U8Wt6b!H!G+D z9_5t((p9zFRSxDCjN3h1Xi{Bxujw#kGa{<+g5YNe^*8MPu^!pmtD}jZ+H_|a04+s9#mBDBi+qYQu;a*oBO=iyi~kIHjDJM<%c$( zdxr?Ica0u|B$2l{t^Syf6OO5x);oPGz!h8Ywv2u9^z^~Sa<2%(hcB;RV`a-f!TxRO zWy<`@hM3V-!}^NJgWFaKzM=KT_3W!&d1ZvB?`~|XalO9o=Da()v5?MM``P8w!5UVP z+`IRbHtBLk?h~HB+!Ch3Xy z-MvK8!a2`kd6*)>T&kF_x)tAkL4mIM{_fK@(Mw&M4}M(VnPb**DgC^-VSMX^*9K#My&lem zyk|fsZxCVWne_4s@;j2t$C!H|bSXEN^wOiOV@&-qNhhBNGUFp@PI?aFbGuyLYzq3Ks*bcGAZp-Dh7vf0}3w5w_5p<`+ZDUFxol$c;we3kt+jI% z#PGkH?kP^#|9qZqHC1vi?ygX6nf_U;F(4`FK_iCV@yy{Ya`B=HmaZbEg=F=^3kOm=!dDu2ix z!K8LwnA8~15&to|9cI6CQ*$9&d6sGD{-s*Z_&MgSFNC->PUPN$*FSEz$mr_d*0U*H z736H#o)*-ycOMP=o&IFhouhX`?)j^10mqM_h6e}5L{+V$kW4S9joux*-JVCOFPW450qa_z5br*SUquw z?Yih5?f3_KW8aa|$X|#whz!WdnqP=)qzJ*_quaTW^G?a6eb3FE4*YVKiP65wqwe;c znydO6VfUy47TJyD1VL$dX#dMLr zVHxUtf9%&UJKkih8htqJQ=wH3+9mhDSaF;z%b3UT+=n?WO|GoGkzj4E7Ro=VxkvL| z2@zL(gQ#&*DwzXeMHdBeD+)>l%_92hI9#fyYX?OSUA{s7vFAS=B=(9dGavD6-_3Ka z(5O+BC_9_ZTi2Pm{n{lj-z#5-QtssW?Gj`9pYnxJ64s?6QQX8rQecfm1yAgCK4x6> zQ|gFS@6yH^u4S?Y;pew+Zfl2KJzsiH`qv-*J|U6~_oO#b+1G{}oEQ3Eh*4PIy^843 z5S;rMK2;|&9(+%g^1l4N!sr1rBWfliYKD|Mni{50rJ`?T(UYBt>6zz>ueiKk@Tg?r zLW{j(OTKRH5a+3&7QLfV6&jV%%Vqy$Z`=>seP+AK{d4&c9h*Vu%$&Ym{^3 zJ@b{klXHZ(T)hKkNiO(b?#i~=?aXV9$oC5;{N_1Q&_Q5BNcIt{nh23w8K-wm5e|&Dy z?Nj2`mk-WPY&}`%*dCuUZ@5R1!6mWDjiZzlP^a-cXkb1(>aG&psI+)n+@K&lfLxJ( z=O*E9(d@$TFq_mE=hy4+#OA|pD!09Z|4D3IRr{nC6z-4_X*@HNY9{TJv-jf<)gG%h z<4?}0`z$B46`A)oN}YE%PyP1(QZPs;`)B$OuR$krUnovOrs+cH2?3;RlU>*}fTy`h zls`&6y1qP$TIl$W`iko}3@zO~mxH%WZg@7i66(UojGb6(WrLBkY%#0+S1rl+Lbbxr zG`QgZW;v#P%9jcH+>vtiiSI8HlQC{>L@b(P_jyI+)5qshKdt7jN}64|)TZegG1tS? zY4oY0+@*#0d@f!pH)7K7Rt_Pp49{oPze_1SW#*#O3qq!c2mP?dI}m=uvDXVSuaZ=TA`F_hT{NRey&%kS&7=-!*C;ACt`l+=9oo*XlG78uUvpc&>Ol3Z`iS_2y(hD6{uHD4 z2k1frj=N!+O4XRY`Qk?<gbIy>nhum^>-9_eH)N^;+O9zc6vJ2{XfcB_`khuKbgX zB(VQeXSgygPNuw(trc(hp`{v0=!A`TI(X<(-1b)tY5B@$x{k6_pChu)uX5+Wfd)ZeT^YXjn84hz_ zs`;k;aEgRcE8IP9w|Do-+}~%v9Qee}ehK01z{sEL>i?>`mDgW_uaKfCPTk@*aCsT) zJF;YY{l<5suT}OGVb`VL0N;iP2d}a`>sCivrZmzlVRDz7u{hd-Xi?Wld5!DzCVgCg14B z4VXRcNGvRH1v;dR(ho_*BAvoWtICsx%;|eoQ^n7aCpgZvtP^yW7S^T7{@oN+c-*s# z4|>%W|50H#P2$wAp8H0huh7lCJG)Snsp?c7vGX;*{IlVk{;umqgp9T%>HcD`E_(Wi z(O0*ZsN1lckD|y@W3CMP_DfZ&vc@G)?KIkM$=n;__ zpqOsoxH@g1WjihM)3U%q#31)pMThjSsfDw0QGQ|4|B}PKTR)jU^{Tf`#H17$rTx|w zsGoFw<8E_4cRS7G(JSV%1f#{LF+(~G6&gpdV^bs1QaT5)Qr4R+US!R+OzUEguC{qK zv$1>XQCOUa#Yr33=Kj3sxHzB>lGzT#?|cc6er4=_1`0g1gx-Jyd>sYFOuD zZ|?oQ?29V+&kB|cYW#$e>F%@SfBQ9%5iuET+i^RNn>1yzIBcNdv$ZTPjk=Vd#nb)I zxqRLUuIs#iVAgPFk#^-wjkIXBLLIv;`HPVyjgNBpBIoTbxGI+tY__d{_C9kN3sBacUT;G{8a=+A^ zQzS>97O{MEsY;T18MH;?d4p1Tv7ws~qC~^MI+BFTt8_m* zP?BTeaPdZ^B5e@As`Q6Bh7T5FhwVr{O1d0ZsV{5$_bUAErprzZE359&jZ?ZEO<%<& zFNCYAH!<9z%w^A!KP;j5Cb>AQHsSez^BXrs!gc$P!P#f6zHppPwf=@VO}N^?7i@8f zbYruzJNcSRUW(|IxIr%0JD%+NFXzRhw=T~T)Z4lRl5mL^NdFBMMi{dm#QU~ijSdiz zAn#R^c|eo?w9)HPjDXDHSh6I#ugZBg!A56ry)DX%rh|Hgtnr%E$7{Oz3$*`o-Rsn4 znk|3rI#STy84tJbNauZ~oW3Z{Ar)=swG8_0z>mIh{5A(@!{48qlp| zU#n%EZTYashU|E(Cj0Lng2V0w(+fQB-KCuJl(XL&mfaYCmGa#rFty5U{6iBqX|Z*+ z`}b4HLRow-S73>Yzpngzd=ghY^9!k!03<4QCq*~S_wTD0ej>lTQs!k&HS%?PZ}7e1 zr0MUXo;O&2qGvR!c}L_WuZQObVTd{;e*XQi$iS`7Cw)#dq>VKEoi_1V{%a@knrp@8X--4}dCINhTMHlSTKYGGyC-I2 z>OMNON?195zt6N(fK3qEyzCi^zb-HlTe3=id!^p{U+as7?-b&i2}S?zoIgR>_IG8P zS=$xCN0u1>44#aC-mKEPaLtNs=37~kyUmZ zKX|=KV_p4-#Cwn3pQUr|-ZwI@b`IY>fLFX7TKKd`z~BJ=e5L|z9}mtgAU(_@tln@# zMND5r)8kF!yyCQeiU*sN;cL@(p9tLaEYj>>%RPfqPCwD^joO(s47osI{Ji_ z>_-a^9On}R7yS7gF@=`|&;MZhlGBIJ8MX4*--V2CF zc(?HnzIQ76eSMfSzH6TLWV2#J`_%&qQgKg01GU6d$sOFS|IH5>q)zFiHGE8SAOvC} zuSt)3TnLL)C2dNxJe7zjZd?f7OFHgEF-L1`|GSma#*Ov1&VhRzyp)FO`X%09z9neq z`DuRo(x`ei?`*?;4Rt}AkJ(hY4&n9MX6i?^1Pxl1l+tRk!Y4TuHl1W%SK1spB~bj? z;@TOp41P`y^Qcx2UBNM-qZj*Q69cyivejIN&$MlYeG^{fpn50jeY#>>fPYVIwYTXo zOYQtAp~<2OEyEkE5vIlcVo^IqmR|~^4eBUEY86FJ$&0mY-J@;lY5ObjNHKQtZRV0$ zGjjjFwoL4w(IKS=8Rg*?%Z~oh@`+R7f0QCvQnACQJ@YrWJN*df9gt@-qw{L)9fZ3N zb)1uue)#3+F^Jx1pX6f-;#}&oiajNDJMCA)n0*vhdJCUHEx7gcllihnUdi#Vj0P6P zwnuFY$*r%^8_E|yi+^u_&Oawd2hT^^87V1Lw(EI0NT_S4i=FJ0$J)dme@-l~&*qjm z{lpthnO)wT+Ig|)tMfL;TloF15DFP(|2ZnDvhKu*^qv!|w~vo#vs_ALq6#DBWacpN zx#D`bqhl{h>cx$7n`KXDYx3s;J$B`!sozaUws*FL*Rlz z0O-JmO%NVO3Q2=WOh|SRgfj$gyg`SvVR$D9Qbqxb$`Jt6!b~p$td74Rh*T5sC$Uc8 z>M{y=00;&{6u5OrYcRycx-5h|48|*BXJO$H7$OCNDFk$_0bC3L75q;jBq9V7hWjCc zRD|G#uq$_kkj6@IWhDg9fGv*^Ldx&J-#9{HXH+21ilGp)6Auo#8H$(01|P#A`6yTc zFcOMCj>Z2sgZmDi58JpZgq*ztq0FubA;EWG90T^jq5?K`4ID>-)1nX}76!lK;N9gbJSPQuU>3UmR8L;z@mpl+am2b8NKU@z!k z^=%YH!7Rl{07DDl4+;t(74K1y4LTH2089XAM?p>`?h}K*7X`taaN&^BD75zYaL9KQ zWJ4C%q5)X*;t-u^{0Zz31Rop?=}-ZkDill}#UZmO@a4oIoG}1~V3uwSWWof@2gg7t z5)gL-3R1O&kUuCWKaE4=?*hOn;1J)tu<_f#yg-2yfHf4f$>9+3djL}9afs_ZP;NYh zLyAzqstk*wKt&0M2;K)Ui^m~$_n{Qx6>&%&3TnafHxy97^kcCA+<~!vaOGqY3nU0$7~{ zr;aD$m9W_`!wm&Ike9MV*n>%!F`0;$z}7-ZGCTm#4cnuEf?4pz4+Rpi2PF^S7&U^M z%P7Esjzkhfi3iWzP{6|lIw+t6JM$>m24!3_#2pVqb|`2Akev*bCIOk4LO}tfUL*yt zj8u-t~A6{~?ms8a#p&fpOJRH#M?H5`%x z4Cz@oU?`z-4u>2~1F#LcS5e>&y7?$*1l@TQw5i~b6X^hafw_qS3U%-T1+%I+WG5XG zrU_vwJOoe^y{s%i+M|GXSuHgWegCC#Q!vq!tC)0CqB9&$69~ zJ0zcp=fdiy;}Ekz}7<)lp{E# z=MikX$$w?RkcB^nbx*?~a#>IowGgRK7P==8#S0XaLlV|eU;>O}Hh@Wp^hP$Ei)>&@ zP@oIU911XyL%|&M$N*!T1In7fUrDiH;m#&C6@00UqF1+_-t*mD57 zpzMf(NdQltgJY=xzM=pJI$V_i+VpXVDGJUt03GO@t%e~yI243}Szv0aq3N=ML$lS;Sv4Vv95nz;Aa|E) zpu@)l2u6Vl`1%|j>V^g|g#v2;thF$NfsCI=K`=}YsD)=p?S6zzNL?-X>jZxruEooe z!g@zu!UHB4JkWXxeR2idjeUvsQn1zY5*l3gc{rS}phLC6!p5&aXBL=@SD-@&)+b&; z2UdaD1nNL}TL*_Y*TGN$cu-OY-LMgw(o!AFDu*Gd*YJL0)r7m~HRzN>0QIk7RuoJp zsfQ(Ifl;rAA)YK85>XG+G4Midtp^>63y`%2&?z_yrQ84p+q7^t=yeM@lyC?}MJjU}WFqkGJ zq!BN8q|F)kKgt?-PZA6!1*vVsb7L_aqR2=i{scXR!~VDlOv8gvQX%YbVcrVN19i+P zqNpNzZ}F_y44CKo7B6wc-En_jFBXH51>62e>03Pi84Pi`I0+1fnihj8r-{HmSkHJ)MU@(u#5U=<6ll0c6`+O#(%MNm3 z$b;0q$8*#B5_4v(g2B|XVlXd{A&c)J*JDRT5%Old72^p z3?>ia^N>dZoAEgMV3U3GCm|_2umqzLQqzp*qxUu2=b6|s7*{9^8dYSm84^iH)DNVF znBf!7Ukl-D!SmB=5_whNU!z}lmk`qyydZr!(atMa*9G`SeI%g;?3tc18Y>=Bn%ybygG z(Y^zuG6u#vosh?^V2Aa}{<>St7)%nxY~q28wnE`V5&0z0l?6MCz6e_z)Ws}uT{Wn| zc377;05NL=``bi)C8!rG&|eBh9-urAaosRjm*WryqaB8PYQqcDuMqR2$biAjL%}-6 zBIF;SUTTTF4%qPnJ9^2;xet(s?*HNf-9p%xkEsaZ1Neg@@=D4^N}!}~m@1o`z5FG@c|+^%-8-vf5el_8StkWPHszMVa=?*csQbL2)l=(`jB zkr4#jke)kLNJ%@Cp|8ijz7?c78Pcry2AOWhOVGP}?( ztkKklSbl=EncUphm*xZeP%37fNXjSJmUtqM0p1UIh7qLe6Zj+Hwy#eI@p3@C_ok4; z9cY@}_jwjbr!}nmbQZbTfftlkA^NEg@%BMnZ=R{OQ2s>3uKk^L7vkA6R|9f@pN&Ptg}>?(>zv+W|kY zh9q=?zRCH0{uy|-0=7@J0rwjOlARl&+T9jWQuKNPGZP4%9MgDfdx~bYkKY{N6zV#1st{X2$kGZtZ*8~3# z_@uu`d^hMf663-GUkLnzJ!GUCFH28BwBrnXAMlF*5Z)gAX$EWJx>mrq15b;QLT>ip zr5Ny9`wLtrP8flK8gu|hjMyCpKEsSs5-H?Q4_=xT-9Ph`g(DUf*>!XgMxrm`a2>tkzM~Ji!(8EAqp+uU2 zrVr-dSHA+=dltrI4sVy zn+|D5d0g24pWmfJ*al(U?ZE%DgW4ZFg4m<{~eF*rC#uFc@3tg21m2L+6@w-S?tf z27@6$dl{2L#75wr=aKkdR7{A)2wsvtinu*y5JxxIHCINmMxb0~iT%m|cyxP2Rgmcs z*q&M9HY)?)3p}|hA~On|qMK;vBJfkd533>sl-DJ04|-~T0^gv9d>n;!Q;B_Y9k>dR zQgwuS4ElBf(QEW%)~kONu>#}~LpQi-p)kHBSt6l);{C_h9j2|2KjrtSQB31F zIWHh@zkokZL_b4;-vypQ8~OJI{O=~lwF~?q5SojK$^@isg?NhJ1IGr!dI<@gfV8m^ z{d@y9(m^D3kmd=nLr2tq4%}Ukb{*v4Bvg7Wkw^Vc0x{A>&Q5|qnnWJ;u?S>d7r8SD zuQ6+)|F3{c21(LGYA5l+s@X*U-M|+#*TVWzm;%7)32TDiaFb$eZ`ydeE4!L*M_g zhDhsII12^D>OtL10qHkN`G)7?(j`8H(JQPP=xfIR=j8_^~_>eg%2`9qg|V_5ZVf-V*uq9d^&jcwZmAuF-XMtq_GD zz^4-Jpgb9fku~D~1JW{Uu&k+~o6$TPXTuYVQN zYY6;hTZDfKs$hkvZvosQ*eSF_OsC)u(Ion53_N-glkJhLDfl*$Aa36i;G#ji9FRVg z4<_j zmdpzferM$AG{mbyjQ2L^uK+*nj7(0WWp;1hP8D#GARn$FtTXV)qa*r{o+?TZT^Gb~ z22OuD(T)Ic&p_YQ6-h_=cw&D3*)dLBfgRX!f^5}^~<6^vtG|qt?9I;N&4$=ksT%HKYJk(FN?!G@lp~Zb3eN&?kO37%%XC3<05YZ0$ z#7E!YQZY#RI{42+jF%I5^xl%Vi)^k#pVTGp<6GeAL8k8_!oT2O*N8OwC9($U+xHOb zU(jw%h{p?UwP@R$zmFt=I=%bCzB|Iu=F#_`M=bK`7rY65iQ9;lR2InlID}yXcz0rY zQ2r5!Z9HPO0cBD^fkb7Hj+^yI4_5ZupqEnIfE!Zwy;`SaRVGyM#iUq|2Vg~_T6aguM zhA0{f)?k8O?AS3jY!OQoJ61MU#1hmb5)%~@qePAVzw2DW@BDKz$KyA5zIWTZ@4h#) z^0?ls$(!+Vk8NNs(#C{^azu+f0|=q5SxZd_1u6xE^gL z?R(&9f+qlrz}0gL`Mu|IBIR&AczAi=zJ(UPhaWWmQ?B@gV9r*`XWaOk8W)cHYsk;r zMsMFEj#=V258#}O)3=ku2gKc7rrj#wyu=L5p~w&5(Fy(#SPNW%J810(@TADN&cN8u zlfR?uA25A$MV^=UbHH79QmucvITkz>_}{?GcarD7n7)C*s-B*}c@8|^MRWeeDNL5^ zmDU31=KjoXD*Ts^08gv!3HzCs_^W%U&PVqSt&FEsob!;E_u{>k?Q1s*`{dr3B0jn| z)#sd4<+wH5h--H)E%}J~W5`$W2t3dEJ#Zi00Iyyr$4>oyj|epwLWjf5yehlE;g-!H0Or(kri(g zD}A1*@&u3$m+euqtD;zU@)rDSVBG1tAFFgB?^Sr85)~5>6&{ut8=s&_|D%I?G)`3% zgWf{&ifh|9xV(&N5tR~4nbK29vj2gdbt!VhF$70Q*0|26^p z8dr@I6joJfs}B@g4gp(*EAs@csH$|-rwh)TQf`MGPSTH66-#}VjLUP5-E!+BRj;OW z&=;Ig<5R&iHJ`kyK|bfDs%I`_vvAcpMe)_(!+ha?1Z*F!O{ZvYH3i!j;VA>gt@6;* z^r{;4)QDXNfU%yn&X9F=_@PAVDz~cT@tR_+~SK`Gvy$)C1ixgNB_Lhr3 zvwSzjW{64T9|PNu>%bK{R||g7ik_S&oQsiHS84%!3w#yO4qUox)J=vWxkfQs#okP`KL%(uuD*q|Q;Vpl%PPVna#C+D_`9|p#D{cw{uFz$U*#W@>T z|KYdjRvlzv;2jm`Y~zOS^(|^x7yNlLZbdfCyG_08!d|23xfinE;%a+`X4OTO5Qjl*}93DXla&ZFdvuugq=++957 zKLlrcwQ;;#LVoo*--XcyPtU^BSDsNa<0hF0r4GmnjMV>k+EHI=~?+=>a!ZM}d4xT^nEm`HL&94I0gP;O*a2OasMG z%~bL9di+iA{YVYmPpI#_tUmul1q~FdMn+-nTn(id_*;!DeQcn#^>Y?I^|&z#H^x+T z)y#!{?5TA8*${fhhlNKvJ9iov89l)>{y9C$}_x@(4FVU%&lik@woQGGq^ z3VE!`*Mt0h$j7xHKRtK~gr@{}D~vm!6{WI#hVXO({s{6>ZRnt0>7*|bdl`QQyq_hN zv%FULT}8gL6*)J;QWhsET?;tt-^7~Y8^Lc{nN;uKXA|(3HngjeV&hsaJj~B|bkepm zB{(hWAte&xBBP_nMaCpe!328TUTqYbH&)u3<*3`xLI};nwZ0<-G=|dtsVY9OJ&tC; zU}ZXrzWT)7E2zbQs^>pK9r2{B2!a@z$7V@4(wN!_a?o$;$$Xp z31FVBBYkLyITlgvJvCGI0DBJc2w(cz9K(87oH+o$1AK5#x@ykL&1qGB8t@|Ew!NsP zL2=WU%ut=qXJ5Yq*Z9#O1NcqZD*gg^BfjTHOALyq-g&x;^WOYth=0WIkqnB1K7EUd za})av_~Sm*tQj)b|A{*89N-UuU-75FW-vEolPZ5uiC5cMqTijO(_k^4y&N3EXBN zooS94Tq5!n`WWyApasHSwn3HWuoOeSY9RTvfS%r>Pqy&i52Tqb6k9VXH?H|B*523Oa$oV)Kc0TYYz*h~W&MlEu`Qpw};AXf|hfz#R&Sr5N5BnG7 zmj=<^mQd3u<8tH9S(p|~&sxH)G%+^`IG;z18BPwZ&^sBWcS;1#Y2q0|$*q(QWg)d zJ#)TOajwBU>%xqbX$e2X34Q_CKhP&JicBn@wOy6x;={9d$|N#ttKdXW7A9*MV~MDUdZz7{Vtw-+9|I3biplwZwJ0C zf#$b^e7WFnf%Cq#OCnuuhq!0#Q0?jmjGINjBx-04JXHKsfqzV*!Pf9YzEm;B^B{kC z8m(enE7fp6aQ1U-GCi_Jyo|e4{xaYVa2ZpmjSb=+BIEKJ*cjKe=`_Lyd0rs+SzvsW zvSXd6VE3i`0TS zlxquqcZvHp$bW$R(y!=mTg7gcR`O>ta4usD=elaLksI6#@P7?}B_xI=er^XGr$i=b z@}zTFUKfX1=q{q?x&GIFzs8gG|9c`O@$&;FS+8@@ax8^FpM{kV(1s35GrKZrlGZ@N z3lcXMS4yxFfHevD=gZ3z?C41c#mU=3)~1@>v3_E}M$23^Z$#^I{8NW)NpS#Ap766itiRhKN^*dn8tGhT0OysX>i6`$1Nie~-TnlOw}YkM z(<=we*rK0Q{rM1p51ld&lbs{*bitXMx7SX26zPbCTlfFuFXz#EN9a=!rydp!L?*;w z>`6zc*pd5!X)68#9K7W(I!fkFuq#FIi@?_7T6&Cvop>dPSLHi`gYVfLr%Wd-+`2>+ zuZl1`;oj@xbjJxZ(>X!KHvr?xYjuKJIipf%C8>A;Fz%1KoTLfPJi`U&reG_smie^X z88bOe_~$^LE8VGl`qLQ|GhOuIO2mET(Nomf1(hgYa6j0~r;*!FQ=$tR36t=D0gM~^ zKhDqz7x+Od_Fe_X_8vP+?_CrxeTJ+kjW8Rz%NTKv26RGS87P&v0dPLrymg*dGoF^L z<_Y5|zy}miX(#x{2tVMjnozmUUL-qL_|qVI{)n4A2ijetC|Bfzzu4On_)*}x%e2K6 zaVZyhZn7=_zjT?NxGEm{(iC-EJK#S6Uw(z0I&&ZWK+T^4z#ju2c$JKuF>bcRr5AAa zoAWi=)>-M+%9Nz?aM!{4)~e7|!&8?FQajq$S+Qx^D{5L)OeD|u6j_!kgpU`JcNgBy z33&xR%0zR!C=O;~Q(cU?2i)&Wbh?Y;tIaq<)7t8vM+)sGyj(GoB+j*C^h??Y~DqyCXL&gokDM@Nvg|YNLSP zJ*9H4ad+730gX|he?hW}SIlM4hqP8v+IRPs+Q{3zd|bs3EB(vy=E@$G_<1q0pRFz? z9+4W&u4Y)Me_H8*5#t`J+4UDR=e51}Kh(nmhk~}UwDFALzFGI4rg|V7Ekr(}GqMgV z>67>Lod=Gb+@)%bGDB~JD4J@~eGkReOeUos5Vyh$>XAh^v^^POkSiuP2dhQ{GIm42 zHR6Cjp^gpk9t~+%H*PaTz9E*v-*7KNN3XiUF&a@*3rqQgD4-EJd%`S#QF9acxq$!J zgkn5VY)VBR{*azemb#czt|t<~D30Whv%7;Q!$4)8D1IR_t~>PSjosDe)U`X$k7zX@ z?P{pU9T6>QMt3X@C6iR#4e~1>Kd?0&>yB|lqE!3^#^nj}qz(Ps9SM>pdJ=Gc+Y@R@ z9zC$A=1*4TxrN{sFt05w=mGw$7!|k0LR<1|C-ig{drv`6-v9s9hhlodE`O1~297A;i~G`{o>+Ub#h)d>`SkI1KdROX>4|W&h~hX#5WO?!h$Q4?HE}&#Lgl3*fdR=)52NA18iuK_fd6 zx;7n6wR$73(j_iKkq=)${>yO`&>MbBk-9tvI3MhmhtW5^p?|JX&D-Y~HxqbT1lC}!e>Q4J6f z+;T~xr~U|fsTkEC_%FcCr;}q};2M#iiN0M6{6i`w^+ltTC)zU)%U4gMlYP;6IZKiR z3;%Clk+vUdhDm~0jAS?lbqW_yP(L&lTCw&K@RPt7Eu@W%mq;Uf6ZjF}eHYX7eu|`k@Y|>V%Jr9J@n+Fv3)y54#c?SA|D9+BjkVD zK|5H!RQP$^1Hd2bq~8W&Qn-trR+udO!=;Sf{^ zu|bGqw#f6*KF6`_Ak_+lU1hgaJr(fq?sUiZ)H@J<@E3hf!d@M;cB7({*mutBVT zA*Bw%xvy5j!fO$yx!ZL*!18H=TOob6LH^ARdNl<4r-?pcNRv|FYj2b5Q0P-4{DZ*X z8~EJ26h9Ppc?;eVY5NxVrF*o0D8jB?s;1!v$QJ@X^^o2SMF$lpe(2_j<9>8S8IP#L zFa`gLgV@?$`_~)s8K9J2s_lu|auFOF)2gel;Fm{V+d~ zJ09kAewfm_TG~oGdOA#T@F`7KCn~Q9Pr>%uvWq4g%-j)jLxi?X6Bd>bH6<*b_W(MH zI~RCfWbd`5pdhq*CYg6n(dx}WaFlkmEC_}B0mB{r@If>%#+3|3m}Lxg7wZ1@8_yZh1DUG{9#L~iseIxveLX^Hr8kKZ{F6m)fPa}oCq^i3 zeX=F%`In@=P;kcF%14htmUD7^Qut)iO(Wt`LLYGk~ ze**F_S`!W(qr%xA+B<55_?&a=9(nMb-%7sJ362y1ErQlIWEbmM; zV2^dfY1t^AU_v_<6nwf;WhI>&rL@$i3GNL1Ch&_yFGnFEY{kgKm|Tl7#=2Ex zGa3^^EBw59;V$2HEsYwjSewmLhxJ7vTL-G$>uC9Cs8haB#m9hx^SR$fx;UB(S&?cb zH-`KID}NJx7>!rTS%M#i6FIE=Ho(Api-+GGLC^d*^5;Euk?5?iWoWK z2i9ZwAWX*1Ly^n}Zg+_8i~)b{U3J_;jqwEo^7HqjRClam-NSpn%Co--)*{GvJyq#- zZm40FCL%sInIn`hI=%!Lf_uT|DQ2wFLLVZo{27tsqP^!Ltr?5_a+fh*TksF}(5POa zON{4;`~!@67rGSRqJPH1R`+yOmsi&KiVE@v?vu+ngd|^V3WiP2@Xga-$T$wZGzrh| z@FlOY=Feyi<2o7l9qi$al=ts+Z5)5$A@Up(-jIbnUl|Hl#>udEKz$qV!57pe6eTZX zfvQeli1V4*qB5Ess@VAEip#j9E(Kors?ue}z<3%=2#X(=V2u5|^!SV0qQJxFuA~2= z8=)|(NJ7ZvnoINU*HkAAA#@geHcGrF+%xbE^$Nopo+El*fS$Z9UG#y{!Vp>u;rB&o z9bxj#k93gbOGLgF^;rAlva6*H|$wY}gL@HFaq`<65!T z7wKnny%~DGXiOi+qesxmxV)Wz0siIY zwvhk8f`&!BG6H%i27bK>;X#(h(HTsA>q9ayd9p|XhlmSuwv%TRm0A03?Hwav!=@t zP_s<%d64H$uTOib8Hts>RQOw=ob`fxf;*5`q|(kOMEK1h>jIwD_FeyL9LgZaMH)>* zf-x+bCzs}H)v7C&s9%_1mmO$JB%&B91;8FnfIS|&-i1mckv&<0&q7oh0RQMt<`b~6 z7s#+R;hm=#ww@;iPv8Yyvf)r86c?EAS9e-60ojwjOdXfI%Nvm2>Pz_(kR=A0bmt*| z8(b;9sC)t@SApoc0J8k)KI~cK&2P> zvlRA1Tv&8igu1NfiZ%=3%yQ7|7)(D-gqB5uU&g5XPGI9Os$qmxC2}Un+p$o{X9rO? zBeX1Cs#-c~?3lyu8;k9#+KQn^18u{!(+Lh{vB6^6Gg)bGmZd7fyF1=VXD*>%C!!1&RT;6FL^@%|M4U#zHA-@Z_Zw}3jK>7AFcJQV|Z?pm^Y3`Vo2>i+ZdRd$XVqA9vv&+vymGDQK}? zTHbt;v7w6JXiGJ-X415nOMB~iG!a_qJJ^``4~J4Z_wR1_#sR1naC0DIw#*I z-BjqQ6`rf;IxN8-afb#?g`W#Z9k(s~#+7T{eVR8FJQeDIWO~w?XB11Fi>t=U18%j{>U^{1Wn{Ch*@%X)EJ~ zY*oH1d}f7lUp}J;@%S`J;8hT>4RQSoYMP*QG!qtAWd8!(YEedm6A-O($&z%8%7t;$ zYnqpUsN{X2u5O)Rl_%J%zNJeEicJO0R=mu34a0i8qbiAtO``&F!Y$Br08OVVZsfr? z+-2MaD41G|JF1!+B_tw!LRYBj^C4Algdn^Y?MhVI=mRBv4r2oxi-&e-=|LjWP_tZ> z=a&xrU8$i7HA{k<%fC_aaR_-G;Oz}Gh;ip{RXhT?8E}^tG%pG1kS(|maOUxCO-GXu zMx)?Uf!6{)*pgl`Pg!U8Pnir z<6@P@26#Q-Upmm)X;^@A#Q&dw+W}wbOmA5}U8+xM2b{|x1_xcqE*a`%iQ78EZT;c4 zm)$8W8C{1#+`!EjXM=|qtxX0`nYgovV+;8)zGO;9H8jb%&wz&l|I~A33arWztGKD* zS2g4Os0-so;vN3dClIwnP+xS=nqoN}!zL3_6o4Lo`h%rnPE9Hkl9&7z) zd31MipI62riMt68@VUg)NtF)-Rd1_qhLfXa$l*YS_`eyZbphY#SVv}MbG$qIE=JImTJ;|QLjZQ zR4WxHU)hT~kZmd!CT|&w{r4RN>x`x7RKzr0Vo|sesfTUp!LhU}RcYgC5S?eic<$YT qlif8V;R_z0|NAC$MN$3|PoI5;5rLQc&5w2&=F_W16!fZDMe~2?!w*mZ delta 33433 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

vLui6lsz!nI}C2!z6|1cKiV)YC+gCXVjiRCi3E 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 0: for aaa in [6013 ,6010 ,6011 ,6012 ,6059 ,4062 ,8014]: create_item_in_inventory( aaa, pc ) + elif pc.stat_level_get(stat_level_marshal) > 0: + for aaa in [6013, 6010, 6011, 6012, 6059, 4062, 8014]: + create_item_in_inventory( aaa, pc ) elif pc.stat_level_get(stat_level_monk) > 0: if pc.stat_level_get(stat_race) in [race_gnome, race_halfling]: for aaa in [6205 ,6202 ,4060 ,8014]: # dagger (4060) instead of quarterstaff diff --git a/tpdatasrc/tpgamefiles/mes/auras.mes b/tpdatasrc/tpgamefiles/mes/auras.mes index fe04d6bcf..2bb2cca1d 100644 --- a/tpdatasrc/tpgamefiles/mes/auras.mes +++ b/tpdatasrc/tpgamefiles/mes/auras.mes @@ -31,6 +31,7 @@ // Draconic Auras // PHB II: 23-29 // Dragon Magic 30+ + {23}{Energy Shield} {24}{Power} {25}{Presence} @@ -47,6 +48,7 @@ // Aura Tags // Enums are +1000 + {1001}{TAG_AURA_ACCURATE_STRIKE} {1002}{TAG_AURA_ART_OF_WAR} {1003}{TAG_AURA_DEMAND_FORTITUDE} @@ -76,3 +78,9 @@ {1027}{TAG_AURA_SENSES} {1028}{TAG_AURA_TOUGHNESS} {1029}{TAG_AURA_VIGOR} +{1030}{TAG_AURA_BREAK_SPELL_RESISTANCE} // Renamed from Power as a different Aura is already named Power +{1031}{TAG_AURA_ENERGY} +{1032}{TAG_AURA_INSIGHT} +{1033}{TAG_AURA_RESOLVE} +{1034}{TAG_AURA_STAMINA} +{1035}{TAG_AURA_SWIFTNESS} diff --git a/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab b/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab index 6b0ac4aaa..0d12f6f1c 100644 --- a/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab +++ b/tpdatasrc/tpgamefiles/mes/help/marshal_help.tab @@ -1,31 +1,30 @@ -TAG_MARSHALS TAG_NONCORE_CLASSES Marshals Sometimes it is not enough to be a conquering warrior, a champion of all that's right, an experienced sellsword, or an elite foot soldier. Sometimes the circumstances require a solid commander of soldiers and situations. Sometimes the circumstances demand a marshal. Most Stormlords are cleric, druids, or cleric/sorcerers, although other class combinations, particulalry those including fighter or even barbarian are not unknown. Hit Die: d8 Requirements: To qualify to become a Stormlord, a character must fulfill all the following criteria. Alignment: Chaotic or Neutral Evil or Chaotic Neutral. Feats: ~Great Fortitude~[TAG_GREAT_FORT], ~Weapon Focus~[TAG_WEAPON_FOCUS](any spear or javelin). Base Save Bonus: ~Fortitude~[TAG_FORTITUDE] +4 Spells: Able to cast 3rd-level divine spells. Omitted: Feat Endurance(not in the game) Patron: Talos Special: The character must have been hit by a bolt of lightning, whether a natural bolt or one created by magic, and survived. Base Attack and Base Save Bonuses: see ~table~[TAG_CLASS_FEATURES_STORMLORD_TABLES] Class Skills: TBD Skill Points at Each Level: 2 + Int modifier Class Features: [CMD_CHILDREN] +TAG_MARSHALS TAG_NONCORE_CLASSES Marshals Sometimes it is not enough to be a conquering warrior, a champion of all that's right, an experienced sellsword, or an elite foot soldier. Sometimes the circumstances require a solid commander of soldiers and situations. Sometimes the circumstances demand a marshal. Characteristics: Trained in the basics of fighting, marshals possess a general knowledge of weapons and armor. Their real strength is their ability to lead those who follow them to success they might not otherwise reach in combat. Marshals make passable warriors themselves, when personal danger finds them. Religion: Marshals often worship Heironeous (god of valor) or Kord (god of strength). Some worship St. Cuthbert (god of retribution), Hextor (god of tyranny), or Erythnul (god of slaughter). Other Classes: The marshal relies on the other classes in all ways -- it is his job to support a team, magnifying the strengths of each member for success in battles or forays into dangerous cavern complexes. Role: In most adventuring parties, the marshal serves as the lead tactician, while his comrades support him with spells, ranged attacks, and other effects. However, once a plan is in motion, most marshals enter the melee to assure victory. Alignment: Marshals may be of any alignment. Good-aligned marshals are often crusading leaders who seek out and fight evil. Lawful-aligned marshals accept commissions from people who face invasion by foreign aggressors. Chaotic-aligned marshals lead mercenaries to wherever the pay is best. Evil-aligned marshals tend to lead forces of foreign aggressors set on invasion and plunder. Hit Die: d8 Base Attack and Base Save Bonuses: see ~table~[TAG_CLASS_FEATURES_MARSHAL] Class Skills: ~Bluff~[TAG_BLUFF], ~Diplomacy~[TAG_DIPLOMACY], Handle Animal, ~Intimidate~[TAG_INTIMIDATE], Knowledge, ~Listen~[TAG_LISTEN], ~Perform~[TAG_PERFORM], Ride, ~Sense Motive~[TAG_SENSE_MOTIVE], Speak Language, ~Spot~[TAG_SPOT], ~Survival~[TAG_SURVIVAL], and ~Swim~[TAG_SWIM]. Skill Points at Each Level: 4 + Int modifier Class Features: [CMD_CHILDREN] TAG_CLASS_FEATURES_MARSHAL_WEAPON_ARMOR_PROF TAG_MARSHALS Weapon and Armor Proficiency Marshals are proficient with all simple and martial weapons, with all types of armor (heavy, medium, and light), and with shields (except tower shields). -TAG_CLASS_FEATURES_MARSHAL_AURAS TAG_MARSHALS Marshal Auras The marshal exerts an effect on allies in his vicinity. He can learn to produce different effects, or auras, over the course of his career. The marshal may project one minor aura and (starting at 2nd level) one major aura at a time. Projecting an aura is a swift action. The aura remains in effect until the marshal uses a free action to dismiss it or activates another aura of the same kind (major or minor). A marshal can have an aura active continually; thus, an aura can be in effect at the start of a combat encounter even before the marshal takes his first turn. Activating an aura involves haranguing, ordering, directing, encouraging, cajoling, or calming allies. A marshal sizes up the enemy, allies, and the terrain, then gives allies the direction that they can use to do their best. Unless otherwise noted, a marshal's aura affects all allies within 60 feet (including himself) who can hear the marshal. An ally must have an Intelligence score of 3 or higher and be able to understand the marshal's language to gain the bonus. A marshal's aura is dismissed if he is dazed, unconscious, stunned, paralyzed, or otherwise unable to be heard or understood by his allies. A marshal begins play knowing one minor aura of his choice. As his marshal level increases, he gains access to new auras, as indicated on Table 1-5: The Marshal. All bonuses granted by a marshal's auras are circumstance bonuses that do not stack with each other. Minor Auras: A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. ~Minor Aura List~[TAG_MINOR_AURA][CMD_CHILDREN_SORTED] Major Auras: Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. ~Major Aura List~[TAG_MAJOR_AURA][CMD_CHILDREN_SORTED] -TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS TAG_MARSHALS Minor Auras A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. ~Minor Aura List~[TAG_MINOR_AURA][CMD_CHILDREN_SORTED] -TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS TAG_MARSHALS Major Auras Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. ~Major Aura List~[TAG_MAJOR_AURA][CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL TAG_DUMMY Marshal Base Attack & Base Save Bonuses Level ~Base Attack Bonus~[TAG_LEVEL_BONUSES] ~Fortitude~[TAG_FORTITUDE] ~Save~[TAG_LEVEL_BONUSES] ~Reflex~[TAG_REFLEX] ~Save~[TAG_LEVEL_BONUSES] ~Will~[TAG_WILL] ~Save~[TAG_LEVEL_BONUSES] 1 @t+0 @t+2 @t+0 @t+2 2 @t+1 @t+3 @t+0 @t+3 3 @t+2 @t+3 @t+1 @t+3 4 @t+3 @t+4 @t+1 @t+4 5 @t+3 @t+4 @t+1 @t+4 6 @t+4 @t+5 @t+2 @t+5 7 @t+5 @t+5 @t+2 @t+5 8 @t+6/+1 @t+6 @t+2 @t+6 9 @t+6/+1 @t+6 @t+3 @t+6 10 @t+7/+2 @t+7 @t+3 @t+7 11 @t+8/+3 @t+7 @t+3 @t+7 12 @t+9/+4 @t+8 @t+4 @t+8 13 @t+9/+4 @t+8 @t+4 @t+8 14 @t+10/+5 @t+9 @t+4 @t+9 15 @t+11/+6/+1 @t+9 @t+5 @t+9 16 @t+12/+7/+2 @t+10 @t+5 @t+10 17 @t+12/+7/+2 @t+10 @t+5 @t+10 18 @t+13/+8/+3 @t+11 @t+6 @t+11 19 @t+14/+9/+4 @t+11 @t+6 @t+11 20 @t+15/+10/+5 @t+12 @t+6 @t+12 +TAG_CLASS_FEATURES_MARSHAL_AURAS TAG_MARSHALS Marshal Auras The marshal exerts an effect on allies in his vicinity. He can learn to produce different effects, or auras, over the course of his career. The marshal may project one minor aura and (starting at 2nd level) one major aura at a time. Projecting an aura is a swift action. The aura remains in effect until the marshal uses a free action to dismiss it or activates another aura of the same kind (major or minor). A marshal can have an aura active continually; thus, an aura can be in effect at the start of a combat encounter even before the marshal takes his first turn. Activating an aura involves haranguing, ordering, directing, encouraging, cajoling, or calming allies. A marshal sizes up the enemy, allies, and the terrain, then gives allies the direction that they can use to do their best. Unless otherwise noted, a marshal's aura affects all allies within 60 feet (including himself) who can hear the marshal. An ally must have an Intelligence score of 3 or higher and be able to understand the marshal's language to gain the bonus. A marshal's aura is dismissed if he is dazed, unconscious, stunned, paralyzed, or otherwise unable to be heard or understood by his allies. A marshal begins play knowing one minor aura of his choice. As his marshal level increases, he gains access to new auras, as indicated on Table 1-5: The Marshal. All bonuses granted by a marshal's auras are circumstance bonuses that do not stack with each other. Minor Auras: A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. ~Minor Aura List~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS][CMD_CHILDREN_SORTED] Major Auras: Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. ~Major Aura List~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS][CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS TAG_MARSHALS Minor Auras A minor aura lets allies add the marshal's Charisma bonus (if any) to certain rolls. Minor Aura List [CMD_CHILDREN_SORTED] +TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS TAG_MARSHALS Major Auras Beginning at 2nd level, a marshal can project a major aura in addition to his minor aura. A major aura lets allies add +1 to certain rolls. This bonus improves by +1 at 7th, 14th, and 20th level. Major Aura List [CMD_CHILDREN_SORTED] TAG_CLASS_FEATURES_MARSHAL_SKILL_FOCUS TAG_MARSHALS Skill Focus(Diplomacy) Because a marshal has a way with people, he gains this feat as a bonus feat. If the marshal already has the feat, he can choose a different one. TAG_CLASS_FEATURES_MARSHAL_ADRENALINE_BOOST TAG_MARSHALS Adrenaline Boost Starting at 4th level, you can exhort your allies to discover a reservoir of energy they didn't think they had. Once per day, as a standard action, you can grant temporary hit points equal to your marshal level to any or all of your allies within 30 feet (but not to yourself). If the ally's current hit point total is no more than half his full normal hit points, the number of temporary hit points granted to that character is doubled (to twice your marshal level). This ability only affects allies with an Intelligence score of 3 or higher who can hear you and understand your language. The temporary hit points last for up to 1 minute per marshal level. At 8th level, you can use this ability twice per day. You can use it three times per day at 12th level, four times per day at 16th level, and five times per day at 20th level. If you use this ability on a creature that is still under the effect of a previous use, the new temporary hit points overlap (do not stack with) the temporary hit points the creature had remaining. -TAG_MINOR_AURA TAG_AURA Minor Auras [CMD_CHILDREN_SORTED] -TAG_MAJOR_AURA TAG_AURA Major Auras [CMD_CHILDREN_SORTED] -TAG_AURA_ACCURATE_STRIKE TAG_AURA TAG_MINOR_AURA Accurate Strike Minor Aura Bonus on rolls made to confirm critical hits. -TAG_AURA_ART_OF_WAR TAG_AURA TAG_MINOR_AURA Art of War Minor Aura Bonus on disarm, trip, bull rush, and sunder attempts. -TAG_AURA_DEMAND_FORTITUDE TAG_AURA TAG_MINOR_AURA Demand Fortitude Minor Aura Bonus on Fortitude saves. -TAG_AURA_DETERMINED_CASTER TAG_AURA TAG_MINOR_AURA Determined Caster Minor Aura Bonus on rolls to overcome spell resistance. -TAG_AURA_FORCE_OF_WILL TAG_AURA TAG_MINOR_AURA Force of Will Minor Aura Bonus on Will saves. -TAG_AURA_MASTER_OF_OPPORTUNITY TAG_AURA TAG_MINOR_AURA Master of Opportunity Minor Aura Bonus to Armor Class against attacks of opportunity. -TAG_AURA_MASTER_OF_TACTICS TAG_AURA TAG_MINOR_AURA Master of Tactics Minor Aura Bonus on damage rolls when flanking. -TAG_AURA_MOTIVATE_CHARISMA TAG_AURA TAG_MINOR_AURA Motivate Charisma Minor Aura Bonus on Charisma checks and Charisma-based skill checks. -TAG_AURA_MOTIVATE_CONSTITUTION TAG_AURA TAG_MINOR_AURA Motivate Constitution Minor Aura Bonus on Constitution checks and Constitution-based skill checks. -TAG_AURA_MOTIVATE_DEXTERITY TAG_AURA TAG_MINOR_AURA Motivate Dexterity Minor Aura Bonus on Dexterity checks and Dexterity-based skill checks. -TAG_AURA_MOTIVATE_INTELLIGENCE TAG_AURA TAG_MINOR_AURA Motivate Intelligence Minor Aura Bonus on Intelligence checks and Intelligence-based skill checks. -TAG_AURA_MOTIVATE_STRENGTH TAG_AURA TAG_MINOR_AURA Motivate Strength Minor Aura Bonus on Strength checks and Strength-based skill checks. -TAG_AURA_MOTIVATE_WISDOM TAG_AURA TAG_MINOR_AURA Motivate Wisdom Minor Aura Bonus on Wisdom checks and Wisdom-based skill checks. -TAG_AURA_OVER_THE_TOP TAG_AURA TAG_MINOR_AURA Over the Top Minor Aura Bonus on damage rolls when charging. -TAG_AURA_WATCHFUL EYE TAG_AURA TAG_MINOR_AURA Watchful Eye Minor Aura Bonus on Reflex saves. -TAG_AURA_HARDY_SOLDIERS TAG_AURA TAG_MAJOR_AURA Hardy Soldiers Major Aura The marshal's allies gain damage reduction equal to the amount of bonus the aura provides. For example, if the marshal is 10th level, everyone affected gains DR 2/-. -TAG_AURA_MOTIVATE_ARDOR TAG_AURA TAG_MAJOR_AURA Motivate Ardor Major Aura Bonus on damage rolls. -TAG_AURA_MOTIVATE_ATTACK TAG_AURA TAG_MAJOR_AURA Motivate Attack Major Aura Bonus on melee attack rolls. -TAG_AURA_MOTIVATE_CARE TAG_AURA TAG_MAJOR_AURA Motivate Care Major Aura Bonus to Armor Class. -TAG_AURA_MOTIVATE_URGENCY TAG_AURA TAG_MAJOR_AURA Motivate Urgency Major Aura Allies' base land speed is increased by a number of feet equal to 5 x the amount of bonus the aura provides. For example, the allies of a 10th-level marshal (+2 major aura) add 10 feet to their base land speed. -TAG_AURA_RESILIENT_TROOPS TAG_AURA TAG_MAJOR_AURA Resilient Troops Major Aura Bonus on all saves. -TAG_AURA_STEADY_HAND TAG_AURA TAG_MAJOR_AURA Steady Hand Major Aura Bonus on ranged attack rolls. +TAG_AURA_ACCURATE_STRIKE TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Accurate Strike ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on rolls made to confirm critical hits. +TAG_AURA_ART_OF_WAR TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Art of War ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on disarm, trip, bull rush, and sunder attempts. +TAG_AURA_DEMAND_FORTITUDE TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Demand Fortitude ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Fortitude saves. +TAG_AURA_DETERMINED_CASTER TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Determined Caster ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on rolls to overcome spell resistance. +TAG_AURA_FORCE_OF_WILL TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Force of Will ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Will saves. +TAG_AURA_MASTER_OF_OPPORTUNITY TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Master of Opportunity ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] to Armor Class against attacks of opportunity. +TAG_AURA_MASTER_OF_TACTICS TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Master of Tactics ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on damage rolls when flanking. +TAG_AURA_MOTIVATE_CHARISMA TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Charisma ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Charisma checks and Charisma-based skill checks. +TAG_AURA_MOTIVATE_CONSTITUTION TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Constitution ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Constitution checks and Constitution-based skill checks. +TAG_AURA_MOTIVATE_DEXTERITY TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Dexterity ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Dexterity checks and Dexterity-based skill checks. +TAG_AURA_MOTIVATE_INTELLIGENCE TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Intelligence ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Intelligence checks and Intelligence-based skill checks. +TAG_AURA_MOTIVATE_STRENGTH TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Strength ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Strength checks and Strength-based skill checks. +TAG_AURA_MOTIVATE_WISDOM TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Motivate Wisdom ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Wisdom checks and Wisdom-based skill checks. +TAG_AURA_OVER_THE_TOP TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Over the Top ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on damage rolls when charging. +TAG_AURA_WATCHFUL EYE TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS Watchful Eye ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MINOR_AURAS] on Reflex saves. +TAG_AURA_HARDY_SOLDIERS TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Hardy Soldiers The marshal's allies gain damage reduction equal to the amount of ~bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] the aura provides. For example, if the marshal is 10th level, everyone affected gains DR 2/-. +TAG_AURA_MOTIVATE_ARDOR TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Motivate Ardor ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] on damage rolls. +TAG_AURA_MOTIVATE_ATTACK TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Motivate Attack ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] on melee attack rolls. +TAG_AURA_MOTIVATE_CARE TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Motivate Care ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] to Armor Class. +TAG_AURA_MOTIVATE_URGENCY TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Motivate Urgency Allies' base land speed is increased by a number of feet equal to 5 x the amount of ~bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] the aura provides. For example, the allies of a 10th-level marshal (+2 major aura) add 10 feet to their base land speed. +TAG_AURA_RESILIENT_TROOPS TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Resilient Troops ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] on all saves. +TAG_AURA_STEADY_HAND TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS Steady Hand ~Aura Bonus~[TAG_CLASS_FEATURES_MARSHAL_MAJOR_AURAS] on ranged attack rolls. diff --git a/tpdatasrc/tpgamefiles/scr/aura_utils.py b/tpdatasrc/tpgamefiles/scr/aura_utils.py index 33be5c55a..35758a52a 100644 --- a/tpdatasrc/tpgamefiles/scr/aura_utils.py +++ b/tpdatasrc/tpgamefiles/scr/aura_utils.py @@ -240,7 +240,7 @@ def addSkillBonus(self, auraType, *args): ##### class auraRadialModifier ##### -##### used by Marshal Class for both Minor and Majro Aura ##### +##### used by Marshal Class for both Minor and Major Aura ##### ##### and by the Draconic Aura Feats ##### def getAuraSpellEnum(auraType): if auraType == aura_type_minor: @@ -277,7 +277,12 @@ def radialAura(attachee, args, evt_obj): pythonDismissEnum = pythonEnum + 2 auraSpellEnum = getAuraSpellEnum(auraType) radialAuraTop = tpdp.RadialMenuEntryParent(auraTypeString) - radialAuraTopId = radialAuraTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + if auraType == aura_type_draconic and attachee.stat_level_get(stat_level_dragon_shaman) < 1: + radialAuraTopId = radialAuraTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Feats) + elif auraType == aura_type_double_draconic: + radialAuraTopId = radialAuraTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Feats) + else: + radialAuraTopId = radialAuraTop.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) #Add aura childs for auraEnum in learnedAuras: auraName = getAuraName(auraEnum) @@ -294,7 +299,12 @@ def radialAura(attachee, args, evt_obj): if activeAura: activeAuraName = getAuraName(activeAura) dismissAuraId = tpdp.RadialMenuEntryPythonAction("Dismiss {}".format(activeAuraName), D20A_PYTHON_ACTION, pythonDismissEnum, activeAura, auraTag) - dismissAuraId.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) + if auraType == aura_type_draconic and attachee.stat_level_get(stat_level_dragon_shaman) < 1: + dismissAuraId.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Feats) + elif auraType == aura_type_double_draconic: + dismissAuraId.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Feats) + else: + dismissAuraId.add_child_to_standard(attachee, tpdp.RadialMenuStandardNode.Class) return 0 def activateAura(attachee, args, evt_obj): @@ -352,9 +362,7 @@ def checkDeactivateMarshal(attachee, args, evt_obj): return 0 def checkDeactivateDraconic(attachee, args, evt_obj): - #Deactivate Aura if specific conditions are added - #panicked & fascinated missing - #Basically all conditions that prohibit communication will end the auras + #Deactivate Aura if attachee is getting Unconscious if (evt_obj.is_modifier("Unconscious") or evt_obj.is_modifier("Dead")): if args.get_arg(3): @@ -367,7 +375,7 @@ class AuraRadialModifier(PythonModifier): # AuraRadialModifier have 5 arguments: # 0: featEnum, 1: auraType, 2: spellId, 3: activeAuraEnum 4: empty # use MapToFeat("[Name]", feat_cond_arg2 = aura_type_minor/major/draconic) - # to set arg1 to the aura the modifier should handle + # to set arg2 to the aura the modifier should handle def __init__(self, name): PythonModifier.__init__(self, name, 5, True) self.AddHook(ET_OnBuildRadialMenuEntry, EK_NONE, radialAura, ()) diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py index dbf326056..a67900698 100644 --- a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py @@ -35,6 +35,8 @@ def onConditionRemoveActions(attachee, args, evt_obj): marshalMajorAuraSpell = PythonModifier("sp-Marshal Major Aura", 5) #spell_id, activeAura, auraEventId, empty, empty marshalMajorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMajorAura, ()) marshalMajorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) +marshalMajorAuraSpell.AddSpellTeleportPrepareStandard() +marshalMajorAuraSpell.AddSpellTeleportReconnectStandard() marshalMajorAuraSpell.AddAoESpellEndStandardHook() ### All Major Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py index df7d6b350..619a28098 100644 --- a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py @@ -35,6 +35,8 @@ def onConditionRemoveActions(attachee, args, evt_obj): marshalMinorAuraSpell = PythonModifier("sp-Marshal Minor Aura", 5) #spell_id, activeAura, auraEventId, empty, empty marshalMinorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMinorAura, ()) marshalMinorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) +marshalMinorAuraSpell.AddSpellTeleportPrepareStandard() +marshalMinorAuraSpell.AddSpellTeleportReconnectStandard() marshalMinorAuraSpell.AddAoESpellEndStandardHook() ### All Minor Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### From 8419fa98602e00b3e23f4c43fcbdf05609719097 Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Mon, 15 Nov 2021 08:10:56 +0100 Subject: [PATCH 5/7] updated aoe handling --- .../scr/Spell3831 - Marshal Minor Aura.py | 4 +- .../scr/Spell3832 - Marshal Major Aura.py | 2 +- tpdatasrc/tpgamefiles/scr/aura_utils.py | 54 +++++++++++++++++-- .../scr/tpModifiers/sp_marshal_major_aura.py | 34 +----------- .../scr/tpModifiers/sp_marshal_minor_aura.py | 34 +----------- 5 files changed, 54 insertions(+), 74 deletions(-) diff --git a/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py b/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py index cfa7970cd..4809d27a6 100644 --- a/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py +++ b/tpdatasrc/tpgamefiles/scr/Spell3831 - Marshal Minor Aura.py @@ -22,7 +22,7 @@ def OnSpellEffect(spell): auraRadius = 60.0 + (spell.caster.radius / 12.0) auraEventId = spell.caster.object_event_append(OLC_CRITTERS, auraRadius) auraEnum = spell.caster.d20_query_with_data("PQ_Activated_Aura", spell.id, 0) - spell.caster.condition_add_with_args("sp-Marshal Minor Aura", spell.id, auraEnum, auraEventId, 0, 0) + spell.caster.condition_add_with_args("sp-Marshal Minor Aura", spell.id, auraEnum, auraEventId, aura_type_minor, 0) auraName = aura_utils.getAuraName(auraEnum) for spellTarget in spell.target_list: if spellTarget.obj.is_friendly(spell.caster) and aura_utils.verifyTarget(spellTarget.obj): @@ -35,4 +35,4 @@ def OnBeginRound(spell): print "Marshal Minor Aura OnBeginRound" def OnEndSpellCast(spell): - print "Marshal Minor Aura OnEndSpellCast" \ No newline at end of file + print "Marshal Minor Aura OnEndSpellCast" diff --git a/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py b/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py index 9b36d23d9..23f8330f9 100644 --- a/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py +++ b/tpdatasrc/tpgamefiles/scr/Spell3832 - Marshal Major Aura.py @@ -22,7 +22,7 @@ def OnSpellEffect(spell): auraRadius = 60.0 + (spell.caster.radius / 12.0) auraEventId = spell.caster.object_event_append(OLC_CRITTERS, auraRadius) auraEnum = spell.caster.d20_query_with_data("PQ_Activated_Aura", spell.id, 0) - spell.caster.condition_add_with_args("sp-Marshal Major Aura", spell.id, auraEnum, auraEventId, 0, 0) + spell.caster.condition_add_with_args("sp-Marshal Major Aura", spell.id, auraEnum, auraEventId, aura_type_major, 0) auraName = aura_utils.getAuraName(auraEnum) for spellTarget in spell.target_list: if spellTarget.obj.is_friendly(spell.caster) and aura_utils.verifyTarget(spellTarget.obj): diff --git a/tpdatasrc/tpgamefiles/scr/aura_utils.py b/tpdatasrc/tpgamefiles/scr/aura_utils.py index 35758a52a..0f33c247a 100644 --- a/tpdatasrc/tpgamefiles/scr/aura_utils.py +++ b/tpdatasrc/tpgamefiles/scr/aura_utils.py @@ -177,8 +177,6 @@ def onLeaveAura(attachee, args, evt_obj): auraEventId = args.get_arg(2) if auraEventId != evt_obj.evt_id: return 0 - auraSpellPacket.remove_target(attachee) - #args.condition_remove() args.remove_spell_mod() return 0 @@ -186,10 +184,14 @@ def auraEndSignal(attachee, args, evt_obj): signalId = evt_obj.data1 spellId = args.get_arg(0) if signalId == spellId: - #args.condition_remove() args.remove_spell_mod() return 0 +def onAuraConditionRemove(attachee, args, evt_obj): + auraSpellPacket = tpdp.SpellPacket(args.get_arg(0)) + auraSpellPacket.remove_target(attachee) + return 0 + def auraTooltip(attachee, args, evt_obj): auraEnum = args.get_arg(1) auraName = getAuraName(auraEnum) @@ -223,10 +225,10 @@ class AuraModifier(PythonModifier): def __init__(self, name): PythonModifier.__init__(self, name, 5, True) self.AddHook(ET_OnObjectEvent, EK_OnLeaveAoE, onLeaveAura, ()) - #self.AddHook(ET_OnD20PythonSignal, "PS_Aura_End", auraEndSignal, ()) self.AddHook(ET_OnD20Signal, EK_S_Spell_End, auraEndSignal, ()) self.AddHook(ET_OnGetTooltip, EK_NONE, auraTooltip, ()) self.AddHook(ET_OnGetEffectTooltip, EK_NONE, auraEffectTooltip, ()) + self.AddHook(ET_OnConditionRemove, EK_NONE, onAuraConditionRemove, ()) self.AddSpellTeleportPrepareStandard() self.AddSpellTeleportReconnectStandard() @@ -238,6 +240,47 @@ def addSkillBonus(self, auraType, *args): eventKey = skill + 20 self.AddHook(ET_OnGetSkillLevel, eventKey, auraAddBonusList, (auraType,)) +##### class AuraAoeHandlingModifier ##### +def onEnterAoeAura(attachee, args, evt_obj): + auraEventId = args.get_arg(2) + if auraEventId != evt_obj.evt_id: + return 0 + auraType = args.get_arg(3) + auraTypeString = getAuraTypeString(auraType) + auraSpellId = args.get_arg(0) + auraSpellPacket = tpdp.SpellPacket(auraSpellId) + auraTarget = evt_obj.target + if auraTarget.is_friendly(attachee): + if auraType > aura_type_major or verifyTarget(auraTarget): + if auraSpellPacket.add_target(auraTarget, 0): + auraEnum = args.get_arg(1) + auraName = getAuraName(auraEnum) + auraTarget.condition_add_with_args("{} {}".format(auraTypeString, auraName), auraSpellId, auraEnum, auraEventId, 0, 0) + return 0 + +def aoeHandlerSignalEnd(attachee, args, evt_obj): + spellId = args.get_arg(0) + signalId = evt_obj.data1 + if spellId == signalId: + spellPacket = tpdp.SpellPacket(spellId) + targetList = getTargetsInAura(spellPacket) + for target in targetList: + if target == OBJ_HANDLE_NULL: + break + target.d20_send_signal(S_Spell_End, spellId, 0) + args.remove_spell() + return 0 + +class AuraAoeHandlingModifier(PythonModifier): + # AuraModifier have 5 arguments: + # 0: spellId, 1: activeAura, 2: auraEventId, 3: auraType, 4: empty + def __init__(self, name): + PythonModifier.__init__(self, name, 5, True) + self.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterAoeAura, ()) + self.AddHook(ET_OnD20PythonSignal, "PS_Aura_End", aoeHandlerSignalEnd, ()) + self.AddSpellTeleportPrepareStandard() + self.AddSpellTeleportReconnectStandard() + self.AddAoESpellEndStandardHook() ##### class auraRadialModifier ##### ##### used by Marshal Class for both Minor and Major Aura ##### @@ -338,7 +381,8 @@ def queryActivatedAura(attachee, args, evt_obj): def dismissAura(attachee, args, evt_obj): if args.get_arg(3): - attachee.d20_send_signal(S_Spell_End, args.get_arg(2)) + attachee.d20_send_signal("PS_Aura_End", args.get_arg(2), 0) + #attachee.d20_send_signal(S_Spell_End, args.get_arg(2)) args.set_arg(2, 0) args.set_arg(3, 0) return 0 diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py index a67900698..f96a8151b 100644 --- a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_major_aura.py @@ -5,39 +5,7 @@ print "Registering Marshal Major Auras" -def onEnterMarshalMajorAura(attachee, args, evt_obj): - print "onEnterMarshalMajorAura Hook" - auraEventId = args.get_arg(2) - if auraEventId != evt_obj.evt_id: - return 0 - auraSpellId = args.get_arg(0) - auraSpellPacket = tpdp.SpellPacket(auraSpellId) - auraTarget = evt_obj.target - if auraTarget.is_friendly(attachee) and aura_utils.verifyTarget(auraTarget): - if auraSpellPacket.add_target(auraTarget, 0): - auraEnum = args.get_arg(1) - auraName = aura_utils.getAuraName(auraEnum) - auraTarget.condition_add_with_args("Marshal Major Aura {}".format(auraName), auraSpellId, auraEnum, auraEventId, 0, 0) - return 0 - -def onConditionRemoveActions(attachee, args, evt_obj): - spellId = args.get_arg(0) - spellPacket = tpdp.SpellPacket(spellId) - spellPacket.remove_target(attachee) - targetList = aura_utils.getTargetsInAura(spellPacket) - for target in targetList: - if target == OBJ_HANDLE_NULL: - break - target.d20_send_signal(S_Spell_End, spellId, 0) - spellPacket.remove_target(target) - return 0 - -marshalMajorAuraSpell = PythonModifier("sp-Marshal Major Aura", 5) #spell_id, activeAura, auraEventId, empty, empty -marshalMajorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMajorAura, ()) -marshalMajorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) -marshalMajorAuraSpell.AddSpellTeleportPrepareStandard() -marshalMajorAuraSpell.AddSpellTeleportReconnectStandard() -marshalMajorAuraSpell.AddAoESpellEndStandardHook() +marshalMajorAuraSpell = aura_utils.AuraAoeHandlingModifier("sp-Marshal Major Aura") ### All Major Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### ### All Auras have 5 args: auraSpellId, auraEnum, auraEventId, empty, empty (may get reduced to 4 in final version) diff --git a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py index 619a28098..8733adea1 100644 --- a/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py +++ b/tpdatasrc/tpgamefiles/scr/tpModifiers/sp_marshal_minor_aura.py @@ -5,39 +5,7 @@ print "Registering Marshal Minor Auras" -def onEnterMarshalMinorAura(attachee, args, evt_obj): - print "onEnterMarshalMinorAura Hook" - auraEventId = args.get_arg(2) - if auraEventId != evt_obj.evt_id: - return 0 - auraSpellId = args.get_arg(0) - auraSpellPacket = tpdp.SpellPacket(auraSpellId) - auraTarget = evt_obj.target - if auraTarget.is_friendly(attachee) and aura_utils.verifyTarget(auraTarget): - if auraSpellPacket.add_target(auraTarget, 0): - auraEnum = args.get_arg(1) - auraName = aura_utils.getAuraName(auraEnum) - auraTarget.condition_add_with_args("Marshal Minor Aura {}".format(auraName), auraSpellId, auraEnum, auraEventId, 0, 0) - return 0 - -def onConditionRemoveActions(attachee, args, evt_obj): - spellId = args.get_arg(0) - spellPacket = tpdp.SpellPacket(spellId) - spellPacket.remove_target(attachee) - targetList = aura_utils.getTargetsInAura(spellPacket) - for target in targetList: - if target == OBJ_HANDLE_NULL: - break - target.d20_send_signal(S_Spell_End, spellId, 0) - spellPacket.remove_target(target) - return 0 - -marshalMinorAuraSpell = PythonModifier("sp-Marshal Minor Aura", 5) #spell_id, activeAura, auraEventId, empty, empty -marshalMinorAuraSpell.AddHook(ET_OnObjectEvent, EK_OnEnterAoE, onEnterMarshalMinorAura, ()) -marshalMinorAuraSpell.AddHook(ET_OnConditionRemove, EK_NONE, onConditionRemoveActions, ()) -marshalMinorAuraSpell.AddSpellTeleportPrepareStandard() -marshalMinorAuraSpell.AddSpellTeleportReconnectStandard() -marshalMinorAuraSpell.AddAoESpellEndStandardHook() +marshalMinorAuraSpell = aura_utils.AuraAoeHandlingModifier("sp-Marshal Minor Aura") ### All Minor Aura descriptions can be found at: http://archive.wizards.com/default.asp?x=dnd/ex/20030906b ### ### All Auras have 5 args: auraSpellId, auraEnum, auraEventId, empty, empty (may get reduced to 4 in final version) From bdbf79c4798f253a1d4efbb5d56efbb16d0c62ec Mon Sep 17 00:00:00 2001 From: Sagenlicht Date: Tue, 16 Nov 2021 12:34:05 +0100 Subject: [PATCH 6/7] Fixed spell_End regression --- tpdata/tpgamefiles.dat | Bin 3768517 -> 3768092 bytes tpdatasrc/tpgamefiles/scr/aura_utils.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tpdata/tpgamefiles.dat b/tpdata/tpgamefiles.dat index 4a8faef4cdafbd1fa41c2e62bafba0dbff659c96..13e5cb2e8236461102375d785f737b28dea047f8 100644 GIT binary patch delta 24341 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%0D|@UYZ+pPh4_AwB^eqjagTZ z&KbS;kL&P#$FE-x?K1Y=ci`5m##g1Px88iNn-Oe(dvVT@5Y79CEj!AdHk~p0yn18C zk=%XTgL}Sc1a)gdRP4R(`gy? zGqk+}!a}o`npd5;_hLt#SyW^1;YMHLM9aSa-N*i#{5fiQp;}Y&PrLIe{}~60+~m9R z@}{(`Dv$_IF8b{HI8Ab+>SU>?{JY_ub=DG_%%aE6T&Z?tyTu^qjIy<-&J24w?CT!! z&&~7OQ zcx9=mX2n5gi=^7>#eKRDeYzdlyz=@D-XMby!}>g|(uiyB@QzrR?JWC8!{D#~Zr6;d zrEVq(X{xVd4qA@)_$B{f_Tqc5lNwDk%Xk}iR0_Yvd~31VD5kJ_eMiZ0L*H=~!ONBg zf881K^;SWfSemTkILDRpu?L;X2VYs8(rt%@~b(d9Dh`aBq| zBJ})dt6+EB(cEU7wZJ-s-*2c;_3EZd`A&aliD?xYU#b(6XUh(F@-c0-#Lcg#z0bG} z=}hQ47g(6RYn1f;kumWjGy2>gvmsk^|E{rPJcGAx-MaoIYgsRTa=4eSip;!#yQz~_ zm00&3Z2zM7$3vS$CT{LW3ddTms}=vbQEJ%xCTqcx@|^V}tVV8m6u-P9sn#HV%vc+% zpReB)pPHM?_dWhAM_fl^ulV<553`LU?xY>cHs7=KN7lOWsR_Fs^ru?{JD3#7+>vTu zU1KXR<`%GK&980y`}SLZ(_a0Jy5pvK`fI;$?{)BjIetF6~kHrEFpCs8`>HKRoU1&(@hJ*v&Mp4uA8v_Ns2A!tZOUTh=Z=ufG1r2H&ZU zn)e#?j(&zMeA5 z;e_a!#k%31EnVJ=rntAyQyS=e@3e5O^6LW!1{|^dW;4@zz5g&bv!RxUl5Z7`S@3<5 zwpZ_Ck;!4tyV5?6(U^F6w8D$Mw?BMXbD`+j-Z(Ym-YN6coE8|RB?$%&|9&-j^k&n| z^Vh4D4xP4f!uSZ8ti2{@N>ZN8N6w{~RSq==M;BBkT46LPkV4>^-inBdE{e;KxSLq+b1SsAyN zz8g7l$&N`4az0ifk<*sV`+metJ~ydpeBrT(^wl$dcU4TDe(FWGmQ}+dpXAc7^KN!z zp9l(@`*?SA#wg`4nTOJngc|^F?32CgyL881drm zg(I6zy|3FI^**q;>qYvld$$YTdR~5-*tjq_+G|yF`ssY;bH{L;rH$eN`$O8$1YYaPM1ue691<^<&C*UJEUmIXJ_i*>$4j_1C7`hYY-Sc*oow zw=_iYQ|`xpUm3sm`oQq()`KK=rF$iwt?_dgg}j;9dh>%t!cjlV-F@;-3_3Mxt89zn z3J>eMM{SGJL)^q9yVZ|ne$QMf^4xB-RqJ$o!n znjAi|id9!h4t;Ol)W2cQ0nhPUQ>``}3C|wy9@M%cU1YxY@S_iEGsnEQ|9T|fMLR;* zSk-CujvcbIJc?aQ#4R^AY$&?WZ8F?SF*)^k-(^MxY8J9aOCGNKb-7Q-;h6b%Q(u-$ zKhNub=CteaM@fp`e3D-%HymI7@zBye^D|v5KDt$ppKtImq*eL%#U&Q%55IhQlo2`q z`z`083ThUA&Cj?W5+z3Il?CT0T-cTzuiBR$4({+6j}XpfjZyM8-MIvE->eN zO##wdArSKOJb>n{5RBoQP6awZTqkjlRtRkPQPY96TAqf~v^!s;Gcmm?HA z5JQXny&$AdBDGcv^!Ton!i3cVGw~S!D_3JsK>3xfMlH*!s$U67Qdo;M5KvC;maGws zw&Up#@zJ+JAOCW9U{b|8oVZy*9XXC15hT-SiAvC6h~f)3AvKpPeQgbKsFnJ zQi)qbsFUViCsabU>bD8i$fMjWH=zcSa^S)V#SuD4s9X`KiBKo`lin;C&iA8A+H6LJ zWCwv;OvsO_mP^Q#s@6g%kw#^H*p)&1yUoKPmA4-9!%(M}ki31mxM5Jo7EW*i|@NZhMTl%SoE&Q2f?>XErS(UDqeK!*sW zssg>@DAxj6{H*n%KVN@0hnUV(-OQnuI{lvv7R3 z6Q^BKK;z|x+v*i(bPbiLN=pF-G~C9lpvr5 zgt`NPatOsyw6+4wsHai&6F`CxATL6pWVfAAB60PE3W@7q2xLn$TnV{Sj3h!H6t}z( zo|P%1pM+#dpXEuQ64JMbkQRA4b`mqnNkKayKboOi1e8a}k5CoG-BX0_Og#*AkC1CV zkn|~_%tJsfgp_H|B%Z>Wdr`D9LYbuH2cam6JNh(`KoThCG`8C?fTGhVu9gU>laPJ_ zkjWXKrjqM}P*L$3sSzI2%G*qqJs*_Zd)Z*ql7A7S&4p4rLf}H z1Qz^m>a;P}5bd-%=7wH_T^#k-u4}k=MUm&)Yv|I%DL@0RBaKYrCKIwHf19tP^o7%K zhrWAVFqtno9Z0uI;D9?hM#HM0RGIAdRG|wlj6{rURp@X5sj}-WRAhat1zP+jPyBIs zH5xRE>J?HA;UyGuPc=kVk=(o0^faTM+fp#ht%iR|t)2qy9~ z$xizo=E{=4U_zbrSUh?Uz2rsQ$9sqt7Y$_HNWDZe)-=Miehg4eqrjW*6|oC%L-z$U z_=SYl5R!}pdU#*pE>4n1G|{z?CM;=!lTdnUUuZ&Y+NmPHX;hMq8;1u1SANu1psf!e zPp}c_5urpv!fYyryL0_0CflF;!MRNaqBfYp7X!aR3Bk;bf>`B{SngVwZde_Bcvd^3EcBXsBk%@ zFyb+g7jerUD~A*AmhvkvE^9Byp67_*0;IYDBB2NFj=nS@aZh+eqJur`S(4p%Z{#NRG{)K|m^X z^O9!>=0T3nKEo~&(1b6~Fg1#h#dD-vPVPdVW4GlIm;D^&b0zN1bAi)uq3^5zj+NW9`q4O>kTprrQ>$y8^q`)f2nVfxhuU}R=vRq zVVVxE_ggGX=60Y7g!Bn*eT)9hqBdwDE-nK|>m3w?(u`n2eq?v-9kOg9uHzlDOeB57 zJFrGs#6@*b)rdRUfqZSrOJ@hJJ_4$c@q3(V_2eb^J)VPwG@Ab&Goonp?R%(C-2*h_ z18Uk%qk)7Z2_61`7+O@x*B>w=k7gKl(i59dBq3$Wx2O|wQBWKrov;%SGXDq#QG_B1 zRZ%zPf28AtcKxT1$jys93%h`#df`Kls7o+LoCk2B3+0R2iNViZ5Fntz(Vx(CDdIp& zJ|S!tAE@*bipHbSKcA=sy@6~#BZMs-9Vwrwq~z}wp>{&@UodJ)J8;$)gw3P52Z;0A z0Pf8f*maVZ5nmCvoT5d4rM40SDk5Y{Ub?=bUD`?Cuy0uMHuB>4jS?ce!{5*(vb!+) z;2WJdyMbi8(Ly{zj@`(ujS3#$jT6F^qFp7FNJ#2CvNWaKT))FkG81-*-|0*zeK)?t zPMK86{Q#<>XkI@s!-KdTKQN<&Jl7KPBLxya(WY?}*ZL=xNdGU+>J>ksS&QbL{)vTY zqG+8z1wwIhV*CqhUqVtMe?fdb3CQ^+uoS16j{x|7gp_|%D^V?G|AsmbI)V@XMl-h& z>iUgXei9fp`-9Ou(!SykHbN$GC4}?|efa|~iFCRN{~}m71&bo2Pl|K@Lc4&nc=#9j zbb`wmD74@!BgKqKLUVo=F{_0*J7APi43LR6$#^HU=a#dToP^Mn-#q}xNkWLXH$tl7 z4^d4dprSv@r(6NM-~BNok!F|Po(9;2sY)hjm(nz=M0+2f) zk20WSX%vHZ73h*Qtsl+!DvcOX#Ep)~uKa<(=LS=r{4GhG|qfCBee4J1>89$XrnY;)MQ~;+% zF(xR$l`EmugrW$YQxJ|47XWlAAeSck-fEzT+H{lTd5V}CdJ`y95p^x3YBngM){=x| z2BIRVRGTTZjpInl`hi%xRGLvX5FsRMfWFYE7a`+8;IharaF7tMa2J8{h%=?pwn1oV zWr{mQ2@3Sffo3aVw2l02SHhm+(cFJ-aZO4>ZGK7<{`gx7u4LEHfHG?67x!-s6P1NJ zd;zUzt}-+?QM9MZSkFA_1sxSyv1%Z16~t(#jM7wK=SnMEqXGqqgd|jj_;NvW9aT|- zPT~?(q12D`T~QT|6(`V34eeV`$VQDO&>@_lhK5R^oq1MG=){j&i_yPi*Io-`tuCCv z_eciXpf0rHr`7>gtJ5Mt)Q-W3phcAZU`+714I~k@hg=&T0v$*TwYr~xl2my zVg`t2ngleSkQc>BGk|6fva2(o?jz5A4NRlPyK4k3-Q-!-7@UAc{fuGPMkvP^wa+8;)EEbo2kkM%;W(I-Y2P^w z#~ENtX!&rVF289#w%5VoLKEo{aJ}%CyJsDFyjW@WXt+>I-gd*Df4H@MdAzIQJl=*q zOx8qbBClWBV|!*OkC!ok$D5qRJWPZd@_C%Si5QP}8or($XNe|46_ZwucL(neen)`? z?<<1+#XrCBZwYY0LH;p|d9oX!=emh-jJzpoO?uwpcO1WO1x#Ut&{)0`btHZUeBH#q z51nA1BZP+Xel0!xA#m&PTUf|8j}VTK*XQ^^*gpdQwUE`05bDUMU|W(OPw>z1?}n31 z+!X$8TYLCx;NO5RE@F13@L$5ktpooH{DD&}!Bl7 z-vJ+YhJ7PHlAM3iL;5G2Wfo@8nTL~&^ehMe68|1p%wo*ozX|(^_`mq&;rFwcoiG#X z%WGBj@VCM3$1l5ty(Zp+TO0Dd2S58#reiJ~Cf|goE&2J^{!uBLZ4Nz!zk7H$tZyV@ zC!AxM=0YQRKk;4v*uTe|Gx)td&+eHcFMW=$2DcBttP4!h0(Hy#+vCR&K4@%Q8Jl7u zG?VY_)#IlZf{(yhpNlNRLO4>sp7XOGoIHM(mspF1P$0+ARiIwMjcYm69Vr|oFUiS# z2rdV|5tmumNTG#%)t{cQt6~2ge8Xi{I8taTugvQS+X}t|{H-gjYb07XRIG=0Lb^^E zJ9m|tj}i*x%Q^cM;Ob!iw}QowLK$qixVOMjy0w+8bd=CWJ`S6m%Bg_=LPR{~gkNJ) zmO^X!P<&h5-Nqno zfzdbFu+eCTHm=O-;Lm~AsbK-5u`F?%PC4+`!9T2F2S#HXb&Go98i6kZf9MwL7>#yl zyVk=`0{;}ee=XA!ATE#d?+Bji=1|811wt!%Nj%vouU7o1-AwD*N#e6`)cs$+uAbrj z!Cb!k-}-a*k++$>5dH<6|9racCHAy;SOmw_+5$D+m{ZaeCLKmMHSR_GsDuATqg7VjUh<5uVsEpEMPVN2UCyP3VQLR?cW z?!UZE3)8oTz1P3?C>|X%_+MfK5ueEUr{m`v_{vsx&>HJr!trFg8@~$=*+XmiZ<6fk zXWB;H;AcK!YGa|lo!`U%yG`96GoP`-VPi|Ub^ig|a{M|TTkz-zrlXkt=>u+lOpHm? zGG2eybNY`7;_;5D;1q6S7sn!`ookjm|GNVjNn{ zmJ69W65;yc1pdWB$KmOc#hp~Mli!cC$6rYDGQj(5vSoIN8_F&1d&H$J@l}hR zw?m5*awjG|An7U@HcgslRf-*_vz8EkH>5~`13>AT6=7{Jnl$} z2S0)I4`WUCIFb^%x>ZA`9{3IersjYa^y8kGitwKdKMKZdh6D2T;_^BIJ+r}Q4rhBD zgr;&Fod-Gq^k)Y zMzI6LhjML|1NmOC-)hO8IO0hm;QSZBeh%zk37EbUmc5hnzlSTc(-;=wgz`jj_NwqB z13%4HEYAsL&f}I>0G+qs=k-|jg7{P}t~cxjus>_VhB%`=>$zn#glZac({+_%KS?bwy^h@$sEUH zxddGI^grP+r zDd79fV;&PAzl7sE5O+KHZ9!~1*?Vw)+`yjzKP;3zn1F*{nOnv_;3W{ZaRD1R5%!&& zA6IZ!kXLI2^O=a{P2v2khmUFC_bp@xCqjQ=zn*sXfu1ysbw#mf6XCy|tJ?=~bnjWS zm}yP|FU!^8H2kN7FN$HaCgB3o&iR=ojr$+Q9G9}3Nm%yO{yqLDf`0+ta5;NNye((H zvOkX}30`I;vzQD&TAV%kA$z4&EMc;6w7eI`&*1$3N@CY0(}SJ!(~NdF4?Ry)n1UNF z4sjg+1pFoNdpEGTZbBbA0x?r0wm`JS|rz@G*`Bb~*%Lw>z<4_}3L8wXx0gI#vVVVEb^!{5bnDI+ac z#>73aETIZLd=2caVDGn!O(Z^wvrmNoBJjKSux%b#UQ^Eg9(;sD=j8pY$%DF|(^HN1 zq$MlOV(OmQ?VWgi!XJ49(B?I;&&y`so@n#bAw6;1k#9Hnm>ibri8}ak`nBQT4SaYm zd*+GuFX8Ovp_5LHb9qc>3gUXn_W1Dt{|EM6`7C4#>?L)2c#3-peCIKiI|bV!lk=~G z?P7@-*#)eFcrDHkol08p|KKFEmVDI&>PG~WJAFT^4aT?a$ma|_5ekSv}x;^P0MK|N`19?&9%yv3^1MP6Eh$`i)$Z$v`IVo%KPl&4Cry??A_tt8T|2PW;zpjDRXfR(YD{f ze`;k>GqLOfZdvxjz7G7G$L#b>+@Z=jKUUT}o+|D|rBB(bnRu&f((0*CKj<`q{oPMY z+e@e<-+i>_j#ik<;{^>t3w>b|yoCBAv$T8cZ6=`A&?@tkNB!@OI}7zf*?2KglNScg z51t6$HTEI{?$r}kObM|+T$U)3$HDe-gypA_@Z|V#wg) zHf{zq z-VE=RsM}Q^CO2C+bet<^zZILq4s&cm{#%wJ_(p&60{o)`X-#;X4@D*TMuR2JXEE?0 z-^ux)ModA>uM64H*{Ff6Voy$M!N-7KxrnvRhL&!P9)1A)gu+i(G?Vqk#XU;1hp#Zk z*^T=9EMxY*XwnkSk1X`iMOHeA#rq0}$X9WC!l2zAF|w0cp|5bTyesEt6KR3|7wgz# zU!jH^XKo8OlQ7hh!ldWGy{T$X*f3e_VJzdY4a{|paG2b{9(p&-uflxkR+cyi>TS6W z*$$4r3<%R$;T)m5d>hBVz!t8D8uN7aXbx7yl~X?toHpk4%3z9fv4S2dJ^r77>w}-p z4mN2nIysJ$IR|m+YlR_WqPg&2!udA^-vGWVlO3On>e~+L@l%X0-iR32cCqJkQT;-W zr`H9#R(tMcDt^=*wDYCa$YtkfYCKH3RDLSG_#hS4?jnswTtuod5gq-3b2S2liO z&Z*7dyStcwAi6e@^FJT<^l38rGfNAE{%)=d>8zu3t?>)13dE{}a;vxs=c6_15c`ew z3c`ahj`M#Vdg$fu)NeK}2;Gp$)!81)WrEy(|7Fo+-_F_hfjzy{8}()dLC~4U>EDMl zpbqw5B-qO!#7*VuybAhrVPAp&Pr_jERUB`Rj?%|im^AYV7HZ3JVf_Z+of{#x$+1nr zLd}1hrv{$0p;BoOyAX`WERTyyuf*@+{hTuU6HH&fI9?q*-InrHnJ@%ZljXW$04i`2 zeh#a%`5{=XlwCcyx83k>0)D0@+Z}>#)8}q=cZh?ZWNlUzf?KIFS7jS6ZtD=%FBFgQ z6pp_GUKew2=(35Sc-oY6JY5Co3*>t}wmuX(v$$1BhCSVuqV!osD4vS0YCU^sFiuTJ z>V8A^J5;D^m&oyQur-69tHUk-_t5Qx9X)jMz+D{bA5I5+p|HnIjW&)XY$Uu|2h7JJ z>Z|wg#(01lW7rPmZHSSQBZ`!^W_C^YKh9;i5{QIwFNXBS`(MRE4)VB3idVkffK z3vdU|O#W|GLXdIDBxVwZ)sh_D<39rF@)4ufjroOPucvV7u1D3nVSi@|+ZqNvejI-j z{^|4hjp^)a81y%Z_4uJz7eCln&tTufpvTs-hiBmFNnzm4jKi_FWVw7}QJ+fKzw=@9 z!g1&A=I#J|oSgK$Kk3V|!i7V|rgDD7p=Txd-+uqCmKc1)4KHf(d|D}G&h!yXwP3m; zko^tEagl1*BjqsmLvJ+g?hrOI0#dX%UI%4Vf|RTX78U_1O=ElP1t{@Q_$gk<@*?oC z@fg*^Cvl}|jb@GH$HSqAp9?MY?WsW*!}f3Jw-@>y*l`PJ6S;#7FU)lP8sZJ_n+I% zo)PcG`Dp~-4}A4rro4#mrd*M)V6irUZ`jXfF2YL!k6V-y)NLC0IS1M9Mf6PJ_$lCz zfG;}4ZZCrVPA)H5=#d3KE0^_-#v=N0Is;&T41CxTW*v>=LXwMn21m$s)JN$UizB{` z^B)dBs<3}_f}M^=lZ0|jNFN4AgYQ1cI-(IbkE`=Etol#zBTh5z#q?6d)nOO-b?|Rk z%={K(|Ld>q+5e~Y@C6EEC(p5*#W;QSIh~o%L!XEYDp>nsG=Cwda}=IgboMA+XG3Fz zMsj(a&N6NIKyD+Le+h9us=nXEbE`_GgneJw;6X#aH>i+;~!VzFGAT$`sLE*+2GyO={PmZgn5 zmd%luHT-*jVJWecuVas&9Q+-?XXKXA%`U|X@qb)AzK6dDKL+r#{;wtL#(;b~Cv+V) zq$C0ti80eS+zn)%dM40!9cL`Ux!!C+oKRD~{@?wMcg2OYiTkkKap=PoE;0I0F9Sgf z71;ea>VGcqT=a<)_?3g$fMwuAIiZ2z<-n(?Fo$K>cgma}JMiRZr#g#UM*D&*&?4}C zz~^bQ6Xd6m(?1n_U+^b}uovXVmD5jt$bZRDrn(#jjpO#6Hu!$vtM!>1c&B!*(0bte zgKsbz{lBL={yUmHJf(Sym(Gt4jtmM2pC3s_Wfte^FQyn_N}CBgLm_0jM_s!CK67Dx z`kAxW%OTavwWp*bQPPPhsk1fHT!FPu@nZ-me4FBi0 z(#G60R^TzaOAC8_H3O?VJrNm=dGPz|LjYmQdoYhTWm*Q~=YvaV| z;23BEKhmB3jmPCFi(B@=@G%);`cL~$%w*WX4KLO|I>JBXpQn+4OZ5qE%uy(__jDGR zfY(T_Nk+ko54=?SvONi?n5lJ-$|~eU--LDMviby6UW=>zD%dZ9eOLgKSP8y~Q2%o@BXm9zf|&IZ5s!2eWEg-YuC*!kgsbA!TzsS~`oxO6o>fEdGq|FfS4dt4m; zvB#Y->Yu!9t$KvkV*-64s0#gW!gT%+Y?XgzEayHF=yTOq!Rb(iy!wVQF%k54a!V`3 z>t7^X-Hv3VMM4de`v0ScKHS*E{O6v&4Pg=S@Ldua$Sc2%Z%J!JLer6{kc3oui7$G7 zPnM46c|kkb`*1lgSsWBS_n(Q2d5MU@UWxE1sONfsDw_`v{guLP#hxdn0p2DN01iP=rzxi3VG>6^$xcnx&Fv&6-6?rBIZi zqDh7Z4N7VF@8@{WcdqOI|8sr&>vpeaJ@b0r^=@|kc_VRaMUzCbSVAl*mJ;*DJ;Xi5 z(qb90thkrBx44g3PTW`APb@E15G#uNiq|aep8a*miH9Ci zB{CBxeLh<~Wr)h8!__rgv`ycKzUUnd(qlwyVIN>sGgAt z`uHKsbEblEALrp)EEHs4iR_JR2DtC}^lbOD-M?GQWwfPw=!E+V-yZ1s@q^nDTZ5W< zoqOw?{JqkgCzdw!TPiIxuEBcW?`OLOFTRLl`?Z9~MR^adUbd!(##?{05}C0l(;Gtq zpXVA@%#r)mJ}qrgz{dQGR=?cqOQM`}J*KQn+8Uz}w{h`enP2zcJW4H^)%U4L^tj)f zC#f56w|nNNuG9We=-kJ^HN!J!>9oc}E>?&9)h7hU_McQzmLlt$Y&2l(th+DFdrIEQ z8ot_n$IQZjedFA&rQ3VYPV@VzAU^vy%eFA!qnpK^O3AWuza85h51;&MW$av*B&9mx z#(*86D-TARh1F&yDikg;+PQZ7z=XZ+0@2=CUP;nz3g!dSmaW*^;BC5R!d;7*<8z1n z&H1bBkuiGpcZH7^JHi&1zw!RKXVt!!VK={6tTz8(trz?{Wr%igfBVi29=)$Gy6Zgc zf$6*(f}4FZ)7+F2uf?2AewLfv*ymT-T=9~SQkhPrPj_WbCAOZEy60!w!=+3yv&3)3 z=%kN7MIR)q=6$#tATjXlC#4EOtnbjz3vKSHEFSz^*Zaw}3qAG^(Z0sBo_@oB?z+7? zs-C&#m0kv(9|JbrX3k`{^?QIh-VY%Y2TCMyLa*0ima z3vV1dtF+JE+SJNjPgzeWG#%6{NPCf@-0^cq?UEepHx`ZD5gIR5X|+@G^B!ki#l@cc zPsN?{YWZhwK^5S1xf63K8akGi&JUl)orYg7jj`)LJc2w2gm^ z*VE_7j;7lC>z$W(Xxi_Pf0%XP-IUqKzdH5aX8TkA`G*yU4?i1m`sjrRv0ke(I!t$; z@t#ohN6k6Bc!zjRR{9ystg(*`)s5DRDvuh~)G4^G2&ulL^_TyC-ZJ;VMOP*-w_9@j zi%-jd^Rm+t&#v`#GQTlz_nq|-r3yU?ri|OOC41VHYhKS!EnFUXvvA4dxGfEu8@G+} zX>uLyY}(`K8QTKsXV)&QKDKC5jL%M^2&cDB{dzncbYENk=}2|HV{_Tzi`LM%4$IT8w5+FB zIB0ggb@}m8yi4y^!LGKu+w~8O^_k*#Ilgb#mb&A4dFd?&@P=>-}x5X zEHh&xj&1qbCoWnyB%{c*<)NVDVnfKFEms}vlWbPcY~3W<>yY#_Y}RPyX(!*s{aT}x zX(Kr`eC6Ko$;X?_-oH@l)nZ|69x_?|e9G!Evt&y;b6wAkzP{2W(r5InNaZg1Ugaxi zdk^^PY$V6TKTnOlrgUP(ijXIfldn$7t=2t|w9@NXU*jX{bKgyQbi``VsZWn<`V{pT z>Oay^Yjd%^&a54|m?eMD`ffOz zGk8gF*{8NGj@k}Uw_85y>y$J_R;a&9GX8lk^p;ttmdyx7twBz2?bOU{R`g!*)c;Hpe z$otgXd&_Hwyea;bwJTG-DCo28P|FT||8&>*H9qo6@2o!!s~x92es)HA;qz5(JD;qw zuB`vE?p|9&`>T%Nll`|u|4a{aZ~x@|_Dj?m&lNYW4>?k3Gtg0S^^;YP?ydXsXpKqG zq|zW|k%#BD&dm7|7OrpmzmYNsYKiMH@We8wxa^2~QNy+rYV7q{_%zCV)i38j_icBD z;>Cd>9UDJYYw1Yeu5L;>AX;zk?AG_i>BKmXnq^vsMQw&0KVutUVk^ivG?yvl=4LSGTef~CT*AUUc@oo>Utr=!Bw<%ofLAI8x zO=@}4&dU6TM>Z`tC6*>F>hJzgX3L$x=G<*PZH=wh$&P#GdUwl~M=q+r*VR_!2xbHX z?n)6TL=_jNdC6JHWwGs(lWtDd3!m9o6?0pBN!2c6z=C|)zdM{f?m70%&3hJlqOI7e z?WWu8nvgm}+jEH`AM{^SjCt>)w~DsCXmZ(-`!hFZ_k%!L=g;Tt4)_%qUA}m8>a#$e z)lVCbpAFxmWKI3{U)B5_xWD67z3RbLt@p*soARrrO=5c-+!?rfy3@Eu%MJZ^Shcxr z@L8yz7tMS|Bpu0ny<>i?srfu*)tJ_}Ra8$_os zejnaj-(${3uQx%TCvU2ro@o43#C$gP(Umk%yS2{o(bzop0 ziJYX6oqv?1^QZOj^e`VhDX~z-H}u1Ey}`vr56mVRozx7QegDLx+|^-WOI1ZjRbQNc zHBk7naA)$lDT}AQO^eDI{mOq!$>!2G2Lj)=*6mk2db;+P_9p+S2Uk4se$X(``@uy~ zk7W~2wVqv+es8?3{H+aLhe{16mVev&dfv~L0iJV@KYrISb}tHK0vUhueDm`v9F;WT6r&bdImEW zm1CRYnFRF)!vbkHpMLHaMuL$ z5cQmz$yyA01z0iw~Wwwl@u{@g2QwkAm9}`5$pR%q;C27beM@-;?>ax8iL2$Iq%$ zA3kC3lVcutS{b#YGh9ErZYJ1q-G&$65pA-{Oh z+3EWECDP01^uM%ABD83hqV0s`XMgT^x+bRi%IQP7Q?`j$PUtV{2t1MYN&bY?fh%hk zP3WCc6E|(MS+$&O-4VM6yZR;fbna_?D7A_{5U7_Cy{z{5hNxzI2y|W{9u3;iyw7ZslczD!O|2a&MMecPHqM`167-?o%}%X2l#d6*NqqKkRbk z+U;qo%Au29pLuPiz{@Hh-#Dh))A)6Lr#S5ALbtXwhi2uP4HFC0(_037f4)hyU7fAp zdgb-f5(}@%ODBaK|D>mWt+PqbJuIeP{A0(#`j|lv8>~-X%GM3PyVA!tw!iFC-N;M7 zcF&vgVoZj=US)pqiH@eX?adPcfAh=FYiz$=a9&qSmc8&V{U*6E`)&NWzvH()iPgEV z`%3(ds%E>BJBQzyx^t0JbkA{@o;`OsA0o2XS#vwDW@^WJ+i8=ZMSad3Ip)XW*3m6{ z!(RRjGoDiR=H%R&7mMs87YT!oe0x29`k1L5N>kPb56DSvJR@h{y6TxvQF!9^64yWS zI$=S}N;~Gsj*fqIBBey5lX~EA8`2dg9B9##pZ)1{rz>))cAt&Br{IQMSB|mKVnuSHf>dimiFWY%4R(HI~ z7SqNs-EAwv?~T4N^qh8q)s>2Sw-!42_g(yQ#L~u>*Jh4BHMH(#-TN(1?)9kg89uU) z>jl@Av6Bl&44i!9@s_ffN|}l+nl4pR<^_#)QKB5B*(_Xh?D$(%jql5cyEZP)3zjpq zGFedgzQfCV=VSZw+D|K2N>==xbbtM(M}^FL>d7zu$9>z~k9>5!Gp%CdplOQXUnbf) z^p|>G=yPcO^l){n{o@bFnLb}R@7aPFqpJtp_hw8TGbFTRT&>CYuRqpZNN}Dr+B%@u zT)*!s)_YX&DA@MwpZ@W@4IGs{NA2gE>@G6x51LDB@T0PCw30A-jt>2^0K*j?3Gb!&*h8t<7X+w z4NI}Vp-?`l*WDQ}vb~Qk{LyMg{mfIt$?ms%4k^gqZTDNm~@k2cG zw%m!{b#d{s7oJaN=B$V?ZgyBEYSl9MDJNAXzcQij{*)UVADPHso!aWK{^5AZ8=?Q7 z#xPFPh&q(#{OkW|jNZD2)EGV^xW?F^U0`~p>Yv7t;2L9g*hSs{8pH6P#t@-1ibf=E z>1CA}x_aH1lgTxV|DC>OBkZo#6G zkWrUh>*QaJsCld*ef#eC9berO!@i0Fn~rT6J3Gx@^l5;n+wtbr<3r^9H!XOzz5m@o z^P+>o^jE!=-}KTjdb#Y>C;H=iR(&WHU)=X7?#+{7^%Kf=DQ~?rdu7SukLMG1HoW_O z`Io(%^XjOa!?{zw+7veoLSsn(*BC;TB%Rfh-j(P#PwcgP<gl&dvt-Dvm6{^u_hl}Bei%BRKejfj zfDOIqG5Uhv;aZ);cU^tZe{V>a>?rhYaZOx`ua6gdz+NAVoJY5!#)k__de#gl(D|mz^4mpTkf>D zyNNXR?ypPs&?u4pm6bC%H){2agd{nAGsoT4;v*CE^xJLi^KKbTcG1_*ijBH2Qz@V8 zovU^F^=y+rM*?^6(d=BeKkC$&3r;2{NAJ+S{9sGxmAU(K<8nP^tzV3e%-g)y{7&TW zhaNdCFI#FBczhZw8{{>l+Pk4Ry>RPtz>b}yQWg%%i+2Kyg zy_A5G%^N?M#5!xdtp6})hP84?!-KP9f}D-@j+Q#RZ>TP7nt5{j)3~U5J>$BFygioF zr`84~+%gNu3%hFnEwy5Ntkk@r1N74l$*ukrf4uO5#s~hj;is1_?DP=N9Cv)Z`PW~Q z9}Sb}h{?E~nk|}Bdo8l9>YR~G@Vc37Qs2l&{mag8QR;cKcjnFfo3`~mruoV#`^xpt zT;(>#|BzYQqP>cI*R_?c8tJE|e97B$tZjTrm|aP(S3!-sFsWqHV6#(W&ZK=f`PV9X zLsHj?S>J|y{Lo8Y)qCaJmdT;H^&2kT;a$>;&9#r;wr}|NsQ6{gB8l-!rj%!gbUoOA zdv$JN$`4H!N8#uGo`+AhUocxeNA1#-%I$r67xR|%eztngsyv=**3o6k4(IvRa`gj> z-CNd|E&ZGHYnxv{-Q2t{{f?C`n9bLiS07xJo^xcW&^UNX&*p~j2ixv!+KE_d$TxkDpsj+un$}(v?ou3QW9cgZ>tyML9s{UeLkx{F7 zp+jkry;}dmPtIk|Nhz~;t(p4vZPqmNh<$%v|LXlm#Y5?%dg_LOBR%W}{OLFz+4W8M zBmQ~b6Vb`P{(l8y7&r0_c*K2bHzxRf3FUz$^dVD`~ z=D~!oetu7fcrc^1L0zX$tvPgHY*yK)oKL3HCQdAMi(1`Msr{R~T676w00<)ae zbsLt{CzuTBDqb`3XxHKT$hoyDgNC{9iajAZ|Kqsq0vqpms}s5NV|Tv&B2)gttU9yB z(k$xv(+`%++Gb;m9$#K6Z`ZD1#pvk@PkIM`4w;zlG|$g)=*UUwpNFIs9JyS2V{v-( z2h(SH{n~a`HT3#4H)y|)zT*6V>@)MH+wI7E<2Cn%Y1Y~SPLmI>?K^8<@THh#y=RB| zr?1<$uTC`g@u#-8n-|Rb_Mv{|V5u|J8fOPDE#6!iz35uD;n$zPKL7mj09eE;>#LXp3H>L)jYciM^pMZc0yc8xsu z*1e&}&tW51cb!_Bq}=~x*fKNeF@JL(JqW1y*7&k=+0*Y`jd`NzRZ$7JT?$51A z@84(0#0xJScD|8Na!-lb)b+4yM$7LLUuO?B8vT5Q`hA|w*z&3uPT%)e9TS`~>nl2% z^?iu<+>09%>fZa$i+)w0@Mo~*-xZ9PGNT|csLrs0cf%>%(0{RpZT`9Y%4=3Rj?cKi z!Btjg+p)_vzu#+2jy^lW_Vlas`uSZU$60uw;7eId9^Y340rwwnmQR&MZpJVU;vXms0=-A)nttAD=8&4283y{dfP z5z($vQHFWd(YSI&#nttfmcExOmHM_Pm7leC#*>69v$HDBeIqJ6iv}JZax8II$fYR- z5{JY;UL09JeNaf#pu;WpE+bd^=v5vO*O$CpczkvAjCWlpo@TUU?-}kpX8Xa)*(ym< z(XUDb+P$X!=ow)ssx+{umT9`zF|*0reO8mf$H2S*18-5zqEq+HzrJZ3ZJnAZHvhXV zCH{8V^h0r1XKmqS=J{^_;iY@EG3t6u$he%&?S6YM4LG^k_uZkjHJ<%XjZu(#`lc?; z%(I7-S@5?w{;dM#FGhQ2md4#uRg0Y@6EJe4zPZwIZ@sZkpJv}N7A(=s zQSjI{u+3RVRM%87TKad@7*=OwAyqmebkM@SC$03QmiwIeyjNq)<;;&qo2pK0EH2Xf z;(2rHv}>#0^=o&%U~YKc_OjY6>2r1O$K16R9Fbc;Y}WBhd#;~sc|5SMXvI~jx<69G zWSc_u_LT>JxS-a1qO6k1szug{DSpj!8(mgB86S1@N?>51wqbx_!d{t8k6cemCuZ#v zN(?@9WZ>PoXEV$$CVlT48!bEh-L(qQ3VR6+-6hf~8y?Bq>~Tx_v+R}mUyUEXJ{)<{ z75g#z>h%W-Sx4TrjOa7slev>a%d~5v`BjrWlCpipQ{9yN4ohlP7!p72>p-7yi4+^h ziW5DK?F*PaA^MD6za$+e^E)m5?*u&U6Do1nbnXbpt0znUUP@W_ZSKztDk@%sJA_{M zi(eROV9eI7eooHUz-Q?`iLC*(`&I*3X8#VLV z&}31-M9GeCg%#W8%-x@9IAhZjji^gW6 zB;1>sw#>jp`k}MM*1kIq6~^sZt839`BR@m_g~R@kWM5bPhb0d0{GUuZtdi~~H{wEt zPM*hajr9+_l$-OfMAhZpd$2mCL+5^W>u%jmL1SKT7m01G&D(~YUuwJE#^vp+MxC3_ zzc!Y}6#bE~%D(XR)Q($=Z=FdF%X4{kG30=KcAK7+_K~`#3>lezvjK%ll;J0bVQ{+IE4733dVxmU@j zn?;QF|5fFBd|8FaKCHk!I6H9Xkr4ifjc#f`UhCDynD=rGIusUAVb6)Y7FD?ouHy3n$Jl+x$AH93#gW82X1a?bT z9zJwL*Sm*e>u%eAk2Lk?FWVtrAinC;;b=73z-__x!dAPc$(ajO&3vx-7nKcB9B3|5 zdyyZTlsW34$HUa0jXo>J%S=6eYo0;jkSp1H+O~$bZq{pCGBlibc%t68*UHbcN@rc1 z)m(FLh}2^JHF~eM+gueE-|0MHXEtNbO<#Kl;C+XQS!GBw8ytCeTZohVS`|RbsHFHGf^$W&}*EmTQZx0l1VRjwklmBFl zh>&UNH#O|XZP}3dDoZ_ktRJK;>*F%{Sp4&sn?3d?x|KaIbQ-;X^tBCRT=YWjX7|pS zopRM4 zK7=nxv)S?{<(K{Hfmu?uqhfQvbv{TGjhoF*Sk$*VtKDC>(=$?(k?}fl-=zMA(f1mM zDkrJGFAv%%G+Vm;>$Rt0sZ!?O1-s<*z8@-^{$b4iVP7S+2$xF8JK=M`zzg?Zw}|8!I+kceCiy-dE6S zls2<9WJHNh;tbJYrN80!PG%}UHyJz}Yjia%eRXNz`z+<&VoCJ@gS;2di0X6y{-0E{ zbJ1hJojlZhA-84uf-Y-wxuT{ujg?jx8Y``D6ev z27C)bZxaOi{NxS8Bv}7MfeAlrI?&ieff+y84QP3yK*(?O0J@YYu;KG20(BCX><(nP zMBu>Jp8%Aw1X?22107f*FqaAds9ORhelvjNmkKQYp~fy1jN}UfK_xE5q6}F*xfE8L zX~V0f0xNzVS=Cr37{=G6t!~Q%ru=+Qpyh;0$?9oBscV7WE)y8@(@9QkxxkX2PTqMh z7YO)ngf=Y~So1q+@7?7Bd%oW|pgu`J3FCn#67r(R(g`)w>cb>>l}=H}hy=s=?bCqv zB@2|8yGUTfm+{bp<0648U(i=yg53}a?D*+~B$8n$hSFe1NS;(JP8R6#^(mQ9U@Ara zRMTQMEy}Mz24%?h1VRP0b?pjxAs7!6Wh(?0{0Q=!zY<83klji|rT+yeVI?9}`2cik zrNEZoOb)cKgyweQ3|C=CFritiASd_;v}+Zzss9?azP$=gwXXyBiMaf=K$k%Dn?0^`l?K$$66<&pY-l-8xd zTGnU$$X|`#iFgO(Oelf2B@=Rd4|I)CC$0V>BttuF)&S)bmq4h3upM_CR)(WVuI0th9L?X1n%rSiXBb(;lR{20o} z-_7XI)FD8EEtn(ul$)hnFd<~-0{xT!8(Rdbd>#our-e>hkl%`PCr^HR5vn1-)3*u? zq~-wpv#WBez>x0-J~IP)8_7eL48bUVHf<6U(xjB#%0ST?|F^5xHo+i%0d@KCZ5S&R zRM!AP&E(i7LMBwSqHQ>+h2%Cr6G)%r#$+Ow0`gN#NK=F42+2cVCIjfC4fYI4NvFjn zgh~mWXXslKN>mr2JSvi7mcW@GOlUQsc0y%@coeMSb|62B#cw;}%OVGM67nJ&&$rV# z7y~qP2avuiP{a=Ow}~^*F+w$?f!YZ#V3DikD5(vf6jw^%;u_JRAK&c}rS3(J- zB$bei3s4!MW+x!|-AJn&Wp5Ipd}{tJyU{t#genOo5R%`6WaQJNnYaf{Lmsc+gEU6$ z1bRRyn~?looWtx$pnodrxmTdU_u7FUWA@VUCv=cd!XBVHLIt~k`eoxp>hA^`O{kOP zmJ%`{rKbqxGoZKG81H`nYcu_Q)RWt>Fkv5Bs(>=EVIP%`Lc2#OpYkJ{1LQ~CSVE1I zf|MK_w`}5y2ze3rmk^J#Y`32dBXNoQvBQnH3xv`Mbr6am&E^Myl4*`D_yDx+3ljJH1sTcwE%L8&W1e%bC&MhEoX@v4<^%fyFvLSI8sGYb`hp{7{ zv@9i5L3=L}@**4G38fNec?8IhVv8k|P3RP%VAArDPy}fiaTH_34fU-=0#vjAeN#7J`HKBAfpc{l5Y4sPO=8-_w$FakUxL88@=0GP2 z#n9e1LNc^E>;#Y|tLdl;ccYTG@8G_!!7oT3&m22wgrEkI}z zp+Z6%38m9x@ZM>hKI$^rGsv)v571ab!IOYe2)RuKDkj7uBykp~z!%7YkQeP(PNxk|(+81y~i3lNp4XiMwBb2ZIVZ3C&7O@gfYlQNm3x;vwKiX%4-J$5A?= zOhS$nLMg3Q(D3OZ6ijI3C9LwOM8SlTNz0Z?cy1Q_F9#Kupgw|r{CEkMw`}rY*kzz( z@+#;uhIl*0ao{oyds6!LGNx|!I3U9-0tYGbV%`;qH4}9j6knd~bX>u6!jS^Ey^0N; zor&S2Kyum=T3Zc2w9Vo95I|^q2wb81~G@ubT=${ysV;CKkx}0pj5i3VQ$t{1yW3egH?)2|a#*y(aU4`j;ah{TQGr<&bkEE$hqa z#U=viN;&EhGXY4dLNEsJia--81Y_}L3Y0~hADy$86#{p>xd9nhVpX2FC6(y+im^b~ z3ANJ>{zL4@@&KCnP%s*A&_Im1Lel)=Ax@kOtqy-A7>{>upoB-*D{u$8N=TnFDrl}DZfLc@pD$1XO0E|8@)Hzjl~6iy7LNsJkB$=L>{huH$$w{8dm`o5NanmejO6tISv43NY1N`0$Hb9V!|HK3G>OZo$KD9yZq}ptrBvvj^(c8`6p;B-94Ac^*qHGY z2}&iObDtvK=6@RJDSU3Gh-{xBr4_WgnvfUyT=@(GD~p;$={b!v(&zgeoPZi^`*XCj z7sXLaD466_8<4*mYOrYyXxLO*&1ygaHOZ@IgbIn%ZbS~U$opx8YADJrjqqNcP-!Ff zMv#`CFK~89@mK(UI~6AF1sqTzC1o#QOrAKompCy6ggjnis~e%UFLCaJN!|6AI9b`G z?&nJ+EtR<8uVA*3k{0p`W-DmQuvc{M|4IETq%V(xlzt5@UNo2NUc*`=amxv*!~tD< zjlflQ0R4Fl|I%p~IKBZYm^2)(o^K#mF&U`%4dmL1lWKye5mSMj31!jhiY8cV_6EAt z1Yfdgptd)`XTK@n4Bx_ocH)BHq9xr(OYU2=h6(vxM<|(4-)1}xn$z$Ua%v_m^cBS7 zW<*p$*Mk$yu;EBH-ZoR@^eQ@}1=B#D^aZq_F!{8)k5D?M57?ne9<2C4&uP+p zi%=mU*^jVWL!P>Qgj_bEw2$yW-jC!6$I&@e`U(z7weI6U^q5ocw1bt(lO|XP7Ph3Y7U7CbB7|4YXQ7 zigmsK`O#|R7pxYp#OmoUFw5%z*GZfTO%127kZUAv^;g)- zpj~R-0VQ>yI2^Z}JVv)h87G4K3tHY2Nt_vBk6jJ^F?TkwD(7 zeFusmyCL5ZWgelu-y!Ela!oYIV{KrHCR32}tf_CmlxO-gjb0J6Y5H0i^N) zXvPn;X)|fr`U52j{tWc+2YmLTIC}p?VbaOxu|EYuDWX>WMD6uS?AA{>Ur1Yj{S;V9 z5oOthR;nNr-9@FR4QIOGT`76@y9>=6OnG$w1zQDFtJGguO`v=~{Dp(yMqIz&K*@wW zep4l>G17m-7>|6vO(>!T=+AHXo<$B={6Rbd%6HTstjZJG{|BoHw4?S9s*z7z-@ib? zgk1ij8eYCYX@Bwf%%VyA_%Duod(kk7Z3;rXGTi|15V}fT$G=;JE_{_jfI6(mLxd?y z2wnLmkYO_ z8WgkNlGsr|d(EV<>PRS3N{C5G?q*2|jrf`rYN?daSgIZ1rrhY-V)Ry%t@3y(A# z^%RceH&UMj_Jj>L3VbUe0j-wy6yh3q8AwuEh+#*`5JOPUOP@gomPWFQwza(`rmc={1?k`<2OYtm>~CyPW@5LYG( zYcixox)+cmA?IF*t$=)9)C>AFN#E&Sh$xl1v8fk%MR5%3jr=9o0!`_S9qF`VO>bza zz@Iy@B0?rLK)-t;s?us)1tqAl|&kK)Hk*tAL*NK{mXe01c3XTmkKvAO{-} zq-C`nqAa8;6v)B*RFeB4huGRl&aN-CG?SKveX+NYRu2=GM~&0aSE$c7nU32-?|#@T zAiEy@C~LHuM5u!Dm)}o__YOiY`U!{eEdsEkk32X>ifxoUa_UANERq-M@hfO`uRPky z@dfmi%OfulB*#|(G9fKO1>_}$c0>{9N8COIXh|kiOGuMe6%>V*QgkhGSA_Ek^vp|E zL^84|@Jou=szN3{Dk72kbwGywk=#xSa&~{DAegwr{joQ@5vZ|0iWNaSl$2n??`uTbro^xw0c=dh;IqjiGL+IY%2@5B)iz~>YeHzy02C%a z4?a&B04;9IfU*W4X~{E@mf`{MFM;;{A(T%@I1s7Vq~b3bNQEIS`2)!p;+h9Su9VPF z71(v7qRvne;;VCNrkyH?T!rF&q5}UaC|*@n;V3Br{;KFwnR=j1Rcvsid0(YUy;%fK zPE9zP-?#+s`Km##A{%I{ns6N7BoXL^n$VV?dH_gs5EA6}3Ol9_f(gGIaN7rAN8Wy* z$AfSJW%dCLP=_lu2Z1IN;?e3xLh`vlchymjM&jf&5K#MGAU6$YaiqN|8t^Kc_Ff|t zOul^AK>A{6hwWelUP!(y8ceAo56%yUmI&JMX)rV=lMRa@IL8rmj+2I9M>@$B41rt% z+4wR9o~n=*b4_?9AkER5h_abhPiR6epHK^}dXb#27W~U1UuJ3{auc$4Knot|6Zb|7 z`bx=$t~M2#Jc!grp5>1N9nz*^5qhBw&CS#h>O-;WbrfjYP-w|J0flk37Y~%H18WJSrAY^MtD&|s)`eUn$t@z(P99t)q(U|%^ziT~B;=+i zbmFHH+CW?BWtCE z_Ugl{Y+7y5hxavvG>3yrrpSYbL(YV_y~E*wChd4V9R3xMrv?V_MW5_0FaTFU=z;;{ z1QgLP1LR(Y;uRWV3Kh_?oNI`QQ$fdLmm!XRJ003eL!l18GZshd2ju!{qE999OW>ZP zc)U%za%;6lwzM#d!aesQ9n5Dfvn>iB=6zaZKZ-0ZNBxLBUa zBDgqsgwRIO5kZmJclaE~=k;+mXN1s5QU63Y?+ab`z;8am@^6tg(~0Jt^y1e|2A zM+l7-gE>AF^3TD)I>~fL3WqAHJnar^68Kl(Z{)LSBcZd;9K$Ufm1ANB=lEs zddk870>AMzs~RaBt|)V|TRsSUJ@~a}SU+Ro2t`MZ9}E5=_^`8VqA~OoaQev~^56O# zTWbtId6=1GcM13={405$-7|*%0*nCS|KgK}PxE=!6Tc%;tZC?$uLQRjpY#jNk@!@O zC*8a7F)m(ix_L;Ks$P4*n8&`Frf5CCbvt z$t!@r4gT&u)@g}j)SS?5*AVg_8~RUR z-_Hv6#9HX6n2#?KNY4P|Z8_HRD%o&>aFn7v=f6C7%A4*ZmOy+KmuKP=!SAkOw*|19 zj&{b6|I6oq$E>#ycJrgV`^pWAWmu1Y%-n@&f5C!oUdZvzPgsf&`E2IodgWllD*>&G3he|e)iCL(zrr{@8JrZH1m$F2~c z$MH0NzJotq&wkjT?wXt)lHG~V;it^P7WxGV{~e=F@UG9;LRy11MF_n6u}XQyn1 z!$vuBWA7(q3-PIYZqB0-OjDcwqp2Mk7e`auXhrt}!6uByJEqFx?Py@ib}$+9yt{S2 zVB1}|IpzoRwi9Y8>f=E}C8Xo<2>;4=vDJ2HHBC-F-2yGu8`HLnUAMynN5D;_=?XmF z1(dNuntifE3G=xlrwA?yy4LhzmZOALis@WP<~X`kt{#2a@==iIaVhu=<9guj`>`9N zFd8&D`F?nywO}n&p7pdxYIvNVGKf_SenNjX+8%Maaen4NKTYRKWwy#5qokShXFvGq z;4KHTTlQ#$2riZO&@&2p(p6Xw2TV3U&Mq!@JO=suYHYj%9f_#!lIZk6$-#%JvrP_| z{Ec(EdHiaSw+;Nn!K}gocKsr|`46y5N8;5Grs#+k$>RKE;Qhb{YcWqp9L2)9-SU5- zryYEOHrwS0{aN$7d3`))o5APluxE}qa_zVSMMIT+vp|T)8~ZhEDLQ)tUWuMSHe$X_kckv(Rri zhPjT0pC(+qH{j9g*PIxwE^Y@np&7^4SP}7Wl8@n93N~_2cyX z0lx|SR1fAmh9(1dpR+pXG;tKR+wPS?F3Y`0&Kr_%albGsQ zbcsG!bxpYc0BWMAuz;~pU%{FECBx&jL4K4k+c_5HYUI)>i8OowukX+5$0GePT-r=~ z@p$2IbwB`9cSBdDa%J&GJ1m9#@*pLWT>8&K{}%9jW7+9(xPS<_ zJWTJ4l3>kr5&Ja`WpC!<8V~*r_<@PcWjuHuC!f@Z$CCm7YZ+TR9(oEm|49$Y^OITC zc%ikT3D+jRoc@+oOv8g7>|7n|&<>a3Px%@)#{(A!87|%z;ID&Uo5s#VUV*!&R)M|< z+I=09oFEh`cH&JCk@6mZzXV=#1Dh}bUD(*tU6#p6&l(6^*~r#SK>L_%?v@vWKMUSv zGkY)r?l*4g=1b9T_Tay7WhxUf4AVDu^N&z26@+D($)-(2SyI!x`7+4cLVm(_mP35- z`fffM`cH#T-N{-fqP%Wfy7_A8h=QLsdzi5&+9!sydk5`FCClB*Vm)!%lkpyfA9-?U z^D@Y9%VGJRXmia+2LJHQh_@4b$N~1z6M0bK{LzB`iQxTnnT;1sv4`FAitv-B#-T%O zi5Kj4a`Il_|3JRsFuO+b&76L+dj|ZoqwJ3tj)j2pb106B6>Ov*XRedLM{xOchaP3< zFUeYb+?~F=y8Ca!{^!b$;g8n=g)P- zOH;DBfMt=qpsHJ54!#VBp6{2~lgX%i`r~ds5&Tr}npc>zH|prc#cKq+72p?NWmCNo zZy~4uDB4*CHpX6O%p1o`o~ze%_>%~`LB*`b8+Hpg{f3aI$yalW4V;4GRm%B)QVn-k z>?ydzyr;k)6;9p*oG1BT&NfdG>MF``b)lybwYl{}R!Z{896uEOlMDH8k62G1_@B)A z6M{Zz2EXeubMt{ejhuc@=pO@KT+7z@ATCFaH$dNh2YgTL{d z_4dUjDu&C0tsRf2hKo`93uf;t#NT>yarK6uhLAt<+2Vh1+j|f{Xx=}!HkHioTU-7i zymM;f1>`H+2L*~*oMMM@IG|`An}Mv}S2&oT40-n37a=#Nb{|!GD7=NbuUgD@s!&5w zo+~j;b9$iGYqL31aj&c3j@Vn=>z1GlLLIh$Dnc;fQuh!(2`3jZ_z@KXHHlD2A5B?Oa>n_0_aJ}&9H;L)` z3w0EE+!4!$?(N`JC$s7PLOsQHPTm9hX>^?SW?TKyLiwD2eaQQRAMC^Kl6)4IA5+L5 z2fx^tNlt@)eU7KLqSp%@KPH$a9IP13{f93l!KlK z=()3ig-^%*JdfjV8ev2u*QN<<`*d_t1*bp&n`_az@Y5MKmWY{j z0Q!f=@#`V`4YjGT>F76A1H+zFd2kCTd${Yhne1BAmAIIBA$ zUJUUG8`%?RaZKRUWPqbD0OZsE>z-?nh2y+gQDF-sXHoCSJn0@wZ*Y7o;G^tjW;p{j zY3Gd20;dH{wOiTT8K|LSMt9C$fRo1OX9n9pL#X9w!s!Ww1^TK&BJ)41MgLk|7!n^g zpR6Wx(k57`g7h86_<^XDJ{Qvkbp1M5-o2gK2BK0joK<>*pqsY-E*29AFDp{Iy>Z4c z*$rLCceC6;c-fiO&Ch@i>Zo!1*z-UdCNPd7S(+I8qA->#AAb z5X3J??RM~!E{|sc`7=-1m=M&dkc-n7apD(qyti-I@(|>=g45H6{L;g3U@OZ9?<&vP z{fQvy700pdKj$CAd0fGGVF_^yLxL7^Gp&=;L=~iWD8Khic_uO+!+G=sRv&{u`+<#{ ziB3pg)9tA{&1Nib!tY9Y2xEq(wNXXMSo&jH2^Grlm!&R2% zD9y~{U)hjZsH_RcufR;ULxv`PWB#-7c+KPdxeb5lopJ3iwrv(VN|V#?jFOK;)K!1j z9g=V4GtpJ#mp&(d|3}RDin4j{3t87?kobfrGl zoaNZ5P@$F+XEs<4Ph6OoBX9M;N5^Z3(W4`LVMt<7Sk!E4lwhtfWiYuP?tf5X{loB7 zm*?D}SMU!oyLlk<3BxOIGRLcfr`wrGm8FLvovEB2Ii%(k^ei953d4k&4#}&u-@E+p-=!z7e$%f3v)i{BR6@NSOk27bq*v#3u zN@#L5e+XU&d-e@wIkWNHD-d`00$oSwYtUP|tZ_D+Z|C?F$kUZ=>@YSc9MA1$PQM05 zqbr>99nPkNqo@2h{R)sZg`OQoY;8Er?@ir7m1$uH;yB(L!7hfQw!z%AFv7Fk2znk` zvW{?}o&raUP^!M5{|J~-1Rlesocf-~&0DDNW5?!3z$}kzk#qeqh~Vm%QEXoXS}Jv8 zw^_OkK7#x~XI347)=}XOV+rIRLsx<;lZ(V*Ealu>1KD<@b>cYY7>OHyHunu8)g&CD z*^g%_k$AjibMo`>l@uQ~4o+YfA`xyrXEzP$>4f~@NvtUn{?u^%J?N(|j7kW0%XMg7k)fE#s{bDW;XBMy#QPAVIvs*q0 z{?pfLN8?y%6!NK(-p$in5+9$8#Vj)l?Uucxo997R9(+~;D=X$a>C$ z|G~Su<(1(JJ6r$mje&Gz@-XPc$o7 zi1bu&?$;rmFQF#w5&N(ZX~^REB(w-!O6NXiy0LImhEsDN7Y{9{4}HQyW1**%b(_^j z+Gs|lJY_p#p(mYl=MehU2VuQ?&MHYhl}pbQ$kUf#PA{2s9NaJb_bfwqU+{NcGuJq@ zPt4wK{np?W!9QtYE8{Rrc^rQiZPF8bOEbGfyh?VrycJS56m~zhvd?i;7LMNzd0EIS zeqe@+@Tke-^q8al*I;c>JDa@-z@mFXN|_5!!qo1Jo=Egxm%uoC(sWLsVK9Ni;?KgE!}(& zYTgU{FclU`yvf#XJ`}tHc+){_$6}njY>syVPkNjOv+~6VEP~?~fR_e8NsIMNfS%-x zZav=MWx@ODFuMfkY2^GNJ)}Qm7+a8lglckgO$&T)@CyytLE-vtbR;r`DBEG{x^c2wm2aJqn1aQ?JHJ{a2DcJC*np+DQdMx_4#kA80sqX4`7T8oVmN;^pko5;p7UYr zm*Q>^!=?WPuEjA(spM34c`4pax$Ia%d>X_T2C*+ok!3edycEZXzE3U-X2X_2y&LDw z3dk>l{QsFq%Jf)}xB|2om;n^y0OHQn>61a?JD}=+1I6rtcw*Z0lQqCvhXWd#pyupC zpjj8vr~j-0rt%xm*u4N0cLa(TW=+?s1y<=3pur{y%%&%R?%9+xJ)#z9KF2gj>ahg& z@A80pstTs})dJ0LKr$aRlJlZ;`o3CA36=-Dfn!FuYJm-B2cU^S2Qf4}h2XA==`wY| zQKbdIh?s6y2P|nFpk{;oxeBO~D{gvY9WdxSpka1?Au#0t` Date: Wed, 17 Nov 2021 15:16:11 +0100 Subject: [PATCH 7/7] Fixed Adrenaline Boost Game Crash --- tpdata/tpgamefiles.dat | Bin 3768092 -> 3768249 bytes .../tpgamefiles/mes/spell_ext/aura_spells.mes | 6 ++++++ .../tpgamefiles/scr/tpModifiers/marshal.py | 1 - 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 tpdatasrc/tpgamefiles/mes/spell_ext/aura_spells.mes diff --git a/tpdata/tpgamefiles.dat b/tpdata/tpgamefiles.dat index 13e5cb2e8236461102375d785f737b28dea047f8..98b42eefd9d67000d7110f4d35ad7bbc9f108e18 100644 GIT binary patch delta 37376 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 numberAurasLearned else False def radialLearnMinorAura(attachee, args, evt_obj): - print "radialLearnMinorAura Hook" classLevel = attachee.stat_level_get(classEnum) minorAuras = aura_utils.getMinorAuraList() learnedAuras = aura_utils.getLearnedAuras(attachee, aura_type_minor)