From 504544ced30146f0bcf6cdb85223f3d7a22420c7 Mon Sep 17 00:00:00 2001 From: Wanne Date: Thu, 28 Aug 2014 10:51:26 +0000 Subject: [PATCH] New Feature: Added up to 15 game difficulty settings (by Jazz) - Externalized the difficulty setings to "TableData\DifficultySettings.xml" file - Some INI Settings (ja2_options.ini, CTHConstants.ini and Creature_Settings.ini) moved from INI file to this xml file These parameters were moved to the file DifficultySettings.xml. ** Ja2_Options.INI ** ENEMY_AP_BONUS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE NUM_KILLS_PER_PROGRESS_POINT_NOVICE , _EXPERIENCED, _EXPERT, _INSANE INITIAL_GARRISON_PERCENTAGES_NOVICE , _EXPERIENCED, _EXPERT, _INSANE MIN_ENEMY_GROUP_SIZE_NOVICE , _EXPERIENCED, _EXPERT, _INSANE UNLIMITED_POOL_OF_TROOPS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEENS_INITIAL_POOL_OF_TROOPS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE ENEMY_STARTING_ALERT_LEVEL_NOVICE , _EXPERIENCED, _EXPERT, _INSANE ENEMY_ALERT_DECAY_NOVICE , _EXPERIENCED, _EXPERT, _INSANE NUM_AWARE_BATTLES_NOVICE , _EXPERIENCED, _EXPERT, _INSANE BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE EVALUATION_DELAY_VARIANCE_NOVICE , _EXPERIENCED, _EXPERT, _INSANE GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_NOVICE , _EXPERIENCED, _EXPERT, _INSANE GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_NOVICE , _EXPERIENCED, _EXPERT, _INSANE AGGRESSIVE_QUEEN_AI_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEEN_POOL_INCREMENT_PER_DIFFICULTY_LEVEL PERCENT_EXTRA_ELITES_EXPERIENCED , _EXPERT, _INSANE MAX_MERC_DEATHS_EASY , _EXPERIENCED, _EXPERT, _INSANE ** Creatures_Settings.INI ** CREATURE_SPREAD_TIME_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEEN_REPRODUCTION_BASE_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEEN_REPRODUCTION_BONUS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEEN_INIT_BONUS_SPREAD_NOVICE , _EXPERIENCED, _EXPERT, _INSANE CREATURE_POPULATION_MODIFIER_NOVICE , _EXPERIENCED, _EXPERT, _INSANE CREATURE_TOWN_AGGRESSIVENESS_NOVICE , _EXPERIENCED, _EXPERT, _INSANE QUEEN_POOL_INCREMENT_PER_DIFFICULTY_LEVEL ** CTHConstants.ini ** BASE_DIFFICULTY_NOVICE , _EXPERIENCED, _EXPERT, _INSANE AIM_DIFFICULTY_NOVICE , _EXPERIENCED, _EXPERT, _INSANE git-svn-id: https://ja2svn.mooo.com/source/ja2_v1.13_data@2123 4f8fa57e-7814-0410-bad4-adc449f26b7c --- Data-1.13/CTHConstants.ini | 15 - Data-1.13/Creatures_Settings.INI | 47 -- Data-1.13/Ja2_Options.INI | 150 ------ Data-1.13/Scripts/GameInit.lua | 9 +- Data-1.13/TableData/DifficultySettings.xml | 431 ++++++++++++++++++ .../TableData/DifficultySettings.xml | 366 +++++++++++++++ .../TableData/DifficultySettings.xml | 366 +++++++++++++++ Data-UB/Scripts/GameInit.lua | 6 + Data/CTHConstants.ini | 15 - Data/Creatures_Settings.INI | 47 -- Data/Ja2_Options.INI | 278 +++++------ Data/Scripts/GameInit.lua | 7 +- Data/TableData/DifficultySettings.xml | 431 ++++++++++++++++++ INIEditorAPBPConstants.xml | 10 +- INIEditorJA2Options.xml | Bin 1472010 -> 1417038 bytes 15 files changed, 1736 insertions(+), 442 deletions(-) create mode 100644 Data-1.13/TableData/DifficultySettings.xml create mode 100644 Data-UB/AddOns/Data-UB-1.13/TableData/DifficultySettings.xml create mode 100644 Data-UB/AddOns/Data-UB-Vanilla/TableData/DifficultySettings.xml create mode 100644 Data/TableData/DifficultySettings.xml diff --git a/Data-1.13/CTHConstants.ini b/Data-1.13/CTHConstants.ini index 3be44c68c..e7732c27e 100644 --- a/Data-1.13/CTHConstants.ini +++ b/Data-1.13/CTHConstants.ini @@ -286,16 +286,6 @@ BASE_CROUCHING_STANCE = 3.0 BASE_PRONE_STANCE = 4.0 BASE_HEAVY_WEAPON = 2.0 -;------------------------------------------------------------------------------------------------------------------------------ -; These modifiers are applied based on game difficulty, and only affect -; the base CTH of ENEMY COMBATANTS. -;------------------------------------------------------------------------------------------------------------------------------ - -BASE_DIFFICULTY_NOVICE = -30.0 -BASE_DIFFICULTY_EXPERIENCED = 0.0 -BASE_DIFFICULTY_EXPERT = 20.0 -BASE_DIFFICULTY_INSANE = 50.0 - [Aiming CTH] @@ -362,11 +352,6 @@ AIM_TWO_GUNS = 4.0 AIM_ONE_HANDED = 2.5 AIM_HEAVY_WEAPON = 2.0 -AIM_DIFFICULTY_NOVICE = -30.0 -AIM_DIFFICULTY_EXPERIENCED = 0.0 -AIM_DIFFICULTY_EXPERT = 20.0 -AIM_DIFFICULTY_INSANE = 50.0 - [Shooting Mechanism] diff --git a/Data-1.13/Creatures_Settings.INI b/Data-1.13/Creatures_Settings.INI index f92850175..0aec9b9f0 100644 --- a/Data-1.13/Creatures_Settings.INI +++ b/Data-1.13/Creatures_Settings.INI @@ -4,50 +4,3 @@ CREPITUS_FEEDING_SECTOR_X = 9 CREPITUS_FEEDING_SECTOR_Y = 10 CREPITUS_FEEDING_SECTOR_Z = 2 -; This is how often the creatures spread, once the quest begins. The smaller the gap, -; the faster the creatures will advance. This is also directly related to the reproduction -; rates which are applied each time the creatures spread. (in mins, 5 - 14400) -CREATURE_SPREAD_TIME_NOVICE = 510 -CREATURE_SPREAD_TIME_EXPERIENCED = 450 -CREATURE_SPREAD_TIME_EXPERT = 390 -CREATURE_SPREAD_TIME_INSANE = 150 - -; This is how many creatures the queen produces for each cycle of spreading. -; The higher the numbers the faster the creatures will advance. (1 - 30) -QUEEN_REPRODUCTION_BASE_NOVICE = 6 -QUEEN_REPRODUCTION_BASE_EXPERIENCED = 7 -QUEEN_REPRODUCTION_BASE_EXPERT = 9 -QUEEN_REPRODUCTION_BASE_INSANE = 15 - -; Random bonus for each cycle of spreading. (0 - 10) -QUEEN_REPRODUCTION_BONUS_NOVICE = 1 -QUEEN_REPRODUCTION_BONUS_EXPERIENCED = 2 -QUEEN_REPRODUCTION_BONUS_EXPERT = 3 -QUEEN_REPRODUCTION_BONUS_INSANE = 5 - -; Once the queen is added to the game, we can instantly let her spread x number of times -; to give her a head start. This can also be a useful tool for having slow reproduction rates -; but quicker head start to compensate to make the creatures less aggressive overall. (1 - 10) -QUEEN_INIT_BONUS_SPREAD_NOVICE = 1 -QUEEN_INIT_BONUS_SPREAD_EXPERIENCED = 2 -QUEEN_INIT_BONUS_SPREAD_EXPERT = 3 -QUEEN_INIT_BONUS_SPREAD_INSANE = 5 - -; This value modifies the chance to populate a given sector. This is different from the previous definition. -; This value gets applied to a potentially complicated formula, using the creature habitat to modify -; chance to populate, along with factoring in the relative distance to the hive range (to promote deeper lair -; population increases), etc. Would recommend not tweaking the value too much in either direction from -; zero due to the fact that this can greatly effect spread times and maximum populations. Basically, if the -; creatures are spreading too quickly, increase the value, otherwise decrease it to a negative value. (-5 to 5) -CREATURE_POPULATION_MODIFIER_NOVICE = 0 -CREATURE_POPULATION_MODIFIER_EXPERIENCED = 0 -CREATURE_POPULATION_MODIFIER_EXPERT = 0 -CREATURE_POPULATION_MODIFIER_INSANE = 0 - -; Augments the chance that the creatures will attack a town. The conditions for attacking a town -; are based strictly on the occupation of the creatures in each of the four mine exits. For each creature -; there is a base chance of 10% that the creatures will feed sometime during the night. (-100 to 100) -CREATURE_TOWN_AGGRESSIVENESS_NOVICE = -10 -CREATURE_TOWN_AGGRESSIVENESS_EXPERIENCED = 0 -CREATURE_TOWN_AGGRESSIVENESS_EXPERT = 10 -CREATURE_TOWN_AGGRESSIVENESS_INSANE = 50 \ No newline at end of file diff --git a/Data-1.13/Ja2_Options.INI b/Data-1.13/Ja2_Options.INI index a7aedae1b..63d1cdb5b 100644 --- a/Data-1.13/Ja2_Options.INI +++ b/Data-1.13/Ja2_Options.INI @@ -303,12 +303,6 @@ MERCS_CAN_BE_ON_ASSIGNMENT = 0 ;Can AIM/MERC mercs die while away on other assignments? MERCS_CAN_DIE_ON_ASSIGNMENT = TRUE -;How many mercs can die at each difficulty level? -MAX_MERC_DEATHS_EASY = 2 -MAX_MERC_DEATHS_EXPERIENCED = 4 -MAX_MERC_DEATHS_EXPERT = 6 -MAX_MERC_DEATHS_INSANE = 8 - ;------------------------------------------------------------------------------------------------------------------------------ ; Slay Forever - Determines whether the character Slay can stay with your team indefinitely. If set to FALSE, he can ; only be recruited for a limited amount of time. @@ -1121,17 +1115,6 @@ PASSENGER_LEAVING_SWITCH_TO_NEW_SQUAD = FALSE ; These settings have a direct effect on the difficulty of the game in TACTICAL mode (combat). ;****************************************************************************************************************************** -;------------------------------------------------------------------------------------------------------------------------------ -; Bonus APs for Enemy Soldiers: -; Number of extra APs for enemy troops at the various difficulty levels. -; Please note, this number is NOT automatically adjusted based on your selected AP system (25 / 100). -;------------------------------------------------------------------------------------------------------------------------------ - -ENEMY_AP_BONUS_NOVICE = 0 -ENEMY_AP_BONUS_EXPERIENCED = 0 -ENEMY_AP_BONUS_EXPERT = 0 -ENEMY_AP_BONUS_INSANE = 5 - ;------------------------------------------------------------------------------------------------------------------------------ ; Bonus for the player's mercs ; Gives a flat AP Bonus to all player's mercenaries, it also pushes the AP Cap. Works almost exactly like the enemy AP bonus. @@ -2938,17 +2921,6 @@ GAME_PROGRESS_MINIMUM = 0 ; You can use a negative modifier to reduce progress below its normal level. It cannot make progress lower than 0. GAME_PROGRESS_MODIFIER = 0 -;------------------------------------------------------------------------------------------------------------------------------ -; Number of kills required to get a single progress point, based on game difficulty. -; The total number of progress points you can get is limited by GAME_PROGRESS_KILLS (see above) -;------------------------------------------------------------------------------------------------------------------------------ - -NUM_KILLS_PER_PROGRESS_POINT_NOVICE = 7 -NUM_KILLS_PER_PROGRESS_POINT_EXPERIENCED = 10 -NUM_KILLS_PER_PROGRESS_POINT_EXPERT = 15 -NUM_KILLS_PER_PROGRESS_POINT_INSANE = 60 - - ;------------------------------------------------------------------------------------------------------------------------------ ; The minimum progress level required to trigger some events. ; Range: 0-100% @@ -3481,128 +3453,6 @@ SOLDIERCLASS_SPECIFIC_ITEM_TABLES = TRUE NEW_AGGRESSIVE_AI = FALSE -;------------------------------------------------------------------------------------------------------------------------------ -; Enemy army composition -; -; These settings are used to control the composition of enemy troops, at the start of the game and later on in the campaign. -;------------------------------------------------------------------------------------------------------------------------------ - -; Percentage of troops that are actually placed on the map at the start of the game. -; 100 = All "default" troops are placed. -; 200 = Twice as many troops are placed. -INITIAL_GARRISON_PERCENTAGES_NOVICE = 70 -INITIAL_GARRISON_PERCENTAGES_EXPERIENCED = 100 -INITIAL_GARRISON_PERCENTAGES_EXPERT = 150 -INITIAL_GARRISON_PERCENTAGES_INSANE = 200 - -; Minimum enemy group size. Enemy groups will never be smaller than this! -MIN_ENEMY_GROUP_SIZE_NOVICE = 3 -MIN_ENEMY_GROUP_SIZE_EXPERIENCED = 4 -MIN_ENEMY_GROUP_SIZE_EXPERT = 6 -MIN_ENEMY_GROUP_SIZE_INSANE = 12 - -; Percent of troops converted to extra elites in enemy groups -PERCENT_EXTRA_ELITES_EXPERIENCED = 0 -PERCENT_EXTRA_ELITES_EXPERT = 25 -PERCENT_EXTRA_ELITES_INSANE = 50 - -;------------------------------------------------------------------------------------------------------------------------------ -; Queen's Pool -; -; These settings control how many troops the queen has for using against you, how many new troops she gets every day, -; and so on. If the queen runs out of troops, she will take some time to recruit new soldiers. -;------------------------------------------------------------------------------------------------------------------------------ - -; Determines whether or not the queen has unlimited troops. If she does, most of the settings below are completely ignored. -UNLIMITED_POOL_OF_TROOPS_NOVICE = FALSE -UNLIMITED_POOL_OF_TROOPS_EXPERIENCED = FALSE -UNLIMITED_POOL_OF_TROOPS_EXPERT = FALSE -UNLIMITED_POOL_OF_TROOPS_INSANE = TRUE - -; Amount of troops available to the queen at game start -QUEENS_INITIAL_POOL_OF_TROOPS_NOVICE = 150 -QUEENS_INITIAL_POOL_OF_TROOPS_EXPERIENCED = 200 -QUEENS_INITIAL_POOL_OF_TROOPS_EXPERT = 400 -QUEENS_INITIAL_POOL_OF_TROOPS_INSANE = 8000 - -; Amount of troops that will be added to queens army when the troops pool is empty -QUEEN_POOL_INCREMENT_PER_DIFFICULTY_LEVEL = 60 - -;------------------------------------------------------------------------------------------------------------------------------ -; Alert Levels -; -; These settings change the speed at which the enemy becomes "worried" about your presence in Arulco. As the queen becomes -; more concerned, she will be more determined in sending stronger troops against you. Also, enemies will have a better -; chance of spotting your mercs in the wilderness and chasing them around. -; -; Everytime an enemy or merc group arrives in a new sector, this is the chance the enemy will detect the player in -; adjacent sectors. This chance is associated with each side checked. Stationary groups do this check periodically. -; -; Lower alert levels mean the enemy is less aggressive, and less willing to chase you around the map. -;------------------------------------------------------------------------------------------------------------------------------ - -; Sets the starting alert chances. -ENEMY_STARTING_ALERT_LEVEL_NOVICE = 5 -ENEMY_STARTING_ALERT_LEVEL_EXPERIENCED = 20 -ENEMY_STARTING_ALERT_LEVEL_EXPERT = 60 -ENEMY_STARTING_ALERT_LEVEL_INSANE = 80 - -; When an enemy spots and chases a player group, the alertness value decrements by this value. -; Ranges from 1-100 (but recommend 20-60). -ENEMY_ALERT_DECAY_NOVICE = 75 -ENEMY_ALERT_DECAY_EXPERIENCED = 50 -ENEMY_ALERT_DECAY_EXPERT = 25 -ENEMY_ALERT_DECAY_INSANE = 10 - -; Certain conditions can cause the queen to go into a "full alert" mode. This means that temporarily, the queen's -; forces will automatically succeed adjacent checks until x number of enemy-initiated battles occur. The same variable -; is what is used to determine the free checks. -NUM_AWARE_BATTLES_NOVICE = 1 -NUM_AWARE_BATTLES_EXPERIENCED = 2 -NUM_AWARE_BATTLES_EXPERT = 3 -NUM_AWARE_BATTLES_INSANE = 4 - -;------------------------------------------------------------------------------------------------------------------------------ -; Queen's Army AI / Behavior -; -; These settings control how often the queen makes decisions (to attack or replenish her forces), and how aggressive -; she is about it. -;------------------------------------------------------------------------------------------------------------------------------ - -; The base interval between the queen's decisions. She can only make one decision at a time. -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_NOVICE = 480 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_EXPERIENCED = 360 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_EXPERT = 180 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_INSANE = 90 - -; A random variation to the interval between queen's decisions. -EVALUATION_DELAY_VARIANCE_NOVICE = 240 -EVALUATION_DELAY_VARIANCE_EXPERIENCED = 180 -EVALUATION_DELAY_VARIANCE_EXPERT = 120 -EVALUATION_DELAY_VARIANCE_INSANE = 60 - -; This is a delay between the player taking a sector, and the queen being able to decide to attack it. -; A longer grace period makes the game easier by giving the player more time to prepare for counter-attacks. -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_NOVICE = 144 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_EXPERIENCED = 96 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_EXPERT = 48 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_INSANE = 6 - -; This is a delay between the player destroying an enemy patrol, and the queen being able to refill that patrol. -; A longer grace period causes defeated enemy patrols to reappear less often. -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_NOVICE = 16 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_EXPERIENCED = 12 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_EXPERT = 8 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_INSANE = 2 - -; Determines whether the queen always prefers attacking your sectors to defending her own. -; JA2 default is FALSE. To ensure she doesn't run out of troops, make sure you either increase the reinforcement pool or enable -; unlimited reinforcements -AGGRESSIVE_QUEEN_AI_NOVICE = FALSE -AGGRESSIVE_QUEEN_AI_EXPERIENCED = FALSE -AGGRESSIVE_QUEEN_AI_EXPERT = FALSE -AGGRESSIVE_QUEEN_AI_INSANE = TRUE - ;------------------------------------------------------------------------------------------------------------------------------ ; Individual Enemy Group Behavior ; diff --git a/Data-1.13/Scripts/GameInit.lua b/Data-1.13/Scripts/GameInit.lua index d4f07e75e..ddeefa9ba 100644 --- a/Data-1.13/Scripts/GameInit.lua +++ b/Data-1.13/Scripts/GameInit.lua @@ -515,7 +515,12 @@ function InitNewGame() AddEmail (MERC_INTRO, MERC_INTRO_LENGTH, Sender.SPECK_FROM_MERC, -1, -1) end end - + + -- Get starting cash from DifficultySettings.xml + SetStartingCashDifLevel(newDIFFICULTY_LEVEL) + + -- Get starting cash from JA2Options.ini + --[[ if ( newDIFFICULTY_LEVEL == DIF_LEVEL_EASY ) then iStartingCash = GetStartingCashNovice() elseif ( newDIFFICULTY_LEVEL == DIF_LEVEL_MEDIUM ) then @@ -525,6 +530,6 @@ function InitNewGame() elseif ( newDIFFICULTY_LEVEL == DIF_LEVEL_INSANE ) then iStartingCash = GetStartingCashInsane() end - AddTransactionToPlayersBook( Fincances.ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), iStartingCash ) + ]] end \ No newline at end of file diff --git a/Data-1.13/TableData/DifficultySettings.xml b/Data-1.13/TableData/DifficultySettings.xml new file mode 100644 index 000000000..3587e1d65 --- /dev/null +++ b/Data-1.13/TableData/DifficultySettings.xml @@ -0,0 +1,431 @@ + + + + + 0 + Not Used! + Not Used! + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + -100.0 + -100.0 + + + 1 + Novice + You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode? + 45000 + 0 + 7 + 70 + 3 + 0 + 0 + 150 + 60 + 5 + 75 + 1 + 480 + 240 + 144 + 16 + 0 + 2 + + 510 + 6 + 1 + 1 + 0 + -10 + + 8 + 1 + 1 + 1 + 1 + 1 + 8 + + 0 + 1 + -15 + 1 + 1 + 1 + 1 + + 1 + 1 + 1 + 1 + 1 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + -30.0 + -30.0 + + + 2 + Experienced + You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode? + 35000 + 0 + 10 + 100 + 4 + 0 + 0 + 200 + 60 + 20 + 50 + 2 + 360 + 180 + 96 + 12 + 0 + 4 + + 450 + 7 + 2 + 2 + 0 + 0 + + 11 + 2 + 2 + 2 + 2 + 2 + 10 + + 0 + 1 + 5 + 0 + 0 + 0 + 1 + + 2 + 2 + 2 + 2 + 2 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + 0.0 + 0.0 + + + 3 + Expert + You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode? + 30000 + 0 + 15 + 150 + 6 + 25 + 0 + 400 + 60 + 60 + 25 + 3 + 180 + 120 + 48 + 8 + 0 + 6 + + 390 + 9 + 3 + 3 + 0 + 10 + + 15 + 3 + 3 + 3 + 3 + 3 + 14 + + 1 + 2 + 12 + 0 + 0 + 0 + 0 + + 3 + 3 + 3 + 3 + 3 + + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + + 20.0 + 20.0 + + + 4 + Insane + You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode? + 15000 + 5 + 60 + 200 + 12 + 50 + 1 + 8000 + 60 + 80 + 10 + 4 + 90 + 60 + 6 + 2 + 1 + 8 + + 150 + 15 + 5 + 5 + 0 + 50 + + 20 + 4 + 4 + 4 + 4 + 4 + 20 + + 1 + 2 + 25 + 1 + 1 + 0 + 0 + + 4 + 4 + 4 + 4 + 4 + + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + + 50.0 + 50.0 + + \ No newline at end of file diff --git a/Data-UB/AddOns/Data-UB-1.13/TableData/DifficultySettings.xml b/Data-UB/AddOns/Data-UB-1.13/TableData/DifficultySettings.xml new file mode 100644 index 000000000..06e0cceec --- /dev/null +++ b/Data-UB/AddOns/Data-UB-1.13/TableData/DifficultySettings.xml @@ -0,0 +1,366 @@ + + + + + 0 + Not Used! + Not Used! + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + -100.0 + -100.0 + + + 1 + Novice + You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode? + 45000 + 0 + 7 + 70 + 3 + 0 + 0 + 150 + 60 + 5 + 75 + 1 + 480 + 240 + 144 + 16 + 0 + 2 + + 510 + 6 + 1 + 1 + 0 + -10 + + 8 + 1 + 1 + 1 + 1 + 1 + 8 + + 0 + 1 + -15 + 1 + 1 + 1 + 1 + + 1 + 1 + 1 + 1 + 1 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + -30.0 + -30.0 + + + 2 + Experienced + You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode? + 35000 + 0 + 10 + 100 + 4 + 0 + 0 + 200 + 60 + 20 + 50 + 2 + 360 + 180 + 96 + 12 + 0 + 4 + + 450 + 7 + 2 + 2 + 0 + 0 + + 11 + 2 + 2 + 2 + 2 + 2 + 10 + + 0 + 1 + 5 + 0 + 0 + 0 + 1 + + 2 + 2 + 2 + 2 + 2 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + 0.0 + 0.0 + + + 3 + Expert + You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode? + 30000 + 0 + 15 + 150 + 6 + 25 + 0 + 400 + 60 + 60 + 25 + 3 + 180 + 120 + 48 + 8 + 0 + 6 + + 390 + 9 + 3 + 3 + 0 + 10 + + 15 + 3 + 3 + 3 + 3 + 3 + 14 + + 1 + 2 + 12 + 0 + 0 + 0 + 0 + + 3 + 3 + 3 + 3 + 3 + + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + + 20.0 + 20.0 + + \ No newline at end of file diff --git a/Data-UB/AddOns/Data-UB-Vanilla/TableData/DifficultySettings.xml b/Data-UB/AddOns/Data-UB-Vanilla/TableData/DifficultySettings.xml new file mode 100644 index 000000000..06e0cceec --- /dev/null +++ b/Data-UB/AddOns/Data-UB-Vanilla/TableData/DifficultySettings.xml @@ -0,0 +1,366 @@ + + + + + 0 + Not Used! + Not Used! + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + -100.0 + -100.0 + + + 1 + Novice + You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode? + 45000 + 0 + 7 + 70 + 3 + 0 + 0 + 150 + 60 + 5 + 75 + 1 + 480 + 240 + 144 + 16 + 0 + 2 + + 510 + 6 + 1 + 1 + 0 + -10 + + 8 + 1 + 1 + 1 + 1 + 1 + 8 + + 0 + 1 + -15 + 1 + 1 + 1 + 1 + + 1 + 1 + 1 + 1 + 1 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + -30.0 + -30.0 + + + 2 + Experienced + You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode? + 35000 + 0 + 10 + 100 + 4 + 0 + 0 + 200 + 60 + 20 + 50 + 2 + 360 + 180 + 96 + 12 + 0 + 4 + + 450 + 7 + 2 + 2 + 0 + 0 + + 11 + 2 + 2 + 2 + 2 + 2 + 10 + + 0 + 1 + 5 + 0 + 0 + 0 + 1 + + 2 + 2 + 2 + 2 + 2 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + 0.0 + 0.0 + + + 3 + Expert + You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode? + 30000 + 0 + 15 + 150 + 6 + 25 + 0 + 400 + 60 + 60 + 25 + 3 + 180 + 120 + 48 + 8 + 0 + 6 + + 390 + 9 + 3 + 3 + 0 + 10 + + 15 + 3 + 3 + 3 + 3 + 3 + 14 + + 1 + 2 + 12 + 0 + 0 + 0 + 0 + + 3 + 3 + 3 + 3 + 3 + + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + + 20.0 + 20.0 + + \ No newline at end of file diff --git a/Data-UB/Scripts/GameInit.lua b/Data-UB/Scripts/GameInit.lua index 1b0fd481c..7daf20756 100644 --- a/Data-UB/Scripts/GameInit.lua +++ b/Data-UB/Scripts/GameInit.lua @@ -911,6 +911,11 @@ function InitNewGame() end + -- Get starting cash from DifficultySettings.xml + SetStartingCashDifLevel(newDIFFICULTY_LEVEL) + + -- Get starting cash from JA2Options.ini + --[[ if ( newDIFFICULTY_LEVEL == DIF_LEVEL_EASY ) then iStartingCash = GetStartingCashNovice() elseif ( newDIFFICULTY_LEVEL == DIF_LEVEL_MEDIUM ) then @@ -922,4 +927,5 @@ function InitNewGame() end AddTransactionToPlayersBook( Fincances.ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), iStartingCash ) + ]] end \ No newline at end of file diff --git a/Data/CTHConstants.ini b/Data/CTHConstants.ini index 3be44c68c..e7732c27e 100644 --- a/Data/CTHConstants.ini +++ b/Data/CTHConstants.ini @@ -286,16 +286,6 @@ BASE_CROUCHING_STANCE = 3.0 BASE_PRONE_STANCE = 4.0 BASE_HEAVY_WEAPON = 2.0 -;------------------------------------------------------------------------------------------------------------------------------ -; These modifiers are applied based on game difficulty, and only affect -; the base CTH of ENEMY COMBATANTS. -;------------------------------------------------------------------------------------------------------------------------------ - -BASE_DIFFICULTY_NOVICE = -30.0 -BASE_DIFFICULTY_EXPERIENCED = 0.0 -BASE_DIFFICULTY_EXPERT = 20.0 -BASE_DIFFICULTY_INSANE = 50.0 - [Aiming CTH] @@ -362,11 +352,6 @@ AIM_TWO_GUNS = 4.0 AIM_ONE_HANDED = 2.5 AIM_HEAVY_WEAPON = 2.0 -AIM_DIFFICULTY_NOVICE = -30.0 -AIM_DIFFICULTY_EXPERIENCED = 0.0 -AIM_DIFFICULTY_EXPERT = 20.0 -AIM_DIFFICULTY_INSANE = 50.0 - [Shooting Mechanism] diff --git a/Data/Creatures_Settings.INI b/Data/Creatures_Settings.INI index f92850175..0aec9b9f0 100644 --- a/Data/Creatures_Settings.INI +++ b/Data/Creatures_Settings.INI @@ -4,50 +4,3 @@ CREPITUS_FEEDING_SECTOR_X = 9 CREPITUS_FEEDING_SECTOR_Y = 10 CREPITUS_FEEDING_SECTOR_Z = 2 -; This is how often the creatures spread, once the quest begins. The smaller the gap, -; the faster the creatures will advance. This is also directly related to the reproduction -; rates which are applied each time the creatures spread. (in mins, 5 - 14400) -CREATURE_SPREAD_TIME_NOVICE = 510 -CREATURE_SPREAD_TIME_EXPERIENCED = 450 -CREATURE_SPREAD_TIME_EXPERT = 390 -CREATURE_SPREAD_TIME_INSANE = 150 - -; This is how many creatures the queen produces for each cycle of spreading. -; The higher the numbers the faster the creatures will advance. (1 - 30) -QUEEN_REPRODUCTION_BASE_NOVICE = 6 -QUEEN_REPRODUCTION_BASE_EXPERIENCED = 7 -QUEEN_REPRODUCTION_BASE_EXPERT = 9 -QUEEN_REPRODUCTION_BASE_INSANE = 15 - -; Random bonus for each cycle of spreading. (0 - 10) -QUEEN_REPRODUCTION_BONUS_NOVICE = 1 -QUEEN_REPRODUCTION_BONUS_EXPERIENCED = 2 -QUEEN_REPRODUCTION_BONUS_EXPERT = 3 -QUEEN_REPRODUCTION_BONUS_INSANE = 5 - -; Once the queen is added to the game, we can instantly let her spread x number of times -; to give her a head start. This can also be a useful tool for having slow reproduction rates -; but quicker head start to compensate to make the creatures less aggressive overall. (1 - 10) -QUEEN_INIT_BONUS_SPREAD_NOVICE = 1 -QUEEN_INIT_BONUS_SPREAD_EXPERIENCED = 2 -QUEEN_INIT_BONUS_SPREAD_EXPERT = 3 -QUEEN_INIT_BONUS_SPREAD_INSANE = 5 - -; This value modifies the chance to populate a given sector. This is different from the previous definition. -; This value gets applied to a potentially complicated formula, using the creature habitat to modify -; chance to populate, along with factoring in the relative distance to the hive range (to promote deeper lair -; population increases), etc. Would recommend not tweaking the value too much in either direction from -; zero due to the fact that this can greatly effect spread times and maximum populations. Basically, if the -; creatures are spreading too quickly, increase the value, otherwise decrease it to a negative value. (-5 to 5) -CREATURE_POPULATION_MODIFIER_NOVICE = 0 -CREATURE_POPULATION_MODIFIER_EXPERIENCED = 0 -CREATURE_POPULATION_MODIFIER_EXPERT = 0 -CREATURE_POPULATION_MODIFIER_INSANE = 0 - -; Augments the chance that the creatures will attack a town. The conditions for attacking a town -; are based strictly on the occupation of the creatures in each of the four mine exits. For each creature -; there is a base chance of 10% that the creatures will feed sometime during the night. (-100 to 100) -CREATURE_TOWN_AGGRESSIVENESS_NOVICE = -10 -CREATURE_TOWN_AGGRESSIVENESS_EXPERIENCED = 0 -CREATURE_TOWN_AGGRESSIVENESS_EXPERT = 10 -CREATURE_TOWN_AGGRESSIVENESS_INSANE = 50 \ No newline at end of file diff --git a/Data/Ja2_Options.INI b/Data/Ja2_Options.INI index dcc1419cb..3ce74e758 100644 --- a/Data/Ja2_Options.INI +++ b/Data/Ja2_Options.INI @@ -301,12 +301,6 @@ MERCS_CAN_BE_ON_ASSIGNMENT = 0 ;Can AIM/MERC mercs die while away on other assignments? MERCS_CAN_DIE_ON_ASSIGNMENT = TRUE -;How many mercs can die at each difficulty level? -MAX_MERC_DEATHS_EASY = 1 -MAX_MERC_DEATHS_EXPERIENCED = 2 -MAX_MERC_DEATHS_EXPERT = 3 -MAX_MERC_DEATHS_INSANE = 4 - ;------------------------------------------------------------------------------------------------------------------------------ ; Slay Forever - Determines whether the character Slay can stay with your team indefinitely. If set to FALSE, he can ; only be recruited for a limited amount of time. @@ -369,7 +363,7 @@ SHOW_SKILLS_IN_HIRING_PAGE = FALSE ; ; MERCS_RANDOM_GEAR_KITS: This option only takes effect, if MERCS_RANDOM_STATS = 4 ; Set this option to TRUE, so mercs (AIM and MERC) get random gear kits, otherwise they have their original kits. -; +; ; MERCS_RANDOM_BELL_DISTRIBUTION random values use bell-curve distribution if 'TRUE'; 'FALSE', use uniform distribution ; ; MERCS_RANDOM_STAT_RANGE applicable if MERCS_RANDOM_STATS = 1-2. @@ -1120,17 +1114,6 @@ PASSENGER_LEAVING_SWITCH_TO_NEW_SQUAD = FALSE ; These settings have a direct effect on the difficulty of the game in TACTICAL mode (combat). ;****************************************************************************************************************************** -;------------------------------------------------------------------------------------------------------------------------------ -; Bonus APs for Enemy Soldiers: -; Number of extra APs for enemy troops at the various difficulty levels. -; Please note, this number is NOT automatically adjusted based on your selected AP system (25 / 100). -;------------------------------------------------------------------------------------------------------------------------------ - -ENEMY_AP_BONUS_NOVICE = 0 -ENEMY_AP_BONUS_EXPERIENCED = 0 -ENEMY_AP_BONUS_EXPERT = 0 -ENEMY_AP_BONUS_INSANE = 5 - ;------------------------------------------------------------------------------------------------------------------------------ ; Bonus for the player's mercs ; Gives a flat AP Bonus to all player's mercenaries, it also pushes the AP Cap. Works almost exactly like the enemy AP bonus. @@ -1953,6 +1936,40 @@ AP_SHARED_AMONG_PASSENGERS_AND_VEHICLE_MODE = 3 ; If AP_SHARED_AMONG_PASSENGERS_AND_VEHICLE_MODE is set, adjust how much APs will be deducted (0 - 200). AP_SHARED_AMONG_PASSENGERS_AND_VEHICLE_SCALE = 100 +; If set to TRUE, tanks can move around in tactical. +ENEMY_TANKS_CAN_MOVE_IN_TACTICAL = FALSE + +; If set to TRUE, cars can run over people. +; Note feature won't be very effective without ALLOW_DRIVING_VEHICLES_IN_TACTICAL set to TRUE. +ALLOW_CARS_DRIVING_OVER_PEOPLE = FALSE + +; If set to TRUE, tanks can run over people. +; Note feature won't be very effective without ENEMY_TANKS_CAN_MOVE_IN_TACTICAL set to TRUE. +ALLOW_TANKS_DRIVING_OVER_PEOPLE = FALSE + +; When shift is pressed cars can ram through structures, but only those with armour lower than specified value (0-255). +; 0 effectively disables the feature. Default 30. +; For reference: cactus - 10, wooden furniture - 20, trees - 30, sandbags - 40, stone walls - 55, reinforced concrete - 70, rock - 85, indestructible - 127. +CARS_RAMMING_MAX_STRUCTURE_ARMOUR = 30 + +; When shift is pressed tanks can ram through structures, but only those with armour lower than specified value (0-255). +; 0 effectively disables the feature. Default 70. +; For reference: cactus - 10, wooden furniture - 20, trees - 30, sandbags - 40, stone walls - 55, reinforced concrete - 70, rock - 85, indestructible - 127. +TANKS_RAMMING_MAX_STRUCTURE_ARMOUR = 70 + +; If set to TRUE, tanks can use cannon even against single mercs and in perfect health. +ENEMY_TANKS_DONT_SPARE_SHELLS = TRUE +; If set to TRUE, tanks can ignore chance to get through and destroy enemy cover even if it probably won't hit anyone behind it. +ENEMY_TANKS_BLOW_OBSTACLES_UP = TRUE + +; If set to TRUE, tanks can noticed as soon as any part of it is visible. +ENEMY_TANKS_ANY_PART_VISIBLE = FALSE + +; If set to TRUE, enemies can use launchables even against single mercs and in perfect health +ENEMIES_DONT_SPARE_LAUNCHABLES = FALSE +; If set to TRUE, tanks can ignore chance to get through and destroy enemy cover even if it probably won't hit anyone behind it. +ENEMIES_BLOW_OBSTACLES_UP = FALSE + ;------------------------------------------------------------------------------------------------------------------------------ ; If this is set tot TRUE, you can repaint one type of camouflage by using different type camo kit on self. You can also use ; the rag to completely erase the camo. @@ -2665,6 +2682,74 @@ FOOD_EATING_SOUNDS = TRUE ;****************************************************************************************************************************** ;****************************************************************************************************************************** +[Disease Settings] + +; If DISEASE is TRUE, your mercs can get diseases. Diseases are specified in Disease.xml. You can get them from +; -insects in swamp & tropical sectors +; -contact with other people, animals and the dead +; -open wounds +; -spoiled food (requires food system to be on) +; +; A Disease will give you certain mali. This can even be a health loss. If untreated, most diseases get worse, in extreme cases, you could die from it. +; Doctors can cure most diseases. Some medicine items also help, and you can protect yourself with other items. + +; set this to TRUE to play with diseases. +DISEASE = FALSE + +; if DISEASE and DISEASE_STRATEGIC are set to TRUE, the first disease (arulcan plague) will also affect civilians, soldiers and militia. +; It can break out in swamp & tropical sectors and spread as infected troops move around. +; In bad cases, it can affect entire cities. Infected population will suffer just as your mercs do. If you don't act, this could be a severe threat to yoru campaign. +; It does work on both sides though, the army can suffer jsut as well... especially if you give it a push ;-) +DISEASE_STRATEGIC = TRUE + +; The World Health Organization has a website that contains a few helpful tips on diseases. +; It also allows you to subscribe. This will csot you money every day; in return you have access to a new map mode that shows you where in Arulco arulcan plague has broken out. +; requires DISEASE and DISEASE_STRATEGIC to be TRUE +DISEASE_WHO_SUBSCRIPTIONCOST = 2000 + +;****************************************************************************************************************************** +;****************************************************************************************************************************** + + +[Dynamic Opinion Settings] + +;****************************************************************************************************************************** +; In this section you can specify wether mercs form dynamic opinions on each other +;****************************************************************************************************************************** + +; mercs can form dynamic opinions of each other, this in turn will affect their morale +; for more info on what can affect opinions, see Dynamic Opinion Modifiers Settings in Morale_Settings.ini +DYNAMIC_OPINIONS = FALSE + +; notify the player of opinon changes in the message log +DYNAMIC_OPINIONS_SHOWCHANGE = TRUE + +; if a merc A notices that merc B's mean wage times exp level(B)/exp level (A) times this is greater than their mean wage, he can get a +; negative opinion of merc B +WAGE_ACCEPTANCE_FACTOR = 1.5 + +;****************************************************************************************************************************** +;****************************************************************************************************************************** + +[Dynamic Dialogue Settings] + +;****************************************************************************************************************************** +; In this section you can specify wether mercs talk to each other +;****************************************************************************************************************************** + +; if DYNAMIC_OPINIONS is TRUE, mercs will comment on each other. +; This can happen whenever something influences their relationship +; Mercs will accuse each other of doing something - or compliment them. Other mercs can then react and choose answers +; depending on their relations and personality +; If an IMP interejcts, the player has a short time to select the kin of response he wants to give. +DYNAMIC_DIALOGUE = FALSE + +; the dialogue boxes will stay on for x milliseconds +DYNAMIC_DIALOGUE_TIME_OFFSET = 3000 + +;****************************************************************************************************************************** +;****************************************************************************************************************************** + [Tactical Fortification Settings] ;****************************************************************************************************************************** @@ -2835,17 +2920,6 @@ GAME_PROGRESS_MINIMUM = 0 ; You can use a negative modifier to reduce progress below its normal level. It cannot make progress lower than 0. GAME_PROGRESS_MODIFIER = 0 -;------------------------------------------------------------------------------------------------------------------------------ -; Number of kills required to get a single progress point, based on game difficulty. -; The total number of progress points you can get is limited by GAME_PROGRESS_KILLS (see above) -;------------------------------------------------------------------------------------------------------------------------------ - -NUM_KILLS_PER_PROGRESS_POINT_NOVICE = 7 -NUM_KILLS_PER_PROGRESS_POINT_EXPERIENCED = 10 -NUM_KILLS_PER_PROGRESS_POINT_EXPERT = 15 -NUM_KILLS_PER_PROGRESS_POINT_INSANE = 60 - - ;------------------------------------------------------------------------------------------------------------------------------ ; The minimum progress level required to trigger some events. ; Range: 0-100% @@ -2965,6 +3039,11 @@ RND_ENTER_MILITIA_REINFORCEMENTS = 6 ; Don't allow permanent items removal for no merc in that sector NO_REMOVE_RANDOM_SECTOR_ITEMS = FALSE +; Depending on game difficulty enemy patrols at game start can be randomly reinforced with tank. +ARMY_USES_TANKS_IN_ATTACKS = FALSE +; Depending on game difficulty enemy groups created during offensives can include tanks. +ARMY_USES_TANKS_IN_PATROLS = FALSE + ;------------------------------------------------------------------------------------------------------------------------------ ; Vehicle Inventory ;------------------------------------------------------------------------------------------------------------------------------ @@ -3105,29 +3184,33 @@ PRISONER_DEFECT_CHANCE = 25 ; chance that interrogated soldiers can give info on enemy positions PRISONER_INFO_BASECHANCE = 25 -; chance that interrogated soldiers can give info on enemy numbers +; if they give info, chance that interrogated soldiers can give info on enemy numbers PRISONER_INFO_NUMBER_CHANCE = 30 -; chance that interrogated soldiers can give info on enemy movement directions +; if they give info, chance that interrogated soldiers can give info on enemy movement directions PRISONER_INFO_DIRECTION_CHANCE = 40 -; chance that interrogated soldiers pay you ransom money +; chance that interrogated soldiers get you ransom money PRISONER_RANSOM_CHANCE = 25 +; chance that you get nothing +PRISONER_NOTHING_CHANCE = 25 + ; points needed to interrogate prisoners of specific types. You can see your points on the merc's face in strategic: 145/7 means 145 points, 7 prisoners -; Interrogation first removes admin prisoners, then regulars then elites and then officers (see Tactical Enemy Role for an explanation on officers) -; If regulars and elites join your militia, there is a chance that they will be demoted, otherwise they will join as regular or veteran militia +; When ordering mercs to interrogate, you can order them to target a specific class of prisoners, they will first interrogate those and then focus on the other types PRISONER_INTERROGATION_POINTS_ADMIN = 80 PRISONER_INTERROGATION_POINTS_REGULAR = 100 PRISONER_INTERROGATION_POINTS_ELITE = 140 PRISONER_INTERROGATION_POINTS_OFFICER = 250 +PRISONER_INTERROGATION_POINTS_GENERAL = 250 ; if we get interrogate high-value prisoners, there is a chance that we learn about the locations of enemy generals. -; See also Tactical Enemy Role Settings for this +; See also Tactical Enemy Role Settings for what generals are PRISONER_INTERROGATION_ENEMY_GENERAL_CHANCE_ADMIN = 0 PRISONER_INTERROGATION_ENEMY_GENERAL_CHANCE_REGULAR = 1 PRISONER_INTERROGATION_ENEMY_GENERAL_CHANCE_ELITE = 10 PRISONER_INTERROGATION_ENEMY_GENERAL_CHANCE_OFFICER = 60 +PRISONER_INTERROGATION_ENEMY_GENERAL_CHANCE_GENERAL = 90 ;------------------------------------------------------------------------------------------------------------------------------ ; Helicopter Repair @@ -3297,9 +3380,6 @@ ENABLE_ARMOR_COVERAGE = FALSE DYNAMIC_AMMO_WEIGHT = FALSE -; if set to TRUE, accumulated militia training progress is awarded to the next training session if a training session is finished. -MILITIA_TRAINING_CARRYOVER_PROGRESS = FALSE - ;------------------------------------------------------------------------------------------------------------------------------ ; This is a hack to globally increase all AutofireBullets/5AP values of all weapons. Can take negative values too, ; but won't lower B/5AP below 0. @@ -3372,128 +3452,6 @@ SOLDIERCLASS_SPECIFIC_ITEM_TABLES = TRUE NEW_AGGRESSIVE_AI = FALSE -;------------------------------------------------------------------------------------------------------------------------------ -; Enemy army composition -; -; These settings are used to control the composition of enemy troops, at the start of the game and later on in the campaign. -;------------------------------------------------------------------------------------------------------------------------------ - -; Percentage of troops that are actually placed on the map at the start of the game. -; 100 = All "default" troops are placed. -; 200 = Twice as many troops are placed. -INITIAL_GARRISON_PERCENTAGES_NOVICE = 70 -INITIAL_GARRISON_PERCENTAGES_EXPERIENCED = 100 -INITIAL_GARRISON_PERCENTAGES_EXPERT = 150 -INITIAL_GARRISON_PERCENTAGES_INSANE = 200 - -; Minimum enemy group size. Enemy groups will never be smaller than this! -MIN_ENEMY_GROUP_SIZE_NOVICE = 3 -MIN_ENEMY_GROUP_SIZE_EXPERIENCED = 4 -MIN_ENEMY_GROUP_SIZE_EXPERT = 6 -MIN_ENEMY_GROUP_SIZE_INSANE = 12 - -; Percent of troops converted to extra elites in enemy groups -PERCENT_EXTRA_ELITES_EXPERIENCED = 0 -PERCENT_EXTRA_ELITES_EXPERT = 25 -PERCENT_EXTRA_ELITES_INSANE = 50 - -;------------------------------------------------------------------------------------------------------------------------------ -; Queen's Pool -; -; These settings control how many troops the queen has for using against you, how many new troops she gets every day, -; and so on. If the queen runs out of troops, she will take some time to recruit new soldiers. -;------------------------------------------------------------------------------------------------------------------------------ - -; Determines whether or not the queen has unlimited troops. If she does, most of the settings below are completely ignored. -UNLIMITED_POOL_OF_TROOPS_NOVICE = FALSE -UNLIMITED_POOL_OF_TROOPS_EXPERIENCED = FALSE -UNLIMITED_POOL_OF_TROOPS_EXPERT = FALSE -UNLIMITED_POOL_OF_TROOPS_INSANE = TRUE - -; Amount of troops available to the queen at game start -QUEENS_INITIAL_POOL_OF_TROOPS_NOVICE = 150 -QUEENS_INITIAL_POOL_OF_TROOPS_EXPERIENCED = 200 -QUEENS_INITIAL_POOL_OF_TROOPS_EXPERT = 400 -QUEENS_INITIAL_POOL_OF_TROOPS_INSANE = 8000 - -; Amount of troops that will be added to queens army when the troops pool is empty -QUEEN_POOL_INCREMENT_PER_DIFFICULTY_LEVEL = 60 - -;------------------------------------------------------------------------------------------------------------------------------ -; Alert Levels -; -; These settings change the speed at which the enemy becomes "worried" about your presence in Arulco. As the queen becomes -; more concerned, she will be more determined in sending stronger troops against you. Also, enemies will have a better -; chance of spotting your mercs in the wilderness and chasing them around. -; -; Everytime an enemy or merc group arrives in a new sector, this is the chance the enemy will detect the player in -; adjacent sectors. This chance is associated with each side checked. Stationary groups do this check periodically. -; -; Lower alert levels mean the enemy is less aggressive, and less willing to chase you around the map. -;------------------------------------------------------------------------------------------------------------------------------ - -; Sets the starting alert chances. -ENEMY_STARTING_ALERT_LEVEL_NOVICE = 5 -ENEMY_STARTING_ALERT_LEVEL_EXPERIENCED = 20 -ENEMY_STARTING_ALERT_LEVEL_EXPERT = 60 -ENEMY_STARTING_ALERT_LEVEL_INSANE = 80 - -; When an enemy spots and chases a player group, the alertness value decrements by this value. -; Ranges from 1-100 (but recommend 20-60). -ENEMY_ALERT_DECAY_NOVICE = 75 -ENEMY_ALERT_DECAY_EXPERIENCED = 50 -ENEMY_ALERT_DECAY_EXPERT = 25 -ENEMY_ALERT_DECAY_INSANE = 10 - -; Certain conditions can cause the queen to go into a "full alert" mode. This means that temporarily, the queen's -; forces will automatically succeed adjacent checks until x number of enemy-initiated battles occur. The same variable -; is what is used to determine the free checks. -NUM_AWARE_BATTLES_NOVICE = 1 -NUM_AWARE_BATTLES_EXPERIENCED = 2 -NUM_AWARE_BATTLES_EXPERT = 3 -NUM_AWARE_BATTLES_INSANE = 4 - -;------------------------------------------------------------------------------------------------------------------------------ -; Queen's Army AI / Behavior -; -; These settings control how often the queen makes decisions (to attack or replenish her forces), and how aggressive -; she is about it. -;------------------------------------------------------------------------------------------------------------------------------ - -; The base interval between the queen's decisions. She can only make one decision at a time. -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_NOVICE = 480 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_EXPERIENCED = 360 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_EXPERT = 180 -BASE_DELAY_IN_MINUTES_BETWEEN_EVALUATIONS_INSANE = 90 - -; A random variation to the interval between queen's decisions. -EVALUATION_DELAY_VARIANCE_NOVICE = 240 -EVALUATION_DELAY_VARIANCE_EXPERIENCED = 180 -EVALUATION_DELAY_VARIANCE_EXPERT = 120 -EVALUATION_DELAY_VARIANCE_INSANE = 60 - -; This is a delay between the player taking a sector, and the queen being able to decide to attack it. -; A longer grace period makes the game easier by giving the player more time to prepare for counter-attacks. -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_NOVICE = 144 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_EXPERIENCED = 96 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_EXPERT = 48 -GRACE_PERIOD_IN_HOURS_AFTER_SECTOR_LIBERATION_INSANE = 6 - -; This is a delay between the player destroying an enemy patrol, and the queen being able to refill that patrol. -; A longer grace period causes defeated enemy patrols to reappear less often. -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_NOVICE = 16 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_EXPERIENCED = 12 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_EXPERT = 8 -GRACE_PERIOD_IN_DAYS_AFTER_PATROL_DESTROYED_INSANE = 2 - -; Determines whether the queen always prefers attacking your sectors to defending her own. -; JA2 default is FALSE. To ensure she doesn't run out of troops, make sure you either increase the reinforcement pool or enable -; unlimited reinforcements -AGGRESSIVE_QUEEN_AI_NOVICE = FALSE -AGGRESSIVE_QUEEN_AI_EXPERIENCED = FALSE -AGGRESSIVE_QUEEN_AI_EXPERT = FALSE -AGGRESSIVE_QUEEN_AI_INSANE = TRUE - ;------------------------------------------------------------------------------------------------------------------------------ ; Individual Enemy Group Behavior ; diff --git a/Data/Scripts/GameInit.lua b/Data/Scripts/GameInit.lua index d4f07e75e..e2d8d955a 100644 --- a/Data/Scripts/GameInit.lua +++ b/Data/Scripts/GameInit.lua @@ -516,6 +516,11 @@ function InitNewGame() end end + -- Get starting cash from DifficultySettings.xml + SetStartingCashDifLevel(newDIFFICULTY_LEVEL) + + -- Get starting cash from JA2Options.ini + --[[ if ( newDIFFICULTY_LEVEL == DIF_LEVEL_EASY ) then iStartingCash = GetStartingCashNovice() elseif ( newDIFFICULTY_LEVEL == DIF_LEVEL_MEDIUM ) then @@ -525,6 +530,6 @@ function InitNewGame() elseif ( newDIFFICULTY_LEVEL == DIF_LEVEL_INSANE ) then iStartingCash = GetStartingCashInsane() end - AddTransactionToPlayersBook( Fincances.ANONYMOUS_DEPOSIT, 0, GetWorldTotalMin(), iStartingCash ) + ]] end \ No newline at end of file diff --git a/Data/TableData/DifficultySettings.xml b/Data/TableData/DifficultySettings.xml new file mode 100644 index 000000000..3587e1d65 --- /dev/null +++ b/Data/TableData/DifficultySettings.xml @@ -0,0 +1,431 @@ + + + + + 0 + Not Used! + Not Used! + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + -100.0 + -100.0 + + + 1 + Novice + You have chosen NOVICE mode. This setting is appropriate for those new to Jagged Alliance, those new to strategy games in general, or those wishing shorter battles in the game. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Novice mode? + 45000 + 0 + 7 + 70 + 3 + 0 + 0 + 150 + 60 + 5 + 75 + 1 + 480 + 240 + 144 + 16 + 0 + 2 + + 510 + 6 + 1 + 1 + 0 + -10 + + 8 + 1 + 1 + 1 + 1 + 1 + 8 + + 0 + 1 + -15 + 1 + 1 + 1 + 1 + + 1 + 1 + 1 + 1 + 1 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + -30.0 + -30.0 + + + 2 + Experienced + You have chosen EXPERIENCED mode. This setting is suitable for those already familiar with Jagged Alliance or similar games. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Experienced mode? + 35000 + 0 + 10 + 100 + 4 + 0 + 0 + 200 + 60 + 20 + 50 + 2 + 360 + 180 + 96 + 12 + 0 + 4 + + 450 + 7 + 2 + 2 + 0 + 0 + + 11 + 2 + 2 + 2 + 2 + 2 + 10 + + 0 + 1 + 5 + 0 + 0 + 0 + 1 + + 2 + 2 + 2 + 2 + 2 + + 0 + 0 + 0 + 1 + 0 + 2 + 0 + 0 + 0 + + 0.0 + 0.0 + + + 3 + Expert + You have chosen EXPERT mode. We warned you. Don't blame us if you get shipped back in a body bag. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in Expert mode? + 30000 + 0 + 15 + 150 + 6 + 25 + 0 + 400 + 60 + 60 + 25 + 3 + 180 + 120 + 48 + 8 + 0 + 6 + + 390 + 9 + 3 + 3 + 0 + 10 + + 15 + 3 + 3 + 3 + 3 + 3 + 14 + + 1 + 2 + 12 + 0 + 0 + 0 + 0 + + 3 + 3 + 3 + 3 + 3 + + 0 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 0 + + 20.0 + 20.0 + + + 4 + Insane + You have chosen INSANE mode. WARNING: Don't blame us if you get shipped back in little pieces... Deidranna WILL kick your ass. Hard. Your choice will affect things throughout the entire course of the game, so choose wisely. Are you sure you want to play in INSANE mode? + 15000 + 5 + 60 + 200 + 12 + 50 + 1 + 8000 + 60 + 80 + 10 + 4 + 90 + 60 + 6 + 2 + 1 + 8 + + 150 + 15 + 5 + 5 + 0 + 50 + + 20 + 4 + 4 + 4 + 4 + 4 + 20 + + 1 + 2 + 25 + 1 + 1 + 0 + 0 + + 4 + 4 + 4 + 4 + 4 + + 1 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + + 50.0 + 50.0 + + \ No newline at end of file diff --git a/INIEditorAPBPConstants.xml b/INIEditorAPBPConstants.xml index cb12f4c8e..6efb4e348 100644 --- a/INIEditorAPBPConstants.xml +++ b/INIEditorAPBPConstants.xml @@ -102,8 +102,8 @@ So 9 actually means 90% of whatever APs have been calculated. 这是百分比数值。 例:9指有90%的 AP 值被计算。15 = 150%,如此。 - Cette valeur est l'ajustement en pourcentage qui détermine le nombre de PA pour un monstre fou furieux. -9 = Un jeune crépitus aura 90 % de ses PA normaux. + Cette valeur est l'ajustement en pourcentage qui détermine le nombre de PA pour un monstre fou furieux. +9 = Un crépitus furieux aura 90 % de ses PA normaux. 15 = 150 %. Etc. @@ -473,7 +473,7 @@ It adjusts how many AP per damage point taken are lost. Определяет количество АР, теряющихся при падении, в результате наступания на шарики или получения большого урона 摔倒(踩到弹球或被菊爆)时造成的 AP 损失。 - Cette valeur est le nombre de PA qui sont perdus en marchant sur des billes ou en recevant un coup très fort. + Cette valeur est le nombre de PA qui sont perdus en tombant au sol après avoir marché sur des billes ou reçu un coup très fort. AP-costs involved in opening doors. @@ -1205,7 +1205,7 @@ valeurs valides = 100 à 1000 (par défaut 125). Определяет расход энергии при изымании предметов у противника. - Cette valeur est le nombre de PA qui sont nécessaires pour voler un ennemi. + Cette valeur est le nombre de points d'énergie qui sont nécessaires pour voler un ennemi. (NdT : Attention, au moment de la traduction, la définition était très vague). @@ -1241,7 +1241,7 @@ valeurs valides = 100 à 1000 (par défaut 125). Определяет расход энергии при падении. - Cette valeur est le nombre de points d'énergie qui sont perdus en marchant sur des billes ou en recevant un coup très fort. + Cette valeur est le nombre de points d'énergie qui sont perdus en tombant au sol après avoir marché sur des billes ou reçu un coup très fort. (NdT : Attention, au moment de la traduction, la définition était très vague). diff --git a/INIEditorJA2Options.xml b/INIEditorJA2Options.xml index c53d4de68295c6936f56783558ca854225a93e40..622320a161806b941a6c764391de42f858402a0f 100644 GIT binary patch delta 29489 zcmeHwd3aQ1miOJNQgy3Rxs}=y5<&$K62g+ODuO0#f&>x>vbX?Y2?=H+3!BQKG}sIv zP>|!}*DBII-L#(z7@Eu24g!rn*n>3KjADQN(ZD#4*tUYhI6d~LbAIEn>Yk-G4Z z$kE_%m5WExL$5^s92#d`-GT z>%m87pEIv+lkeV2^+CU8-q~I0HNv-$X@C&wq-y>t=h}@_ut6D1vzIFaY3U-RlD4l_ z?l$MHP)^7#ixu76TCOa$bzbkoRZ4%Wp2_vX%7MjSQF?7$2QStu^O8DmmdW`^J0-=q^X-8!2Sif_Ha zQpQExM=rhor1A)HI;T3dxLb#K)-|D|GDa>xg|l3{Jrd{-f_}BOiBX?W)0;3 z)Gf=I-C`PIIY^El|k1q|8YdkqI^%RGh`AlEEaaOVKeW@$MUY*zwZ zt1QL+nUMZZc@*3$mv-nEDu}%L5v`=obS}4H9EaU z-C&NJrB;r%!I0(C>BrS>^x==xp^=L%UFh=(nw{o8u8#7dAt+QckEKrPFL7!5&Ex6{ zn)ihIai~lhD@~K;u&Eg<9cTcb1_JxKZ7=ScpY#62&kTemXDD!clPA+W=he7^?w zExLqtu4T1pENW@VSuH^Bf8m>RP1en)ccmIs-{kaA{bx?Q zw}6{C&%f=oppgvPdnQ$*llxT%c~&H^`+EM#MRa7M^X&xBz75Y38fVR(jx>()&v`X- z=96lspH{Z2`E)ha88%O}s7k3AWfqs|Csa#%HJ=C zC}vjc|42j7<}gO+*`miU>=(xAV`B$V{WUK zyUA4F)isX_FD3;kD`2zJ=d)dI+P~bMN~b)U=4`J|`)cjJmKL{0eXET$s`#y(M&Y@# z9yz#sJzch|!N6qpc&AC@8GuGJ^h}k?q!MW=sO>>pH+n|V=d*$<=~T8Bo(TK~p@3s} zkkOiedmyDC8Lo9be}bzIJ9HOA8UXDcDK~}(fD>0-Es}d`AsS!fayzX-axcv^vZt0o zeeck9Aarg@fSy=j*qLo`*ufMLP}G=m&^0TDNCq94uGf&D?J5nOrZvzzrP_3I+@U?#a(k+lGJ%Iak!8%9$Yy2|{o%NMG!@p{ zHM;w#s|)Qtr)pIAkuo%?KpMtlxG8dF#I2L2@EG9t-Wy{!ixj{fFJK|wJQlRD9QiD2 z*pX5eB2=J?wU;duT{-FrtiFpIhf4#)#2&O|il9xx^xP%&<3^&-$6Ix+RK!2r*IL3`U;}qPQv2Dcj?PL)JUt#tx;gapthbXU0bBl zGRrWIVJ2;obQ?d9ku0h#S^kdK5nax93;z2--rv_A%Vp zUTh|hXey5YSc9=Z-{xB*XlO5eQ+sK!9sVvz9dm7II^AIFaRU^kZH`)3n6nj3bsdkf z{RyR12YQ?NBeW4RtvaLxoxFwX2T`!1cFDP2v<)mEG+M!W}7y0={9Aw3vHy7osIzONQ1@J72K-`D&l*MsU-v; z=8#xeiBT3)%OY+Io;HveN)Otg${3Zv=<8K=Aq{xOX`}Od96`As)jj11Oo5^a{e?I| z9Q<+NZAQC>&lpc;OjW0G4KPH6R@VAYsDWR9d-!G^}GU` zSbXJGn8e~MR>KpE1FQ&(m=TG^*TmxMwQqrZOYfEDjCXV;<3F`N34Bd#Zbf$!6Zo3I zSKftAY;Jw|ExWJ5*ACp*VF~w@1Ea*d1Btz@#JdChGC=elmISPC!1sOiwFCDxKjFS6;5FgCCfwJA z`}&>T*R6|vy{PaDk7jPYLkot*K^&nx(9rL~_b&R$eedf#9Vs$A+!>$D*XUQ!LYnzApc>9qbeHB6^I(KVZOj0@Fo zqL-RAN2K_{b##8O+ie=lw823-JY7w5iu2NZHiDilbEPM(WD59@6K&Y6JVVoeEcLi_JH8 zYR8At>@$kT-1x56tJ>T@)mEXBd$vtCdrh}h$mZ4=wvArm+qLGVD%%IjbTh+r4$eQ`YOSV0+=eJY;J*rMG z{mQntttxT8yl9WZpR6Wa!CUEKwlf`O^ymme^zw|{tm1_T-VyAV5Zi7&GyLSKL+G>wB};Ea`BhrIO+VEOOr8eR7IHTrZotI6!e zPCcUCY|xwAUBP6)8cwcR@J9PocgTy-6vvs5BORmV~IgzTWchjm9toNz`d2m}y{ zQIyk?4SFa$IzTbp9BYURnIfFjuI9oEX~`fheG-_6BXgXp#X3NTae%dG2^>Qo6^mm>x6(K@)WMovnXo`XX$usmVSneW31{o*6Op( z!R7kN5*l@eXW^!GnrB1LeLDZT_}9(9$!5=eo{LVL=QJquX(MRn|I)MDf9>Z!irMQ8 z&+ISVrNYx5wpwmanrU3}1mmBVe&#uRBN?eFndZ^5l#laO)+E|@COJK&fdv?w6}e{X zx|Fw67ZeTWb@?3%y3oh%qx_?q=3Brgm&Ck*W`nc2k<()eC_K>6HXM35#XR(|aeTeA zgmZa}2!tnFXl$WJH}-l7tF>aEoMw9v5wpqS=u?3ai)~-PvG;nocZIYN`QLZ z%t!TiHOMEOGnk5M?yHWzSZ<_;pd|76h;Wj*KMSeI&G|wmf1)~up*YTLCsb z#srfeQxF1+-G{OP1Xj??eYK3dC}v&X1zZb(X^=m3HcWMo`$FbA!&NPhZYPo-)^lq( z0E;9vm-rJDQJlBN-t(98DOpc3f|0lBAzJ^ACzy>nRAsezA+<~m{~%otsNfb))YqZ7deTDm*6-U4~*nI0Vb7L*|W z85$R-i<_B4mFCZOEBDF1_)!Sj8|Xrf5$Gx^cEWTz{R@YW-ucX%GX*2Tsd2y`#I%6Z z0ii3A5=e**-9k$-N?d~1BFim+pjQL1 zk*Giz{x46WI5BgXm?{8%#Bu%@`1j)yNVoyrpU3S+u^GISMh)Z1L5)%liGC`C*(w^NLZK0kR zq<{?wE1I(jES$%4V#xu;M?*iAQ)%dP&eS337E@M$F*GVRTmb+`)P%F@;F2h}fTsLL z_tC+KYu#vwdn${P%|DB^SenIx9m4{JYj7Js8^fQ=IAz8xs}yoGF*5UTOWM?9oK(!A zm`-%LRUT)}aT@V+CABUlQS^&^3&L>_SX{wWBfCNsKj}#!x($L2ozKz)84wbX1~R^CeS*e7!$5}cU6!(~UDB!wR|dC* zGDp<{pBuRW9w9yO6D6Hq{Ydrn>&&KLMxaa31TKIh)wC_ybr%hNTkeSvR--#7Ywn~8 z(sY)vWqCtM<17>?rvG!lv53w$$XhI4(VC*vVC3ljR4N?i^Cv;FY=`L!UrI(uWET_U z3YJ<3PuZJ1K6fWz&=3;^VD!{%@9SGvk{c(;5@ zeP2v(2phe?onSAFIM2^8Ixj0> zy4dQ@iWI(<7TLR~JH6BD9!$Hkyw+7F)$d{t{?OC1v3+sdoy*mM;gn+!435n8WU5Zd zNl*Q~H;*1&?eZkg;USjt53qbHojz-n)7~jc_mPNOFLdqi6zb%l6R(EbF8oJ4Lk3>ui6Bjs^!6V!~lX1$rs z$cTfn3&2OMY-Tyiie8}33#GbS_#YSqwHjkF-O91Up9HeRLJXmlm zpeJ_N9rBRKk-QAKAX4an zgIOv$Bjp1!WG9_IC-}r1bm2bRH)L%is}$b<1_}x6vJx)xXKUzj zBM19p781!)zkDWlfEB)=7-B68A)4nlYNBEAgec%yHc_{rJv|`OYsOnc zEc$$<>vt3YMrTeFh7{6A!xrN2cCs}mSrC()Ak)h9baggEZp)e(0@jvmZ%a4G8R zz}$AEGQwdIt_%BSJOw(Lw0}c|;jzQK%=}hk&**6EZJJ@NnyiMQfIklf0& zF{wZ=5rhc_MW12PAxd4;reGq573HH~d_5Y%6&59|C5qLS>(x=?0~nD7o}(KC9L?53 zjtHs{BO)#n`VJWiZH`LHYTRlY_HcQ;%-F5KEP$)fDACN#hUagLx_NUrl!4YxWY=J- z<=tZaat_N9?m`Lkd_4ah#gZNURXSZ3sy3XWr1F6ZGusq5K!15#u8PZ%uZid)3e z1p`HB8HG^3Lsvd@q$h*F5K09%(m-?alz5>hh05) z<}2gOQ(^C?ioA#}oZ?U*e5c(`#z3##%C=YVGc^#=W*AA)lyzV1lLK_{w`%H5!U0Ao z2I>VaMOQl!zaXkAZ_}ChP~_6i3$l+c-^v++;R-_r6CfYD@Luu{b`~bt&72#&?`K-x zT?j7RB$g1?fo|iHmJ`Pz=F9b-{~HT2>DXf_#yw*F2H=3s0kQDY1$5?c3k@uRYL*LD zfJ*rj6cE;Qben7dE!CFuAs`%J1URy`dLsMY5dIqz9cScW;w?%CbwVkd7)~B(#Zri) zX7UI`7>$&Y*8YG^)uJ;Vq|C5EYtkQbr8@B}f0D5pg_ zG7%aJ=M}h$H8Ma8t^pNLDMYAX3j%UB_;kT;1YDTpXpYlJQt}UNp#e2k$*I@$ARHz^ z5$X#zE#pcnXxm0d$cq+`dL8Y6?;KrLDcug7mT#1=WgE#;gMVi}ILf>C2f~XFZ%OhD z7|lVa@Z$lt@IYZ|tR+KcTU(w+zM96RMzNjFe%J9fm8z=UTBGg?s1f13=p8-RAa3eD)i`tX_2Z zKAWdyxnHN!-})TMP`s&@ij_#y>B2Lf5bas(K4T?TWuF2%jO=l-MUMp$xgbEbXM6?? z9-^e?MYSD*#AFr_FQRi1?M8bk&4mHx1$+i$jzE%oHdg_lJ zpNepBEn~R3f44III=zp=g^*!q6og1yo4lURr>b|7@rW%bFQbWX`@4?C_72PmKuauZ z!nsG73XOy@!ra8usEGkihy%pPc?c8KK;?N#ws~~NccyKXTm5}JSsbXwR#hgmc}Idy z5QJ3;gu->a6n*8+pf4FdgUIIDDBTM?*W-K8VVlIlE2bm6l(*xl@x@ak5}#Jk$ZocD z+PhbV7N6uu(cWQ!D>Kf5a9id`J;0p_DNCA}wzlN4TbC4XNZQ zdj{1$?Hfv`)_5;kOGwuu(KnowE_jddR*IxCVu?F$Zl+%=e$WJuh{4oS1KK*r(5Po_ zieaJ24b43M=*R~0m9QplHFz{uWW;-ny3bs&^}EhgC#)%CJ({kx2D(Mo)EuI$GyGi( z#c%sFXT=kYf-|^V%v!P5j;GNar&HM!V@`u8xDwYA3#S0fI3gKwn*;lOCU$b0-ZL^! z;sv`Ui}WH2e`xPQ;nz8(bJJpF4bAlj(`fm#sxcPUN_=qwA{!tM+-Sh0$Zrb;jP4h} zPZt@Dqjn1Fww!l7FH|W$Z->SplyMC;%uK-}xCvib&l_J4eqUc&J5ljmaim`1rL5>pFjQgE@69tju$e(R%&maNr7MKPC9 zIGa%q0RRB!6Gp4NZKqX4OV&o3MVSR+=8+xB4EZ}v&UUaYSn4WIXi7p;I-O|UzGk9D z_PsbUfj0@f`N|j})cdPrRS}_S)`4!eC=TVW52!!iz0 zPa1Z*`VTInYb-hiq{EC^K?Yx8EAdK$nw}zFrV@(*9Iw%&&-8Sg)pw+T+j?THUvF6u zNX=d$94)pS*iu`lP(Z<=45uv|jxjWD|MkQ(Y5jZ{zw*J$}#vV0x1Pp2FGp|5x9 zu);-iGu82C->SgOf1)-0JsKS!8}!h7w|d7h==VLQ0~FxJ4Q$TW zQPG}cAMJX}X}7`AsHe4cwwrj{tk@hlB)CTt%NK~yi9a8sHTT;JQ(!%XGiq(s(MPX3 z0yOP8)d+yK*2{(51rpIB3#Oa?_wCcJGlg{JsxrxR4-Zz` zMX&vTrRlWmwqO@0+*1Ay3wD=|9ChDArTYW-N5b1QdglYxPpg)xsXllK`0^mUK+*P% zM3gZh*wuR9xSIBT%-@An{DD`eRXY@iE9$eeF3`){eCaK3Dt2oV0$v50g423^Q|Zv~ z==Mb|8+s_2wQfjjf6uND>J93k-p<+fAihKC`te5n@}AT_P}=do?GyhA}QrTr$7$d2Jp>&Jb3q1U_E7ct0@ZuJ}PNg%yB#t;6R;#8{ z(RTH&Z%yKWPI<@b(iy|QHHDF;+*Eq?sC(xB5A;#_O-2b_9_HmQxwWl-r=dieZ9exRqN`gQp8W2R6D{gA&2zuC9%uUV$s{_q1sc~9(ua0vd8@9wFr zPXO0n3{KA%i*ljqHf=cki%M74Po^@Ss=J-r->?6~;C;Xe^~-ez<1y7V9Ee#o7@n|S zL__kM7Oki6%3t{!z5U?IHw^IMeF5Q~!Zo_>%`p8iq--+jBF3uHRk^BBs;R2c_$gJD zuewc@hu`RP9-MIK!ytPEp9Txpa9WsH6Ho`)Yw=S>D`$eqbGhD7b<7&$Nm**pOvjm+ z0ekvtBLY%YV^m{R@$hyL7u_uu8&;umscLY(YE(t4GF319HVr?~)#-S*1XhnQI^c^c z?k3pRPiuj;LXAx>yj7gRX_pkNFAaA=_FOJ;N`!0Iii$rR@#CMku|TmQ|Y*JE2c*L)|y-O}YKt_so7^8lUj?>i8MW zB^kxLntnBV=L!Sljy zJ2aN#Sn#!6j5=0T28%zEBrB35>sARiaK5S+EPj{|izvsw*S1fQ3k%R^7yi`Z7?i;M zm0Sd*=%k>u@#-yFfL46z#SUBl^q)JXxH6cJkUM1#C_ zteAh+^b}u<>Cu<|b>Yf&4RzP!6a~Y_Uvdv$e2RXTBhLDXrbxyqI(v4m$>MR&-!bWW zoSDrRpOiNz{B)C|yW_{0l;73vt-2m3MTDd~#re?kx;jR7)^T?Aq5&2@h=1xw^WpNTJNfmT{7gDuuc2aTP%({=(6O}rnd1xEYTjb$0_?q?-Sp9HthS`Im zK1#AdSs8!3-`jR@uxkbHln+<%v1-_VQfGkI>iA#~=JAQf666FWs&a%YHL&`5s{{9V z9c-@W_W>3Um)BPF&U2obsGhFs34!LeB zf@LW$Ui2OB%g68KwMz9@@~n*Q`{GiM4e~WHavA?g1T;<;f+2IU!wG3ycso3Ovo;tS zxA38Q0w=Y|@n^wHTliT$2q+Mbq{~J4X=eL(y6#flg@2KA!k&Y|{jmQxyeOak|NQGS zfseJv;oN*}Q9~s3O%g0nI7DrLRlRMZzKlINU3Cmn9}NtGmK2)+uVrfO;2LVw!Tvb) zE|_wR8w4$8J{w->skX@76V$sj9o1yR^xI8N*w;gC0b3MrqDKZnLoYEFK1o!E!hi%R z+)PNbhJmbOs%rT3VPlA=Vev|M>|0(duNtb>YGG@c#STv%%$pJSY{DyQ1?76njF(Z`A#9 z)b9C>dNrr4H`x8YF&-Mj%?3yw&fDbiPpWlyz^Y+FjJz;JSfi6?h6sm}kg^}TOA`gf z`NCKDdE7Xmx=#s0w`$d7)$Irk2Ovc3k3R$P|0o1E<@iH@PMO=OaN?i3Aaga|%=022 zFpn2Ju-|Rf$^*6uP8aMyDmWqT4N2GDuGDg^gDZoV$^*h6veu@B<{XUx3nyx9fqAN) zIPhgi9d%gUEL=rJ2Lwk*oQi&22sY^!A}Lm&L{$Yj8jS=KBc)I{?9?iO~3})?&=YAxcwa zsobh@Fftuk)7ECA&Qq9J2W`DH1HirCXoADP*4l845JkhBTg5)`@dp|w*B7`sQnbd6 z&*lU7q$LWz3r51NzZ(gD`G*!8OdO#%L2#wkhP}>ap zJ>=F}{UFZb#ll8+X30)BB=*(xhP!7Pe&CmZ?Nu%u+HSGVhen${4PxUok+8oQm+Z$6 z;`%#$r(_}QYk{gA>I7(Zidwj17G8Vf70GTa!kMdO{Wu0WE$VI%w+zAhgS`!QXgz5Z zVAWvkb>br$8#GmGgM*YUB^wFW+vRv9+60Jxl>Y^!{MM*5)8P1~fT8M3Pr;_K;^1pE z1;Jb>SFea8$`oWSe<@#3;INl0Jw4KYyPPa{II$*#M==-J@tmz?vb z7(E7fFFksH&%0&>jH4&H6+HUyjGksbt#9~zpJvF9OneNQUS#;xxc;HQ!1scqA80~< z_|+fG!Fm&~6aS5ovk<Gq(;8O~SW|533*UXIxe1y-L7vj~rsf40KF6$+zdNFd;h<6{igN4Q8ZqG9l4(c$ zO3u)oef!UTb;#?EYm$ABANRjyI;mNrJ^NAC1_9oA44L`y)0(H1;*Wi+d9A&Ug)VIh ztQ%u8z#)ycx#MXvZz3LUaoa zbm3)F`{l}Hon7ubQ1_fcZXKa}(ggVTl)NNEm+XOq-OX|GCx>;*YNsb|u@iPq zHQXfcGV6EthA;Bmls{!7kTFSyOoVUnc8(vE#yH2$ehT zJ(6v8A&|7j**h)@yo`Y9V4`REW*yX>wj@AWx|j(Yt>TWr+YrIbL$;>it_3O=Y;bW7 z*z$%s*f@{C0^Xa0km0~`Z4gABwiu+o$`$n%D@)Amp( ztTt$2i`5znmTwS8?0rG!R2Qojz+Anxmt3_|$mF{FfI>>?J+ng#0w)t-__qGBi5qiO z?%!7qt*{nDLV-2r@@j?6@0;qNaR4`5Q-jP{jp>bF8+GayodtVE8v&G=7%11_->^&T;8?R`b7fR)<}Zfy2E-<4Nvbj#oljw-YVOkx4pj1n1@nHIttcf zRH+bXwie0RX@Q4~kUd|V0ngnPm_cJ6PD?&)9b;buwr#us6)RD{(DH=U4Hb8b zmSMCS1_;B1p+c767RKQJ!GcRQLP)^B{e@)wHUR(LjNb+cql9$)KLGFDhUL;>@fu4I z2v76*^1T^$I|qgP(9*-+nN}TeyJwAE^w>(0US%O@YDidYkk#R1OZ%$}RT?ei9D#(Uwa2)Nccum$HxW-2#hU-Z@zOS5HWo z%f&#O0fqnUZ>@r7%dl|9@jQ*2Lt&NVSO^JwO*cX7GOI;j%{X5fnq8taQdmGW?&EhO zZa?w7Ug}xGlmX=^@w!x{xCxM~U)ioIn1RojD_se`#+@)ErIhSd%aH%Klr8G@@DsvDSnBw?{# zCs*Anj_1nWU7fi++(rBnts`h=8gtL%3mfW)Kb|Zxo%!qR7Z+xh)aEqQsY(MU?{rt< zH8ObZFC~6zogCF z3S5qe$^y#-Lnv4Vq6+DW-Nu_>z=zn*B|DK-uG^|HL7{BaaV3y5OA3OfG05U=J1iD6 zkqhZqNHbRfbK6W|aMRnI4HB2**3(#M>kiG^BmquM7E=_{R7<8==bI+tk~iWsZ5b;T zdZ&pPZD*P$WYz27>}jH%{zjap);!;8BG%lQrU{w*nsYY2cP8AB(*#ote0Ny*JDp8# zT&Zz!6|obP4Uian=b5tSh)=n|Rxa73bk#)knaD*ABl%2ZBFD~$(hRW{>UY_f!}9S4 zn{|$gcn-NN%)y^ZSkz_+k;of@7}0!oqliAkiLZGn=)%0K8t(j*>jAEloB`1C-W^W2 zafP0iw}e0vT&QMbe#rGue)5z*6JpNCYsB*i1Xp+t@RAxu9q50Y>jljxI76xn%h#UM zfOIAhkxslC>nlSAcM;Y{wUQdV962d5%62V3Y@Sr}#Bx*z;t{-- zj5Vhqk{N_|=(~brQd!-Dgb^_23-0;k?;|(jsvkE-HT82py4G2+>)sPf8tTec7f)MQ zr_FtRHqYgIZ|VbO(+>%bl7~cxHso z36onT(evRb+qu3R?T!K$rI)92M11)*qL+rNqmqA}H1- zB)cl<9?#->_z*Dzg?qHS|H0xIDPkZ!Mmo3-v5bjrwBeQ`!y&^ZIS45B-4bjC3MlaT z9!)e8x>}m`y;*-Cp~UWtC&r~b<$GS?v}C3 zJ!Nqib5!GSh|_V%^WYa|E~wiDN13@zl09}j&dDe^@QF2|LoRd_;b@ScISo5X5>^d$ zN=9?;1P*NByldjF73(HVpS@shl3O*^bf&ssMYX=PwIsXgmpM^QrZWo)hL#;#O@dx4 zii@A;#nzh6nCk8Byr~NcRIvDghPsm_A=zc?4DSAuzpX!>x35X%UQqn$#M&Had(<8? z!dH8Bj#B$4dHPa)X?9aX9Wg{cp`VI=>T=$2|L=;ud77rH>hqBn!)o|!Fj{0oPopt9 zcfKL`PDW#FGQEmc#VD)bA;Kt%H%Kdv3K7=XghtQIVtkn9gAj`1>rsIo0r(sodC@A3 zqDP5YlUF6t(S=_?=6%J?uMj9v!!fLc(Kh59Cgu5VV=!zvq;tXAo+eYELKf7dV%Eqx zo;@oZo{iNuaGvIEtb0Aq)*)Z`&9N|di5PSq8TGpiGQuwRVk^xBN9x30XE}#n;U<8# z?SWmJzz?PBT-yU5!Ao*@mmz@k^Ah$~$5=#tUJ`F}Xh-{Yc-9yjWVOlhBs3V?0(Xs^7)+D9*# z8-?#*W{)?$Z<+^PTL8iYucpU`Y%a0|T!Q`k(b9$3|K=;)1kkalYZLh4Hi1jP|1l&Z zpf1pTIq)AQ8Tg(Z+S1`1H2+Dh9e=}$0lvO>i2*;*KF~3w7ZU?mL{+uD^L)+(^;Hkeg*=Jpal%?p(j7k6zV!!4sJxL2duKFav zlN3cF^96JQu;-s#A85PVVuIJcL$|bqCFq>rA^1Z1tzs&P#GbYaZR!msQcq&O+UE1qy&wka|=bMc&Nl&$#0soES)g^asUy3=0gLOoDC{^ydTaM?YFr zz-jkg=pezYmwFjma)PHF!u9wL&ILb&gn$!=Z; zC^DO?roK{evg8Mt)*)9pt*p%u6K9US?D=fh|6lHWB4*Fx2Eg2SO#}?*Fbws{+YL#u z@jv*KYrR0<&HJ|&s6TA^{sr32>tgkTPU}^#R=>ty*=pSkmpieD!?NH|k--3W$7?Wn zcm#h7)bFrQ0av*x_y^o_jU8JqYREc32JCMLFkR)=>(7Y3e`d**{HNV|{n~qFlj)~p zXVcn8VX6Mgb*g(5s@Bt4bh#VV>~t67%wgn9<|1${v##S(AK8QcL1HWV-K_scZ-)VP zn#3G2}vcN&u@F`bHmb_>*n6f&^8ms8j zUD$-Pt-X$63VTk)>!c2+lBAj>mYtzG$rSFTSUqXIXR`lf4W=4rs7?ddW|rWMXwK4W z7T%?2+{m$};pb}hw-(i*6p2Okk=s=Xdgz{Ta|?PZ{$yUe?;vLLO+drSFtpo}&6j-6 zT&g7ae2Cbs9~pPaIZZM8D&}HxO&fv+-XttKLbw(0Qi)U{6Z)^!Z@4z2+Kq)Gc?$b! z;j>noV)}){rJRjxg?>pGt+MZJwb&~LM+e=5*~pQRfksYI_L35re8#HSh{Qm@SEZ1k zSRAtHI4#&){2iqztI-$LddBP+cz#U^Wsv@xY9@f?a||F2cr_ILO$rO7VgyBw;j4&3 zYGKm{)^6}wn-mP2bGc=(zlArzpf7mQk&1R8N_{}YNuS2!ZziOsi>1&u&hQ{4?!`F% zL%R^8ZN1l_h1bVuMSUvMt&_{_wm7W>^`BxohR6P43y&(nw-OnU)rUGt4Wv&*0%fYc zu(;mV4Mv|pusFIey8j)$&){s@gYl5h{1Hv*&O%W%d(A#X=?mb!Q({m6vw*0|T&l zb$0Y@m75&tcDmnPU6P}6_jWgzG}I+bNXjE8JG%aDV`$dblV;}sel=YspA?lldiLgN zAC#KT)J@Tss@&@)wdUMktvmBZ-u9eTZtolPXTGgJkk?%OeB%N3WJBGrt9MLlsEcYc zXYmR5tovn7Xkga5Nl~R#mA87<|`&bmovw<(`I3YCbRhB|MP z(Y%vqE8dW+yzA_S*G-{1mA8W}iC+T=51=>qcQ4t|EAV-P0P{B+Ox?)Rl8qBfadwJN zAkm}ZGEZUvnol6`T|t7qQGy6@wVX>$iAT0YJ7998>(v?kcN8v_w5s(1`j`=b;Z zfx(ij4zlnpz)yHFB5}Ytf5{KaZf-o54Bu$qh>e(6M+{-5F&11!cAD5`T;I)gW znX~H8ov7Pof$t;gZ8=x4Q%9csv3F`ObnhbSE~3U{MVl#@{gRvX+Y_#Uo+lgl9~pUg z15di>xr?4z@-3!VP07IEiH%3JI>`s7DNEWY)bJNDFx{jV*Tcr07{xn(l39#W+@ll^ zA1~x3xrtP#iFeNIg66H=#&!>yKbhO^t0bP z<uy#&d*| zE@!uA$v=j70wOT_bsvuGMJ2_hclyNzk;cyE12`RqOhjgsD`oF!0GKus+bgrq2kmV&uhPFj2<4<97}LIX7$ zKOMzNmEK)UnNC4iRGMCc+I!g6Y;oYw&>I!MX7A9DuDuu=Pu-)J(nOL`op4SSzJ}Dh z1Qe+ndsVgvy0BkYz-(!u3d)JG>8YOso?rLiUJa__C4|g2Ld{fK6k_LGa z{*cB+c;@P*MWdK{KN+?E6o2kgk@kNeM&YC}g?|RB_bDQ0D1OhxE2QvG!QWvl5MvZx zp?I;|@kx4KDHDT{WK@ElbYlr`47>7eAl^&E-vL<92qAemzMdY7VT41~4`iWZ{()o} ztSJ;~HV}WQLTVB=5u(&$n1f6c6uXv;@n*^1wnF?2(XmJgK8sONV386zLR}*&8-Nd` zV)0bGjsZvbcR0H;7;PHVJStD~MqNo_ZzU@SSwblAjq1G>f79B-gTf z*A#&eKGX;J!(B6Tih&f$5w0CoTp>5@9}5$5NeCF`ej@klNrhPl^5*^G-POZT%N{-3 z(~|016gz=b=nZv6r6=7+)M5W2Yf%;%=|i(fC4X*(e1f$oqA-32J@xGDlOC;G{)FcFB{6~Bq3k8SrOym3O1l!p zBE;ZBJ#o#@iX)CetBn|elKmRh-7ko^>E~)pYRppt8xHFodNLDHw(wD&xoCX*^UVQH z*gD;28=}N^(#lqBM5H&TU4yEOxtv#oq_bvGJ+!+sQ3sz!8iY-4_6T_HQJV>lufn9; zF&nH-iK1YRv7LrC1oDtURyWb+fabS!BIdTH5DOZMIxJP?*@JDpqbH`OJl&uu`t3$P z%NOHFm`G9C*}NP{*}O?QF2w<&5w6B8*}I=MMMu*ncFBQ<)VEC%RAi#Asinp!1Q84I z+RG@Km4Y#_jTbf~T!P87fZZ-8e?F5(8T0WjCV!5_{O8Ez2Y}tc)j)#BE_kZ+Vi$YA ze%O0NM-V(?^A~6EKK0J!G0H9m-^Ji>3;8BXl zj2}+;^C&dVv>XkX(j~@UZ(@8zM;eoMN&jMkyicd!#pk;Oc@(cZjUd1I5-gtO$mwG7 zjK!P%6!oZu_JsgoR<`L~@_ZM&M|O|-o1Cy?K|mL~zdp709-Gk~cqx6o*JsV>?qc&@ zY`!zG`Su{J`oaJ_KwyqhFq2819PcvG%3AOF| zk35XIyx_FMyu_0*$N=F%c;4)-xpwk=-2j9^-G4O^NO&}~^2!pr{Rznb(rhBre zBBhUHwZdQ|7`dDaxz+25N4B3DOcC}8{v`vk5~Ea!k16JIZ$yVOX#TO)ab($oen-R* z&`nU=)M$$W>p`s}3J+}a?=@CQ)-y5+xyS?#Bl3kF=Z8gS*BiB0L=o&zr_M_eXrr0N zMf#MxKO>5052my#Ri}(o^xx?O81 zOq%j=<9UvrO$m-({a6XQqm-i)Du^eOO9~}SC8r8H38M%WzsNc89Mf6&aC=%!h+blg z0$Z}i*%XIIT^#<>WP`>sy#Ot<^cJoT4jeN}4(|!>XQ3v@x!KkSTIXu~GQ240B-w{f zVkdY}3E`8J`3Cn}tLc1piqT!&lvMgwUS$cL!|wYQKLeWkn5T1@uqOkLrg|L_i}h@j zPz{0e)gf>y2=ge!Zm`-gB0iS+z9~TzmmKjPmo?&^qW=kjeg6z}29_h-p#XYv*&=7p zD&PVznxa{2q@yT1oN-{!NWBB{cXDFWIy|3hEsv*V*tTMhofk*q;ZuqKLJ;NW&)Z8n=HLu(eE%h~-Y$%bkirbP1W32>+}*FN;G zwg=&olLH}ECDi|ej0?+ECs0DZ`(bV%2 z>Z?Wm0Fe@^3@a(jBS=WeSuFVpxr%7AZW4K*)lEq%I6R&pBHhh!fAz@3NwE`B=6OBG zG4=hF_f`{#L{D=3q&qVelihG>K8l*}@#MBWwvVfBGQwp5-rfY+G6k&KomFi=L>B;}vdkQ^yEz<*ZcNQF3 zEQV;v?H)1fLTv~X>TEW%;-XEFJm@kF+lCq?=srVh3m`orx-3I{6Bi^==nknE6@_Cp zMWetOlfGZhM_7tnv1u9zz>_~Yi6nH~>l}Q!l0u4HwJ9+ZVR?$lAe9_7YdV&x!0Udc zA?G=(1HPIp-oip$uOY#*bS#~RU>S&9L2M#cNi z%HGgiZ#40_UdB|Lw=0C&NO@bsG>ufRf*+N0hfs|R|9IG}@0Q)sekGEe^t;~3W`eDh z6(#iu-;H5!){DE>i=h{f*KIn$XF~H`DCGnPJDd?p!0OE`K$QYn(=edqR{R}-@uow; z`jp)fZO5-SV`M8u%_>o_N@S`MJ3AO-XUn%)`#^Y{BeEOCxKb5#Y~zUbh}MxTx|NRO zqoCBA;nU;X-_nil!mMv{?yFF_<4Y(Aw4v_Eox?D-j3r+=t7`EB+m;Y~*PR)cH#RHu zOs@j{nUd1KJalRbJ)x9U5_?1aM`9%G{S}^N_SRh*n;JtUAp@ikt}nbdhYQM4f+&@c zPOqg|iFQ`TTRB$Bd+4K*sGHFu4s$GUgD`81R;Gsj9Dk5clfDrLR zg1tAuiF z_zvrtgW?7WD&%ZB12!DB^n#WWs}993@+DFHN-zUG99d_P(n*dXspN{!bn$myf&S=l z0(_z_l1XrQjF581uCHyR9;erwby_f_J|jgj83vE{jR{c>0Pfi?*|pm}sJ*aho=xhe zm?y}^mpn&F@2v=XBu%w{hqdRru-0Q2~qNFhGyjzkHOsSd;;1q zV4TFy^_{e9CE_@S-T0Uhi3MyaIxR)cexVngty4r89Z*j;kdrKje!6Bd0Ze_S>c zOp3)r2gYinV7OkgL*`4OZj?fK{~kd+6p2|(>zC^cu&TFB1p8^;j=4Tbc&7RA<+vdl zCCR?sj~M!=;1L6_Zj*FI$~{BI5o|p3B8De=QYz7Tw(!BnSOug4n1zNa8WF`NLMdWs z9B9%N5>Q^m>?QEjKdeD;YO&8O*6KWOm7>tq|2kZyH(&KCRZcM)^dcrtz2TPU zSy~&EIwR!0i^L?(&q(vLS(8Jqa!o4J|8OL4zit;JOUrt}#fTzY&+Bk8{u?aQ&y%UM zuuQ)$wX;m0K=rd(o>$E>{YDS2YnI6}>0WS^qA1wOR;izZS7%wJeqB;lDU-s`_V$x3 zQM48@>l@rD@w09ebn7>S*Yi?+4(K!kdE*q(G!&ZO6^6rYoA4;4`gg^{a`P`m_g(TS zjT9`%7K7CCNPu3YN3`sc|FS{4H4$1k^%O{WR~!I`pO!+QY>yPV<4wuHLuh&6AgEkm zSq0g**==&tajCV)v&Jq$%K}S^+*EI$_zJjUH3B@ikGH8Y$k2o5pTTX_)