Modding Q&A [For Quick Questions and Answers]

Users who are viewing this thread

Status
Not open for further replies.
I am trying to merge "native mod compilation" with Battle Time atm. That worked good, i had no problems with it and i could also start a new game and had acces to all features and so on. But now i added some items (around 30) and assigned them to the custom troops from native mod compilation. And now, every time i klick on "start a new game" in the main menu, the screen just turns black and the game crashes without a message that would tell me anything about what is wrong. Could it be that the troops just have to many items nassigned now? (for those who don't know how it works, there are 3 entries in the troops.py for each custom troop, one that is just for the name and skills and so on, one that is for the equipment they have at the beginning and their equipment is stored in that troop when you change it ingame, and one troop where all the equipment you may assign to them ingame is stored. You need to add items to the last one when you want the troops to be able to use them ingame. That is what i did (i did not add all 30 items to the same troop, each troop now has a maximum of 10/15 items more than at the beginning.)


edit: yep, seems to be the changes for the troops... after undoing all that, it works.
 
How would i go about determining wheter position is in rectangular or triangular area in front of another position? High school geomtery failure.


Anyway to put delays in mission templates (y happens x seconds after z ) ? Suppposed i want to make bomb with long fuse and have it explode 40seconds after placing it and have there be multiple of these bombs at the same time.
 
rabican said:
How would i go about determining wheter position is in rectangular or triangular area in front of another position?
Why not make it circle-sector area in front of pos? neg|position_is_behind_position + get_distance_between_positions
rabican said:
Anyway to put delays in mission templates (y happens x seconds after z ) ? Suppposed i want to make bomb with long fuse and have it explode 40seconds after placing it and have there be multiple of these bombs at the same time.
I guess spawn_scene_prop (for a bomb prop) + ti_on_scene_prop_init with an appropriate delay set for conditions block wil do it. Or ti_on_scene_prop_use, or whatever other prop trigger
 
GetAssista said:
rabican said:
Anyway to put delays in mission templates (y happens x seconds after z ) ? Suppposed i want to make bomb with long fuse and have it explode 40seconds after placing it and have there be multiple of these bombs at the same time.
I guess spawn_scene_prop (for a bomb prop) + ti_on_scene_prop_init with an appropriate delay set for conditions block wil do it. Or ti_on_scene_prop_use, or whatever other prop trigger
I don't believe scene prop triggers have condition blocks or delays for them. He'd have to use a mission template trigger if he wanted to do it that way. I'd suggest having a mission template that runs every second, have a slot for the time remaining on the fuse for that prop, and use that trigger to decrement the slot each second if the fuse is lit. Once it hits zero...KABOOM!
 
MadocComadrin said:
I don't believe scene prop triggers have condition blocks or delays for them.
Yes, you are right.
ti_on_scene_prop_init  to put info into bomb scene prop timer slot
and mission template trigger to run through bombs and decrease timer slots until kaboom
 
GetAssista said:
rabican said:
How would i go about determining wheter position is in rectangular or triangular area in front of another position?
Why not make it circle-sector area in front of pos? neg|position_is_behind_position + get_distance_between_positions

Making some crappy magic spells,  if i for example make stream of fire shoot from an agent straight ahead, wouldn't want hit detection to be in for of circle of half circle for that. Or breath attacks to hit 90degree angle to either side.



 
rabican said:
GetAssista said:
Why not make it circle-sector area in front of pos? neg|position_is_behind_position + get_distance_between_positions
Making some crappy magic spells,  if i for example make stream of fire shoot from an agent straight ahead, wouldn't want hit detection to be in for of circle of half circle for that. Or breath attacks to hit 90degree angle to either side.
Turn pos alpha left and alpha right, while checking for neg|position_is_behind_position, and you get 2*alpha coverage for arbitrary alpha
 
Code:
abilities_help = (0, 0, 0,[(key_clicked, "$key_abilities_help"),(eq, "$abilities_help", 1)], [
	(tutorial_message, "@Combat abilities:^^J : RAGE, +5 Power strike, +5 Power throw, +5 Agility, lasts for 2xStrength sec, requires 14 Strength ^^K : FOCUS, +10xIntelligence to weapon proficiencies, +5 Agility, lasts for 2xIntelligence sec, requires 14 Intelligence ^^O : SPRINT, +7 Athletics, +15 Agility, lasts for 2xAgility seconds, requires 14 Agility ^^T : WHISTLE FOR HORSE, call a horse to come to you, more than one with higher Charisma, requires 14 Charisma ^^Y : FIRST AID, treat your immediate wounds to recover 3xFirstAid+Intelligence hitpoints, requires 14 Intelligence ^^U : BATTLECRY, rally your wounded troops to fight and recover 3xLeadership+Charisma percent of their hitpoints ^^B : WARCRY, unleash a fearsome cry to terrify weaker oppnents around you ^^G : TAUNT, attract the attention of your enemies, more with higher charisma^^All combat abilites can be used every 60 seconds in battle ^^Press H to close help."),(assign, "$abilities_help", 0),
	]),
	(0, 0, 0,[(key_clicked, "$key_abilities_help"),(eq, "$abilities_help", 0),], [
	(tutorial_message, "@ "),(assign, "$abilities_help", 1),
	]),
	(1, 3, ti_once, [], [
	(assign, "$abilities_help", 1),
	(display_message,"@Press N for help",0x6495ed), 
	])
abilities_start = (1, 0, ti_once, [], [(assign, "$ability", 1),])
Code:
Traceback (most recent call last):
  File "process_init.py", line 2, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_global_variables.py", line 12, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting strings...
Exporting skills...
Exporting tracks...
Exporting animations...
Exporting meshes...
Exporting sounds...
Exporting skins...
Traceback (most recent call last):
  File "process_map_icons.py", line 6, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting faction data...
Exporting item data...
Traceback (most recent call last):
  File "process_items.py", line 66, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting scene data...
Traceback (most recent call last):
  File "process_scenes.py", line 15, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting troops data
Exporting particle data...
Traceback (most recent call last):
  File "process_scene_props.py", line 7, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_tableau_materials.py", line 8, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_presentations.py", line 8, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting party_template data...
Traceback (most recent call last):
  File "process_parties.py", line 6, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting quest data...
Exporting info_page data...
Traceback (most recent call last):
  File "process_scripts.py", line 7, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_mission_tmps.py", line 5, in <module>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_game_menus.py", line 8, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_simple_triggers.py", line 5, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_dialogs.py", line 9, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Traceback (most recent call last):
  File "process_global_variables_unused.py", line 3, in <module>
    from process_operations import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\process_operations.py", line 21, in <modu
le>
    from module_mission_templates import *
  File "C:\Users\Cristiano\Desktop\Coisas\Jogos\Mount&Blade\Forge\BOTH_Module Sy
stem\WB_1.134_Floris Improved Mod Pack\module_mission_templates.py", line 148
    abilities_start,
    ^
IndentationError: unexpected indent
Exporting postfx_params...

______________________________

Script processing has ended.
Press any key to exit. . .

anyone now what's causing it?
I'm using the code like this:
Code:
abilities_help,
	abilities_start,
	abilities_horse_whistle,
	abilities_taunt,
	abilities_warcry,
	abilities_first_aid,
	abilities_battlecry,
	abilities_rage,
	abilities_sprint,
	abilities_focus,
 
Code:
abilities_help = [

(0, 0, 0,[(key_clicked, " ... lities_help", 0), ]),

(0, 0, 0,[(key_clicked, "$key_abilities_help"),(eq, "$abilities_help", 0),], 
    [	(tutorial_message, "@ "),(assign, "$abilities_help", 1),	]),
(1, 3, ti_once, [], [
	(assign, "$abilities_help", 1),
	(display_message,"@Press N for help",0x6495ed), ]),
]      #<- no comma here

I guess you want to create a block of triggers to include it with + abilities_help at the end of another template.
Otherwise triggers need an identifier introduced like the first function. abilities_help = (0, 0, 0,[(key_click...    and no comma at their end.
 
hey thanks, now it's working.
but...
Code:
abilities_help1 = (0, 0, 0,[(key_clicked, "$key_abilities_help"),(eq, "$abilities_help", 1)], [
	(tutorial_message, "@Combat abilities:^^J : RAGE, +5 Power strike, +5 Power throw, +5 Agility, lasts for 2xStrength sec, requires 14 Strength ^^K : FOCUS, +10xIntelligence to weapon proficiencies, +5 Agility, lasts for 2xIntelligence sec, requires 14 Intelligence ^^O : SPRINT, +7 Athletics, +15 Agility, lasts for 2xAgility seconds, requires 14 Agility ^^T : WHISTLE FOR HORSE, call a horse to come to you, more than one with higher Charisma, requires 14 Charisma ^^Y : FIRST AID, treat your immediate wounds to recover 3xFirstAid+Intelligence hitpoints, requires 14 Intelligence ^^U : BATTLECRY, rally your wounded troops to fight and recover 3xLeadership+Charisma percent of their hitpoints ^^B : WARCRY, unleash a fearsome cry to terrify weaker oppnents around you ^^G : TAUNT, attract the attention of your enemies, more with higher charisma^^All combat abilites can be used every 60 seconds in battle ^^Press H to close help."),(assign, "$abilities_help", 0),
	])
abilities_help2 = (0, 0, 0,[(key_clicked, "$key_abilities_help"),(eq, "$abilities_help", 0),], [
	(tutorial_message, "@ "),(assign, "$abilities_help", 1),
	])
abilities_help3 = (1, 3, ti_once, [], [
	(assign, "$abilities_help", 1),
	(display_message,"@Press N for help",0x6495ed), 
	])
abilities_start = (1, 0, ti_once, [], [
	(assign, "$ability", 1),
	])
abilities_horse_whistle = (0, 0, 60, [(key_clicked, "$key_abilities_horse_whistle"),(store_attribute_level,"$attribute","$g_player_troop",3),(ge,"$attribute",14),(neg|main_hero_fallen)], [
	(play_sound,"snd_horse_low_whinny"),
	(get_player_agent_no, ":player_agent"),
	(agent_get_position, pos1, ":player_agent"),
	(store_sub,":ch_bonus","$attribute",14),
	(val_div,":ch_bonus",-2),
	(assign,":whistled",":ch_bonus"),
	(try_for_agents,":agent"),
		(agent_is_alive,":agent"),
		(neg|agent_is_human,":agent"),
		(lt,":whistled",1),
		(agent_get_position, pos2, ":agent"),
		(get_distance_between_positions,":distance",pos2,pos1),
		(ge,":distance",250),
		(agent_set_scripted_destination,":agent",pos1,1),
		(val_add,":whistled",1),
	(try_end),
	(gt,":whistled",0),
	(display_message,"@You whistle for a horse!",0x6495ed),	
	(call_script, "script_sprint_exp_penalty"),   
	])
abilities_taunt1 = (0, 0, 60, [(key_clicked, "$key_abilities_taunt"),(store_attribute_level,"$attribute","$g_player_troop",3),(neg|main_hero_fallen)], [
	(play_sound,"snd_man_warcry"),
	(get_player_agent_no, ":player_agent"),
	(agent_get_position, pos1, ":player_agent"),
	(store_div,":ch_bonus","$attribute",-3),
	(assign,":whistled",":ch_bonus"),
	(try_for_agents,":agent"),
		(agent_is_alive,":agent"),
		(agent_is_human,":agent"),
		(neg|agent_is_ally,":agent"),
		(lt,":whistled",1),
		(agent_get_position, pos2, ":agent"),
		(get_distance_between_positions,":distance",pos2,pos1),
		(ge,":distance",600),
		(agent_set_scripted_destination,":agent",pos1,1),
		(val_add,":whistled",1),
	(try_end),
	(display_message,"@You taunt your enemies!",0x6495ed),
	(call_script, "script_rage_exp_penalty"),
	]),
abilities_taunt2 = (0, 4, 60, [(key_clicked, "$key_abilities_taunt"),(neg|main_hero_fallen)], [
	(try_for_agents,":agent"),
		(agent_is_alive,":agent"),
		(agent_is_human,":agent"),
		(neg|agent_is_ally,":agent"),
		(agent_clear_scripted_mode,":agent"),
	(try_end),
	])
abilities_warcry1 = (0, 0, 60, [(key_clicked, "$key_abilities_warcry"),(neg|main_hero_fallen)], [
	(play_sound,"snd_man_victory"),
	(get_player_agent_no, ":player_agent"),
	(agent_get_position, pos1, ":player_agent"),
	(store_character_level,":level","$g_player_troop"),
	(val_mul,":level",2),
	(val_add,":level",1),
	(try_for_agents,":agent"),
		(set_fixed_point_multiplier, 1),
		(agent_is_alive,":agent"),
		(agent_is_human,":agent"),
		(neg|agent_is_ally,":agent"),
		(agent_get_troop_id,":trp_agent", ":agent"),
		(store_character_level,":troop_level",":trp_agent"),
		(ge,":level",":troop_level"),
		(agent_get_position, pos2, ":agent"),
		(get_distance_between_positions,":distance",pos2,pos1),
		(lt,":distance",500),
		(set_fixed_point_multiplier, 10),
		(position_get_x,":player_x",pos1),
		(position_get_y,":player_y",pos1),
		(position_get_x,":enemy_x",pos2),
		(position_get_y,":enemy_y",pos2),
		(store_sub,":difference_x",":enemy_x",":player_x"),
		(val_mul,":difference_x",12),
		(store_sub,":difference_y",":enemy_y",":player_y"),
		(val_mul,":difference_y",12),
		(val_add,":enemy_x",":difference_x"),
		(val_add,":enemy_y",":difference_y"),
		(position_set_x,pos2,":enemy_x"),
		(position_set_y,pos2,":enemy_y"),
		(agent_set_scripted_destination,":agent",pos2,1),
	(try_end),	
	(display_message,"@You unleash a fearsome cry!",0x6495ed),
	(set_fixed_point_multiplier, 1),
	(call_script, "script_focus_exp_penalty"),   
	]),
abilities_warcry2 = (0, 7, 60, [(key_clicked, "$key_abilities_warcry"),(neg|main_hero_fallen)], [
	(display_message,"@Enemies regain their courage!",0x6495ed),
	(try_for_agents,":agent"),
		(agent_is_alive,":agent"),
		(agent_is_human,":agent"),
		(neg|agent_is_ally,":agent"),
		(agent_clear_scripted_mode,":agent"),
	(try_end),
	])
abilities_first_aid = (0, 0, 60, [(key_clicked, "$key_abilities_first_aid"),(store_attribute_level,"$attribute","$g_player_troop",2),(ge,"$attribute",14),(neg|main_hero_fallen)], [
	(play_sound,"snd_man_grunt_long"),
	(get_player_agent_no, ":player_agent"),
	(store_skill_level,":first_aid","skl_first_aid","$g_player_troop"),
	(store_sub,":int_bonus","$attribute",0),
	(val_mul,":first_aid",3),
	(store_agent_hit_points,":life",":player_agent",1),
	(val_add,":first_aid",":int_bonus"),
	(val_add,":life",":first_aid"),
	(agent_set_hit_points,":player_agent",":life",1),
	(agent_set_animation, ":player_agent", "anim_strike_abdomen_front"), 
	(assign,reg1,":first_aid"),
	(display_message,"@You treat your wounds! (recover {reg1} hitpoints)",0x6495ed),		 
	(call_script, "script_focus_exp_penalty"),   
	])
abilities_battlecry1 = (0, 0, 60, [(key_clicked, "$key_abilities_battlecry"),(store_attribute_level,"$attribute","$g_player_troop",3),(neg|main_hero_fallen),], [
	(play_sound,"snd_man_warcry"),
	(get_player_agent_no, ":player_agent"),
	(try_begin),
		(agent_get_class ,":blah", ":player_agent"),
		(neq,":blah",grc_cavalry),
  		(agent_set_animation, ":player_agent", "anim_cheer"),
	(try_end),
	]),
abilities_battlecry2 = (0, 2, 60, [(key_clicked, "$key_abilities_battlecry"),(store_attribute_level,"$attribute","$g_player_troop",3),(neg|main_hero_fallen),], [
	(store_skill_level,":leadership","skl_leadership","$g_player_troop"),
	(get_player_agent_no, ":player_agent"), 
	(store_sub,":cha_bonus","$attribute",0),
	(val_mul,":leadership",3),
	(try_for_agents,":agent"),
		(agent_is_alive,":agent"),
		(agent_is_human,":agent"),
		(agent_is_ally,":agent"),
		(neg|eq,":agent",":player_agent"),
		(store_agent_hit_points,":life",":agent",0),
		(try_begin),
		(agent_get_class ,":blah", ":agent"),
		(neq,":blah",grc_cavalry),
		(agent_set_animation, ":agent", "anim_cheer"),
		(val_add,":life",":cha_bonus"),
		(val_add,":life",":leadership"),
		(agent_set_hit_points,":agent",":life",0),		 
		(agent_play_sound, ":agent", "snd_man_victory"),
	(try_end),
	(store_add,":recovery",":leadership",":cha_bonus"),
	(assign,reg1,":recovery"),
	(display_message,"@You rally your men! (wounded troops recover {reg1} % hitpoints)",0x6495ed),		 
	(call_script, "script_rage_exp_penalty"),   
	])
abilities_rage1 = (0, 0, 60, [(key_clicked, "$key_abilities_rage"), (store_attribute_level,"$attribute","$g_player_troop",0),(ge,"$attribute",14),(eq,"$ability",1),(neg|main_hero_fallen)], [
	(play_sound,"snd_man_victory"),
	(display_message,"@You rage in battle!",0x6495ed),  
	(reset_mission_timer_b),
	(assign, "$ability", 2),
	(store_attribute_level,"$attribue2","$g_player_troop",0),
	(val_mul,"$attribue2",2),
	(store_skill_level,"$iron","skl_ironflesh","$g_player_troop"),
	(store_skill_level,"$strike","skl_power_strike","$g_player_troop"),
	(store_skill_level,"$draw","skl_power_draw","$g_player_troop"),
	(store_skill_level,"$throw","skl_power_throw","$g_player_troop"),                 
	(troop_raise_skill,"$g_player_troop","skl_power_strike",5),
	#(troop_raise_skill,"$g_player_troop","skl_power_draw",5),
	(troop_raise_skill,"$g_player_troop","skl_ironflesh",5),
	(troop_raise_skill,"$g_player_troop","skl_power_throw",5),
	(store_skill_level,"$ironnew","skl_ironflesh","$g_player_troop"),
	(store_skill_level,"$strikenew","skl_power_strike","$g_player_troop"),
	(store_skill_level,"$drawnew","skl_power_draw","$g_player_troop"),
	(store_skill_level,"$thrownew","skl_power_throw","$g_player_troop"),
	(troop_raise_attribute,"$g_player_troop",1,5),
	]),
abilities_rage2 = (1, 0, 0, [(store_mission_timer_b,"$timer"),(this_or_next|gt,"$timer","$attribue2"),(main_hero_fallen),(eq,"$ability",2)], [
	(val_sub,"$iron","$ironnew"),
	(val_sub,"$strike","$strikenew"),
	(val_sub,"$draw","$drawnew"),
	(val_sub,"$throw","$thrownew"),             
	(troop_raise_skill,"$g_player_troop","skl_ironflesh","$iron"),
	(troop_raise_skill,"$g_player_troop","skl_power_strike","$strike"),
	(troop_raise_skill,"$g_player_troop","skl_power_draw","$draw"),
	(troop_raise_skill,"$g_player_troop","skl_power_throw","$throw"),
	(troop_raise_attribute,"$g_player_troop",1,-5),                    
	(display_message,"@Your rage dies down...",0x6495ed),
	(call_script, "script_rage_exp_penalty"),       
	(assign, "$ability", 1),
	]),
abilities_rage3 = (ti_tab_pressed, 0, 0, [(eq,"$ability",2)], [
	(val_sub,"$iron","$ironnew"),
	(val_sub,"$strike","$strikenew"),
	(val_sub,"$draw","$drawnew"),
	(val_sub,"$throw","$thrownew"),             
	(troop_raise_skill,"$g_player_troop","skl_ironflesh","$iron"),
	(troop_raise_skill,"$g_player_troop","skl_power_strike","$strike"),
	(troop_raise_skill,"$g_player_troop","skl_power_draw","$draw"),
	(troop_raise_skill,"$g_player_troop","skl_power_throw","$throw"),
	(troop_raise_attribute,"$g_player_troop",1,-5),                    
	(display_message,"@Your rage dies down... ",0x6495ed),
	(call_script, "script_rage_exp_penalty"),       
	(assign, "$ability", 1),
	])
abilities_sprint1 = (0, 0, 60, [(key_clicked, "$key_abilities_sprint"),(store_attribute_level,"$attribute","$g_player_troop",1),(ge,"$attribute",14),(eq,"$ability",1),(neg|main_hero_fallen)], [
	(play_sound,"snd_man_victory"),
	(display_message,"@You push yourself to the limit!",0x6495ed),                 
	(reset_mission_timer_b),
	(assign, "$ability", 3),
	(store_attribute_level,"$attribue2","$g_player_troop",1),
	(val_mul,"$attribue2",2),
	(store_skill_level,"$athletics","skl_athletics","$g_player_troop"),
	(troop_raise_skill,"$g_player_troop","skl_athletics",7),         
	(troop_raise_attribute,"$g_player_troop",1,15),
	(store_skill_level,"$athleticsnew","skl_athletics","$g_player_troop"),                 
	]),
abilities_sprint2 = (1, 0, 0, [(store_mission_timer_b,"$timer"),(this_or_next|gt,"$timer","$attribue2"),(main_hero_fallen),(eq,"$ability",3)], [
	(val_sub,"$athletics","$athleticsnew"),
	(troop_raise_skill,"$g_player_troop","skl_athletics","$athletics"),
	(troop_raise_attribute,"$g_player_troop",1,-15),                    
	(display_message,"@You are out of breath... ",0x6495ed),
	(call_script, "script_sprint_exp_penalty"),       
	(assign, "$ability", 1),
	]),
abilities_sprint3 = (ti_tab_pressed, 0, 0, [(eq,"$ability",3)], [
	(val_sub,"$athletics","$athleticsnew"),
	(troop_raise_skill,"$g_player_troop","skl_athletics","$athletics"),
	(troop_raise_attribute,"$g_player_troop",1,-15),                    
	(display_message,"@You are out of breath.. ",0x6495ed),
	(call_script, "script_sprint_exp_penalty"),       
	(assign, "$ability", 1),
	])
abilities_focus1 = (0, 0, 60, [(key_clicked, "$key_abilities_focus"),(store_attribute_level,"$attribute","$g_player_troop",2),(ge,"$attribute",14),(eq,"$ability",1),(neg|main_hero_fallen)], [
	(display_message,"@You focus on your weapon completely!",0x6495ed),                 
	(reset_mission_timer_b),
	(assign, "$ability", 4),
	(store_attribute_level,"$attribue2","$g_player_troop",2),
	(store_attribute_level,"$bonus","$g_player_troop",2),
	(val_mul,"$bonus",10),                 
	(val_mul,"$attribue2",2),
	(try_for_range, ":wp", 0, 6),
		(troop_raise_proficiency_linear,"$g_player_troop",":wp","$bonus"),
	(try_end),
	(troop_raise_attribute,"$g_player_troop",1,5),
	]),
abilities_focus2 = (1, 0, 0, [(store_mission_timer_b,"$timer"),(this_or_next|gt,"$timer","$attribue2"),(main_hero_fallen),(eq,"$ability",4)], [
	(val_mul,"$bonus",-1),
	(try_for_range, ":wp", 0, 6),
		(troop_raise_proficiency_linear,"$g_player_troop",":wp","$bonus"),
	(try_end),
	(troop_raise_attribute,"$g_player_troop",1,-5),                    
	(display_message,"@Your lose your focus...",0x6495ed),
	(call_script, "script_focus_exp_penalty"),       
	(assign, "$ability", 1),
	]),
abilities_focus3 = (ti_tab_pressed, 0, 0, [(eq,"$ability",4)], [
	(val_mul,"$bonus",-1),
	(try_for_range, ":wp", 0, 6),
		(troop_raise_proficiency_linear,"$g_player_troop",":wp","$bonus"),
	(try_end),
	(troop_raise_attribute,"$g_player_troop",1,-5),                    
	(display_message,"@Your lose your focus... ",0x6495ed),
	(call_script, "script_focus_exp_penalty"),       
	(assign, "$ability", 1),
	])  
# EGIII ABILITIES End
common_damage_system1 = (ti_on_agent_hit, 0, 0, [],[
	(store_trigger_param_1, ":agent"),
	(store_trigger_param_2, ":attacker"),	
	(store_trigger_param_3, ":damage"),
	(store_trigger_param_3, ":orig_damage"),
	(agent_get_troop_id, ":troop", ":agent"),
	(agent_get_troop_id, ":attacker_troop", ":attacker"),	
	(assign, ":dodged", 0),
	(agent_is_active,":agent"),#stop accidental CTD
	(agent_is_alive,":agent"),#same diff
	(agent_is_active,":attacker"),#stop accidental CTD
	(agent_is_alive,":attacker"),#same diff
	(try_begin),#Damage is avoided 3% per point of Athletics
		(ge, "$dodge_rate", 1),
		(agent_is_human, ":agent"),#stop if not human
		(store_skill_level, ":athletics",  "skl_athletics", ":troop"),
		(gt, ":athletics", 0),	
		(val_mul, ":athletics", "$dodge_rate"),
		(store_random_in_range, ":random_no", 1, 100),
		(le, ":random_no", ":athletics"),
		(assign, ":dodged", 1),
		(try_begin),
			(eq, ":troop", "trp_player"),
			(display_message, "@You dodge the attack!"),
		(else_try),
			(eq, ":attacker_troop", "trp_player"),
			(display_message, "@{He/She} dodges the attack!"),
		(try_end),			
	(else_try),#if not dodged
		(try_begin),#Critical hits for missiles
			(ge, "$missile_critical_damage", 1),
			(this_or_next|is_between, reg0, "itm_arrows", "itm_cartridges"),
			(eq, reg0, "itm_cartridges"),
			(store_random_in_range, ":random_no", 1, 100),
			(try_begin),
				(le, ":random_no", 5),
				(val_max, ":damage", "$missile_critical_damage"),
				(assign, reg1, "$missile_critical_damage"),
				(eq, ":troop", "trp_player"),
				(display_message, "@{He/She} delivered {reg1} damage with a critical hit!"),
			(else_try),
				(eq, ":attacker_troop", "trp_player"),
				(display_message, "@You delivered {reg1} damage with a critical hit!"),
			(try_end),
		(try_end),
		(agent_is_human, ":agent"),#stop if not human
		(try_begin),#Random knockdown, with STR used to test
			(eq, "$knockdown_on", 1),
			(neg|is_between, reg0, "itm_arrows", "itm_cartridges"),
			(neq, reg0, "itm_cartridges"),
			(store_attribute_level,":strength",":attacker_troop",ca_strength),
			(store_attribute_level,":enemy_strength",":troop",ca_strength),
			(store_sub, ":strength_test", ":strength", ":enemy_strength"),
			(val_max, ":strength_test", 2),#2 percent knockdown chance, if the atacker is weaker than the defender.
			(store_random_in_range, ":random", 1, 100),
			(neg|agent_is_ally,":agent"),#don't knock down allies
			(agent_is_human, ":agent"),#stop if not human			
			(agent_get_horse, ":horse", ":agent"),
			(eq, ":horse", -1),#don't knock down riders, maybe write some "lose yer horse" code later	
			(le, ":random", ":strength_test"),
			(agent_set_animation, ":agent","anim_shield_strike"),
			(try_begin),
				(eq, ":troop", "trp_player"),
				(display_message, "@{He/She} knocked you down!"),
			(else_try),
				(eq, ":attacker_troop", "trp_player"),
				(display_message, "@You knocked {him/her} down!"),
			(try_end),
		(try_end),
		(try_begin),#Damage is lowered 3% per point of Ironflesh.
			(ge, "$ironskin_rate", 1),
			(agent_is_human, ":agent"),#stop if not human
			(store_skill_level, ":ironflesh",  "skl_ironflesh", ":troop"),
			(gt, ":ironflesh", 0),
			(val_mul, ":ironflesh", "$ironskin_rate"),
			(assign, ":mod_damage", ":damage"),		
			(val_mul, ":mod_damage", ":ironflesh"),
			(val_div, ":mod_damage", 100),#Rounded here, but whatever.
			(assign, reg1, ":damage"),
			(val_sub, ":damage", ":mod_damage"),
			(assign, reg2, ":damage"),
			(try_begin),
				(eq, ":troop", "trp_player"),
				(display_message, "@Because of your ironflesh skill, you received {reg2} damage instead of {reg1}!"),
			(else_try),
				(eq, ":attacker_troop", "trp_player"),
				(display_message, "@Because of {his/her} ironflesh skill, {he/she} received {reg2} damage instead of {reg1}!"),
			(try_end),			
		(try_end),
	(else_try),#if not human
		(neg|agent_is_human, ":agent"),
#		(try_begin),#Pike special rules
#			(is_between, reg0, "itm_pikes_start", "itm_pikes_end"),
#			(val_min, ":damage", 100),
#		(try_end),
		(try_begin),#Horses randomly rear if they take damage
			(eq, "$random_rear_on", 1),
			(store_random_in_range, ":random_no", 1, 100),
			(gt, ":damage", 5),
			(le, ":random_no", 10),
			(agent_set_animation, ":agent","anim_horse_rear"),
		(try_end),
	(try_end),
	(store_sub, ":diff_damage", ":damage", ":orig_damage"),
	(store_agent_hit_points, ":hitpoints" , ":agent", 1),
	(val_sub, ":hitpoints", ":diff_damage"),
	(try_begin),#if dodged
		(eq, ":dodged", 1),
		(store_agent_hit_points, ":current_hp", ":agent", 1),#store current health
		(agent_set_hit_points,":agent",100,0),#100% health
		(store_agent_hit_points, ":max_hp", ":agent", 1),#store max health
		(agent_set_hit_points,":agent",":current_hp",1),
		(ge, ":damage", ":max_hp"), #arbitrary output register - damage will be overkill
		(agent_set_slot, ":agent", slot_agent_avoid, ":current_hp"), #inside slot
		(agent_set_no_death_knock_down_only, ":agent", 1), #disable death
	(else_try),	
		(agent_set_hit_points,":agent",":hitpoints",1),
	(try_end),
	])
common_damage_system2 = (ti_on_agent_knocked_down, 0, 0,[],[
	(store_trigger_param_1, ":agent"),
	(agent_get_slot, ":hp", ":agent", slot_agent_avoid),
	(ge, ":hp", 1), #this slot was marked
	(agent_set_slot, ":agent", slot_agent_avoid, 0),
	(agent_set_hit_points, ":agent", ":hp", 1), #restore hp
	(agent_set_no_death_knock_down_only, ":agent", 0),
	])
theoris_decapitation = (ti_on_agent_hit, 0, 0, [],[
   	(store_trigger_param_1, ":agent"),
   	(store_trigger_param_3, ":damage"),
	(agent_is_human, ":agent"),
	(store_agent_hit_points, ":hp", ":agent", 1),
	(ge, ":damage", 30),
	(ge, ":damage", ":hp"),
	(agent_get_position, pos1, ":agent"),
	(get_distance_between_positions, ":distance", pos1, pos0),
	(is_between, ":distance", 160, 176), # *zing*
	(agent_get_item_slot, ":item", ":agent", 4), #head slot
	(try_begin),
	    (ge, ":item", 1),
		(agent_unequip_item, ":agent", ":item"),
	(try_end),
	(agent_equip_item, ":agent", "itm_invisible_head"),
	(particle_system_burst, "psys_game_blood_2", pos1, 125), #Yeah..
	#(set_spawn_position, pos1),
	#(spawn_scene_prop, "spr_physics_head"),
	])
when I use it like this, it works :
Code:
	abilities_help1,
	abilities_help2,
	abilities_help3,
	abilities_start,
	abilities_horse_whistle,
#	abilities_taunt1,
#	abilities_taunt2,
#	abilities_warcry1,
#	abilities_warcry2,
	abilities_first_aid,
#	abilities_battlecry1,
#	abilities_battlecry2,
#	abilities_rage1,
#	abilities_rage2,
#	abilities_rage3,
#	abilities_sprint1,
#	abilities_sprint2,
#	abilities_sprint3,
#	abilities_focus1,
#	abilities_focus2,
#	abilities_focus3,
	common_damage_system1,
	common_damage_system2,
	theoris_decapitation,
but when I add those back, I got these:
Code:
Initializing...
Compiling all global variables...
Error in mission template:
('town_default', 0, -1, 'Default town visit', [(0, 4100, 256, 0, 1, [159, 158, 2
5, 541]), (1, 4100, 256, 0, 1, []), (2, 4100, 256, 0, 1, []), (3, 4100, 256, 0,
1, []), (4, 4100, 256, 0, 1, []), (5, 4100, 256, 0, 1, []), (6, 4100, 256, 0, 1,
 []), (7, 4100, 256, 0, 1, []), (8, 4, 256, 0, 1, []), (9, 4, 256, 0, 1, []), (1
0, 4, 256, 0, 1, []), (11, 4, 256, 0, 1, []), (12, 4, 256, 0, 1, []), (13, 4, 0,
 0, 1, []), (14, 4, 0, 0, 1, []), (15, 4, 0, 0, 1, []), (16, 16, 256, 0, 1, []),
 (17, 16, 256, 0, 1, []), (18, 16, 256, 0, 1, []), (19, 16, 256, 0, 1, []), (20,
 16, 256, 0, 1, []), (21, 16, 256, 0, 1, []), (22, 16, 256, 0, 1, []), (23, 16,
256, 0, 1, []), (24, 16, 256, 0, 1, []), (25, 16, 256, 0, 1, []), (26, 16, 256,
0, 1, []), (27, 16, 256, 0, 1, []), (28, 16, 256, 0, 1, []), (29, 16, 256, 0, 1,
 []), (30, 16, 256, 0, 1, []), (31, 16, 256, 0, 1, [])], [(1, 0, 100000000.0, []
, [(2211, ':cur_scene'), (503, ':cur_scene', 0, 1), 4, (31, '$sneaked_into_town'
, 1), (1, 'script_music_set_situation_with_culture', 16384), 5, (31, '$talk_cont
ext', 14), (1, 'script_music_set_situation_with_culture', 512), 5, (1, 'script_m
usic_set_situation_with_culture', 8192), 3]), (-19.0, 0, 0, [], [(1, 'script_cha
nge_banners_and_chest'), (1, 'script_initialize_tavern_variables')]), (-22.0, 0,
 0, [(2075, 1)], []), (1, 0, 0, [(32, '$g_belligerent_drunk_leaving', 0), (1780,
 0, 0), (1710, 1, '$g_belligerent_drunk_leaving'), (710, ':dist', 0, 1), (214748
3680L, ':dist', 150)], [(1749, '$g_belligerent_drunk_leaving'), (2133, '$g_belli
gerent_drunk_leaving', 0)]), (-21.0, 0, 0, [4, (31, '$g_main_attacker_agent', 0)
, (2075, 1), 3], []), (2, 0, 0, [2147483690L, (31, '$talk_context', 14), (214748
4188L, 'trp_hired_assassin', 12, '$g_encountered_party'), (540, 'trp_belligerent
_drunk', 12, '$g_encountered_party'), (31, '$drunks_dont_pick_fights', 0)], [4,
(31, '$g_start_belligerent_drunk_fight', 0), (2133, '$g_start_belligerent_drunk_
fight', 1), (12, ':cur_agent'), (1718, ':cur_agent_troop', ':cur_agent'), (31, '
:cur_agent_troop', 'trp_belligerent_drunk'), (2133, '$g_belligerent_drunk', ':cu
r_agent'), 3, 5, (31, '$g_start_belligerent_drunk_fight', 1), (1712, '$g_bellige
rent_drunk'), (1702, '$g_belligerent_drunk'), (1700, ':player_agent'), (1710, 0,
 ':player_agent'), (1710, 1, '$g_belligerent_drunk'), (710, ':dist', 0, 1), (728
, ':pos0_z', 0), (728, ':pos1_z', 1), (2121, ':z_difference', ':pos1_z', ':pos0_
z'), 4, (2147483680L, ':z_difference', 0), (2107, ':z_difference', -1), 3, (2122
, ':z_difference_mul_3', ':z_difference', 3), (2105, ':dist', ':z_difference_mul
_3'), (2136, ':random_value', 0, 200), (2120, ':400_plus_random_200', 400, ':ran
dom_value'), (2147483680L, ':dist', ':400_plus_random_200'), (1, 'script_activat
e_tavern_attackers'), (1920, 'trp_belligerent_drunk'), (2133, '$g_start_belliger
ent_drunk_fight', 2), 3]), (2, 0, 0, [2147483690L, (31, '$talk_context', 14), (5
40, 'trp_hired_assassin', 12, '$g_encountered_party')], [4, (31, '$g_start_hired
_assassin_fight', 0), (2133, '$g_start_hired_assassin_fight', 1), (12, ':cur_age
nt'), (1718, ':cur_agent_troop', ':cur_agent'), (31, ':cur_agent_troop', 'trp_hi
red_assassin'), (2133, '$g_hired_assassin', ':cur_agent'), 3, 5, (31, '$g_start_
hired_assassin_fight', 1), (1712, '$g_hired_assassin'), (1702, '$g_hired_assassi
n'), (1700, ':player_agent'), (1710, 0, ':player_agent'), (1710, 1, '$g_hired_as
sassin'), (710, ':dist', 0, 1), (728, ':pos0_z', 0), (728, ':pos1_z', 1), (2121,
 ':z_difference', ':pos1_z', ':pos0_z'), 4, (2147483680L, ':z_difference', 0), (
2107, ':z_difference', -1), 3, (2122, ':z_difference_mul_3', ':z_difference', 3)
, (2105, ':dist', ':z_difference_mul_3'), (2136, ':random_value', 0, 200), (2120
, ':400_plus_random_200', 400, ':random_value'), (2147483680L, ':dist', ':400_pl
us_random_200'), (1, 'script_activate_tavern_attackers'), (2133, '$g_start_hired
_assassin_fight', 2), 3]), (3, 0, 100000000.0, [2147483690L, (31, '$talk_context
', 14), (32, '$g_main_attacker_agent', 0), (3221227174L, '$g_main_attacker_agent
'), (1703, '$g_main_attacker_agent')], [1935, (12, ':agent'), (1702, ':agent'),
(1710, 4, ':agent'), (1730, ':agent', 4), 3, (521, ':tavernkeeper', '$g_encounte
red_party', 20), (1920, ':tavernkeeper')]), (3, 0, 100000000.0, [2147483690L, (3
1, '$talk_context', 14), (32, '$g_main_attacker_agent', 0), 1006], [(2060, 'mnu_
lost_tavern_duel'), (1907, 0)]), (1, 0, 0, [2147483690L, (31, '$talk_context', 1
4), (32, '$g_main_attacker_agent', 0), (1700, ':player_agent'), (1702, ':player_
agent'), (1726, ':wielded_item', ':player_agent', 0), (33, ':wielded_item', 'itm
_darts', 'itm_torch'), (2147483679L, ':wielded_item', 'itm_javelin_melee'), (214
7483679L, ':wielded_item', 'itm_throwing_spear_melee'), (2147483679L, ':wielded_
item', 'itm_jarid_melee'), (2147483679L, ':wielded_item', 'itm_light_throwing_ax
es_melee'), (2147483679L, ':wielded_item', 'itm_throwing_axes_melee'), (21474836
79L, ':wielded_item', 'itm_heavy_throwing_axes_melee')], [(521, ':tavernkeeper',
 '$g_encountered_party', 20), (1920, ':tavernkeeper')]), (1, 0, 0, [(32, '$g_mai
n_attacker_agent', 0)], [(1726, ':wielded_item', '$g_main_attacker_agent', 0), (
2111, '$g_attacker_drawn_weapon', ':wielded_item'), (1, 'script_neutral_behavior
_in_fight')]), (0, 0, 100000000.0, [], [(12, ':agent_no'), (1704, ':agent_no'),
(1718, ':troop_no', ':agent_no'), (1507, ':troop_no'), (1515, ':troop_xp', ':tro
op_no'), (500, ':troop_no', 329, ':troop_xp'), 3]), (1, 0, 0, [], [(1700, ':play
er_agent'), (12, ':agent_no'), (1704, ':agent_no'), (1718, ':troop_no', ':agent_
no'), (1507, ':troop_no'), (1515, ':troop_xp', ':troop_no'), (520, ':troop_extra
_xp_limit', ':troop_no', 329), (32, ':troop_xp', ':troop_extra_xp_limit'), (2121
, ':xp_dif', ':troop_xp', ':troop_extra_xp_limit'), (2172, ':troop_int', ':troop
_no', 2), (2122, ':extra_xp', ':troop_int', 3), (2107, ':extra_xp', ':xp_dif'),
(2108, ':extra_xp', 100), (1107, 0), (1062, ':extra_xp', ':troop_no'), (1107, 1)
, 4, (31, ':agent_no', ':player_agent'), (32, ':extra_xp', 0), (31, '$g_report_e
xtra_xp_and_wpt', 1), (2133, 72057594037927937L, ':extra_xp'), (1106, '@You got
{reg1} extra experience because of your intelligence.'), 3, (1515, ':troop_final
_xp', ':troop_no'), (500, ':troop_no', 329, ':troop_final_xp'), (2121, ':wpn_poi
nts_add', ':troop_final_xp', ':troop_extra_xp_limit'), (2170, ':skill_level', 27
, ':troop_no'), (2105, ':skill_level', 10), (2107, ':wpn_points_add', ':skill_le
vel'), (2108, ':wpn_points_add', 20), (2108, ':wpn_points_add', 100), (32, ':wpn
_points_add', 0), (1525, ':troop_no', ':wpn_points_add'), 4, (31, ':agent_no', '
:player_agent'), (31, '$g_report_extra_xp_and_wpt', 1), (2133, 72057594037927937
L, ':wpn_points_add'), (2121, 72057594037927938L, 72057594037927937L, 1), (1106,
 '@You got {reg1} weapon {reg2?points:point}.'), 3, 3]), (1, 0, 0, [], [(1700, '
:player_agent'), (12, ':agent_no'), (2147483679L, ':agent_no', ':player_agent'),
 (1702, ':agent_no'), (1704, ':agent_no'), (1727, ':agent_ammo', ':agent_no'), (
545, ':agent_no', 26, 0), (2147483680L, ':agent_ammo', 1), (1728, ':agent_no'),
(505, ':agent_no', 26, 1), 3]), (0, 0, 0, [], [4, (70, 29), (71, 30), (1700, ':p
layer_agent'), (1728, ':player_agent'), 5, (70, 56), (71, 30), (12, ':agent_no')
, (1728, ':agent_no'), 3]), (-19.0, 0, 0, [], [(1, 'script_change_rain_or_snow')
, (541, 'p_main_party', 107, 1), (1, 'script_cf_weather_affect_proficiency', 720
57594037927936L, 72057594037927937L)]), (0, 0, 100000000.0, [(2147483679L, '$g_p
layer_troop', 'trp_player')], [(2120, ':wpt_end', 6, 1), (6, ':weapon_type', 0,
':wpt_end'), (2176, ':weapon_proficiency', '$g_player_troop', ':weapon_type'), (
507, ':weapon_type', 68, ':weapon_proficiency'), 3]), (1, 0, 0, [(2147483679L, '
$g_player_troop', 'trp_player')], [(2322, 1, '$g_player_troop'), (2120, ':wpt_en
d', 6, 1), (6, ':weapon_type', 0, ':wpt_end'), (2176, ':cur_weapon_proficiency',
 '$g_player_troop', ':weapon_type'), (527, ':weapon_proficiency', ':weapon_type'
, 68), (32, ':cur_weapon_proficiency', ':weapon_proficiency'), (2121, ':amout',
':cur_weapon_proficiency', ':weapon_proficiency'), (2133, 72057594037927938L, ':
amout'), (2106, ':amout', 1), (2133, 72057594037927939L, ':amout'), (2133, 72057
594037927937L, ':cur_weapon_proficiency'), (2121, ':out_string', ':weapon_type',
 0), (2105, ':out_string', 'str_one_handed_weapon'), (2320, 2, ':out_string'), (
1106, "@{reg3?{s1}'s proficiency in {s2}has improved by {reg2} to {reg1}.:{s1}'s
 {s2}proficiency have reach to {reg1}.}", 15658496), (507, ':weapon_type', 68, '
:cur_weapon_proficiency'), 3]), (0.1, 0, 0, [], [(1700, ':player_agent'), (12, '
:agent_no'), (1704, ':agent_no'), (1702, ':agent_no'), (1718, ':troop_no', ':age
nt_no'), (1, 'script_agent_troop_get_banner_mesh', ':agent_no', ':troop_no'), (2
133, ':cur_banner', 72057594037927936L), (2120, ':arms_meshes_end', 'mesh_arms_f
21', 1), 4, (33, ':cur_banner', 'mesh_arms_a01', ':arms_meshes_end'), (2106, ':c
ur_banner', 'mesh_arms_a01'), (2105, ':cur_banner', 'spr_banner_a_back'), 5, (21
33, ':cur_banner', -1), 3, 4, (1716, ':agent_party', ':agent_no'), (2147483680L,
 ':agent_party', -1), 4, (31, ':troop_no', 'trp_player'), (2147483679L, ':agent_
no', ':player_agent'), 5, (2133, ':cur_banner', -1), 3, 3, 4, (31, ':agent_no',
':player_agent'), 4, (31, '$g_player_carry_banner', 0), (2133, ':cur_banner', -1
), 3, 5, (31, '$g_others_carry_banner', 0), (2133, ':cur_banner', -1), 5, (31, '
$g_others_carry_banner', 1), 4, (2147485155L, ':troop_no'), (2133, ':cur_banner'
, -1), 3, 5, (31, '$g_others_carry_banner', 2), 4, (2147485354L, ':agent_no'), (
2133, ':cur_banner', -1), 3, 3, (32, ':cur_banner', -1), (1756, ':attached_banne
r', ':agent_no'), 4, (2147483680L, ':attached_banner', -1), (1810, ':instance_no
', ':cur_banner'), (1974, ':cur_banner'), (505, ':agent_no', 28, ':cur_banner'),
 (505, ':agent_no', 29, ':instance_no'), (1811, ':cur_banner_prop_instance', ':c
ur_banner', ':instance_no'), (1757, ':agent_no', ':cur_banner_prop_instance'), (
1758, ':agent_no', 0), (1759, ':agent_no', 130), 5, (525, ':cur_banner', ':agent
_no', 28), (525, ':instance_no', ':agent_no', 29), (1811, ':cur_banner_prop_inst
ance', ':cur_banner', ':instance_no'), (1757, ':agent_no', ':cur_banner_prop_ins
tance'), (1758, ':agent_no', 0), (1759, ':agent_no', 130), 3, 3]), (-26.0, 0, 0,
 [], [(2071, ':agent_no'), (1756, ':attached_banner', ':agent_no'), 4, (32, ':at
tached_banner', -1), (525, ':cur_banner', ':agent_no', 28), (525, ':instance_no'
, ':agent_no', 29), (1811, ':cur_banner_prop_instance', ':cur_banner', ':instanc
e_no'), (1850, 0, ':cur_banner_prop_instance'), (722, 0, -2000), (1855, ':cur_ba
nner_prop_instance', 0), (1757, ':agent_no', -1), 3]), (-26.0, 0, 0, [], [(2071,
 ':dead_agent_no'), (2072, ':killer_agent_no'), (1700, ':player_agent'), (31, ':
killer_agent_no', ':player_agent'), (1704, ':dead_agent_no'), (1718, ':wounded_t
roop', ':dead_agent_no'), (1507, ':wounded_troop'), (33, ':wounded_troop', 'trp_
kingdom_1_lord', 'trp_knight_1_1_wife'), 4, (1706, ':dead_agent_no'), (1, 'scrip
t_change_player_relation_with_troop', ':wounded_troop', -5), 5, (1, 'script_chan
ge_player_relation_with_troop', ':wounded_troop', -2), 3]), (1, 0, 0, [], [(31,
'$g_dplmc_horse_speed', 0), (12, ':agent_no'), (1702, ':agent_no'), (1704, ':age
nt_no'), (1714, ':horse_agent', ':agent_no'), 4, (30, ':horse_agent', 0), (1720,
 ':horse_hp', ':horse_agent'), (2121, ':lost_hp', 100, ':horse_hp'), 4, (2147483
680L, ':lost_hp', 15), (2108, ':lost_hp', 2), (2120, ':speed_factor', 100, ':los
t_hp'), 5, (2107, ':lost_hp', 2), (2108, ':lost_hp', 3), (2121, ':speed_factor',
 115, ':lost_hp'), 3, (1718, ':agent_troop', ':agent_no'), (2170, ':skl_level',
24, ':agent_troop'), (2122, ':speed_multi', ':skl_level', 2), (2105, ':speed_mul
ti', 100), (2107, ':speed_factor', ':speed_multi'), (2108, ':speed_factor', 100)
, (1734, ':agent_no', ':speed_factor'), 3, 3]), (0, 0, 0, [], [(1700, ':player_a
gent'), (1710, 2, ':player_agent'), 4, (1726, ':shield_item', ':player_agent', 1
), (31, ':shield_item', 'itm_pavise'), (71, 34), (721, 2, 50), (1970, 2), (1974,
 'spr_pavise'), (1774, ':player_agent', 'itm_pavise'), 3]), (0, 0, 2, [(73, 7)],
 [(1700, ':player'), (1726, ':shield', ':player', 1), (33, ':shield', 'itm_fimp_
lyre', 'itm_fimp_instruments_end'), (2133, ':last', 'track_coronation'), (2105,
':last', 1), (2136, ':music', 'track_bogus', ':last'), (1750, ':player', ':music
')]), (0, 0, 3, [(72, 7), (73, 6), 2147484654L], [(1, 'script_shield_bash')]), (
0, 0, 3, [], [(12, ':agent1'), (32, ':agent1', 0), (1704, ':agent1'), (1712, ':a
gent1'), (1702, ':agent1'), (1714, ':horse1', ':agent1'), (31, ':horse1', -1), (
2136, ':chance', 0, 100), (32, ':chance', 70), (12, ':agent2'), (2147483679L, ':
agent2', ':agent1'), (32, ':agent2', 0), (1770, ':team1', ':agent1'), (1770, ':t
eam2', ':agent2'), (2147483679L, ':team1', ':team2'), (1704, ':agent2'), (1712,
':agent2'), (1702, ':agent2'), (1714, ':horse2', ':agent2'), (31, ':horse2', -1)
, (1710, 63, ':agent1'), (1710, 62, ':agent2'), (2147484362L, 63, 62), (710, ':d
ist', 63, 62), (2147483678L, ':dist', 50), (1750, ':agent1', 'snd_wooden_hit_low
_armor_high_damage'), (721, 62, -25), (1711, ':agent2', 62), (1740, ':agent2', '
anim_shield_strike'), (2136, ':rand', 0, 3), (1720, ':hp', ':agent2', 1), (2106,
 ':hp', ':rand'), (1718, ':troop1', ':agent1'), (1718, ':troop2', ':agent2'), (2
172, ':str', ':troop1', 0), (2170, ':ironflesh', 36, ':troop2'), (2106, ':hp', '
:str'), (2105, ':hp', ':ironflesh'), (1721, ':agent2', ':hp', 1), 3, 3]), (1, 0,
 0, [], [(1700, ':player_agent'), (12, ':agent'), (1712, ':agent'), (1702, ':age
nt'), (1704, ':agent'), (2147485347L, ':agent'), (1718, ':troop', ':agent'), 4,
(31, ':agent', ':player_agent'), (2133, ':regen_rate', '$player_regen_rate'), 5,
 (1507, ':troop'), (31, '$hero_health_regen', 1), 4, (1073741857, ':troop', 'trp
_kingdom_1_lord', 'trp_knight_1_1'), (33, ':troop', 'trp_kingdom_1_pretender', '
trp_knight_1_1_wife'), (2133, ':regen_rate', 5), 5, (33, ':troop', 'trp_knight_1
_1', 'trp_kingdom_1_pretender'), (2133, ':regen_rate', 3), 5, (2133, ':regen_rat
e', 2), 3, 5, (31, '$regular_health_regen', 1), (2133, ':regen_rate', 1), (2108,
 ':regen_rate', 2), 3, (32, ':regen_rate', 0), (1720, ':agent_health', ':agent',
 0), (2105, ':agent_health', ':regen_rate'), (1721, ':agent', ':agent_health', 0
), 3]), (0, 0, 0, [(71, '$key_abilities_help'), (31, '$abilities_help', 1)], [(1
122, '@Combat abilities:^^J : RAGE, +5 Power strike, +5 Power throw, +5 Agility,
 lasts for 2xStrength sec, requires 14 Strength ^^K : FOCUS, +10xIntelligence to
 weapon proficiencies, +5 Agility, lasts for 2xIntelligence sec, requires 14 Int
elligence ^^O : SPRINT, +7 Athletics, +15 Agility, lasts for 2xAgility seconds,
requires 14 Agility ^^T : WHISTLE FOR HORSE, call a horse to come to you, more t
han one with higher Charisma, requires 14 Charisma ^^Y : FIRST AID, treat your i
mmediate wounds to recover 3xFirstAid+Intelligence hitpoints, requires 14 Intell
igence ^^U : BATTLECRY, rally your wounded troops to fight and recover 3xLeaders
hip+Charisma percent of
 
Look at other triggers that mods have added for examples.

When you name a single trigger, it must be followed by a comma:

trigger_name = (0, 0, 0 ,[], []),

When you name a list of triggers, they go in square brackets and those are not followed by a comma:

trigger_list_name = [
  (0, 0, 0 ,[], []),
  (0, 0, 0 ,[], []),
]



Similarly, when you include these in a mission template, you include named triggers like:

trigger_name,

But you include a list of triggers at the end of the template like:

    ],
    trigger_list_name
  ),
 
Look at other triggers that mods have added for examples
Code:
custom_commander_init_hero_begin_xp = (
  0, 0, ti_once, [],
   [
    (try_for_agents, ":agent_no"),
      (agent_is_human, ":agent_no"),
      (agent_get_troop_id, ":troop_no", ":agent_no"),
      (troop_is_hero, ":troop_no"),
      (troop_get_xp, ":troop_xp", ":troop_no"),
      (troop_set_slot, ":troop_no", slot_troop_extra_xp_limit, ":troop_xp"),
    (try_end),
   ])
mine ends and begins just like that


Code:
custom_commander_commom_triggers = [
    #custom_commander_camera,
    custom_commander_init_hero_begin_xp,
...
	deploy_pavise,
#################################################################################################################
# Floris Improved Mod Pack (FIMP) 0.2 begin ->																	#
#################################################################################################################
	common_play_instrument,
	common_shield_bash1,
	common_shield_bash2,
	#v0.3 begin
	common_regeneration,
	abilities_help1,
	abilities_help2,
	abilities_help3,
	abilities_start,
	abilities_horse_whistle,
	abilities_taunt1,
	abilities_taunt2,
	abilities_warcry1,
	abilities_warcry2,
	abilities_first_aid,
	abilities_battlecry1,
	abilities_battlecry2,
	abilities_rage1,
	abilities_rage2,
	abilities_rage3,
	abilities_sprint1,
	abilities_sprint2,
	abilities_sprint3,
	abilities_focus1,
	abilities_focus2,
	abilities_focus3,
	common_damage_system1,
	common_damage_system2,
	theoris_decapitation,
	#v0.3 end
#################################################################################################################
# Floris Improved Mod Pack (FIMP) 0.2 end <-																	#
#################################################################################################################
  ]
 
1. Is it possible to do that, change how much people come in at each side of a battle. If an army of 100 faces an army of 1000 the army of 100 spawns with 10people and the other army with 90(this is an example) so when a smaller force attacks a castle can they not hae the same amount of troops on the field.

2. Also could you change the frequency of when a side gets reinforcements e.g. normally when the force has nearly depleted all their troops but when doing seiges you lose all your troops and then you get reinforcements the enemy are all back in position.

3. Also how do you chang ethe morale lose when losing battles of all kinds.
 
I have a artillery script which for some reason doesn't kill anymore? Here is the script which should try to kill the agents.

Code:
	    (eq, ":event_type", multiplayer_event_artillery_strike),
		(store_script_param, ":agent", 3),
                #(display_message, "@damage!"),
		#(player_get_agent_id, ":agent_no", ":player_no"),



		(store_random_in_range, ":damage", 50, 100),
		#e.g (agent_get_wielded_item, ":agent_no", 0),
		#(item_get_slot, ":damage_modifier", ":item", slot_item_damage_modifier),
		(store_agent_hit_points, ":hitpoints", ":agent", 1),
                (gt,":hitpoints", 0),
		(val_sub, ":hitpoints", ":damage"),
		(agent_set_hit_points, ":agent", ":hitpoints", 1),
		
		#Kill him if possible.
		(try_begin),
		    (le, ":hitpoints", 0),
			(agent_deliver_damage_to_agent, ":agent", ":agent"), # me, enemy
		(try_end), 

Edit: Here too:


Code:
			#Check if the artillery has hit an agent.
			(try_for_range, ":enemy_agent", 0, ":agent_end_cond"),
			    (neq, ":agent_end_cond", 0),
			    (agent_is_active, ":enemy_agent"),
				(agent_is_alive, ":enemy_agent"),
				
				#Get the distance between the shell and the possible enemy agent.
				(agent_get_position, pos5, ":enemy_agent"),
				(get_distance_between_positions, ":dist", pos1, pos5),
				
				#Damage agent if distance is sufficient and end the loops.
				(le, ":dist", 800),
				#(call_script, "script_shake_camera", 50, 3, 5), # no. of shakes, max rotate x, max rotate z
				(multiplayer_send_int_to_server, autofire_event_damage_enemy, ":enemy_agent"),
                        (try_end),
                        (try_end),
                    (try_end),
                    (try_begin),
		     (le, ":distance2", 200),
		     (particle_system_burst, "psys_village_fire_big", pos2, 40),
                        (try_begin),
			#Check if the artillery has hit an agent.
			(try_for_range, ":enemy_agent", 0, ":agent_end_cond"),
			    (neq, ":agent_end_cond", 0),
			    (agent_is_active, ":enemy_agent"),
				(agent_is_alive, ":enemy_agent"),
				
				#Get the distance between the shell and the possible enemy agent.
				(agent_get_position, pos6, ":enemy_agent"),
				(get_distance_between_positions, ":dist2", pos2, pos6),
				
				#Damage agent if distance is sufficient
				(le, ":dist2", 800), 
				(multiplayer_send_int_to_server, autofire_event_damage_enemy, ":enemy_agent"),

 
I'm trying to change the character creation process so that if the player chooses an American Indian father, he/she will get a different set of choices on subsequent screens.  I've used every combination of tries I can think of and the whole menu is an error.  Here is a sample of my latest code with my changes shown in green.  The global variable "$indian" is set in the menu where you select your father.
"start_character_2",0,
    "{s10}^^ You started to learn about the world almost as soon as you could walk and talk. You spent your early life as...",
    "none",
    [],
    [
          (try_begin),
              (eq,"$indian",1),
              ("page",[],
            "A member of a young warrior society.",
            [
              (assign,"$background_answer_2", cb2_page),
            (assign, reg3, "$character_gender"),
              (str_store_string,s11,"@As a {reg3?girl:boy} growing out of childhood, you were sent to live at the warrior society training lodge.\
            There, your first lessons were in humility, as you waited upon the older warriors.\
            But from their games, their gossip, even the tales of great deeds in war and the hunt, you quickly began to learn about the adult world of conflict\
            and competition. You also learned from the rough games of the other children, who battered at each other with sticks in imitation of their elders' tomahaks and spears."),
            (jump_to_menu,"mnu_start_character_3"),
        ]),
          (else_try),

              ("page",[],
              "A page at a nobleman's estate.",[
              (assign,"$background_answer_2", cb2_page),
              (assign, reg3, "$character_gender"),
              (str_store_string,s11,"@As a {reg3?girl:boy} growing out of childhood,\
            you were sent to live at the estate of the local lord.\
            There, your first lessons were in humility, as you waited upon the lords and ladies of the household.\
            But from their chess games, their gossip, even the poetry of great deeds and courtly love, you quickly began to learn about the adult world of conflict\
            and competition. You also learned from the rough games of the other children, who battered at each other with sticks in imitation of their elders' swords."),
(jump_to_menu,"mnu_start_character_3"),
      (end_try),        ]),

This is not the complete menu, but the rest of it is okay.  If I comment out my changes, the menu complies normally.
Is it possible to do this?
 
mr.master said:
I have a artillery script which for some reason doesn't kill anymore? Here is the script which should try to kill the agents.

Code:
	    (eq, ":event_type", multiplayer_event_artillery_strike),
		(store_script_param, ":agent", 3),
                #(display_message, "@damage!"),
		#(player_get_agent_id, ":agent_no", ":player_no"),



		(store_random_in_range, ":damage", 50, 100),
		#e.g (agent_get_wielded_item, ":agent_no", 0),
		#(item_get_slot, ":damage_modifier", ":item", slot_item_damage_modifier),
		(store_agent_hit_points, ":hitpoints", ":agent", 1),
                (gt,":hitpoints", 0),
		(val_sub, ":hitpoints", ":damage"),
		(agent_set_hit_points, ":agent", ":hitpoints", 1),
		
		#Kill him if possible.
		(try_begin),
		    (le, ":hitpoints", 0),
			(agent_deliver_damage_to_agent, ":agent", ":agent"), # me, enemy
		(try_end), 

Edit: Here too:


Code:
			#Check if the artillery has hit an agent.
			(try_for_range, ":enemy_agent", 0, ":agent_end_cond"),
			    (neq, ":agent_end_cond", 0),
			    (agent_is_active, ":enemy_agent"),
				(agent_is_alive, ":enemy_agent"),
				
				#Get the distance between the shell and the possible enemy agent.
				(agent_get_position, pos5, ":enemy_agent"),
				(get_distance_between_positions, ":dist", pos1, pos5),
				
				#Damage agent if distance is sufficient and end the loops.
				(le, ":dist", 800),
				#(call_script, "script_shake_camera", 50, 3, 5), # no. of shakes, max rotate x, max rotate z
				(multiplayer_send_int_to_server, autofire_event_damage_enemy, ":enemy_agent"),
                        (try_end),
                        (try_end),
                    (try_end),
                    (try_begin),
		     (le, ":distance2", 200),
		     (particle_system_burst, "psys_village_fire_big", pos2, 40),
                        (try_begin),
			#Check if the artillery has hit an agent.
			(try_for_range, ":enemy_agent", 0, ":agent_end_cond"),
			    (neq, ":agent_end_cond", 0),
			    (agent_is_active, ":enemy_agent"),
				(agent_is_alive, ":enemy_agent"),
				
				#Get the distance between the shell and the possible enemy agent.
				(agent_get_position, pos6, ":enemy_agent"),
				(get_distance_between_positions, ":dist2", pos2, pos6),
				
				#Damage agent if distance is sufficient
				(le, ":dist2", 800), 
				(multiplayer_send_int_to_server, autofire_event_damage_enemy, ":enemy_agent"),
Did you remove this autofire_event_damage_enemy from the mod. It is vader's old code which was still used partially by the artillery and grenades. Otherwise you will need to create your own damage script.
 
Nope D: it's still there.


Code:
		    (eq, ":event_type", autofire_event_damage_enemy),
			(store_script_param, ":enemy_agent", 3),
			(ge, ":enemy_agent", 0),
			
			#Get the necessary data.
			(player_get_agent_id, ":agent_no", ":player_no"),
			(ge, ":agent_no", 0),
			(agent_get_wielded_item, ":wielded_item", ":agent_no", 0),
			(store_agent_hit_points, ":hit_points", ":enemy_agent", 1),
			(item_get_slot, ":damage_modifier_low", ":wielded_item", autofire_slot_damage_modifier_low),
			(item_get_slot, ":damage_modifier_high", ":wielded_item", autofire_slot_damage_modifier_high),
			(store_random_in_range, ":rand", ":damage_modifier_low", ":damage_modifier_high"),
			
			#Play firing sound at shooter.
			#(agent_play_sound, ":agent_no", "snd_pistol_shot"),
			
			#Damage the agent.
			(store_agent_hit_points, ":hit_points", ":enemy_agent", 1),
			(val_add, ":rand", ":damage_modifier_low"),
			(val_sub, ":hit_points", ":rand"),
			(val_max, ":hit_points", 0),
			(agent_set_hit_points, ":enemy_agent", ":hit_points", 1),
			
			#Check if we killed the agent.
			(try_begin),
			    (eq, ":hit_points", 0),
				(agent_deliver_damage_to_agent, ":agent_no", ":enemy_agent"),
			(try_end),
		(else_try),
		#Vader end

Edit: IT seems that it doesn't damage anyone. Thus, they wont die.
 
gaston said:
I'm trying to change the character creation process so that if the player chooses an American Indian father, he/she will get a different set of choices on subsequent screens
The [ ] brackets contain their own scope - you can't put try_begins in the condition and the matching try_end in the consequence. Menu options will appear if the condition block evaluates as true, so all you would need in there is (eq, "$indian", 1). But, instead of using a global for no reason, just jump to a different menu after choosing an American Indian father instead of start_character_2.
mr.master said:
Nope D: it's still there.
Your own code uses autofire_event_damage_enemy instead of multiplayer_event_artillery_strike (and your event makes the enemy kill themselves). You also have two try_ends in the first loop, so I suspect you removed some code (loop ender, etc).
 
Somebody said:
gaston said:
I'm trying to change the character creation process so that if the player chooses an American Indian father, he/she will get a different set of choices on subsequent screens
The [ ] brackets contain their own scope - you can't put try_begins in the condition and the matching try_end in the consequence. Menu options will appear if the condition block evaluates as true, so all you would need in there is (eq, "$indian", 1). But, instead of using a global for no reason, just jump to a different menu after choosing an American Indian father instead of start_character_2.
Thank you.  I suspected it was something like that.  Jump to another menu is the way to go.  Thanks very much.
 
Status
Not open for further replies.
Back
Top Bottom