## This part should be put at the begining before scripts = [
## ZZ for presentations import begin
from header_presentations import *
## ZZ for presentations import end
## ZZ Custom Kingdom Troop begin
## ZZ set_item_detial, include : difficulty, weight and price
from module_items import *
def set_item_detial():
set_item_detial = []
for i_item in xrange(len(items)):
set_item_detial.append((item_set_slot, i_item, slot_item_difficulty, get_difficulty(items[i_item][6])))
set_item_detial.append((item_set_slot, i_item, slot_item_weight, get_weight(items[i_item][6])))
set_item_detial.append((item_set_slot, i_item, slot_item_price, items[i_item][5]))
return set_item_detial[:]
## ZZ set_item_detial
## ZZ Custom Kingdom Troop end
## This part should be put in the script game_start
## ZZ Custom Kingdom Troop begin
(call_script,"script_item_detial"), ## Initialize the item detial
(call_script,"script_set_custom_troop_pionts_initialization"), ## Initialize custom troops' points
## ZZ Custom Kingdom Troop end
## This part should be put in the script game_get_troop_wage
## Like this:
......
......
## ZZ Custom Kingdom Troop begin
## ZZ custom troop wage
## Except the base wage, for custom troop, the price of the equiment will add to wage after cacualation
(try_begin),
(is_between, ":troop_id", custom_troop_begin, custom_troop_end),
(troop_get_slot, ":total_price", ":troop_id", slot_custom_troop_wage),
(val_mul, ":total_price", 5),
(val_div, ":total_price", 1000),
(val_add,":wage",":total_price"),
(try_end),
## ZZ Custom Kingdom Troop end
(assign, reg0, ":wage"),
(set_trigger_result, reg0),
]),
## This part should be put in the script game_get_upgrade_cost
## Like this:
......
......
## ZZ Custom Kingdom Troop begin
## ZZ custom troop upgrade cost also will be effected by the price of the equipment
(troop_get_upgrade_troop, ":upgrade_troop", ":troop_id"),
(try_begin),
(is_between, ":upgrade_troop", custom_troop_begin, custom_troop_end),
(troop_get_slot, ":total_price",":upgrade_troop", slot_custom_troop_wage),
(store_div,":upgrade_cost_modify",":total_price",100),
(val_add,reg0,":upgrade_cost_modify"),
(try_end),
## ZZ Custom Kingdom Troop end
(set_trigger_result, reg0),
]),
## You can put Those script at the end of the file before "]"
## ZZ Custom Kingdom troop begin
## ZZ script_get_custom_troop_info
## get the troop info
# Input: none
# Output: none
("get_custom_troop_info",
[
(str_store_troop_name,s2,"$temp_troop"),
(store_attribute_level,reg1,"$temp_troop",ca_strength),
(store_attribute_level,reg2,"$temp_troop",ca_agility),
(store_attribute_level,reg3,"$temp_troop",ca_intelligence),
(store_attribute_level,reg4,"$temp_troop",ca_charisma),
(store_skill_level ,reg5,skl_ironflesh,"$temp_troop"),
(store_skill_level ,reg6,skl_power_strike,"$temp_troop"),
(store_skill_level ,reg7,skl_power_throw,"$temp_troop"),
(store_skill_level ,reg8,skl_power_draw,"$temp_troop"),
(store_skill_level ,reg9,skl_weapon_master,"$temp_troop"),
(store_skill_level ,reg10,skl_shield,"$temp_troop"),
(store_skill_level ,reg11,skl_athletics,"$temp_troop"),
(store_skill_level ,reg12,skl_riding,"$temp_troop"),
(store_skill_level ,reg13,skl_horse_archery,"$temp_troop"),
(store_skill_level ,reg14,skl_looting,"$temp_troop"),
(store_skill_level ,reg15,skl_trainer,"$temp_troop"),
(store_skill_level ,reg16,skl_tracking,"$temp_troop"),
(store_skill_level ,reg17,skl_tactics,"$temp_troop"),
(store_skill_level ,reg18,skl_pathfinding,"$temp_troop"),
(store_skill_level ,reg19,skl_spotting,"$temp_troop"),
(store_skill_level ,reg20,skl_inventory_management,"$temp_troop"),
(store_skill_level ,reg21,skl_wound_treatment,"$temp_troop"),
(store_skill_level ,reg22,skl_surgery,"$temp_troop"),
(store_skill_level ,reg23,skl_first_aid,"$temp_troop"),
(store_skill_level ,reg24,skl_engineer,"$temp_troop"),
(store_skill_level ,reg25,skl_persuasion,"$temp_troop"),
(store_skill_level ,reg26,skl_prisoner_management,"$temp_troop"),
(store_skill_level ,reg27,skl_leadership,"$temp_troop"),
(store_skill_level ,reg28,skl_trade,"$temp_troop"),
(store_proficiency_level, reg29, "$temp_troop", wpt_one_handed_weapon),
(store_proficiency_level, reg30, "$temp_troop", wpt_two_handed_weapon),
(store_proficiency_level, reg31, "$temp_troop", wpt_polearm),
(store_proficiency_level, reg32, "$temp_troop", wpt_archery),
(store_proficiency_level, reg33, "$temp_troop", wpt_crossbow),
(store_proficiency_level, reg34, "$temp_troop", wpt_throwing),
(store_proficiency_level, reg35, "$temp_troop", wpt_firearm),
(store_character_level,reg45,"$temp_troop"),
(store_mul,":hp_part1",reg5,2),
(store_add,":hp_part2",reg1,35),
(store_add,":hp",reg1,":hp_part2",":hp_part1"),
(assign,reg46,":hp"),
(troop_get_xp,reg47,"$temp_troop"),
]),
## script_store_custom_troop_info_to_slot
# Input: arrays_no (the slot troop)
# Output: none
("store_custom_troop_info_to_slot",
[
(store_script_param_1, ":arrays_no"),
(troop_set_slot,":arrays_no",0,reg1),
(troop_set_slot,":arrays_no",1,reg2),
(troop_set_slot,":arrays_no",2,reg3),
(troop_set_slot,":arrays_no",3,reg4),
(troop_set_slot,":arrays_no",4,reg5),
(troop_set_slot,":arrays_no",5,reg6),
(troop_set_slot,":arrays_no",6,reg7),
(troop_set_slot,":arrays_no",7,reg8),
(troop_set_slot,":arrays_no",8,reg9),
(troop_set_slot,":arrays_no",9,reg10),
(troop_set_slot,":arrays_no",10,reg11),
(troop_set_slot,":arrays_no",11,reg12),
(troop_set_slot,":arrays_no",12,reg13),
(troop_set_slot,":arrays_no",13,reg14),
(troop_set_slot,":arrays_no",14,reg15),
(troop_set_slot,":arrays_no",15,reg16),
(troop_set_slot,":arrays_no",16,reg17),
(troop_set_slot,":arrays_no",17,reg18),
(troop_set_slot,":arrays_no",18,reg19),
(troop_set_slot,":arrays_no",19,reg20),
(troop_set_slot,":arrays_no",20,reg21),
(troop_set_slot,":arrays_no",21,reg22),
(troop_set_slot,":arrays_no",22,reg23),
(troop_set_slot,":arrays_no",23,reg24),
(troop_set_slot,":arrays_no",24,reg25),
(troop_set_slot,":arrays_no",25,reg26),
(troop_set_slot,":arrays_no",26,reg27),
(troop_set_slot,":arrays_no",27,reg28),
(troop_set_slot,":arrays_no",28,reg29),
(troop_set_slot,":arrays_no",29,reg30),
(troop_set_slot,":arrays_no",30,reg31),
(troop_set_slot,":arrays_no",31,reg32),
(troop_set_slot,":arrays_no",32,reg33),
(troop_set_slot,":arrays_no",33,reg34),
(troop_set_slot,":arrays_no",34,reg35),
]),
## script_clear_array
# Input: none
# Output: none
("clear_array",
[
(try_for_range,":slot_no",0,1000),
(troop_set_slot,"trp_array_a",":slot_no",0),
(troop_set_slot,"trp_array_b",":slot_no",0),
(troop_set_slot,"trp_array_c",":slot_no",0),
(troop_set_slot,"trp_array_d",":slot_no",0),
(try_end),
]),
## script_custom_troop_button_action
# Input: none
# Output: none
("custom_troop_button_action",
[
(store_script_param, ":no",1), # which object you press
(store_script_param, ":state",2),#0 add,1 save,2 show or not
(store_script_param, ":increment",3),
(try_begin),
(eq,":no",0), ## 0
(try_begin),
(eq,":state",0), ## add
(val_add,reg1,1), ## ca_strength add 1
(val_sub,"$attribute_points",1), ## attribute points decrease 1
(else_try),
(eq,":state",1), ## save
(troop_raise_attribute, "$temp_troop",ca_strength,":increment"), ## raise ":increment" attribute
(else_try),
(eq,":state",2),
(try_begin),
(this_or_next|ge,reg1,63), # means if the ca_strength is larger than 63 or no more attribute points the button will not show.
(le,"$attribute_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1), ## this will be used in presentations to decide show or not
(try_end),
(try_end),
(else_try),
(eq,":no",1),
(try_begin),
(eq,":state",0),
(val_add,reg2,1),
(val_sub,"$attribute_points",1),
(else_try),
(eq,":state",1),
(troop_raise_attribute, "$temp_troop",ca_agility,":increment"),
(else_try),
(eq,":state",2),
(try_begin),
(this_or_next|ge,reg2,63),
(le,"$attribute_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",2),
(try_begin),
(eq,":state",0),
(val_add,reg3,1),
(val_sub,"$attribute_points",1),
(else_try),
(eq,":state",1),
(troop_raise_attribute, "$temp_troop",ca_intelligence,":increment"),
(else_try),
(eq,":state",2),
(try_begin),
(this_or_next|ge,reg3,63),
(le,"$attribute_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",3),
(try_begin),
(eq,":state",0),
(val_add,reg4,1),
(val_sub,"$attribute_points",1),
(else_try),
(eq,":state",1),
(troop_raise_attribute, "$temp_troop",ca_charisma,":increment"),
(else_try),
(eq,":state",2),
(try_begin),
(this_or_next|ge,reg4,63),
(le,"$attribute_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",4),
(try_begin),
(eq,":state",0),
(val_add,reg5,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_ironflesh,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg1,3),
(try_begin),
(this_or_next|ge,reg5,10),
(this_or_next|ge,reg5,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",5),
(try_begin),
(eq,":state",0),
(val_add,reg6,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_power_strike,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg1,3),
(try_begin),
(this_or_next|ge,reg6,10),
(this_or_next|ge,reg6,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",6),
(try_begin),
(eq,":state",0),
(val_add,reg7,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_power_throw,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg1,3),
(try_begin),
(this_or_next|ge,reg7,10),
(this_or_next|ge,reg7,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",7),
(try_begin),
(eq,":state",0),
(val_add,reg8,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_power_draw,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg1,3),
(try_begin),
(this_or_next|ge,reg8,10),
(this_or_next|ge,reg8,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",8),
(try_begin),
(eq,":state",0),
(val_add,reg9,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_weapon_master,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg9,10),
(this_or_next|ge,reg9,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",9),
(try_begin),
(eq,":state",0),
(val_add,reg10,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_shield,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg10,10),
(this_or_next|ge,reg10,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",10),
(try_begin),
(eq,":state",0),
(val_add,reg11,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_athletics,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg11,10),
(this_or_next|ge,reg11,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",11),
(try_begin),
(eq,":state",0),
(val_add,reg12,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_riding,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg12,10),
(this_or_next|ge,reg12,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",12),
(try_begin),
(eq,":state",0),
(val_add,reg13,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_horse_archery,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg13,10),
(this_or_next|ge,reg13,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",13),
(try_begin),
(eq,":state",0),
(val_add,reg14,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_looting,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg2,3),
(try_begin),
(this_or_next|ge,reg14,10),
(this_or_next|ge,reg14,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",14),
(try_begin),
(eq,":state",0),
(val_add,reg15,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_trainer,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg15,10),
(this_or_next|ge,reg15,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",15),
(try_begin),
(eq,":state",0),
(val_add,reg16,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_tracking,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg16,10),
(this_or_next|ge,reg16,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",16),
(try_begin),
(eq,":state",0),
(val_add,reg17,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_tactics,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg17,10),
(this_or_next|ge,reg17,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",17),
(try_begin),
(eq,":state",0),
(val_add,reg18,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_pathfinding,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg18,10),
(this_or_next|ge,reg18,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",18),
(try_begin),
(eq,":state",0),
(val_add,reg19,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_spotting,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg19,10),
(this_or_next|ge,reg19,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",19),
(try_begin),
(eq,":state",0),
(val_add,reg20,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_inventory_management,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg20,10),
(this_or_next|ge,reg20,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",20),
(try_begin),
(eq,":state",0),
(val_add,reg21,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_wound_treatment,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg21,10),
(this_or_next|ge,reg21,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",21),
(try_begin),
(eq,":state",0),
(val_add,reg22,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_surgery,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg22,10),
(this_or_next|ge,reg22,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",22),
(try_begin),
(eq,":state",0),
(val_add,reg23,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_first_aid,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg23,10),
(this_or_next|ge,reg23,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",23),
(try_begin),
(eq,":state",0),
(val_add,reg24,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_engineer,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg24,10),
(this_or_next|ge,reg24,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",24),
(try_begin),
(eq,":state",0),
(val_add,reg25,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_persuasion,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg3,3),
(try_begin),
(this_or_next|ge,reg25,10),
(this_or_next|ge,reg25,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",25),
(try_begin),
(eq,":state",0),
(val_add,reg26,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_prisoner_management,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg4,3),
(try_begin),
(this_or_next|ge,reg26,10),
(this_or_next|ge,reg26,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",26),
(try_begin),
(eq,":state",0),
(val_add,reg27,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_leadership,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg4,3),
(try_begin),
(this_or_next|ge,reg27,10),
(this_or_next|ge,reg27,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",27),
(try_begin),
(eq,":state",0),
(val_add,reg28,1),
(val_sub,"$skill_points",1),
(else_try),
(eq,":state",1),
(troop_raise_skill, "$temp_troop",skl_trade,":increment"),
(else_try),
(eq,":state",2),
(store_div,":limits",reg4,3),
(try_begin),
(this_or_next|ge,reg28,10),
(this_or_next|ge,reg28,":limits"),
(le,"$skill_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",28),
(try_begin),
(eq,":state",0),
(val_add,reg29,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_one_handed_weapon,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg29,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",29),
(try_begin),
(eq,":state",0),
(val_add,reg30,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_two_handed_weapon,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg30,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",30),
(try_begin),
(eq,":state",0),
(val_add,reg31,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_polearm,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg31,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",31),
(try_begin),
(eq,":state",0),
(val_add,reg32,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_archery,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg32,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",32),
(try_begin),
(eq,":state",0),
(val_add,reg33,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_crossbow,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg33,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",33),
(try_begin),
(eq,":state",0),
(val_add,reg34,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_throwing,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg34,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(else_try),
(eq,":no",34),
(try_begin),
(eq,":state",0),
(val_add,reg35,10),
(val_sub,"$weapon_points",10),
(else_try),
(eq,":state",1),
(troop_raise_proficiency_linear, "$temp_troop",wpt_firearm,":increment"),
(else_try),
(eq,":state",2),
(store_mul,":add",reg9,40),
(store_add,":limits",60,":add"),
(try_begin),
(le,"$weapon_points",0),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(else_try),
(lt,reg9,10),
(ge,reg35,":limits"),
(store_add,":slot_no",":no",300),
(troop_set_slot,"trp_array_a",":slot_no",1),
(try_end),
(try_end),
(try_end),
]),
## script_custom_troop_inventory_initialization
## Input: troop
## Output: none
("custom_troop_inventory_initialization", [
(store_script_param_1, ":troop"),
(try_for_range, ":i_slot", 0, 100), ## clear the slot
(troop_set_slot, "trp_array_d", ":i_slot", 0),
(try_end),
(try_for_range, ":i_slot", 0, 10), ## put troop's equipment to slot twice, one is used as backups
(troop_get_inventory_slot, ":item",":troop", ":i_slot"),
(gt, ":item", 0),
(troop_set_slot, "trp_array_d", ":i_slot", ":item"), ## store
(store_add,":slot_offset",":i_slot",50),
(troop_set_slot, "trp_array_d", ":slot_offset", ":item"), ## backups
(try_end),
]),
## script_custom_troop_inventory_reset
## Input: troop
## Output: none
("custom_troop_inventory_reset", [
(store_script_param_1, ":troop"),
(try_for_range, ":i_slot", 0, 10), ## clear the slot and troop equipment inventory
(troop_set_slot, "trp_array_d", ":i_slot", 0),
(troop_set_inventory_slot,":troop", ":i_slot",-1),
(try_end),
(try_for_range, ":i_slot", 0, 10), ## get the backips to put in troop's equipment inventory and slot.
(store_add,":slot_offset",":i_slot",50),
(troop_get_slot, ":item", "trp_array_d", ":slot_offset"),
(gt, ":item", 0),
(troop_set_inventory_slot,":troop", ":i_slot",":item"),
(troop_set_slot, "trp_array_d", ":i_slot", ":item"),
(try_end),
]),
## script_custom_troop_inventory_change
## Input: troop
## Output: none
("custom_troop_inventory_change", [
(store_script_param_1, ":troop"),
(store_sub,":slot_offset",":troop","trp_kingdom_recruit"),
(val_mul,":slot_offset",10),
(try_for_range, ":i_slot", 0, 10), ## clear
(troop_set_inventory_slot,":troop", ":i_slot",-1),
(try_end),
(try_for_range, ":i_slot", 0, 10), ## set
(troop_get_slot, ":item", "trp_array_d", ":i_slot"),
(gt, ":item", 0),
(troop_set_inventory_slot,":troop", ":i_slot",":item"),
## change for save data
## since when loading a save file, the equipment won't be saved ,so we need to save it in slot troop.
(store_add,":slot_no",":i_slot",":slot_offset"),
(troop_set_slot, "trp_kingdom_inventory", ":slot_no",":item"),
#(display_message,"@XXXXXXXXXXXXXXXXXXXXxxxx"),
## change for save data
(try_end),
]),
## script_custom_troop_inventory_total_price
## Input: troop
## Output: total_price
("custom_troop_inventory_total_price", [
(store_script_param_1, ":troop"),
(assign,":total_price",0),
(try_for_range, ":i_slot", 0, 10),
(troop_get_inventory_slot, ":item",":troop", ":i_slot"),
(gt, ":item", 0),
(item_get_slot, ":price", ":item", slot_item_price),
(val_add,":total_price",":price"),
(try_end),
(assign,reg42,":total_price"),
(troop_set_slot, ":troop", slot_custom_troop_wage, ":total_price"),
]),
## script_custom_troop_inventory_total_price
## Input: troop
## Output: total_weight
("custom_troop_inventory_total_weight", [
(store_script_param_1, ":troop"),
(assign,":total_weight",0),
(try_for_range, ":i_slot", 0, 10),
(troop_get_inventory_slot, ":item",":troop", ":i_slot"),
(gt, ":item", 0),
(item_get_slot, ":weight", ":item", slot_item_weight),
(val_add,":total_weight",":weight"),
(try_end),
(assign,reg43,":total_weight"),
(troop_set_slot, ":troop", slot_custom_troop_weight, ":total_weight"),
]),
## script_custom_troop_inventory_total_price
## Input: item_no,item_slot(means position)
## Output: reg0 (can put or not)
("custom_troop_item_judge", [
(store_script_param_1, ":item_no"),
(store_script_param_2, ":item_slot"),
(assign, ":right_place", 0),
(item_get_type,":item_type",":item_no"),
(try_begin),
(is_between,":item_slot",0,4),
(this_or_next|eq, ":item_type", itp_type_one_handed_wpn),
(this_or_next|eq, ":item_type", itp_type_two_handed_wpn),
(this_or_next|eq, ":item_type", itp_type_polearm),
(this_or_next|eq, ":item_type", itp_type_arrows),
(this_or_next|eq, ":item_type", itp_type_bolts),
(this_or_next|eq, ":item_type", itp_type_shield),
(this_or_next|eq, ":item_type", itp_type_bow),
(this_or_next|eq, ":item_type", itp_type_crossbow),
(this_or_next|eq, ":item_type", itp_type_thrown),
(this_or_next|eq, ":item_type", itp_type_pistol),
(this_or_next|eq, ":item_type", itp_type_musket),
(eq, ":item_type", itp_type_bullets),
(assign, ":right_place", 1),
(else_try),
(eq, ":item_slot", 4),
(eq, ":item_type", itp_type_head_armor),
(assign, ":right_place", 1),
(else_try),
(eq, ":item_slot", 5),
(eq, ":item_type", itp_type_body_armor),
(assign, ":right_place", 1),
(else_try),
(eq, ":item_slot", 6),
(eq, ":item_type", itp_type_foot_armor),
(assign, ":right_place", 1),
(else_try),
(eq, ":item_slot", 7),
(eq, ":item_type", itp_type_hand_armor),
(assign, ":right_place", 1),
(else_try),
(eq, ":item_slot", 8),
(eq, ":item_type", itp_type_horse),
(assign, ":right_place", 1),
(try_end),
(call_script,"script_custom_troop_inventory_total_weight","$temp_troop"),
(try_for_range, ":i_slot", 0, 9),
(troop_get_inventory_slot, ":item","$temp_troop", ":i_slot"),
(gt,":item",-1),
(eq,":i_slot",":item_slot"),
## if the position in whcih we put new equipment has original equipment existed
## we need to reduce the original equipment's weight and then add the new one's weight.
(item_get_slot, ":weight", ":item", slot_item_weight),
(val_sub,reg43,":weight"),
(try_end),
(item_get_slot, ":weight", "$current_item", slot_item_weight),
(val_add,reg43,":weight"),
(store_attribute_level,":strength_level","$temp_troop",ca_strength),
(store_character_level,":character_level","$temp_troop"),
(val_mul,":strength_level",2),
(store_add,":weight_limits",":strength_level",":character_level"),
(try_begin),
(le,reg43,":weight_limits"),
(assign, ":can_carry", 1),
(else_try),
(assign, ":can_carry", 0),
(try_end),
(store_and,reg0,":right_place",":can_carry"),
]),
## ZZ set_custom_troop_pionts_initialization
## Used for Custom Kingdom Troop
## According to their level to set the attribute point,skill point, weapon point.
## Input: None
## output: None
("set_custom_troop_pionts_initialization",[
(try_for_range, ":troop_no", custom_troop_begin, custom_troop_end),
(store_character_level,":skill_point",":troop_no"),
(troop_set_slot, ":troop_no", slot_custom_troop_sp, ":skill_point"),
(store_mul,":weapon_point",":skill_point",40),
(troop_set_slot, ":troop_no", slot_custom_troop_wp, ":weapon_point"),
(store_div,":attribute_point",":skill_point",3),
(troop_set_slot, ":troop_no", slot_custom_troop_ap, ":attribute_point"),
(try_end),
]),
## ZZ item_detial
("item_detial",set_item_detial()),
## ZZ Custom Kingdom Troop end