An arrow won`t break a horse leg. Or human for that matter. Also good luck trying to hit the joints of a galloping horse.....
Err, no? Horses are pretty resistant to arrow and gunfire. They are flock animals, if charging along other men and horses, they will not stop unless seriously wounded (think broken legs). And arrows are too lightweigh too cause a major injury on a horse, no matter their number. Sure, the animal will eventually collapse due to a blood loss, but not before charge reaches it`s target. That is why horse archers were so effective - they could pepper the enemies from a distance and than retreat untill horses of their opponents fell on the ground.Ludial 说:
(
"lead_charge",mtf_battle_mode,charge,
"You lead your men to battle.",
[
(1,mtef_defenders|mtef_team_0,0,aif_start_alarmed,12,[]),
(0,mtef_defenders|mtef_team_0,0,aif_start_alarmed,0,[]),
(4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,12,[]),
(4,mtef_attackers|mtef_team_1,0,aif_start_alarmed,0,[]),
],
[
######Tactical triggers below##########
(ti_before_mission_start, 0, 0, [],
[ (assign,"$formation",0),
(assign,"$infantryformationtype",0),
(assign,"$archerformationtype",0),
(assign,"$cavalryformationtype",0),
]),
(0, 0, 0,
[(key_clicked, key_2),
(assign,"$formation",grc_infantry),
], []),
(0, 0, 0,
[(key_clicked, key_3),
(assign,"$formation",grc_archers),
], []),
(0, 0, 0,
[(key_clicked, key_4),
(assign,"$formation",grc_cavalry),
], []),
(0, 0, 0,
[(key_clicked, key_j),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",1),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",1),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",1),
(end_try),
(display_message,"@Forming_ranks."),
], []),
(0, 0, 0,
[(key_clicked, key_p),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_stagger"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",3),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",3),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",3),
(end_try),
(display_message,"@Forming_a_line."),
], []),
(0, 0, 0,
[(key_clicked, key_k),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_wedge"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",2),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",2),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",2),
(end_try),
(display_message,"@Forming_a_wedge."),
], []),
(0, 0, 0,
[(key_clicked, key_u),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_formation_end"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",0),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",0),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",0),
(end_try),
(display_message,"@Formation_disassembled."),
], []),
(5.0, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(assign,":enemy",-1),
(assign,":infantry",0),
(assign,":cavalry",0),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",4),
(lt,":cavalry",4),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(5.0, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(neq, "$battle_won", 1),
(assign,":infantry",0),
(assign,":cavalry",0),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(agent_get_team ,":team", ":agent"),
(eq,":team",reg0),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",4),
(lt,":cavalry",4),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_infantry),
(try_begin),
(eq,"$infantryformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$infantryformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$infantryformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_archers),
(try_begin),
(eq,"$archerformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$archerformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$archerformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
# (0.2, 0, 0,
# [(get_player_agent_no,":player"),
# (agent_get_team ,reg0, ":player"),
# (assign,reg1,grc_cavalry),
# (try_begin),
# (eq,"$cavalryformationtype",1),
# (call_script,"script_cf_formation"),
# (else_try),
# (eq,"$cavalryformationtype",2),
# (call_script,"script_cf_formation_wedge"),
# (else_try),
# (eq,"$cavalryformationtype",3),
# (call_script,"script_cf_formation_stagger"),
# (else_try),
# (call_script,"script_formation_end"),
# (end_try),], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
# (0.2, 0, 0,
# [(try_for_agents,":agent"),
# (agent_is_human,":agent"),
# (neg|agent_is_ally,":agent"),
# (assign,":enemy",":agent"),
# (end_try),
# (gt,":enemy",-1),
# (agent_get_team ,reg0, ":enemy"),
# (store_normalized_team_count,":num", reg0),
# (gt,":num",5),
# (assign,reg1,grc_cavalry),
# (call_script,"script_cf_formation_wedge"),
# ], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
# (0.2, 0, 0,
# [(get_player_agent_no,":player"),
# (agent_get_team ,reg0, ":player"),
# (val_add,reg0,2),
# (store_normalized_team_count,":num", reg0),
# (gt,":num",5),
# (assign,reg1,grc_cavalry),
# (call_script,"script_cf_formation_wedge"),
# ], []),
##########Tactical triggers above########
# Checking center upgrades
(12,
[(try_for_range, ":center_no", centers_begin, centers_end),
(party_get_slot, ":cur_improvement", ":center_no", slot_center_current_improvement),
(gt, ":cur_improvement", 0),
(party_get_slot, ":cur_improvement_end_time", ":center_no", slot_center_improvement_end_hour),
(store_current_hours, ":cur_hours"),
(ge, ":cur_hours", ":cur_improvement_end_time"),
(party_set_slot, ":center_no", ":cur_improvement", 1),
(party_set_slot, ":center_no", slot_center_current_improvement, 0),
(call_script, "script_get_improvement_details", ":cur_improvement"),
(try_begin),
(party_slot_eq, ":center_no", slot_town_lord, "trp_player"),
(str_store_party_name, s4, ":center_no"),
(display_log_message, "@Building of {s0} in {s4} has been completed."),
(try_end),
(try_begin),
(is_between, ":center_no", villages_begin, villages_end),
(eq, ":cur_improvement", slot_center_has_fish_pond),
(call_script, "script_change_center_prosperity", ":center_no", 5),
(try_end),
(try_end),
]),
#script_get_center_ideal_prosperity
# INPUT: arg1 = center_no
# OUTPUT: reg0 = ideal_prosperity
("get_center_ideal_prosperity",
[(store_script_param, ":center_no", 1),
(assign, ":ideal", 40),
(try_begin),
(is_between, ":center_no", villages_begin, villages_end),
(try_begin),
(party_slot_eq, ":center_no", slot_center_has_fish_pond, 1),
(val_add, ":ideal", 5),
(try_end),
(party_get_slot, ":land_quality", ":center_no", slot_village_land_quality),
(val_mul, ":land_quality", 3),
(val_add, ":ideal", ":land_quality"),
(party_get_slot, ":num_cattle", ":center_no", slot_village_number_of_cattle),
(val_div, ":num_cattle", 20),
(val_add, ":ideal", ":num_cattle"),
(else_try),
(try_for_range, ":village_no", villages_begin, villages_end),
(party_slot_eq, ":village_no", slot_village_bound_center, ":center_no"),
(party_get_slot, ":prosperity", ":village_no", slot_town_prosperity),
(val_div, ":prosperity", 20),
(val_add, ":ideal", ":prosperity"),
(try_end),
(try_end),
(assign, reg0, ":ideal"),
]),
#Converging center prosperity to ideal prosperity once in every 15 days
(24*15,
[(try_for_range, ":center_no", centers_begin, centers_end),
(call_script, "script_get_center_ideal_prosperity", ":center_no"),
(assign, ":ideal_prosperity", reg0),
(party_get_slot, ":prosperity", ":center_no", slot_town_prosperity),
(try_begin),
(gt, ":prosperity", ":ideal_prosperity"),
(call_script, "script_change_center_prosperity", ":center_no", -1),
(else_try),
(lt, ":prosperity", ":ideal_prosperity"),
(call_script, "script_change_center_prosperity", ":center_no", 1),
(try_end),
(try_end),
]),
I think, you are wrong. Mill (fish_pond in the module files) increases increases "ideal village prosperity" by 5%. AFAIK village prosperity tends to shift towards this "ideal prosperity", all other things being equal. So increasing ideal prosperity by 5% makes it easier for the village to reach high prosperity level ALL THE TIME, not just once.Dragon13 说:
######Tactical triggers below##########
(ti_before_mission_start, 0, 0, [],
[ (assign,"$formation",0),
(assign,"$infantryformationtype",0),
(assign,"$archerformationtype",0),
(assign,"$cavalryformationtype",0),
]),
(0, 0, 0,
[(key_clicked, key_2),
(assign,"$formation",grc_infantry),
], []),
(0, 0, 0,
[(key_clicked, key_3),
(assign,"$formation",grc_archers),
], []),
(0, 0, 0,
[(key_clicked, key_4),
(assign,"$formation",grc_cavalry),
], []),
(0, 0, 0,
[(key_clicked, key_j),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",1),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",1),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",1),
(end_try),
(display_message,"@Forming_ranks."),
], []),
(0, 0, 0,
[(key_clicked, key_p),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_stagger"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",3),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",3),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",3),
(end_try),
(display_message,"@Forming_a_line."),
], []),
(0, 0, 0,
[(key_clicked, key_k),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_cf_formation_wedge"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",2),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",2),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",2),
(end_try),
(display_message,"@Forming_a_wedge."),
], []),
(0, 0, 0,
[(key_clicked, key_u),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,"$formation"),
(call_script,"script_formation_end"),
(call_script,"script_cf_formation"),
(try_begin),
(eq,"$formation",grc_infantry),
(assign,"$infantryformationtype",0),
(else_try),
(eq,"$formation",grc_archers),
(assign,"$archerformationtype",0),
(else_try),
(eq,"$formation",grc_cavalry),
(assign,"$cavalryformationtype",0),
(end_try),
(display_message,"@Formation_disassembled."),
], []),
(5.0, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(assign,":enemy",-1),
(assign,":infantry",0),
(assign,":cavalry",0),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",2),
(lt,":cavalry",10),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(5.0, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(assign,reg1,grc_cavalry),
(call_script,"script_formation_end"),
(assign,reg1,grc_infantry),
(call_script,"script_formation_end"),
(assign,reg1,grc_archers),
(call_script,"script_formation_end"),], []),
(5.0, 0, 0,
[(neq, "$battle_won", 1),
(assign,":infantry",0),
(assign,":cavalry",0),
(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(try_for_agents,":agent"),
(agent_is_human,":agent"),
(agent_is_alive,":agent"),
(agent_get_team ,":team", ":agent"),
(eq,":team",reg0),
(agent_get_class ,":class", ":agent"),
(try_begin),
(eq,":class",grc_cavalry),
(val_add,":cavalry",1),
(else_try),
(val_add,":infantry",1),
(end_try),
(end_try),
(assign,":ratio",":infantry"),
(val_div,":ratio",":cavalry"),
(try_begin),
(gt,":ratio",2),
(lt,":cavalry",10),
(team_give_order, reg0, grc_everyone, mordr_dismount),
(else_try),
(team_give_order, reg0, grc_everyone, mordr_mount),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_infantry),
(try_begin),
(eq,"$infantryformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$infantryformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$infantryformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(assign,reg1,grc_archers),
(try_begin),
(eq,"$archerformationtype",1),
(call_script,"script_cf_formation"),
(else_try),
(eq,"$archerformationtype",2),
(call_script,"script_cf_formation_wedge"),
(else_try),
(eq,"$archerformationtype",3),
(call_script,"script_cf_formation_stagger"),
(else_try),
(call_script,"script_formation_end"),
(end_try),], []),
# (0.2, 0, 0,
# [(get_player_agent_no,":player"),
# (agent_get_team ,reg0, ":player"),
# (assign,reg1,grc_cavalry),
# (try_begin),
# (eq,"$cavalryformationtype",1),
# (call_script,"script_cf_formation"),
# (else_try),
# (eq,"$cavalryformationtype",2),
# (call_script,"script_cf_formation_wedge"),
# (else_try),
# (eq,"$cavalryformationtype",3),
# (call_script,"script_cf_formation_stagger"),
# (else_try),
# (call_script,"script_formation_end"),
# (end_try),], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(try_for_agents,":agent"),
(agent_is_human,":agent"),
(neg|agent_is_ally,":agent"),
(assign,":enemy",":agent"),
(end_try),
(gt,":enemy",-1),
(agent_get_team ,reg0, ":enemy"),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
# (0.2, 0, 0,
# [(try_for_agents,":agent"),
# (agent_is_human,":agent"),
# (neg|agent_is_ally,":agent"),
# (assign,":enemy",":agent"),
# (end_try),
# (gt,":enemy",-1),
# (agent_get_team ,reg0, ":enemy"),
# (store_normalized_team_count,":num", reg0),
# (gt,":num",5),
# (assign,reg1,grc_cavalry),
# (call_script,"script_cf_formation_wedge"),
# ], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_infantry),
(call_script,"script_cf_formation"),
], []),
(0.2, 0, 0,
[(get_player_agent_no,":player"),
(agent_get_team ,reg0, ":player"),
(val_add,reg0,2),
(store_normalized_team_count,":num", reg0),
(gt,":num",5),
(assign,reg1,grc_archers),
(call_script,"script_cf_formation_stagger"),
], []),
# (0.2, 0, 0,
# [(get_player_agent_no,":player"),
# (agent_get_team ,reg0, ":player"),
# (val_add,reg0,2),
# (store_normalized_team_count,":num", reg0),
# (gt,":num",5),
# (assign,reg1,grc_cavalry),
# (call_script,"script_cf_formation_wedge"),
# ], []),
##########Tactical triggers above########
Tzsak 说: