("throw_axe",sf_vol_7, ["throw_axe_1.ogg"]),
(ti_on_missile_hit, [
(display_message, "@HIT"),
(set_fixed_point_multiplier, 100),
(store_trigger_param_1, reg1), #casting agent
(agent_get_position, pos2, reg1),
(position_move_z, pos2, 300, 1), #moves up 2 metres
#pos1 = target, pos2 = fireball spawn point
(position_get_x, ":pos1x", pos1), #pos1 x
(position_get_y, ":pos1y", pos1), #pos1 y
(position_get_z, ":pos2z", pos2), #pos2 z
(init_position, pos3),
(position_set_x, pos3, ":pos1x"), #same position on x-y plane as pos1
(position_set_y, pos3, ":pos1y"),
(position_set_z, pos3, ":pos2z"), #same height as pos2
(get_distance_between_positions, ":dist23", pos2, pos3), #opposite
(get_distance_between_positions, ":dist13", pos1, pos3), #adjacent
(val_div, ":dist13", ":dist23"), #o/a
(store_atan, ":xangle", ":dist13"), #arctan(o/a)
(get_angle_between_positions, ":zangle", pos2, pos1), #z rotation
(position_rotate_x, pos2, ":xangle", 1), #FINALLY apply new rotations
(position_rotate_z, pos2, ":zangle", 1),
(add_missile, reg1, pos2, 3000, "itm_fe_tome_of_fire2", 0, "itm_fe_fireball", 0),
]),
(ti_on_missile_hit, [
(display_message, "@HIT"),
(store_trigger_param_1, reg1), #casting agent
(agent_get_position, pos2, reg1),
(set_fixed_point_multiplier, 100),
#pos1 = target, pos2 = spawn point
(get_angle_between_positions, ":zangle", pos2, pos1), #z axis only
(position_rotate_z, pos2, ":zangle"),
#(position_copy_rotation, pos2, pos1), #copies rotation of target to new missile (ROUGH)
(position_move_z, pos2, 300, 1), #moves up 3 metres
(add_missile, reg1, pos2, 3000, "itm_fe_tome_of_fire2", 0, "itm_fe_fireball", 0),
]),
(ti_on_weapon_attack, [
(store_trigger_param_1, reg1),
(copy_position, pos2, pos1), #pos1 = caster pos
#(position_move_z, pos2, 200, 0), #pos2 = fireball spawn pos - moves up 2 metres
(add_missile, reg1, pos2, 3000, "itm_fe_tome_of_fire2", 0, "itm_fe_fireball", 0),
]),
["fe_tome_of_fire2", "Tome of Fire MKII", [("book_a",0)], itp_type_thrown|itp_no_pick_up_from_ground|itp_merchandise|itp_primary|itp_can_penetrate_shield|itp_bonus_against_shield|itp_ignore_friction|itp_ignore_gravity, itcf_throw_stone, 420, weight(1)|difficulty(0)|spd_rtng(70)|shoot_speed(999)|thrust_damage(0,pierce)|max_ammo(35)|weapon_length(20), imodbit_cracked|imodbit_bent|imodbit_masterwork|imodbit_heavy|imodbit_strong,
[
(ti_on_missile_hit, [
(display_message, "@HIT"),
(store_trigger_param_1, ":caster"),
(missile_remove_on_hit),
#save location for fireball to aim at
(agent_get_position, pos2, ":caster"),
(store_trigger_param_1, ":caster"),
(add_missile, ":caster", pos2, 30, "itm_fe_tome_of_fire2", 0, "itm_fe_fireball", 0),
]),
["fe_tome_of_fire", "Tome of Fire", [("book_a",0)], itp_type_thrown|itp_no_pick_up_from_ground|itp_merchandise|itp_primary|itp_can_penetrate_shield|itp_bonus_against_shield|itp_ignore_friction, itcf_throw_stone, 420, weight(1)|difficulty(0)|spd_rtng(70)|shoot_speed(30)|thrust_damage(50,pierce)|max_ammo(35)|weapon_length(20), imodbit_cracked|imodbit_bent|imodbit_masterwork|imodbit_heavy|imodbit_strong,
[
(ti_on_missile_hit,[
(try_begin),
(store_trigger_param_1, ":caster"),
(assign, ":inner_damage", 25),
(assign, ":outer_damage", 10),
(try_for_agents,":agent"),
(agent_is_alive, ":agent"),
(agent_get_position, pos2, ":agent"),
(position_move_z, pos2, 50),
(get_distance_between_positions, ":dist", pos1, pos2),
# inner damage
(try_begin),
(le, ":dist", 100),
(gt, ":dist", 0), #don't hit primary target with splash
(agent_deliver_damage_to_agent, ":caster", ":agent", ":inner_damage"),
# outer damage
(else_try),
(le, ":dist", 200),
(gt, ":dist", 100),
(agent_deliver_damage_to_agent, ":caster", ":agent", ":outer_damage"),
(try_end),
(try_end),
(try_end),
]),
]],