mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-07-31 07:56:03 -04:00
Attempt to decompile frTick
This commit is contained in:
+100
-96
@@ -21,7 +21,7 @@ u8 weapon_dummy[] = {
|
||||
|
||||
u8 weapon_falcon2[] = {
|
||||
start(),
|
||||
set_num_targets(3, 1, 3),
|
||||
set_max_active_targets(3, 1, 3),
|
||||
set_goal_score(120, 80, 170),
|
||||
set_time_limit(255, 15, 10),
|
||||
set_ammo_limit(255, 255, 24),
|
||||
@@ -48,7 +48,7 @@ u8 weapon_falcon2[] = {
|
||||
|
||||
u8 weapon_falcon2_scope[] = {
|
||||
start(),
|
||||
set_num_targets(1, 1, 3),
|
||||
set_max_active_targets(1, 1, 3),
|
||||
set_goal_score(120, 120, 80),
|
||||
set_time_limit(255, 255, 10),
|
||||
set_ammo_limit(255, 255, 8),
|
||||
@@ -74,7 +74,7 @@ u8 weapon_falcon2_scope[] = {
|
||||
|
||||
u8 weapon_falcon2_silencer[] = {
|
||||
start(),
|
||||
set_num_targets(1, 9, 3),
|
||||
set_max_active_targets(1, 9, 3),
|
||||
set_goal_score(120, 30, 80),
|
||||
set_time_limit(255, 255, 30),
|
||||
set_ammo_limit(255, 255, 255),
|
||||
@@ -108,7 +108,7 @@ u8 weapon_falcon2_silencer[] = {
|
||||
|
||||
u8 weapon_magsec4[] = {
|
||||
start(),
|
||||
set_num_targets(1, 7, 4),
|
||||
set_max_active_targets(1, 7, 4),
|
||||
set_goal_score(135, 135, 80),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 18, 255),
|
||||
@@ -118,23 +118,23 @@ u8 weapon_magsec4[] = {
|
||||
add_target(0x01, 0x2b, 0x09, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x01, 0x2a, 0x09, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x01, 0x29, 0x09, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x42, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x42, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x32, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x33, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x34, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x35, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x36, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x37, 0x03, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x3e, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x41, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x40, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x3f, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x3e, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x41, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x40, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x3f, 0x03, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
end(),
|
||||
};
|
||||
|
||||
u8 weapon_mauler[] = {
|
||||
start(),
|
||||
set_num_targets(1, 8, 6),
|
||||
set_max_active_targets(1, 8, 6),
|
||||
set_goal_score(200, 0, 0),
|
||||
set_time_limit(255, 255, 15),
|
||||
set_ammo_limit(255, 50, 35),
|
||||
@@ -158,18 +158,18 @@ u8 weapon_mauler[] = {
|
||||
add_target(0x00, 0x1a, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x1b, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x1c, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x35, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x36, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x37, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x38, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x39, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x3a, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x35, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x36, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x37, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x38, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x39, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x3a, 0x05, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
end(),
|
||||
};
|
||||
|
||||
u8 weapon_phoenix[] = {
|
||||
start(),
|
||||
set_num_targets(2, 3, 6),
|
||||
set_max_active_targets(2, 3, 6),
|
||||
set_goal_score(90, 0, 0),
|
||||
set_time_limit(255, 255, 20),
|
||||
set_ammo_limit(255, 18, 3),
|
||||
@@ -184,15 +184,15 @@ u8 weapon_phoenix[] = {
|
||||
add_target(0x00, 0x40, 0x08, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x41, 0x08, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x3f, 0x08, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_80),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3b, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3c, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x3d, 0x0c, FRTARGETFLAG_SILVER | FRTARGETFLAG_TMPINVINCIBLE),
|
||||
add_target(0x00, 0x22, 0x01, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x21, 0x01, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x20, 0x01, FRTARGETFLAG_GOLD),
|
||||
@@ -204,7 +204,7 @@ u8 weapon_phoenix[] = {
|
||||
|
||||
u8 weapon_dy357magnum[] = {
|
||||
start(),
|
||||
set_num_targets(1, 9, 9),
|
||||
set_max_active_targets(1, 9, 9),
|
||||
set_goal_score(90, 80, 50),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 3, 5),
|
||||
@@ -228,21 +228,21 @@ u8 weapon_dy357magnum[] = {
|
||||
add_target(0x00, 0x12, 0x01, FRTARGETFLAG_SILVER),
|
||||
add_target(0x01, 0x13, 0x01, FRTARGETFLAG_SILVER),
|
||||
add_target(0x02, 0x14, 0x01, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x32, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2a, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2b, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2c, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x36, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2e, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x38, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x30, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x3a, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x32, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2a, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2b, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2c, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x36, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2e, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x38, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x30, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x3a, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
end(),
|
||||
};
|
||||
|
||||
u8 weapon_dy357lx[] = {
|
||||
start(),
|
||||
set_num_targets(1, 3, 1),
|
||||
set_max_active_targets(1, 3, 1),
|
||||
set_goal_score(90, 200, 100),
|
||||
set_time_limit(255, 30, 50),
|
||||
set_ammo_limit(255, 255, 12),
|
||||
@@ -269,7 +269,7 @@ u8 weapon_dy357lx[] = {
|
||||
|
||||
u8 weapon_cmp150[] = {
|
||||
start(),
|
||||
set_num_targets(3, 4, 3),
|
||||
set_max_active_targets(3, 4, 3),
|
||||
set_score_multiplier(1, 0, 2),
|
||||
set_goal_score(240, 0, 175),
|
||||
set_time_limit(255, 255, 20),
|
||||
@@ -301,7 +301,7 @@ u8 weapon_cmp150[] = {
|
||||
|
||||
u8 weapon_cyclone[] = {
|
||||
start(),
|
||||
set_num_targets(3, 2, 3),
|
||||
set_max_active_targets(3, 2, 3),
|
||||
set_score_multiplier(3, 0, 2),
|
||||
set_goal_score(250, 0, 200),
|
||||
set_time_limit(255, 20, 18),
|
||||
@@ -328,7 +328,7 @@ u8 weapon_cyclone[] = {
|
||||
|
||||
u8 weapon_callistontg[] = {
|
||||
start(),
|
||||
set_num_targets(6, 4, 9),
|
||||
set_max_active_targets(6, 4, 9),
|
||||
set_score_multiplier(2, 0, 1),
|
||||
set_goal_score(240, 0, 250),
|
||||
set_time_limit(255, 30, 20),
|
||||
@@ -360,22 +360,26 @@ u8 weapon_callistontg[] = {
|
||||
|
||||
u8 weapon_rcp120[] = {
|
||||
start(),
|
||||
set_num_targets(1, 3, 9),
|
||||
set_max_active_targets(1, 3, 9),
|
||||
set_score_multiplier(4, 2, 1),
|
||||
set_goal_score(250, 150, 0),
|
||||
set_time_limit(255, 20, 20),
|
||||
set_ammo_limit(255, 255, 180),
|
||||
set_extra_speed(0, 1, 3),
|
||||
|
||||
// @bug: This causes the RC-P120 to show help messages.
|
||||
// It's likely a copy/paste error from the Falcon 2.
|
||||
set_help_script(0),
|
||||
|
||||
cmd_0a(0x09),
|
||||
set_goal_targets(255, 255, 9),
|
||||
add_target(0x01, 0x07, 0xff, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x14, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x13, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x12, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x14, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x13, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x12, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_08 | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x14, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x13, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x12, 0x14, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x14, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x13, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x12, 0x04, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY | FRTARGETFLAG_ROTATEONCLOAK),
|
||||
add_target(0x00, 0x11, 0x0a, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x10, 0x0a, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x0f, 0x0a, FRTARGETFLAG_GOLD),
|
||||
@@ -387,7 +391,7 @@ u8 weapon_rcp120[] = {
|
||||
|
||||
u8 weapon_laptopgun[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 3),
|
||||
set_max_active_targets(3, 3, 3),
|
||||
set_score_multiplier(5, 0, 3),
|
||||
set_goal_score(150, 90, 250),
|
||||
set_time_limit(30, 20, 15),
|
||||
@@ -401,9 +405,9 @@ u8 weapon_laptopgun[] = {
|
||||
add_target(0x01, 0x12, 0x32, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x01, 0x13, 0x32, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x02, 0x14, 0x32, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x12, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x13, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x14, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x12, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x13, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x14, 0x1e, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x49, 0x32, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x4a, 0x32, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x4b, 0x32, FRTARGETFLAG_GOLD),
|
||||
@@ -412,7 +416,7 @@ u8 weapon_laptopgun[] = {
|
||||
|
||||
u8 weapon_dragon[] = {
|
||||
start(),
|
||||
set_num_targets(3, 1, 5),
|
||||
set_max_active_targets(3, 1, 5),
|
||||
set_score_multiplier(3, 0, 2),
|
||||
set_goal_score(150, 0, 250),
|
||||
set_time_limit(255, 10, 15),
|
||||
@@ -441,7 +445,7 @@ u8 weapon_dragon[] = {
|
||||
|
||||
u8 weapon_k7avenger[] = {
|
||||
start(),
|
||||
set_num_targets(1, 5, 3),
|
||||
set_max_active_targets(1, 5, 3),
|
||||
set_score_multiplier(3, 0, 0),
|
||||
set_goal_score(125, 0, 0),
|
||||
set_time_limit(255, 255, 15),
|
||||
@@ -453,13 +457,13 @@ u8 weapon_k7avenger[] = {
|
||||
add_target(0x01, 0x0d, 0x19, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x01, 0x0e, 0x19, FRTARGETFLAG_BRONZE),
|
||||
add_target(0x00, 0x0c, 0xff, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x0d, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_20),
|
||||
add_target(0x00, 0x0d, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_ONEHITEXPLODE),
|
||||
add_target(0x00, 0x0e, 0xff, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x0f, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_20),
|
||||
add_target(0x00, 0x0f, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_ONEHITEXPLODE),
|
||||
add_target(0x00, 0x10, 0xff, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x11, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_20),
|
||||
add_target(0x00, 0x11, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_ONEHITEXPLODE),
|
||||
add_target(0x00, 0x12, 0xff, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x13, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_20),
|
||||
add_target(0x00, 0x13, 0xff, FRTARGETFLAG_SILVER | FRTARGETFLAG_ONEHITEXPLODE),
|
||||
add_target(0x00, 0x14, 0xff, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x2b, 0x0a, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x33, 0x0a, FRTARGETFLAG_GOLD),
|
||||
@@ -469,7 +473,7 @@ u8 weapon_k7avenger[] = {
|
||||
|
||||
u8 weapon_ar34[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 1),
|
||||
set_max_active_targets(3, 3, 1),
|
||||
set_score_multiplier(3, 0, 5),
|
||||
set_goal_score(150, 0, 100),
|
||||
set_time_limit(255, 255, 20),
|
||||
@@ -496,7 +500,7 @@ u8 weapon_ar34[] = {
|
||||
|
||||
u8 weapon_superdragon[] = {
|
||||
start(),
|
||||
set_num_targets(1, 9, 5),
|
||||
set_max_active_targets(1, 9, 5),
|
||||
set_score_multiplier(3, 0, 1),
|
||||
set_goal_score(150, 0, 0),
|
||||
set_time_limit(255, 255, 30),
|
||||
@@ -531,7 +535,7 @@ u8 weapon_superdragon[] = {
|
||||
|
||||
u8 weapon_shotgun[] = {
|
||||
start(),
|
||||
set_num_targets(1, 3, 1),
|
||||
set_max_active_targets(1, 3, 1),
|
||||
set_goal_score(240, 0, 170),
|
||||
set_time_limit(255, 30, 20),
|
||||
set_ammo_limit(255, 255, 30),
|
||||
@@ -560,7 +564,7 @@ u8 weapon_shotgun[] = {
|
||||
|
||||
u8 weapon_sniperrifle[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 3),
|
||||
set_max_active_targets(3, 3, 3),
|
||||
set_goal_score(120, 120, 150),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 255, 15),
|
||||
@@ -587,37 +591,37 @@ u8 weapon_sniperrifle[] = {
|
||||
|
||||
u8 weapon_farsightxr20[] = {
|
||||
start(),
|
||||
set_num_targets(3, 9, 6),
|
||||
set_max_active_targets(3, 9, 6),
|
||||
set_goal_score(0, 0, 40),
|
||||
set_time_limit(255, 15, 20),
|
||||
set_ammo_limit(255, 255, 3),
|
||||
set_extra_speed(0, 1, 3),
|
||||
cmd_0a(0x12),
|
||||
set_goal_targets(3, 6, 6),
|
||||
add_target(0x01, 0x0c, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x10, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x14, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x29, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x2a, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x2b, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x2c, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x2d, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x2e, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x12, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x01, 0x13, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x01, 0x14, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_10),
|
||||
add_target(0x01, 0x0c, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x0c, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x10, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x14, 0x03, FRTARGETFLAG_BRONZE | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x29, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x2a, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x2b, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x2c, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x2d, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x2e, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x12, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x01, 0x13, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x01, 0x14, 0x01, FRTARGETFLAG_SILVER | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x01, 0x0c, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x12, 0x01, FRTARGETFLAG_GOLD),
|
||||
add_target(0x01, 0x0e, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_40),
|
||||
add_target(0x01, 0x0e, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
add_target(0x01, 0x14, 0x01, FRTARGETFLAG_GOLD),
|
||||
add_target(0x01, 0x10, 0x01, FRTARGETFLAG_GOLD),
|
||||
add_target(0x00, 0x1f, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_40),
|
||||
add_target(0x00, 0x1f, 0x01, FRTARGETFLAG_GOLD | FRTARGETFLAG_FARSIGHTAUTOTARGETABLE),
|
||||
end(),
|
||||
};
|
||||
|
||||
u8 weapon_crossbow[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 1),
|
||||
set_max_active_targets(3, 3, 1),
|
||||
set_score_multiplier(0, 0, 1),
|
||||
set_goal_score(72, 90, 150),
|
||||
set_time_limit(255, 255, 30),
|
||||
@@ -636,7 +640,7 @@ u8 weapon_crossbow[] = {
|
||||
|
||||
u8 weapon_tranquilizer[] = {
|
||||
start(),
|
||||
set_num_targets(8, 3, 1),
|
||||
set_max_active_targets(8, 3, 1),
|
||||
set_goal_score(120, 250, 0),
|
||||
set_time_limit(255, 20, 15),
|
||||
set_ammo_limit(255, 255, 18),
|
||||
@@ -683,7 +687,7 @@ u8 weapon_tranquilizer[] = {
|
||||
|
||||
u8 weapon_reaper[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 3),
|
||||
set_max_active_targets(3, 3, 3),
|
||||
set_score_multiplier(5, 0, 3),
|
||||
set_goal_score(200, 0, 250),
|
||||
set_time_limit(255, 30, 30),
|
||||
@@ -720,7 +724,7 @@ u8 weapon_reaper[] = {
|
||||
|
||||
u8 weapon_devastator[] = {
|
||||
start(),
|
||||
set_num_targets(3, 6, 1),
|
||||
set_max_active_targets(3, 6, 1),
|
||||
set_goal_score(0, 0, 0),
|
||||
set_time_limit(255, 50, 30),
|
||||
set_ammo_limit(255, 10, 6),
|
||||
@@ -739,18 +743,18 @@ u8 weapon_devastator[] = {
|
||||
add_target(0x01, 0x45, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x01, 0x46, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x01, 0x47, 0x05, FRTARGETFLAG_SILVER),
|
||||
add_target(0x00, 0x2c, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2f, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2d, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x31, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2e, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x30, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_10),
|
||||
add_target(0x00, 0x2c, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2f, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2d, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x31, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x2e, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
add_target(0x00, 0x30, 0x08, FRTARGETFLAG_GOLD | FRTARGETFLAG_SPAWNFACINGAWAY),
|
||||
end(),
|
||||
};
|
||||
|
||||
u8 weapon_rocketlauncher[] = {
|
||||
start(),
|
||||
set_num_targets(9, 8, 4),
|
||||
set_max_active_targets(9, 8, 4),
|
||||
set_goal_score(0, 0, 40),
|
||||
set_time_limit(255, 255, 30),
|
||||
set_ammo_limit(255, 18, 4),
|
||||
@@ -783,7 +787,7 @@ u8 weapon_rocketlauncher[] = {
|
||||
|
||||
u8 weapon_slayer[] = {
|
||||
start(),
|
||||
set_num_targets(1, 4, 3),
|
||||
set_max_active_targets(1, 4, 3),
|
||||
set_goal_score(0, 40, 60),
|
||||
set_time_limit(255, 255, 40),
|
||||
set_ammo_limit(255, 6, 8),
|
||||
@@ -811,7 +815,7 @@ u8 weapon_slayer[] = {
|
||||
|
||||
u8 weapon_combatknife[] = {
|
||||
start(),
|
||||
set_num_targets(1, 3, 8),
|
||||
set_max_active_targets(1, 3, 8),
|
||||
set_goal_score(72, 90, 80),
|
||||
set_time_limit(255, 255, 30),
|
||||
set_ammo_limit(255, 18, 255),
|
||||
@@ -837,7 +841,7 @@ u8 weapon_combatknife[] = {
|
||||
|
||||
u8 weapon_laser[] = {
|
||||
start(),
|
||||
set_num_targets(3, 1, 3),
|
||||
set_max_active_targets(3, 1, 3),
|
||||
set_goal_score(250, 180, 250),
|
||||
set_time_limit(255, 20, 20),
|
||||
set_ammo_limit(255, 255, 255),
|
||||
@@ -857,7 +861,7 @@ u8 weapon_laser[] = {
|
||||
|
||||
u8 weapon_grenade[] = {
|
||||
start(),
|
||||
set_num_targets(1, 3, 1),
|
||||
set_max_active_targets(1, 3, 1),
|
||||
set_goal_score(0, 0, 0),
|
||||
set_time_limit(255, 30, 30),
|
||||
set_ammo_limit(255, 255, 6),
|
||||
@@ -894,7 +898,7 @@ u8 weapon_grenade[] = {
|
||||
|
||||
u8 weapon_1e[] = {
|
||||
start(),
|
||||
set_num_targets(3, 9, 4),
|
||||
set_max_active_targets(3, 9, 4),
|
||||
set_goal_score(72, 90, 80),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 18, 255),
|
||||
@@ -930,7 +934,7 @@ u8 weapon_1e[] = {
|
||||
|
||||
u8 weapon_timedmine[] = {
|
||||
start(),
|
||||
set_num_targets(3, 6, 6),
|
||||
set_max_active_targets(3, 6, 6),
|
||||
set_goal_score(0, 0, 60),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 6, 1),
|
||||
@@ -957,7 +961,7 @@ u8 weapon_timedmine[] = {
|
||||
|
||||
u8 weapon_proximitymine[] = {
|
||||
start(),
|
||||
set_num_targets(3, 3, 5),
|
||||
set_max_active_targets(3, 3, 5),
|
||||
set_goal_score(0, 0, 0),
|
||||
set_time_limit(255, 255, 30),
|
||||
set_ammo_limit(255, 6, 4),
|
||||
@@ -980,7 +984,7 @@ u8 weapon_proximitymine[] = {
|
||||
|
||||
u8 weapon_remotemine[] = {
|
||||
start(),
|
||||
set_num_targets(3, 4, 7),
|
||||
set_max_active_targets(3, 4, 7),
|
||||
set_goal_score(0, 0, 0),
|
||||
set_time_limit(255, 255, 12),
|
||||
set_ammo_limit(255, 4, 2),
|
||||
|
||||
@@ -766,7 +766,7 @@ glabel var7f1b784c
|
||||
.L0f168c88:
|
||||
/* f168c88: 14a10007 */ bne $a1,$at,.L0f168ca8
|
||||
/* f168c8c: 02002025 */ or $a0,$s0,$zero
|
||||
/* f168c90: 0fc67c88 */ jal func0f19f220
|
||||
/* f168c90: 0fc67c88 */ jal frIsTargetOneHitExplodable
|
||||
/* f168c94: afa8005c */ sw $t0,0x5c($sp)
|
||||
/* f168c98: 8fa8005c */ lw $t0,0x5c($sp)
|
||||
/* f168c9c: 10400002 */ beqz $v0,.L0f168ca8
|
||||
@@ -1002,7 +1002,7 @@ glabel var7f1b784c
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (obj->modelnum == MODEL_TARGET && func0f19f220(prop)) {
|
||||
// if (obj->modelnum == MODEL_TARGET && frIsTargetOneHitExplodable(prop)) {
|
||||
// pass = true;
|
||||
// }
|
||||
//
|
||||
|
||||
+616
-92
@@ -426,8 +426,8 @@ void func0f19d4ec(void)
|
||||
g_FiringRangeData.helpscriptoffset = 0;
|
||||
g_FiringRangeData.helpscriptenabled = false;
|
||||
g_FiringRangeData.helpscriptsleep = 0;
|
||||
g_FiringRangeData.unk464 = 0;
|
||||
g_FiringRangeData.numtargets = 0;
|
||||
g_FiringRangeData.menucountdown = 0;
|
||||
g_FiringRangeData.maxactivetargets = 0;
|
||||
|
||||
for (i = 0; i < 18; i++) {
|
||||
g_FiringRangeData.targets[i].prop = NULL;
|
||||
@@ -475,7 +475,7 @@ void frInitDefaults(void)
|
||||
|
||||
padUnpack(g_FrPads[0], PADFIELD_POS, &pad);
|
||||
|
||||
g_FiringRangeData.numtargets = 0;
|
||||
g_FiringRangeData.maxactivetargets = 0;
|
||||
g_FiringRangeData.goalscore = 0;
|
||||
g_FiringRangeData.timelimit = 200;
|
||||
g_FiringRangeData.ammolimit = 255;
|
||||
@@ -485,29 +485,29 @@ void frInitDefaults(void)
|
||||
g_FiringRangeData.speed = 1;
|
||||
|
||||
for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
g_FiringRangeData.targets[i].unk08.x = pad.pos.x;
|
||||
g_FiringRangeData.targets[i].unk08.y = pad.pos.y;
|
||||
g_FiringRangeData.targets[i].unk08.z = pad.pos.z;
|
||||
g_FiringRangeData.targets[i].unk08.z += 6.0f * i;
|
||||
g_FiringRangeData.targets[i].dstpos.x = pad.pos.x;
|
||||
g_FiringRangeData.targets[i].dstpos.y = pad.pos.y;
|
||||
g_FiringRangeData.targets[i].dstpos.z = pad.pos.z;
|
||||
g_FiringRangeData.targets[i].dstpos.z += 6.0f * i;
|
||||
|
||||
g_FiringRangeData.targets[i].unk00_01 = false;
|
||||
g_FiringRangeData.targets[i].unk00_06 = false;
|
||||
g_FiringRangeData.targets[i].unk00_03 = false;
|
||||
g_FiringRangeData.targets[i].rotateoncloak = false;
|
||||
g_FiringRangeData.targets[i].destroyed = false;
|
||||
g_FiringRangeData.targets[i].damage = 0;
|
||||
g_FiringRangeData.targets[i].scriptoffset = 0;
|
||||
|
||||
g_FiringRangeData.targets[i].unk1c = 0;
|
||||
g_FiringRangeData.targets[i].unk14 = 255 * 60;
|
||||
g_FiringRangeData.targets[i].unk18 = 0;
|
||||
g_FiringRangeData.targets[i].travelspeed = 0;
|
||||
g_FiringRangeData.targets[i].scriptsleep = SECSTOFRAMES60(255);
|
||||
g_FiringRangeData.targets[i].timeuntilrotate = 0;
|
||||
|
||||
g_FiringRangeData.targets[i].unk00_05 = false;
|
||||
g_FiringRangeData.targets[i].unk24 = 0;
|
||||
g_FiringRangeData.targets[i].rotating = false;
|
||||
g_FiringRangeData.targets[i].rotatespeed = 0;
|
||||
g_FiringRangeData.targets[i].angle = 0;
|
||||
g_FiringRangeData.targets[i].unk2c = 0;
|
||||
g_FiringRangeData.targets[i].rotatetoangle = 0;
|
||||
g_FiringRangeData.targets[i].unk31 = 0;
|
||||
g_FiringRangeData.targets[i].unk32 = 0;
|
||||
g_FiringRangeData.targets[i].unk33 = 0;
|
||||
g_FiringRangeData.targets[i].unk38 = 0;
|
||||
g_FiringRangeData.targets[i].travelling = false;
|
||||
g_FiringRangeData.targets[i].invincibletimer = 0;
|
||||
g_FiringRangeData.targets[i].frpadnum = -1;
|
||||
|
||||
func0f13e40c(g_FiringRangeData.targets[i].prop, false);
|
||||
@@ -516,9 +516,9 @@ void frInitDefaults(void)
|
||||
|
||||
g_FiringRangeData.timetaken = -240;
|
||||
g_FiringRangeData.score = 0;
|
||||
g_FiringRangeData.curtarget = 0;
|
||||
g_FiringRangeData.numtargets = 0;
|
||||
g_FiringRangeData.targetsdestroyed = 0;
|
||||
g_FiringRangeData.unk464 = 0;
|
||||
g_FiringRangeData.menucountdown = 0;
|
||||
g_FiringRangeData.unk470 = 0;
|
||||
g_FiringRangeData.feedbackzone = 0;
|
||||
g_FiringRangeData.feedbackttl = 0;
|
||||
@@ -533,7 +533,7 @@ void frInitDefaults(void)
|
||||
g_FiringRangeData.helpscriptenabled = false;
|
||||
g_FiringRangeData.helpscriptsleep = 0;
|
||||
g_FiringRangeData.proxyendtimer = 0;
|
||||
g_FiringRangeData.unk465_04 = false;
|
||||
g_FiringRangeData.donealarm = false;
|
||||
g_FiringRangeData.ammohasgrace = true;
|
||||
g_FiringRangeData.ammoextra = -1;
|
||||
}
|
||||
@@ -978,27 +978,27 @@ glabel var7f1b93ec
|
||||
// offset += 5;
|
||||
// break;
|
||||
// }
|
||||
// if (g_FiringRangeData.curtarget < ARRAYCOUNT(g_FiringRangeData.targets)) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].frpadindex = frResolveFrPad(script[offset + 1]);
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].scriptindex = script[offset + 2];
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].maxdamage = script[offset + 3];
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].unk00_01 = true;
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].flags = script[offset + 4];
|
||||
// if (g_FiringRangeData.numtargets < ARRAYCOUNT(g_FiringRangeData.targets)) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].frpadindex = frResolveFrPad(script[offset + 1]);
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].scriptindex = script[offset + 2];
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].maxdamage = script[offset + 3];
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].unk00_01 = true;
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].flags = script[offset + 4];
|
||||
//
|
||||
// if (g_FiringRangeData.targets[g_FiringRangeData.curtarget].flags & FRTARGETFLAG_08) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].unk00_06 = true;
|
||||
// if (g_FiringRangeData.targets[g_FiringRangeData.numtargets].flags & FRTARGETFLAG_ROTATEONCLOAK) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].rotateoncloak = true;
|
||||
// }
|
||||
//
|
||||
// if (g_FiringRangeData.targets[g_FiringRangeData.curtarget].flags & FRTARGETFLAG_20) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.curtarget].maxdamage = 1;
|
||||
// if (g_FiringRangeData.targets[g_FiringRangeData.numtargets].flags & FRTARGETFLAG_ONEHITEXPLODE) {
|
||||
// g_FiringRangeData.targets[g_FiringRangeData.numtargets].maxdamage = 1;
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.curtarget++;
|
||||
// g_FiringRangeData.numtargets++;
|
||||
// }
|
||||
// offset += 5;
|
||||
// break;
|
||||
// case FRCMD_SETNUMTARGETS: // f19db00
|
||||
// g_FiringRangeData.numtargets = script[offset + 1 + g_FiringRangeData.difficulty];
|
||||
// case FRCMD_SETMAXACTIVETARGETS: // f19db00
|
||||
// g_FiringRangeData.maxactivetargets = script[offset + 1 + g_FiringRangeData.difficulty];
|
||||
// offset += 4;
|
||||
// break;
|
||||
// case FRCMD_SETSCOREMULTIPLIER: // f19db24
|
||||
@@ -1161,7 +1161,7 @@ void frExecuteHelpScript(void)
|
||||
g_FiringRangeData.helpscriptoffset += 2;
|
||||
break;
|
||||
case FRCMD_WAITSECONDS:
|
||||
g_FiringRangeData.helpscriptsleep = script[offset + 1] * 60;
|
||||
g_FiringRangeData.helpscriptsleep = SECSTOFRAMES60(script[offset + 1]);
|
||||
g_FiringRangeData.helpscriptoffset += 2;
|
||||
break;
|
||||
case FRCMD_WAITUNTILSHOOT:
|
||||
@@ -1442,8 +1442,8 @@ glabel var7f1b941c
|
||||
//
|
||||
// switch (script[offset]) {
|
||||
// case FRCMD_END:
|
||||
// g_FiringRangeData.targets[targetnum].unk00_04 = true;
|
||||
// g_FiringRangeData.targets[targetnum].unk14 = 255 * 60;
|
||||
// g_FiringRangeData.targets[targetnum].scriptenabled = true;
|
||||
// g_FiringRangeData.targets[targetnum].scriptsleep = SECSTOFRAMES60(255);
|
||||
// return true;
|
||||
// case FRCMD_GOTOPAD:
|
||||
// frpadnum = frResolveFrPad(script[offset + 1]);
|
||||
@@ -1457,14 +1457,14 @@ glabel var7f1b941c
|
||||
//
|
||||
// padUnpack(g_FrPads[frpadnum], PADFIELD_POS, &pad);
|
||||
//
|
||||
// g_FiringRangeData.targets[targetnum].unk08.x = pad.pos.x;
|
||||
// g_FiringRangeData.targets[targetnum].unk08.y = pad.pos.y;
|
||||
// g_FiringRangeData.targets[targetnum].unk08.z = pad.pos.z;
|
||||
// g_FiringRangeData.targets[targetnum].unk08.z += 6.0f * targetnum;
|
||||
// g_FiringRangeData.targets[targetnum].dstpos.x = pad.pos.x;
|
||||
// g_FiringRangeData.targets[targetnum].dstpos.y = pad.pos.y;
|
||||
// g_FiringRangeData.targets[targetnum].dstpos.z = pad.pos.z;
|
||||
// g_FiringRangeData.targets[targetnum].dstpos.z += 6.0f * targetnum;
|
||||
//
|
||||
// if (script[offset + 2] == 0xff) {
|
||||
// g_FiringRangeData.targets[targetnum].unk1c = -1;
|
||||
// g_FiringRangeData.targets[targetnum].unk33 = 1;
|
||||
// g_FiringRangeData.targets[targetnum].travelspeed = -1;
|
||||
// g_FiringRangeData.targets[targetnum].travelling = true;
|
||||
// } else {
|
||||
// if (g_FrNumSounds < 3) {
|
||||
// g_FrNumSounds++;
|
||||
@@ -1472,11 +1472,11 @@ glabel var7f1b941c
|
||||
// -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.targets[targetnum].unk1c = (script[offset + 2] / 60.0f) * g_FiringRangeData.speed;
|
||||
// g_FiringRangeData.targets[targetnum].unk33 = 1;
|
||||
// g_FiringRangeData.targets[targetnum].travelspeed = (script[offset + 2] / 60.0f) * g_FiringRangeData.speed;
|
||||
// g_FiringRangeData.targets[targetnum].travelling = true;
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.targets[targetnum].unk14 = script[offset + 3] * 60;
|
||||
// g_FiringRangeData.targets[targetnum].scriptsleep = SECSTOFRAMES60(script[offset + 3]);
|
||||
// g_FiringRangeData.targets[targetnum].unk32 = 0;
|
||||
// g_FiringRangeData.targets[targetnum].scriptoffset += 4;
|
||||
// return true;
|
||||
@@ -1484,22 +1484,22 @@ glabel var7f1b941c
|
||||
// g_FiringRangeData.targets[targetnum].scriptoffset = 0;
|
||||
// return true;
|
||||
// case FRCMD_0E:
|
||||
// g_FiringRangeData.targets[targetnum].unk00_04 = true;
|
||||
// g_FiringRangeData.targets[targetnum].unk14 = script[offset + 1] * 60;
|
||||
// g_FiringRangeData.targets[targetnum].scriptenabled = true;
|
||||
// g_FiringRangeData.targets[targetnum].scriptsleep = SECSTOFRAMES60(script[offset + 1]);
|
||||
// g_FiringRangeData.targets[targetnum].scriptoffset += 2;
|
||||
// return true;
|
||||
// case FRCMD_ROTATE:
|
||||
// if (g_FiringRangeData.targets[targetnum].unk00_06 == false) {
|
||||
// if (g_FiringRangeData.targets[targetnum].rotateoncloak == false) {
|
||||
// f32 angles[4];
|
||||
// angles[0] = DEG2RAD(-90);
|
||||
// angles[1] = DEG2RAD(-180);
|
||||
// angles[2] = DEG2RAD(90);
|
||||
// angles[3] = DEG2RAD(180);
|
||||
//
|
||||
// g_FiringRangeData.targets[targetnum].unk2c = g_FiringRangeData.targets[targetnum].angle + angles[script[offset + 1]];
|
||||
// g_FiringRangeData.targets[targetnum].unk24 = angles[script[offset + 1]] / (script[offset + 2] * 15);
|
||||
// g_FiringRangeData.targets[targetnum].unk00_05 = true;
|
||||
// g_FiringRangeData.targets[targetnum].unk00_04 = false;
|
||||
// g_FiringRangeData.targets[targetnum].rotatetoangle = g_FiringRangeData.targets[targetnum].angle + angles[script[offset + 1]];
|
||||
// g_FiringRangeData.targets[targetnum].rotatespeed = angles[script[offset + 1]] / (script[offset + 2] * 15);
|
||||
// g_FiringRangeData.targets[targetnum].rotating = true;
|
||||
// g_FiringRangeData.targets[targetnum].scriptenabled = false;
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.targets[targetnum].scriptoffset += 3;
|
||||
@@ -1563,15 +1563,15 @@ void frInitTargets(void)
|
||||
prop->timetoregen = 0;
|
||||
|
||||
if (g_FiringRangeData.targets[i].unk00_01) {
|
||||
g_FiringRangeData.targets[i].unk00_04 = false;
|
||||
g_FiringRangeData.targets[i].unk00_03 = false;
|
||||
g_FiringRangeData.targets[i].scriptenabled = false;
|
||||
g_FiringRangeData.targets[i].destroyed = false;
|
||||
|
||||
if (count < g_FiringRangeData.numtargets) {
|
||||
if (count < g_FiringRangeData.maxactivetargets) {
|
||||
obj->flags2 &= ~OBJFLAG2_INVISIBLE;
|
||||
g_FiringRangeData.targets[i].unk00_02 = true;
|
||||
g_FiringRangeData.targets[i].active = true;
|
||||
} else {
|
||||
obj->flags2 |= OBJFLAG2_INVISIBLE;
|
||||
g_FiringRangeData.targets[i].unk00_02 = false;
|
||||
g_FiringRangeData.targets[i].active = false;
|
||||
}
|
||||
|
||||
padUnpack(g_FrPads[g_FiringRangeData.targets[i].frpadindex], PADFIELD_POS, &pospad.pad);
|
||||
@@ -1583,10 +1583,10 @@ void frInitTargets(void)
|
||||
|
||||
frExecuteTargetScript(i);
|
||||
|
||||
if (g_FiringRangeData.targets[i].unk1c == -1) {
|
||||
pospad.pos.x = g_FiringRangeData.targets[i].unk08.x;
|
||||
pospad.pos.y = g_FiringRangeData.targets[i].unk08.y;
|
||||
pospad.pos.z = g_FiringRangeData.targets[i].unk08.z;
|
||||
if (g_FiringRangeData.targets[i].travelspeed == -1) {
|
||||
pospad.pos.x = g_FiringRangeData.targets[i].dstpos.x;
|
||||
pospad.pos.y = g_FiringRangeData.targets[i].dstpos.y;
|
||||
pospad.pos.z = g_FiringRangeData.targets[i].dstpos.z;
|
||||
}
|
||||
|
||||
count++;
|
||||
@@ -1600,7 +1600,7 @@ void frInitTargets(void)
|
||||
pospad.pos.z = 6.0f * i;
|
||||
}
|
||||
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_10) {
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_SPAWNFACINGAWAY) {
|
||||
func00016374(0.0f, sp144);
|
||||
g_FiringRangeData.targets[i].angle = M_PI;
|
||||
} else {
|
||||
@@ -2011,36 +2011,36 @@ void frSetFailReason(s32 failreason)
|
||||
frEndSession(false);
|
||||
|
||||
g_FiringRangeData.failreason = frWasTooInaccurate() ? FRFAILREASON_INACCURATE : failreason;
|
||||
g_FiringRangeData.unk465_00 = 2;
|
||||
g_FiringRangeData.unk464 = 60;
|
||||
g_FiringRangeData.menutype = FRMENUTYPE_FAILED;
|
||||
g_FiringRangeData.menucountdown = 60;
|
||||
}
|
||||
|
||||
void func0f19f18c(void)
|
||||
void frSetCompleted(void)
|
||||
{
|
||||
frEndSession(false);
|
||||
|
||||
if (frWasTooInaccurate()) {
|
||||
g_FiringRangeData.failreason = FRFAILREASON_INACCURATE;
|
||||
g_FiringRangeData.unk465_00 = 2;
|
||||
g_FiringRangeData.menutype = FRMENUTYPE_FAILED;
|
||||
} else {
|
||||
u32 frweaponindex = frGetWeaponIndexByWeapon(frGetWeaponBySlot(g_FiringRangeData.slot));
|
||||
frSaveScoreIfBest(frweaponindex, g_FiringRangeData.difficulty + 1);
|
||||
g_FiringRangeData.unk465_00 = 3;
|
||||
g_FiringRangeData.menutype = FRMENUTYPE_COMPLETED;
|
||||
}
|
||||
|
||||
g_FiringRangeData.unk464 = 60;
|
||||
g_FiringRangeData.menucountdown = 60;
|
||||
}
|
||||
|
||||
bool func0f19f220(struct prop *prop)
|
||||
bool frIsTargetOneHitExplodable(struct prop *prop)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 18; i++) {
|
||||
for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
if (g_FiringRangeData.targets[i].unk00_01
|
||||
&& g_FiringRangeData.targets[i].unk00_03 == 0
|
||||
&& g_FiringRangeData.targets[i].unk00_02
|
||||
&& g_FiringRangeData.targets[i].destroyed == false
|
||||
&& g_FiringRangeData.targets[i].active
|
||||
&& prop == g_FiringRangeData.targets[i].prop) {
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_20) {
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_ONEHITEXPLODE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2073,7 +2073,7 @@ bool func0f19f2ec(struct prop *prop, struct coord *pos)
|
||||
if (prop == g_FiringRangeData.targets[i].prop) {
|
||||
f32 angle;
|
||||
|
||||
if (g_FiringRangeData.targets[i].unk00_03) {
|
||||
if (g_FiringRangeData.targets[i].destroyed) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2219,8 +2219,8 @@ glabel var7f1b94bc
|
||||
// // Make list of targets which are facing the laptop gun
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].unk00_03 == 0
|
||||
// && g_FiringRangeData.targets[i].unk00_02) {
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].active) {
|
||||
// f32 angle = func0f19f294(&g_FiringRangeData.targets[i].prop->pos, g_FiringRangeData.targets[i].angle, autogunpos);
|
||||
//
|
||||
// //if (!(angle > BADDEG2RAD(90) && angle < BADDEG2RAD(270))) {
|
||||
@@ -3068,7 +3068,7 @@ glabel var7f1b94e4
|
||||
/* f1a02f4: 0182082a */ slt $at,$t4,$v0
|
||||
/* f1a02f8: 14200005 */ bnez $at,.L0f1a0310
|
||||
/* f1a02fc: 00000000 */ nop
|
||||
/* f1a0300: 0fc67c63 */ jal func0f19f18c
|
||||
/* f1a0300: 0fc67c63 */ jal frSetCompleted
|
||||
/* f1a0304: 00000000 */ nop
|
||||
/* f1a0308: 1000017a */ b .L0f1a08f4
|
||||
/* f1a030c: 8fbf007c */ lw $ra,0x7c($sp)
|
||||
@@ -3088,7 +3088,7 @@ glabel var7f1b94e4
|
||||
/* f1a033c: 54200006 */ bnezl $at,.L0f1a0358
|
||||
/* f1a0340: 92ae0454 */ lbu $t6,0x454($s5)
|
||||
.L0f1a0344:
|
||||
/* f1a0344: 0fc67c63 */ jal func0f19f18c
|
||||
/* f1a0344: 0fc67c63 */ jal frSetCompleted
|
||||
/* f1a0348: 00000000 */ nop
|
||||
/* f1a034c: 10000169 */ b .L0f1a08f4
|
||||
/* f1a0350: 8fbf007c */ lw $ra,0x7c($sp)
|
||||
@@ -3500,6 +3500,530 @@ glabel var7f1b94e4
|
||||
/* f1a0920: 27bd0170 */ addiu $sp,$sp,0x170
|
||||
);
|
||||
|
||||
// Mismatch issues:
|
||||
// - Floating point math at 448 is very different
|
||||
// - g_FrNumSounds at 590 is calculated differently
|
||||
// - Goal has extra mov.s instruction near 730
|
||||
//void frTick(void)
|
||||
//{
|
||||
// struct coord diff; // sp344
|
||||
// struct coord newpos; // sp332
|
||||
// f32 s5[9]; // sp152
|
||||
// f32 s4[21]; // sp188
|
||||
// s32 ammotype;
|
||||
// s32 capacity;
|
||||
// s32 weaponnum;
|
||||
// u8 weaponnum2;
|
||||
// struct prop *prop;
|
||||
// struct defaultobj *obj;
|
||||
// struct defaultobj *obj2;
|
||||
// s32 invincible;
|
||||
// u8 exploding;
|
||||
// s32 i;
|
||||
// s32 j;
|
||||
// f32 dist;
|
||||
// f32 mult;
|
||||
// struct inventory_ammo *ammo;
|
||||
// struct model08thing *model08thing;
|
||||
// bool oldside;
|
||||
// bool newside;
|
||||
//
|
||||
// // 9c8
|
||||
// if (g_FrIsValidWeapon
|
||||
// && g_Vars.currentplayer->unk1583_04 == 0
|
||||
// && currentPlayerCanHaveWeapon(frGetWeaponBySlot(g_FiringRangeData.slot))) {
|
||||
// // a0c
|
||||
// currentPlayerEquipWeapon(frGetWeaponBySlot(g_FiringRangeData.slot));
|
||||
// }
|
||||
//
|
||||
// // a1c
|
||||
// // Handle the menu countdown
|
||||
// if (g_FiringRangeData.menucountdown != 0) {
|
||||
// g_FiringRangeData.menucountdown -= g_Vars.lvupdate240_60;
|
||||
//
|
||||
// // Prevent showing the menu until gun is put away
|
||||
// if (g_FiringRangeData.menucountdown <= 0) {
|
||||
// if ((g_FiringRangeData.menutype == FRMENUTYPE_FAILED || g_FiringRangeData.menutype == FRMENUTYPE_COMPLETED)
|
||||
// && g_Vars.currentplayer->hands[0].weaponnum != WEAPON_UNARMED) {
|
||||
// g_FiringRangeData.menucountdown = 1;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (g_FiringRangeData.menucountdown <= 0) {
|
||||
// g_FiringRangeData.menucountdown = 0;
|
||||
//
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].prop) {
|
||||
// func0f0926bc(g_FiringRangeData.targets[i].prop, 1, 0xffff);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// switch (g_FiringRangeData.menutype) {
|
||||
// case FRMENUTYPE_WEAPONLIST:
|
||||
// func0f0f85e0(ciGetFrWeaponListMenuDialog(), MENUROOT_TRAINING);
|
||||
// break;
|
||||
// case FRMENUTYPE_DETAILS:
|
||||
// func0f0f85e0(&menudialog_frtraininginfo2, MENUROOT_TRAINING);
|
||||
// break;
|
||||
// case FRMENUTYPE_FAILED:
|
||||
// audioStart(var80095200, 0x5db, NULL, -1, -1, -1, -1, -1);
|
||||
// func0f0f85e0(&menudialog_frtrainingstats2, MENUROOT_TRAINING);
|
||||
// break;
|
||||
// case FRMENUTYPE_COMPLETED:
|
||||
// audioStart(var80095200, 0x5dc, NULL, -1, -1, -1, -1, -1);
|
||||
// func0f0f85e0(&menudialog_frtrainingstats, MENUROOT_TRAINING);
|
||||
// func0f1094e4(&var800a22c0, 0, 0);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // be8
|
||||
// // End the session if the player slipped through the door before it closed
|
||||
// if (g_Vars.currentplayer->prop->rooms[0] != CIROOM_FIRINGRANGE) {
|
||||
// if (g_FrIsValidWeapon) {
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].unk31 == 0
|
||||
// && g_FiringRangeData.targets[i].travelling) {
|
||||
// g_FiringRangeData.targets[i].unk31 = 1;
|
||||
// func0f0926bc(g_FiringRangeData.targets[i].prop, 1, 0xffff);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// g_Vars.currentplayer->training = false;
|
||||
// frEndSession(true);
|
||||
// chrUnsetStageFlag(NULL, STAGEFLAG_CI_IN_TRAINING);
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // c94
|
||||
// if (!g_FrIsValidWeapon) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// if (g_Vars.currentplayer->isdead) {
|
||||
// frEndSession(false);
|
||||
// }
|
||||
//
|
||||
// // If paused, stop any target sounds
|
||||
// if (g_Vars.lvupdate240 == 0) {
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].unk31 == 0
|
||||
// && g_FiringRangeData.targets[i].travelling) {
|
||||
// g_FiringRangeData.targets[i].unk31 = 1;
|
||||
// func0f0926bc(g_FiringRangeData.targets[i].prop, 1, 0xffff);
|
||||
// }
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// g_Vars.currentplayer->training = true;
|
||||
// frExecuteHelpScript();
|
||||
//
|
||||
// // d34
|
||||
// // Top up the player's ammo if the config defined more ammo than the
|
||||
// // weapon allows, or if it defined unlimited ammo
|
||||
// if (g_FiringRangeData.numshotssincetopup != 0) {
|
||||
// u32 tmp;
|
||||
// weaponnum = frGetWeaponBySlot(g_FiringRangeData.slot);
|
||||
// ammotype = weaponGetAmmoType(weaponnum, 0);
|
||||
// capacity = ammotypeGetMaxCapacity(ammotype);
|
||||
// ammo = weaponGetAmmoByFunction(weaponnum, 0);
|
||||
// capacity -= (ammo ? ammo->clipsize : 0);
|
||||
//
|
||||
// // d8c
|
||||
// if (g_FiringRangeData.ammoextra > 0) {
|
||||
// tmp = ammoGetQuantity(ammotype);
|
||||
// g_FiringRangeData.ammoextra -= g_FiringRangeData.numshotssincetopup;
|
||||
//
|
||||
// if (g_FiringRangeData.ammoextra < 0) {
|
||||
// g_FiringRangeData.ammoextra = 0;
|
||||
// }
|
||||
//
|
||||
// capacity = tmp + g_FiringRangeData.numshotssincetopup;
|
||||
// currentPlayerSetAmmoQuantity(ammotype, capacity);
|
||||
// } else /*dd4*/ if (g_FiringRangeData.ammoextra == -1) {
|
||||
// currentPlayerSetAmmoQuantity(ammotype, capacity);
|
||||
// }
|
||||
//
|
||||
// // de8
|
||||
// if (weaponnum == WEAPON_SUPERDRAGON) {
|
||||
// capacity = ammotypeGetMaxCapacity(AMMOTYPE_DEVASTATOR);
|
||||
//
|
||||
// // e04
|
||||
// if (g_FiringRangeData.sdgrenadeextra > 0) {
|
||||
// tmp = ammoGetQuantity(AMMOTYPE_DEVASTATOR);
|
||||
// g_FiringRangeData.sdgrenadeextra -= g_FiringRangeData.numshotssincetopup;
|
||||
//
|
||||
// if (g_FiringRangeData.sdgrenadeextra < 0) {
|
||||
// g_FiringRangeData.sdgrenadeextra = 0;
|
||||
// }
|
||||
//
|
||||
// capacity = tmp + g_FiringRangeData.numshotssincetopup;
|
||||
// currentPlayerSetAmmoQuantity(AMMOTYPE_DEVASTATOR, capacity);
|
||||
// } else /*e4c*/ if (g_FiringRangeData.sdgrenadeextra == -1) {
|
||||
// currentPlayerSetAmmoQuantity(AMMOTYPE_DEVASTATOR, capacity);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // e60
|
||||
// g_FiringRangeData.numshotssincetopup = 0;
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.timetaken += g_Vars.lvupdate240_60;
|
||||
//
|
||||
// // e6c
|
||||
// // Handle prestart
|
||||
// if (g_FiringRangeData.timetaken < 0) {
|
||||
// if (g_FiringRangeData.numshots == 0) {
|
||||
// if (g_FiringRangeData.donealarm == false && g_FiringRangeData.timetaken > -180) {
|
||||
// g_FiringRangeData.donealarm = true;
|
||||
// audioStart(var80095200, 0x5d4, NULL, -1, -1, -1, -1, -1);
|
||||
// }
|
||||
//
|
||||
// if (!g_FiringRangeData.donelighting && g_FiringRangeData.timetaken > -225) {
|
||||
// frInitLighting();
|
||||
// }
|
||||
//
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // Fired a shot during prestart
|
||||
// if (!g_FiringRangeData.donelighting) {
|
||||
// frInitLighting();
|
||||
// }
|
||||
//
|
||||
// g_FiringRangeData.timetaken = 0;
|
||||
// g_FiringRangeData.donealarm = true;
|
||||
// }
|
||||
//
|
||||
// // f38
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].active) {
|
||||
// // f7c
|
||||
// invincible = false;
|
||||
// exploding = false;
|
||||
// weaponnum2 = frGetWeaponBySlot(g_FiringRangeData.slot);
|
||||
// prop = g_FiringRangeData.targets[i].prop;
|
||||
// obj = prop->obj;
|
||||
//
|
||||
// // f94
|
||||
// switch (weaponnum2) {
|
||||
// case WEAPON_GRENADE:
|
||||
// case WEAPON_PROXIMITYMINE:
|
||||
// func0f08abd4(&prop->pos, 1);
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// // fb0
|
||||
// if (g_FiringRangeData.targets[i].travelling
|
||||
// && g_FiringRangeData.targets[i].unk31
|
||||
// && g_FiringRangeData.targets[i].travelspeed != -1) {
|
||||
// g_FiringRangeData.targets[i].unk31 = 0;
|
||||
// func0f0939f8(NULL, g_FiringRangeData.targets[i].prop, 0x5d9, -1,
|
||||
// -1, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1);
|
||||
// }
|
||||
//
|
||||
// // 028
|
||||
// if (g_FiringRangeData.targets[i].angle > 2.2915925979614f
|
||||
// && g_FiringRangeData.targets[i].angle < 3.9915928840637f) {
|
||||
// obj->damage = 0;
|
||||
// }
|
||||
//
|
||||
// // 058
|
||||
// if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_TMPINVINCIBLE
|
||||
// && g_FiringRangeData.targets[i].invincibletimer < 300) {
|
||||
// invincible = true;
|
||||
// g_FiringRangeData.targets[i].invincibletimer += g_Vars.lvupdate240_60;
|
||||
// }
|
||||
//
|
||||
// // 088
|
||||
// if (obj->damage > 0) {
|
||||
// // 090
|
||||
// if (invincible || g_FiringRangeData.targets[i].angle == M_PI) {
|
||||
// obj->damage = 0;
|
||||
// } else /*0bc*/ if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_ONEHITEXPLODE
|
||||
// || obj->damage >= obj->maxdamage
|
||||
// || frGetWeaponBySlot(g_FiringRangeData.slot) == WEAPON_PHOENIX) {
|
||||
// g_FiringRangeData.numhitsbullseye++;
|
||||
// g_FiringRangeData.score += 10;
|
||||
// exploding = true;
|
||||
// g_FiringRangeData.feedbackttl = 60;
|
||||
// g_FiringRangeData.feedbackzone = FRZONE_EXPLODE;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 11c
|
||||
// // Handle target being destroyed
|
||||
// if (exploding || (g_FiringRangeData.targets[i].maxdamage != 255 && g_FiringRangeData.targets[i].damage >= g_FiringRangeData.targets[i].maxdamage)) {
|
||||
// // 150
|
||||
// model08thing = func0f068af4(obj);
|
||||
//
|
||||
// if (g_FrNumSounds && g_FiringRangeData.targets[i].travelling) {
|
||||
// g_FrNumSounds--;
|
||||
// func0f0926bc(prop, 1, 0xffff);
|
||||
// }
|
||||
//
|
||||
// // 1d0
|
||||
// func0f150820(&prop->pos, &obj->realrot[0], &obj->realrot[3], &obj->realrot[6],
|
||||
// model08thing->unk04[0], model08thing->unk04[1], model08thing->unk04[2],
|
||||
// model08thing->unk04[3], 2, prop);
|
||||
//
|
||||
// g_FiringRangeData.targetsdestroyed++;
|
||||
//
|
||||
// if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_ONEHITEXPLODE) {
|
||||
// explosionCreateSimple(g_FiringRangeData.targets[i].prop, &g_FiringRangeData.targets[i].prop->pos, g_FiringRangeData.targets[i].prop->rooms, EXPLOSIONTYPE_5, 1);
|
||||
// }
|
||||
//
|
||||
// // 210
|
||||
// g_FiringRangeData.targets[i].travelling = false;
|
||||
// g_FiringRangeData.targets[i].active = false;
|
||||
// g_FiringRangeData.targets[i].destroyed = true;
|
||||
//
|
||||
// obj->flags2 |= OBJFLAG2_INVISIBLE;
|
||||
//
|
||||
// prop->pos.x = 0;
|
||||
// prop->pos.y = -5000;
|
||||
// prop->pos.z = 0;
|
||||
//
|
||||
// func0f069c70(obj, true, false);
|
||||
//
|
||||
// // 25c
|
||||
// // Activate another target
|
||||
// for (j = 0; j < ARRAYCOUNT(g_FiringRangeData.targets); j++) {
|
||||
// if (g_FiringRangeData.targets[j].destroyed == false
|
||||
// && g_FiringRangeData.targets[j].unk00_01
|
||||
// && g_FiringRangeData.targets[j].active == false) {
|
||||
// obj2 = g_FiringRangeData.targets[j].prop->obj;
|
||||
// g_FiringRangeData.targets[j].active = true;
|
||||
// obj2->flags2 &= ~OBJFLAG2_INVISIBLE;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 2bc
|
||||
// }
|
||||
//
|
||||
// // 2dc
|
||||
// if (g_FiringRangeData.goaltargets == 255) {
|
||||
// if (g_FiringRangeData.goalscore && g_FiringRangeData.score >= g_FiringRangeData.goalscore) {
|
||||
// frSetCompleted();
|
||||
// return;
|
||||
// }
|
||||
// } else if (g_FiringRangeData.targetsdestroyed >= g_FiringRangeData.goaltargets
|
||||
// && (g_FiringRangeData.goalscore == 0 || g_FiringRangeData.score >= g_FiringRangeData.goalscore)) {
|
||||
// frSetCompleted();
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 354
|
||||
// if (g_FiringRangeData.targetsdestroyed >= g_FiringRangeData.numtargets) {
|
||||
// frSetFailReason(FRFAILREASON_SCOREUNATTAINABLE);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 374
|
||||
// if (frIsAmmoWasted()) {
|
||||
// frSetFailReason(FRFAILREASON_OUTOFAMMO);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 398
|
||||
// if (g_FiringRangeData.timelimit != 255
|
||||
// && g_FiringRangeData.timetaken >= SECSTOFRAMES60(g_FiringRangeData.timelimit)) {
|
||||
// frSetFailReason(FRFAILREASON_TIMEOVER);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// // 3d0
|
||||
// // Iterate targets and handle travelling, rotation and script execution
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].active) {
|
||||
// prop = g_FiringRangeData.targets[i].prop;
|
||||
// obj = prop->obj;
|
||||
//
|
||||
// // 410
|
||||
// if (g_FiringRangeData.targets[i].travelling) {
|
||||
// // 430
|
||||
// if (g_FiringRangeData.targets[i].travelspeed == -1) {
|
||||
// g_FiringRangeData.targets[i].unk32 = 1;
|
||||
// g_FiringRangeData.targets[i].travelling = false;
|
||||
// mult = 1;
|
||||
// dist = -2;
|
||||
// } else {
|
||||
// // 448
|
||||
// f32 sum = 0;
|
||||
// diff.x = g_FiringRangeData.targets[i].dstpos.x - prop->pos.x;
|
||||
// diff.y = g_FiringRangeData.targets[i].dstpos.y - prop->pos.y;
|
||||
// diff.z = g_FiringRangeData.targets[i].dstpos.z - prop->pos.z;
|
||||
// sum = sum + diff.x * diff.x;
|
||||
// sum = sum + diff.y * diff.y;
|
||||
// sum = sum + diff.z * diff.z;
|
||||
//
|
||||
// dist = sqrtf(sum);
|
||||
// mult = 1;
|
||||
//
|
||||
// // 4b0
|
||||
// if (dist != 0) {
|
||||
// mult = (g_FiringRangeData.targets[i].travelspeed * g_Vars.lvupdate240) * 0.25f;
|
||||
// diff.x *= 1.0f / dist;
|
||||
// diff.y *= 1.0f / dist;
|
||||
// diff.z *= 1.0f / dist;
|
||||
// newpos.x = diff.x * mult + prop->pos.x;
|
||||
// newpos.y = diff.y * mult + prop->pos.y;
|
||||
// newpos.z = diff.z * mult + prop->pos.z;
|
||||
// } else {
|
||||
// dist = -2;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 550
|
||||
// if (mult >= dist) {
|
||||
// // Stopping
|
||||
// newpos.x = g_FiringRangeData.targets[i].dstpos.x;
|
||||
// newpos.y = g_FiringRangeData.targets[i].dstpos.y;
|
||||
// newpos.z = g_FiringRangeData.targets[i].dstpos.z;
|
||||
//
|
||||
// g_FiringRangeData.targets[i].scriptenabled = true;
|
||||
// g_FiringRangeData.targets[i].travelling = false;
|
||||
//
|
||||
// if (g_FiringRangeData.targets[i].unk32 == false) {
|
||||
// // 590
|
||||
// g_FiringRangeData.targets[i].unk32 = true;
|
||||
//
|
||||
// if (g_FrNumSounds) {
|
||||
// g_FrNumSounds--;
|
||||
// }
|
||||
//
|
||||
// // 5b8
|
||||
// func0f0926bc(prop, 1, 0xffff);
|
||||
// func0f0939f8(NULL, prop, 0x5da, -1,
|
||||
// -1, 1024, 0, 0, 0, -1, 0, -1, -1, -1, -1);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// prop->pos.x = newpos.x;
|
||||
// prop->pos.y = newpos.y;
|
||||
// prop->pos.z = newpos.z;
|
||||
//
|
||||
// func0f069c70(obj, true, false);
|
||||
// }
|
||||
//
|
||||
// // 63c
|
||||
// if (g_FiringRangeData.targets[i].rotateoncloak
|
||||
// && g_FiringRangeData.targets[i].rotating == false) {
|
||||
// // 650
|
||||
// if (g_FiringRangeData.targets[i].timeuntilrotate == 0) {
|
||||
// struct chrdata *chr = g_Vars.currentplayer->prop->chr;
|
||||
// bool cloaked = chr->hidden & CHRHFLAG_CLOAKED;
|
||||
//
|
||||
// // 670
|
||||
// if (cloaked) {
|
||||
// // 690
|
||||
// if (g_FiringRangeData.targets[i].angle == M_PI) {
|
||||
// g_FiringRangeData.targets[i].timeuntilrotate = 60;
|
||||
// g_FiringRangeData.targets[i].rotatetoangle = 0;
|
||||
// g_FiringRangeData.targets[i].rotatespeed = -M_PI / 90;
|
||||
// }
|
||||
// } else {
|
||||
// // 6ac
|
||||
// if (g_FiringRangeData.targets[i].angle == 0) {
|
||||
// g_FiringRangeData.targets[i].timeuntilrotate = 60;
|
||||
// g_FiringRangeData.targets[i].rotatetoangle = M_PI;
|
||||
// g_FiringRangeData.targets[i].rotatespeed = M_PI / 90;
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// // 6e4
|
||||
// g_FiringRangeData.targets[i].timeuntilrotate -= g_Vars.lvupdate240_60;
|
||||
//
|
||||
// if (g_FiringRangeData.targets[i].timeuntilrotate <= 0) {
|
||||
// g_FiringRangeData.targets[i].timeuntilrotate = 0;
|
||||
// g_FiringRangeData.targets[i].rotating = true;
|
||||
// }
|
||||
// }
|
||||
// } else /*70c*/ if (g_FiringRangeData.targets[i].rotating) {
|
||||
// f32 speed = g_FiringRangeData.targets[i].rotatespeed;
|
||||
// f32 toangle = g_FiringRangeData.targets[i].rotatetoangle;
|
||||
// oldside = 0;
|
||||
//
|
||||
// // 730
|
||||
// if (g_FiringRangeData.targets[i].angle < toangle) {
|
||||
// oldside = 1;
|
||||
// }
|
||||
//
|
||||
// oldside = (u8)oldside;
|
||||
//
|
||||
// // 73c
|
||||
// g_FiringRangeData.targets[i].angle += (speed * g_Vars.lvupdate240) * 0.25f;
|
||||
//
|
||||
// newside = 0;
|
||||
//
|
||||
// // 778
|
||||
// if (g_FiringRangeData.targets[i].angle < toangle) {
|
||||
// newside = 1;
|
||||
// }
|
||||
//
|
||||
// newside = (u8)newside;
|
||||
//
|
||||
// // 78c
|
||||
// if (newside != oldside || g_FiringRangeData.targets[i].angle == toangle) {
|
||||
// // 7b0
|
||||
// // Reached desired angle
|
||||
// g_FiringRangeData.targets[i].angle = toangle;
|
||||
// g_FiringRangeData.targets[i].rotating = false;
|
||||
// g_FiringRangeData.targets[i].scriptenabled = true;
|
||||
// g_FiringRangeData.targets[i].scriptsleep = 0;
|
||||
//
|
||||
// while (g_FiringRangeData.targets[i].angle > M_TAU) {
|
||||
// g_FiringRangeData.targets[i].angle -= M_TAU;
|
||||
// }
|
||||
//
|
||||
// while (g_FiringRangeData.targets[i].angle < 0) {
|
||||
// g_FiringRangeData.targets[i].angle += M_TAU;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 81c
|
||||
// func00016374(g_FiringRangeData.targets[i].angle + M_PI, s4);
|
||||
// func00015f04(obj->model->unk14, s4);
|
||||
// func00015da0(s4, s5);
|
||||
// func00015cd8(s5, obj->realrot);
|
||||
// }
|
||||
//
|
||||
// // 854
|
||||
// if (g_FiringRangeData.targets[i].scriptenabled
|
||||
// && g_FiringRangeData.targets[i].scriptsleep != SECSTOFRAMES60(255)) {
|
||||
// // 874
|
||||
// g_FiringRangeData.targets[i].scriptsleep -= g_Vars.lvupdate240_60;
|
||||
//
|
||||
// // 87c
|
||||
// if (g_FiringRangeData.targets[i].scriptsleep <= 0) {
|
||||
// g_FiringRangeData.targets[i].scriptenabled = false;
|
||||
//
|
||||
// while (!frExecuteTargetScript(i));
|
||||
//
|
||||
// if (frTargetIsAtScriptStart(i)) {
|
||||
// while (!frExecuteTargetScript(i));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
void func0f1a0924(struct prop *prop)
|
||||
{
|
||||
struct defaultobj *obj = prop->obj;
|
||||
@@ -3658,8 +4182,8 @@ glabel frChooseFarsightTarget
|
||||
);
|
||||
|
||||
// Mismatch because f26 and f28 are swapped and the multiplication order for
|
||||
// unk1c is different. f26 should be constant 0 (used in dist > 0 and value < 0
|
||||
// checks) and f28 should be bestvalue.
|
||||
// travelspeed is different. f26 should be constant 0 (used in dist > 0 and
|
||||
// value < 0 checks) and f28 should be bestvalue.
|
||||
//bool frChooseFarsightTarget(void)
|
||||
//{
|
||||
// f32 bestvalue = 1;
|
||||
@@ -3671,9 +4195,9 @@ glabel frChooseFarsightTarget
|
||||
// if (getCurrentPlayerWeaponId(0) == WEAPON_FARSIGHTXR20) {
|
||||
// for (i = 0; i < ARRAYCOUNT(g_FiringRangeData.targets); i++) {
|
||||
// if (g_FiringRangeData.targets[i].unk00_01
|
||||
// && g_FiringRangeData.targets[i].unk00_03 == 0
|
||||
// && g_FiringRangeData.targets[i].unk00_02
|
||||
// && g_FiringRangeData.targets[i].flags & FRTARGETFLAG_40) {
|
||||
// && g_FiringRangeData.targets[i].destroyed == false
|
||||
// && g_FiringRangeData.targets[i].active
|
||||
// && g_FiringRangeData.targets[i].flags & FRTARGETFLAG_FARSIGHTAUTOTARGETABLE) {
|
||||
// struct prop *prop = g_FiringRangeData.targets[i].prop;
|
||||
// f32 xdiff = g_Vars.currentplayer->bond2.unk10.x - prop->pos.x;
|
||||
// f32 ydiff = g_Vars.currentplayer->bond2.unk10.y - prop->pos.y;
|
||||
@@ -3705,8 +4229,8 @@ glabel frChooseFarsightTarget
|
||||
|
||||
s32 frIsInTraining(void)
|
||||
{
|
||||
if (g_FiringRangeData.unk464 > 0 &&
|
||||
(g_FiringRangeData.unk465_00 == 2 || g_FiringRangeData.unk465_00 == 3)) {
|
||||
if (g_FiringRangeData.menucountdown > 0 &&
|
||||
(g_FiringRangeData.menutype == FRMENUTYPE_FAILED || g_FiringRangeData.menutype == FRMENUTYPE_COMPLETED)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3733,12 +4257,12 @@ void frCalculateHit(struct defaultobj *obj, struct coord *hitpos, f32 maulerchar
|
||||
|
||||
f32 dist = sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff);
|
||||
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_20) {
|
||||
if (g_FiringRangeData.targets[i].flags & FRTARGETFLAG_ONEHITEXPLODE) {
|
||||
g_FiringRangeData.targets[i].damage = g_FiringRangeData.targets[i].maxdamage;
|
||||
} else if (frGetWeaponBySlot(g_FiringRangeData.slot) == WEAPON_MAULER) {
|
||||
g_FiringRangeData.targets[i].damage += (f32)((s32)(maulercharge * 0.1f) + 1);
|
||||
} else if ((g_FiringRangeData.targets[i].flags & FRTARGETFLAG_80) == 0
|
||||
|| g_FiringRangeData.targets[i].unk38 >= 300) {
|
||||
} else if ((g_FiringRangeData.targets[i].flags & FRTARGETFLAG_TMPINVINCIBLE) == 0
|
||||
|| g_FiringRangeData.targets[i].invincibletimer >= 300) {
|
||||
g_FiringRangeData.targets[i].damage++;
|
||||
}
|
||||
|
||||
@@ -3765,7 +4289,7 @@ void frCalculateHit(struct defaultobj *obj, struct coord *hitpos, f32 maulerchar
|
||||
void func0f1a0fc8(void)
|
||||
{
|
||||
g_FiringRangeData.numshots++;
|
||||
g_FiringRangeData.unk45a++;
|
||||
g_FiringRangeData.numshotssincetopup++;
|
||||
}
|
||||
|
||||
bool ciIsChrBioUnlocked(u32 bodynum)
|
||||
@@ -4887,12 +5411,12 @@ Gfx *frRenderHud(Gfx *gdl)
|
||||
mult = 1;
|
||||
}
|
||||
|
||||
if (!g_FrIsValidWeapon && g_FiringRangeData.unk464 <= 0) {
|
||||
if (!g_FrIsValidWeapon && g_FiringRangeData.menucountdown <= 0) {
|
||||
return gdl;
|
||||
}
|
||||
|
||||
if (g_FiringRangeData.unk464 != 0) {
|
||||
alpha = (f32)(g_FiringRangeData.unk464 * 160) / 60.0f;
|
||||
if (g_FiringRangeData.menucountdown != 0) {
|
||||
alpha = (f32)(g_FiringRangeData.menucountdown * 160) / 60.0f;
|
||||
}
|
||||
|
||||
gdl = func0f153628(gdl);
|
||||
|
||||
+38
-31
@@ -21,6 +21,7 @@
|
||||
#define PLAYERCOUNT() ((g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0) + (g_Vars.players[3] ? 1 : 0))
|
||||
#define PLAYERCOUNT3012() ((g_Vars.players[3] ? 1 : 0) + (g_Vars.players[0] ? 1 : 0) + (g_Vars.players[1] ? 1 : 0) + (g_Vars.players[2] ? 1 : 0))
|
||||
#define SECSTOFRAMES240(secs) (secs * 240)
|
||||
#define SECSTOFRAMES60(secs) (secs * 60)
|
||||
#define TEXT(bankid, index) ((bankid << 9) | index)
|
||||
|
||||
// These actions are assigned to chr->actiontype
|
||||
@@ -560,6 +561,7 @@
|
||||
|
||||
#define EXPLOSIONTYPE_0 0
|
||||
#define EXPLOSIONTYPE_3 3
|
||||
#define EXPLOSIONTYPE_5 5
|
||||
#define EXPLOSIONTYPE_8 8
|
||||
#define EXPLOSIONTYPE_12 12
|
||||
#define EXPLOSIONTYPE_14 14
|
||||
@@ -581,29 +583,29 @@
|
||||
#define FLOORTYPE_DIRT 7
|
||||
#define FLOORTYPE_SNOW 8
|
||||
|
||||
#define FRCMD_ADDTARGET 0x00
|
||||
#define FRCMD_SETNUMTARGETS 0x01
|
||||
#define FRCMD_SETGOALSCORE 0x02
|
||||
#define FRCMD_SETTIMELIMIT 0x03
|
||||
#define FRCMD_SETAMMOLIMIT 0x04
|
||||
#define FRCMD_SETEXTRASPEED 0x05
|
||||
#define FRCMD_SETGOALACCURACY 0x06
|
||||
#define FRCMD_SETGOALTARGETS 0x07
|
||||
#define FRCMD_SETHELPSCRIPT 0x08
|
||||
#define FRCMD_SETGRENADELIMIT 0x09
|
||||
#define FRCMD_0A 0x0a
|
||||
#define FRCMD_SETSCOREMULTIPLIER 0x0b
|
||||
#define FRCMD_GOTOPAD 0x0c
|
||||
#define FRCMD_RESTART 0x0d
|
||||
#define FRCMD_0E 0x0e
|
||||
#define FRCMD_ROTATE 0x0f
|
||||
#define FRCMD_HUDMSG 0x10
|
||||
#define FRCMD_WAITUNTILSHOOT 0x11
|
||||
#define FRCMD_WAITSECONDS 0x12
|
||||
#define FRCMD_END 0x13
|
||||
#define FRCMD_IFBRONZE 0xfb
|
||||
#define FRCMD_IFSILVER 0xfc
|
||||
#define FRCMD_IFGOLD 0xfd
|
||||
#define FRCMD_ADDTARGET 0x00
|
||||
#define FRCMD_SETMAXACTIVETARGETS 0x01
|
||||
#define FRCMD_SETGOALSCORE 0x02
|
||||
#define FRCMD_SETTIMELIMIT 0x03
|
||||
#define FRCMD_SETAMMOLIMIT 0x04
|
||||
#define FRCMD_SETEXTRASPEED 0x05
|
||||
#define FRCMD_SETGOALACCURACY 0x06
|
||||
#define FRCMD_SETGOALTARGETS 0x07
|
||||
#define FRCMD_SETHELPSCRIPT 0x08
|
||||
#define FRCMD_SETGRENADELIMIT 0x09
|
||||
#define FRCMD_0A 0x0a
|
||||
#define FRCMD_SETSCOREMULTIPLIER 0x0b
|
||||
#define FRCMD_GOTOPAD 0x0c
|
||||
#define FRCMD_RESTART 0x0d
|
||||
#define FRCMD_0E 0x0e
|
||||
#define FRCMD_ROTATE 0x0f
|
||||
#define FRCMD_HUDMSG 0x10
|
||||
#define FRCMD_WAITUNTILSHOOT 0x11
|
||||
#define FRCMD_WAITSECONDS 0x12
|
||||
#define FRCMD_END 0x13
|
||||
#define FRCMD_IFBRONZE 0xfb
|
||||
#define FRCMD_IFSILVER 0xfc
|
||||
#define FRCMD_IFGOLD 0xfd
|
||||
|
||||
#define FRDIFFICULTY_BRONZE 0
|
||||
#define FRDIFFICULTY_SILVER 1
|
||||
@@ -615,14 +617,19 @@
|
||||
#define FRFAILREASON_SCOREUNATTAINABLE 3
|
||||
#define FRFAILREASON_INACCURATE 4
|
||||
|
||||
#define FRTARGETFLAG_BRONZE 0x01
|
||||
#define FRTARGETFLAG_SILVER 0x02
|
||||
#define FRTARGETFLAG_GOLD 0x04
|
||||
#define FRTARGETFLAG_08 0x08
|
||||
#define FRTARGETFLAG_10 0x10
|
||||
#define FRTARGETFLAG_20 0x20
|
||||
#define FRTARGETFLAG_40 0x40
|
||||
#define FRTARGETFLAG_80 0x80
|
||||
#define FRMENUTYPE_WEAPONLIST 0
|
||||
#define FRMENUTYPE_DETAILS 1
|
||||
#define FRMENUTYPE_FAILED 2
|
||||
#define FRMENUTYPE_COMPLETED 3
|
||||
|
||||
#define FRTARGETFLAG_BRONZE 0x01
|
||||
#define FRTARGETFLAG_SILVER 0x02
|
||||
#define FRTARGETFLAG_GOLD 0x04
|
||||
#define FRTARGETFLAG_ROTATEONCLOAK 0x08
|
||||
#define FRTARGETFLAG_SPAWNFACINGAWAY 0x10
|
||||
#define FRTARGETFLAG_ONEHITEXPLODE 0x20
|
||||
#define FRTARGETFLAG_FARSIGHTAUTOTARGETABLE 0x40
|
||||
#define FRTARGETFLAG_TMPINVINCIBLE 0x80
|
||||
|
||||
#define FRZONE_RING3 1
|
||||
#define FRZONE_RING2 2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define add_target(frpadnum, script, target01, flags) \
|
||||
0x00, frpadnum, script, target01, flags
|
||||
|
||||
#define set_num_targets(bronze, silver, gold) \
|
||||
#define set_max_active_targets(bronze, silver, gold) \
|
||||
0x01, bronze, silver, gold
|
||||
|
||||
#define set_goal_score(bronze, silver, gold) \
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "types.h"
|
||||
|
||||
u32 func0f092610(void);
|
||||
void func0f0926bc(struct prop *prop, u32 arg1, u16 arg2);
|
||||
void func0f0926bc(struct prop *prop, s32 arg1, u16 arg2);
|
||||
s32 func0f0927d4(f32 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4);
|
||||
s32 func0f092914(s32 arg0);
|
||||
u32 func0f09294c(void);
|
||||
|
||||
@@ -152,7 +152,7 @@ void func0f0a9494(u32 operation);
|
||||
void func0f0a94d0(u32 operation, struct coord *a, struct coord *b);
|
||||
void func0f0a95ec(u32 arg0, bool enable);
|
||||
void currentPlayerSetAmmoQuantity(s32 ammotype, s32 quantity);
|
||||
s32 ammoGetQuantity(u32 type);
|
||||
s32 ammoGetQuantity(s32 type);
|
||||
s32 currentPlayerGetAmmoCount(s32 ammotype);
|
||||
s32 ammotypeGetMaxCapacity(u32 ammotype);
|
||||
bool ammotypeAllowsUnlimitedAmmo(u32 ammotype);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <ultra64.h>
|
||||
#include "types.h"
|
||||
|
||||
u32 func0f150820(void);
|
||||
u16 func0f150820(struct coord *pos, f32 *rotx, f32 *roty, f32 *rotz, f32 arg4, f32 arg5, f32 arg6, f32 arg7, u32 arg8, struct prop *prop);
|
||||
u32 func0f150d38(void);
|
||||
u32 func0f151780(void);
|
||||
u32 func0f151ed0(void);
|
||||
|
||||
@@ -69,7 +69,7 @@ u32 func0f06896c(void);
|
||||
u32 func0f068998(void);
|
||||
u32 func0f068aa8(void);
|
||||
u32 func0f068ad4(void);
|
||||
u32 func0f068af4(void);
|
||||
struct model08thing *func0f068af4(struct defaultobj *obj);
|
||||
u32 func0f068b14(void);
|
||||
u32 func0f068c04(void);
|
||||
u32 func0f068fc8(void);
|
||||
|
||||
@@ -49,8 +49,8 @@ char *frGetWeaponDescription(void);
|
||||
void frEndSession(bool hidetargets);
|
||||
bool frWasTooInaccurate(void);
|
||||
void frSetFailReason(s32 failreason);
|
||||
void func0f19f18c(void);
|
||||
bool func0f19f220(struct prop *prop);
|
||||
void frSetCompleted(void);
|
||||
bool frIsTargetOneHitExplodable(struct prop *prop);
|
||||
f32 func0f19f294(struct coord *a, f32 angle, struct coord *b);
|
||||
bool func0f19f2ec(struct prop *prop, struct coord *pos);
|
||||
struct prop *frChooseAutogunTarget(struct coord *arg0);
|
||||
|
||||
+26
-21
@@ -5292,34 +5292,34 @@ struct hudmessage {
|
||||
|
||||
struct frtarget {
|
||||
/*0x00*/ u8 unk00_01 : 1;
|
||||
/*0x00*/ u8 unk00_02 : 1;
|
||||
/*0x00*/ u8 unk00_03 : 1;
|
||||
/*0x00*/ u8 unk00_04 : 1;
|
||||
/*0x00*/ u8 unk00_05 : 1;
|
||||
/*0x00*/ u8 unk00_06 : 1;
|
||||
/*0x00*/ u8 active : 1;
|
||||
/*0x00*/ u8 destroyed : 1;
|
||||
/*0x00*/ u8 scriptenabled : 1;
|
||||
/*0x00*/ u8 rotating : 1;
|
||||
/*0x00*/ u8 rotateoncloak : 1;
|
||||
/*0x00*/ u8 frpadindex : 2;
|
||||
/*0x01*/ u8 maxdamage;
|
||||
/*0x02*/ u8 scriptindex;
|
||||
/*0x04*/ struct prop *prop;
|
||||
/*0x08*/ struct coord unk08;
|
||||
/*0x14*/ s32 unk14; // scriptsleep?
|
||||
/*0x18*/ u32 unk18;
|
||||
/*0x1c*/ f32 unk1c;
|
||||
/*0x08*/ struct coord dstpos;
|
||||
/*0x14*/ s32 scriptsleep;
|
||||
/*0x18*/ s32 timeuntilrotate;
|
||||
/*0x1c*/ f32 travelspeed;
|
||||
/*0x20*/ u8 damage;
|
||||
/*0x21*/ u8 scriptoffset;
|
||||
/*0x24*/ f32 unk24;
|
||||
/*0x24*/ f32 rotatespeed; // negative for reverse direction
|
||||
/*0x28*/ f32 angle;
|
||||
/*0x2c*/ f32 unk2c;
|
||||
/*0x2c*/ f32 rotatetoangle;
|
||||
/*0x30*/ u8 flags;
|
||||
/*0x31*/ u8 unk31;
|
||||
/*0x32*/ u8 unk32;
|
||||
/*0x33*/ u8 unk33;
|
||||
/*0x33*/ u8 travelling;
|
||||
/*0x34*/ s8 frpadnum;
|
||||
/*0x38*/ s32 unk38;
|
||||
/*0x38*/ s32 invincibletimer;
|
||||
};
|
||||
|
||||
struct frdata {
|
||||
/*0x000*/ u8 numtargets;
|
||||
/*0x000*/ u8 maxactivetargets;
|
||||
/*0x001*/ u8 unk001;
|
||||
/*0x002*/ u16 goalscore;
|
||||
/*0x004*/ u8 goaltargets;
|
||||
@@ -5331,21 +5331,21 @@ struct frdata {
|
||||
/*0x010*/ struct frtarget targets[18];
|
||||
/*0x448*/ u8 difficulty;
|
||||
/*0x44c*/ s32 timetaken;
|
||||
/*0x450*/ u32 score;
|
||||
/*0x454*/ u8 curtarget;
|
||||
/*0x450*/ s32 score;
|
||||
/*0x454*/ u8 numtargets;
|
||||
/*0x455*/ u8 targetsdestroyed;
|
||||
/*0x456*/ u16 slot;
|
||||
/*0x458*/ u16 numshots;
|
||||
/*0x45a*/ u8 unk45a;
|
||||
/*0x45a*/ u8 numshotssincetopup;
|
||||
/*0x45b*/ u8 failreason;
|
||||
/*0x45c*/ u16 numhitsbullseye;
|
||||
/*0x45e*/ u16 numhitsring1;
|
||||
/*0x460*/ u16 numhitsring2;
|
||||
/*0x462*/ u16 numhitsring3;
|
||||
/*0x464*/ s8 unk464;
|
||||
/*0x465*/ u8 unk465_00 : 3;
|
||||
/*0x464*/ s8 menucountdown;
|
||||
/*0x465*/ u8 menutype : 3;
|
||||
/*0x465*/ u8 donelighting : 1;
|
||||
/*0x465*/ u8 unk465_04 : 1;
|
||||
/*0x465*/ u8 donealarm : 1;
|
||||
/*0x465*/ u8 ammohasgrace : 1;
|
||||
/*0x465*/ u8 unk465_06 : 2;
|
||||
/*0x466*/ u8 helpscriptindex;
|
||||
@@ -5357,7 +5357,7 @@ struct frdata {
|
||||
/*0x472*/ s8 feedbackttl;
|
||||
/*0x474*/ s16 proxyendtimer;
|
||||
/*0x476*/ s16 ammoextra;
|
||||
/*0x478*/ u16 sdgrenadeextra;
|
||||
/*0x478*/ s16 sdgrenadeextra;
|
||||
/*0x47c*/ u32 unk47c;
|
||||
};
|
||||
|
||||
@@ -6345,4 +6345,9 @@ struct padlockeddoor {
|
||||
struct padlockeddoor *next;
|
||||
};
|
||||
|
||||
struct model08thing {
|
||||
u32 unk00;
|
||||
f32 unk04[4];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user