From b19fd26f5efc5118c6c4ea85a773711b3e63a14b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 5 Mar 2021 22:05:34 +1000 Subject: [PATCH] Decompile func0f09a310 --- src/game/game_097ba0.c | 142 ++++++++------------ src/game/game_0b0fd0.c | 8 +- src/game/inventory/items.c | 232 ++++++++++++++++----------------- src/include/constants.h | 13 ++ src/include/game/game_097ba0.h | 6 +- src/include/game/game_0b0fd0.h | 4 +- src/include/gunscript.h | 36 ++--- src/include/types.h | 28 ++-- 8 files changed, 216 insertions(+), 253 deletions(-) diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 299fa29cc..94e5e942f 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -145,9 +145,9 @@ u32 var800701f4 = 0x00000000; u32 var800701f8 = 0x00000000; u32 var800701fc = 0x00000000; -struct remoteminething var80070200[2] = { - { 0x0a, 0, 0x0434, 10000 }, - { 0 }, +struct guncmd var80070200[2] = { + { GUNCMD_PLAYANIMATION, 0, 0x0434, 10000 }, + { GUNCMD_END }, }; u32 var80070210 = 0x00000000; @@ -1232,57 +1232,57 @@ glabel var7f1ac1b0 /* f098880: 27bd0158 */ addiu $sp,$sp,0x158 ); -bool func0f098884(struct remoteminething *arg0, struct shorthand *hand) +bool func0f098884(struct guncmd *cmd, struct shorthand *hand) { s32 result = false; - if (arg0->unk01 == 0) { + if (cmd->unk01 == 0) { return true; } - if (arg0->unk01 == 1 && g_Vars.currentplayer->hands[HAND_LEFT].inuse == true) { + if (cmd->unk01 == 1 && g_Vars.currentplayer->hands[HAND_LEFT].inuse == true) { result = true; } - if (arg0->unk01 == 2 && hand->weaponfunc == FUNC_SECONDARY) { + if (cmd->unk01 == 2 && hand->weaponfunc == FUNC_SECONDARY) { result = true; } return result; } -void func0f0988e0(struct remoteminething *arg0, bool arg1, struct hand *hand) +void func0f0988e0(struct guncmd *cmd, bool arg1, struct hand *hand) { - if (arg0->unk00 != 0x0a) { - struct remoteminething *loopthing = arg0; + if (cmd->type != GUNCMD_PLAYANIMATION) { + struct guncmd *loopcmd = cmd; s32 done = false; u32 rand = random() % 100; - while (loopthing->unk00) { - if (func0f098884(loopthing, &hand->base) && !done) { - if (loopthing->unk00 == 6) { + while (loopcmd->type != GUNCMD_END) { + if (func0f098884(loopcmd, &hand->base) && !done) { + if (loopcmd->type == GUNCMD_INCLUDE) { done = true; - func0f0988e0(loopthing->next, arg1, hand); - } else if (loopthing->unk00 == 7) { - if (loopthing->next != hand->unk0d80 && loopthing->unk02 > rand) { + func0f0988e0((struct guncmd *)loopcmd->unk04, arg1, hand); + } else if (loopcmd->type == GUNCMD_RANDOM) { + if ((struct guncmd *)loopcmd->unk04 != hand->unk0d80 && loopcmd->unk02 > rand) { done = true; - func0f0988e0(loopthing->next, arg1, hand); + func0f0988e0((struct guncmd *)loopcmd->unk04, arg1, hand); } } } - loopthing++; + loopcmd++; } } else { - hand->unk0cb8 = arg0->unk02; + hand->unk0cb8 = cmd->unk02; hand->unk0cc4 = 0; hand->unk0cc8_01 = 0; hand->unk0cc8_03 = 0; - hand->unk0ce8 = arg0; + hand->unk0ce8 = cmd; hand->unk0cc9 = 0; hand->unk0cc8_02 = 0; hand->unk0d0e_07 = 0; - hand->unk0d80 = arg0; + hand->unk0d80 = cmd; } } @@ -3127,73 +3127,39 @@ glabel var7f1ac31c /* f09a30c: 00000000 */ nop ); -GLOBAL_ASM( -glabel func0f09a310 -/* f09a310: 27bdffe0 */ addiu $sp,$sp,-32 -/* f09a314: afbf0014 */ sw $ra,0x14($sp) -/* f09a318: afa40020 */ sw $a0,0x20($sp) -/* f09a31c: afa50024 */ sw $a1,0x24($sp) -/* f09a320: afa7002c */ sw $a3,0x2c($sp) -/* f09a324: 8cce0618 */ lw $t6,0x618($a2) -/* f09a328: 00001825 */ or $v1,$zero,$zero -/* f09a32c: 55c00021 */ bnezl $t6,.L0f09a3b4 -/* f09a330: 8cc9068c */ lw $t1,0x68c($a2) -/* f09a334: 90cf0003 */ lbu $t7,0x3($a2) -/* f09a338: 00c02025 */ or $a0,$a2,$zero -/* f09a33c: 55e0000c */ bnezl $t7,.L0f09a370 -/* f09a340: afa30018 */ sw $v1,0x18($sp) -/* f09a344: 00c02025 */ or $a0,$a2,$zero -/* f09a348: afa00018 */ sw $zero,0x18($sp) -/* f09a34c: 0fc2c83a */ jal handGetPriToSecAnim -/* f09a350: afa60028 */ sw $a2,0x28($sp) -/* f09a354: 8fa60028 */ lw $a2,0x28($sp) -/* f09a358: 8fa30018 */ lw $v1,0x18($sp) -/* f09a35c: 24180001 */ addiu $t8,$zero,0x1 -/* f09a360: 00402025 */ or $a0,$v0,$zero -/* f09a364: 10000008 */ b .L0f09a388 -/* f09a368: a0d80003 */ sb $t8,0x3($a2) -/* f09a36c: afa30018 */ sw $v1,0x18($sp) -.L0f09a370: -/* f09a370: 0fc2c846 */ jal handGetSecToPriAnim -/* f09a374: afa60028 */ sw $a2,0x28($sp) -/* f09a378: 8fa60028 */ lw $a2,0x28($sp) -/* f09a37c: 8fa30018 */ lw $v1,0x18($sp) -/* f09a380: 00402025 */ or $a0,$v0,$zero -/* f09a384: a0c00003 */ sb $zero,0x3($a2) -.L0f09a388: -/* f09a388: 1040000e */ beqz $v0,.L0f09a3c4 -/* f09a38c: 00000000 */ nop -/* f09a390: 0fc26238 */ jal func0f0988e0 -/* f09a394: 8fa50024 */ lw $a1,0x24($sp) -/* f09a398: 3c08800a */ lui $t0,%hi(g_Vars+0x284) -/* f09a39c: 8d08a244 */ lw $t0,%lo(g_Vars+0x284)($t0) -/* f09a3a0: 2419ffff */ addiu $t9,$zero,-1 -/* f09a3a4: 24030001 */ addiu $v1,$zero,0x1 -/* f09a3a8: 10000006 */ b .L0f09a3c4 -/* f09a3ac: ad190dd4 */ sw $t9,0xdd4($t0) -/* f09a3b0: 8cc9068c */ lw $t1,0x68c($a2) -.L0f09a3b4: -/* f09a3b4: 24010002 */ addiu $at,$zero,0x2 -/* f09a3b8: 15210002 */ bne $t1,$at,.L0f09a3c4 -/* f09a3bc: 00000000 */ nop -/* f09a3c0: 24030001 */ addiu $v1,$zero,0x1 -.L0f09a3c4: -/* f09a3c4: 14600007 */ bnez $v1,.L0f09a3e4 -/* f09a3c8: 8fa40024 */ lw $a0,0x24($sp) -/* f09a3cc: 0fc27346 */ jal func0f09cd18 -/* f09a3d0: 00002825 */ or $a1,$zero,$zero -/* f09a3d4: 50400004 */ beqzl $v0,.L0f09a3e8 -/* f09a3d8: 00001025 */ or $v0,$zero,$zero -/* f09a3dc: 10000002 */ b .L0f09a3e8 -/* f09a3e0: 8fa2002c */ lw $v0,0x2c($sp) -.L0f09a3e4: -/* f09a3e4: 00001025 */ or $v0,$zero,$zero -.L0f09a3e8: -/* f09a3e8: 8fbf0014 */ lw $ra,0x14($sp) -/* f09a3ec: 27bd0020 */ addiu $sp,$sp,0x20 -/* f09a3f0: 03e00008 */ jr $ra -/* f09a3f4: 00000000 */ nop -); +s32 func0f09a310(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate) +{ + struct guncmd *cmd; + bool somebool = false; + + if (hand->unk0c50 == 0) { + if (hand->base.weaponfunc == FUNC_PRIMARY) { + cmd = handGetPriToSecAnim(&hand->base); + hand->base.weaponfunc = FUNC_SECONDARY; + } else { + cmd = handGetSecToPriAnim(&hand->base); + hand->base.weaponfunc = FUNC_PRIMARY; + } + + somebool = false; + + if (cmd != NULL) { + func0f0988e0(cmd, handnum, hand); + somebool = true; + g_Vars.currentplayer->hands[HAND_RIGHT].unk0dd4 = -1; + } + } else { + if (hand->unk0cc4 == 2) { + somebool = true; + } + } + + if (!somebool && func0f09cd18(handnum, 0)) { + return lvupdate; + } + + return 0; +} GLOBAL_ASM( glabel func0f09a3f8 diff --git a/src/game/game_0b0fd0.c b/src/game/game_0b0fd0.c index 68a4ba0c5..f0d9acdd4 100644 --- a/src/game/game_0b0fd0.c +++ b/src/game/game_0b0fd0.c @@ -745,7 +745,7 @@ glabel func0f0b201c /* f0b2084: 00000000 */ nop ); -u32 *handGetEquipAnim(struct shorthand *hand) +struct guncmd *handGetEquipAnim(struct shorthand *hand) { struct weapon *weapon = g_Weapons[hand->weaponnum]; @@ -756,7 +756,7 @@ u32 *handGetEquipAnim(struct shorthand *hand) return NULL; } -u32 *handGetUnequipAnim(struct shorthand *hand) +struct guncmd *handGetUnequipAnim(struct shorthand *hand) { struct weapon *weapon = g_Weapons[hand->weaponnum]; @@ -767,7 +767,7 @@ u32 *handGetUnequipAnim(struct shorthand *hand) return NULL; } -u32 *handGetPriToSecAnim(struct shorthand *hand) +struct guncmd *handGetPriToSecAnim(struct shorthand *hand) { struct weapon *weapon = g_Weapons[hand->weaponnum]; @@ -778,7 +778,7 @@ u32 *handGetPriToSecAnim(struct shorthand *hand) return NULL; } -u32 *handGetSecToPriAnim(struct shorthand *hand) +struct guncmd *handGetSecToPriAnim(struct shorthand *hand) { struct weapon *weapon = g_Weapons[hand->weaponnum]; diff --git a/src/game/inventory/items.c b/src/game/inventory/items.c index 2af37cac9..b7c32845c 100644 --- a/src/game/inventory/items.c +++ b/src/game/inventory/items.c @@ -192,32 +192,32 @@ struct weapon invitem_nothing = { 0x00001000, // flags }; -u32 invanim_punch_type3[] = { +struct guncmd invanim_punch_type3[] = { gunscript_playanimation(0x03e9, 0, 10000) gunscript_waittime(7, 2) gunscript_end }; -u32 invanim_punch_type1[] = { +struct guncmd invanim_punch_type1[] = { gunscript_playanimation(0x03ea, 0, 10000) gunscript_waittime(8, 2) gunscript_end }; -u32 invanim_punch_type2[] = { +struct guncmd invanim_punch_type2[] = { gunscript_playanimation(0x041f, 0, 10000) gunscript_waittime(7, 2) gunscript_end }; -u32 invanim_punch_type4[] = { +struct guncmd invanim_punch_type4[] = { gunscript_playanimation(0x0425, 0, 10000) gunscript_waittime(8, 2) gunscript_waittime(18, 3) gunscript_end }; -u32 invanim_punch[] = { +struct guncmd invanim_punch[] = { gunscript_random(20, invanim_punch_type1) gunscript_random(40, invanim_punch_type2) gunscript_random(60, invanim_punch_type3) @@ -358,7 +358,7 @@ struct inventory_typef invf_0001148c[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_falcon2_reload_0[] = { +struct guncmd invanim_falcon2_reload_0[] = { gunscript_playanimation(0x00ed, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 43) @@ -373,7 +373,7 @@ u32 invanim_falcon2_reload_0[] = { gunscript_end }; -u32 invanim_falcon2scope_reload_0[] = { +struct guncmd invanim_falcon2scope_reload_0[] = { gunscript_playanimation(0x0417, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 43) @@ -388,7 +388,7 @@ u32 invanim_falcon2scope_reload_0[] = { gunscript_end }; -u32 invanim_falcon2_reload_1[] = { +struct guncmd invanim_falcon2_reload_1[] = { gunscript_playanimation(0x03f1, 0, 10000) gunscript_hidepart(1, 43) gunscript_showpart(1, 42) @@ -399,35 +399,35 @@ u32 invanim_falcon2_reload_1[] = { gunscript_end }; -u32 invanim_falcon2_reload[] = { +struct guncmd invanim_falcon2_reload[] = { gunscript_include(1, invanim_falcon2_reload_1) gunscript_include(0, invanim_falcon2_reload_0) gunscript_end }; -u32 invanim_falcon2scope_reload[] = { +struct guncmd invanim_falcon2scope_reload[] = { gunscript_include(1, invanim_falcon2_reload_1) gunscript_include(0, invanim_falcon2scope_reload_0) gunscript_end }; -u32 invanim_falcon2_pistolwhip[] = { +struct guncmd invanim_falcon2_pistolwhip[] = { gunscript_playanimation(0x03f2, 0, 10000) gunscript_waittime(23, 2) gunscript_end }; -u32 invanim_falcon2_equip[] = { +struct guncmd invanim_falcon2_equip[] = { gunscript_playanimation(0x00ea, 0, 10000) gunscript_end }; -u32 invanim_falcon2_unequip[] = { +struct guncmd invanim_falcon2_unequip[] = { gunscript_playanimation(0x00eb, 0, 10000) gunscript_end }; -u32 invanim_falcon2_shoot[] = { +struct guncmd invanim_falcon2_shoot[] = { gunscript_playanimation(0x00ec, 0, 10000) gunscript_waittime(9, 5) gunscript_end @@ -606,7 +606,7 @@ struct inventory_typef invf_00011840[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_magsec_reload_0[] = { +struct guncmd invanim_magsec_reload_0[] = { gunscript_playanimation(0x0409, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 41) @@ -625,7 +625,7 @@ u32 invanim_magsec_reload_0[] = { gunscript_end }; -u32 invanim_magsec_reload_1[] = { +struct guncmd invanim_magsec_reload_1[] = { gunscript_playanimation(0x040a, 0, 10000) gunscript_showpart(1, 41) gunscript_setsoundspeed(5, 1300) @@ -639,13 +639,13 @@ u32 invanim_magsec_reload_1[] = { gunscript_end }; -u32 invanim_magsec_reload[] = { +struct guncmd invanim_magsec_reload[] = { gunscript_include(1, invanim_magsec_reload_1) gunscript_include(0, invanim_magsec_reload_0) gunscript_end }; -u32 invanim_magsec_equiporshoot[] = { +struct guncmd invanim_magsec_equiporshoot[] = { gunscript_playanimation(0x040b, 0, 10000) gunscript_waittime(12, 5) gunscript_end @@ -761,14 +761,14 @@ struct inventory_typef invf_00011a84[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_dy357_equiporshoot[] = { +struct guncmd invanim_dy357_equiporshoot[] = { gunscript_playanimation(0x0406, 0, 10000) gunscript_waittime(12, 5) gunscript_waittime(12, 2) gunscript_end }; -u32 invanim_dy357_reload_0[] = { +struct guncmd invanim_dy357_reload_0[] = { gunscript_playanimation(0x0408, 0, 10000) gunscript_playsound(50, 0x05cf) gunscript_setsoundspeed(80, 1830) @@ -799,7 +799,7 @@ u32 invanim_dy357_reload_0[] = { gunscript_end }; -u32 invanim_dy357_reload_1[] = { +struct guncmd invanim_dy357_reload_1[] = { gunscript_playanimation(0x0420, 0, 10000) gunscript_playsound(50, 0x05cf) gunscript_setsoundspeed(80, 1830) @@ -817,13 +817,13 @@ u32 invanim_dy357_reload_1[] = { gunscript_end }; -u32 invanim_dy357_reload[] = { +struct guncmd invanim_dy357_reload[] = { gunscript_include(1, invanim_dy357_reload_1) gunscript_include(0, invanim_dy357_reload_0) gunscript_end }; -u32 invanim_dy357_pistolwhip[] = { +struct guncmd invanim_dy357_pistolwhip[] = { gunscript_playanimation(0x0407, 0, 10000) gunscript_waittime(23, 2) gunscript_end @@ -966,7 +966,7 @@ struct inventory_typef invf_00011e00[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_equiporreload_0[] = { +struct guncmd invanim_equiporreload_0[] = { gunscript_playanimation(0x0415, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 40) @@ -976,7 +976,7 @@ u32 invanim_equiporreload_0[] = { gunscript_end }; -u32 invanim_phoenix_equiporreload_1[] = { +struct guncmd invanim_phoenix_equiporreload_1[] = { gunscript_playanimation(0x0423, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 40) @@ -986,13 +986,13 @@ u32 invanim_phoenix_equiporreload_1[] = { gunscript_end }; -u32 invanim_phoenix_equiporreload[] = { +struct guncmd invanim_phoenix_equiporreload[] = { gunscript_include(1, invanim_phoenix_equiporreload_1) gunscript_include(0, invanim_equiporreload_0) gunscript_end }; -u32 invanim_phoenix_shoot[] = { +struct guncmd invanim_phoenix_shoot[] = { gunscript_playanimation(0x043e, 0, 10000) gunscript_waittime(9, 5) gunscript_end @@ -1087,13 +1087,13 @@ struct inventory_typef invf_00011fac[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_mauler_equiporshoot[] = { +struct guncmd invanim_mauler_equiporshoot[] = { gunscript_playanimation(0x03f3, 0, 10000) gunscript_waittime(9, 5) gunscript_end }; -u32 invanim_mauler_reload_0[] = { +struct guncmd invanim_mauler_reload_0[] = { gunscript_playanimation(0x03f4, 0, 10000) gunscript_showpart(0, 53) gunscript_setsoundspeed(4, 1200) @@ -1113,7 +1113,7 @@ u32 invanim_mauler_reload_0[] = { gunscript_end }; -u32 invanim_mauler_reload_1[] = { +struct guncmd invanim_mauler_reload_1[] = { gunscript_playanimation(0x03f5, 0, 10000) gunscript_setsoundspeed(14, 1200) gunscript_playsound(14, 0x0053) @@ -1127,13 +1127,13 @@ u32 invanim_mauler_reload_1[] = { gunscript_end }; -u32 invanim_mauler_reload[] = { +struct guncmd invanim_mauler_reload[] = { gunscript_include(1, invanim_mauler_reload_1) gunscript_include(0, invanim_mauler_reload_0) gunscript_end }; -u32 invanim_unused_8007c0bc[] = { +struct guncmd invanim_unused_8007c0bc[] = { gunscript_playanimation(0x03f6, 0, 10000) gunscript_end }; @@ -1228,7 +1228,7 @@ struct inventory_typef invf_000121d8[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_cmp150_reload_0[] = { +struct guncmd invanim_cmp150_reload_0[] = { gunscript_playanimation(0x0115, 0, 10000) gunscript_hidepart(23, 42) gunscript_showpart(33, 53) @@ -1244,7 +1244,7 @@ u32 invanim_cmp150_reload_0[] = { gunscript_end }; -u32 invanim_cmp150_reload_1[] = { +struct guncmd invanim_cmp150_reload_1[] = { gunscript_playanimation(0x0422, 0, 10000) gunscript_hidepart(23, 42) gunscript_showpart(33, 53) @@ -1260,13 +1260,13 @@ u32 invanim_cmp150_reload_1[] = { gunscript_end }; -u32 invanim_cmp150_reload[] = { +struct guncmd invanim_cmp150_reload[] = { gunscript_include(1, invanim_cmp150_reload_1) gunscript_include(0, invanim_cmp150_reload_0) gunscript_end }; -u32 invanim_cmp150_equiporshoot[] = { +struct guncmd invanim_cmp150_equiporshoot[] = { gunscript_playanimation(0x0116, 0, 10000) gunscript_waittime(14, 5) gunscript_waitforzreleased(14) @@ -1381,7 +1381,7 @@ struct inventory_typef invf_0001243c[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_cyclone_equiporreload_0[] = { +struct guncmd invanim_cyclone_equiporreload_0[] = { gunscript_playanimation(0x040e, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 40) @@ -1389,19 +1389,19 @@ u32 invanim_cyclone_equiporreload_0[] = { gunscript_end }; -u32 invanim_cyclone_equiporreload_1[] = { +struct guncmd invanim_cyclone_equiporreload_1[] = { gunscript_playanimation(0x0421, 0, 10000) gunscript_playsound(60, 0x05d3) gunscript_end }; -u32 invanim_cyclone_equiporreload[] = { +struct guncmd invanim_cyclone_equiporreload[] = { gunscript_include(1, invanim_cyclone_equiporreload_1) gunscript_include(0, invanim_cyclone_equiporreload_0) gunscript_end }; -u32 invanim_cyclone_shoot[] = { +struct guncmd invanim_cyclone_shoot[] = { gunscript_playanimation(0x043d, 0, 10000) gunscript_waittime(5, 5) gunscript_waitforzreleased(5) @@ -1493,7 +1493,7 @@ struct weapon invitem_cyclone = { 0x00027678, // flags }; -u32 invanim_rcp120_reload[] = { +struct guncmd invanim_rcp120_reload[] = { gunscript_playanimation(0x041a, 0, 10000) gunscript_setsoundspeed(18, 1100) gunscript_playsound(18, 0x0053) @@ -1506,7 +1506,7 @@ u32 invanim_rcp120_reload[] = { gunscript_end }; -u32 invanim_rcp120_equiporshoot[] = { +struct guncmd invanim_rcp120_equiporshoot[] = { gunscript_playanimation(0x0424, 0, 10000) gunscript_waittime(10, 5) gunscript_waitforzreleased(10) @@ -1596,7 +1596,7 @@ struct weapon invitem_rcp120 = { 0x0062e670, // flags }; -u32 invanim_callisto_equiporreload[] = { +struct guncmd invanim_callisto_equiporreload[] = { gunscript_playanimation(0x0418, 0, 10000) gunscript_showpart(30, 40) gunscript_setsoundspeed(58, 933) @@ -1605,7 +1605,7 @@ u32 invanim_callisto_equiporreload[] = { gunscript_end }; -u32 invanim_callisto_shoot[] = { +struct guncmd invanim_callisto_shoot[] = { gunscript_playanimation(0x043c, 0, 10000) gunscript_waittime(8, 5) gunscript_waitforzreleased(8) @@ -1718,12 +1718,12 @@ struct modelpartvisibility invpartvisibility_dragon[] = { { 255 }, }; -u32 invanim_dragon_equiporshoot[] = { +struct guncmd invanim_dragon_equiporshoot[] = { gunscript_playanimation(0x03f9, 0, 10000) gunscript_end }; -u32 invanim_dragon_reload[] = { +struct guncmd invanim_dragon_reload[] = { gunscript_playanimation(0x03fa, 0, 10000) gunscript_playsound(8, 0x0053) gunscript_hidepart(17, 42) @@ -1821,7 +1821,7 @@ struct modelpartvisibility invpartvisibility_superdragon[] = { { 255 }, }; -u32 invanim_superdragon_reload[] = { +struct guncmd invanim_superdragon_reload[] = { gunscript_playanimation(0x03fb, 0, 10000) gunscript_playsound(8, 0x0053) gunscript_hidepart(16, 42) @@ -1833,7 +1833,7 @@ u32 invanim_superdragon_reload[] = { gunscript_end }; -u32 invanim_superdragon_grenadereload[] = { +struct guncmd invanim_superdragon_grenadereload[] = { gunscript_playanimation(0x03fc, 0, 10000) gunscript_setsoundspeed(6, 700) gunscript_playsound(6, 0x0053) @@ -1847,22 +1847,22 @@ u32 invanim_superdragon_grenadereload[] = { gunscript_end }; -u32 invanim_superdragon_equiporshoot[] = { +struct guncmd invanim_superdragon_equiporshoot[] = { gunscript_playanimation(0x03fe, 0, 10000) gunscript_end }; -u32 invanim_superdragon_shootgrenade[] = { +struct guncmd invanim_superdragon_shootgrenade[] = { gunscript_playanimation(0x03ff, 0, 10000) gunscript_end }; -u32 invanim_superdragon_pritosec[] = { +struct guncmd invanim_superdragon_pritosec[] = { gunscript_playanimation(0x03fd, 0, 10000) gunscript_end }; -u32 invanim_superdragon_sectopri[] = { +struct guncmd invanim_superdragon_sectopri[] = { gunscript_playanimation(0x03fd, 65535, 55536) gunscript_end }; @@ -1975,7 +1975,7 @@ struct modelpartvisibility invpartvisibility_ar34[] = { { 255 }, }; -u32 invanim_ar34_equiporreload[] = { +struct guncmd invanim_ar34_equiporreload[] = { gunscript_playanimation(0x0419, 0, 10000) gunscript_setsoundspeed(16, 900) gunscript_playsound(16, 0x0053) @@ -2098,7 +2098,7 @@ struct modelpartvisibility invpartvisibility_k7avenger[] = { { 255 }, }; -u32 invanim_k7avenger_reload[] = { +struct guncmd invanim_k7avenger_reload[] = { gunscript_playanimation(0x00e9, 0, 10000) gunscript_setsoundspeed(15, 1200) gunscript_playsound(15, 0x0053) @@ -2113,17 +2113,17 @@ u32 invanim_k7avenger_reload[] = { gunscript_end }; -u32 invanim_k7avenger_equip[] = { +struct guncmd invanim_k7avenger_equip[] = { gunscript_playanimation(0x00e6, 0, 10000) gunscript_end }; -u32 invanim_k7avenger_unequip[] = { +struct guncmd invanim_k7avenger_unequip[] = { gunscript_playanimation(0x00e7, 0, 10000) gunscript_end }; -u32 invanim_unused_8007ce6c[] = { +struct guncmd invanim_unused_8007ce6c[] = { gunscript_playanimation(0x00e8, 0, 10000) gunscript_end }; @@ -2237,7 +2237,7 @@ struct modelpartvisibility invpartvisibility_laptopgun[] = { { 255 }, }; -u32 invanim_laptopgun_reload[] = { +struct guncmd invanim_laptopgun_reload[] = { gunscript_playanimation(0x00e4, 0, 10000) gunscript_setsoundspeed(4, 1630) gunscript_playsound(4, 0x04fb) @@ -2258,14 +2258,14 @@ u32 invanim_laptopgun_reload[] = { gunscript_end }; -u32 invanim_laptopgun_shoot[] = { +struct guncmd invanim_laptopgun_shoot[] = { gunscript_playanimation(0x00e5, 0, 10000) gunscript_waittime(10, 5) gunscript_waitforzreleased(10) gunscript_end }; -u32 invanim_laptopgun_equip[] = { +struct guncmd invanim_laptopgun_equip[] = { gunscript_playanimation(0x00e2, 0, 10000) gunscript_setsoundspeed(15, 720) gunscript_playsound(15, 0x04f7) @@ -2274,7 +2274,7 @@ u32 invanim_laptopgun_equip[] = { gunscript_end }; -u32 invanim_laptopgun_unequip[] = { +struct guncmd invanim_laptopgun_unequip[] = { gunscript_playanimation(0x00e3, 0, 10000) gunscript_playsound(1, 0x04f7) gunscript_setsoundspeed(25, 720) @@ -2367,7 +2367,7 @@ struct modelpartvisibility invpartvisibility_shotgun[] = { { 255 }, }; -u32 invanim_shotgun_reload[] = { +struct guncmd invanim_shotgun_reload[] = { gunscript_playanimation(0x03ed, 0, 10000) gunscript_showpart(1, 43) gunscript_playsound(67, 0x01d8) @@ -2378,14 +2378,14 @@ u32 invanim_shotgun_reload[] = { gunscript_end }; -u32 invanim_shotgun_equiporsingleshot[] = { +struct guncmd invanim_shotgun_equiporsingleshot[] = { gunscript_playanimation(0x03ee, 0, 10000) gunscript_waittime(9, 2) gunscript_playsound(34, 0x04fb) gunscript_end }; -u32 invanim_shotgun_doubleshot[] = { +struct guncmd invanim_shotgun_doubleshot[] = { gunscript_playanimation(0x042c, 0, 10000) gunscript_waittime(9, 2) gunscript_playsound(54, 0x04fb) @@ -2485,13 +2485,13 @@ struct inventory_typef invf_000133c8[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_reaper_shoot[] = { +struct guncmd invanim_reaper_shoot[] = { gunscript_playanimation(0x0400, 0, 10000) gunscript_waittime(12, 5) gunscript_end }; -u32 invanim_reaper_reload[] = { +struct guncmd invanim_reaper_reload[] = { gunscript_playanimation(0x0401, 0, 10000) gunscript_playsound(49, 0x05c7) gunscript_hidepart(70, 42) @@ -2503,12 +2503,12 @@ u32 invanim_reaper_reload[] = { gunscript_end }; -u32 invanim_reaper_equip[] = { +struct guncmd invanim_reaper_equip[] = { gunscript_playanimation(0x0427, 0, 10000) gunscript_end }; -u32 invanim_reaper_unequip[] = { +struct guncmd invanim_reaper_unequip[] = { gunscript_playanimation(0x0428, 0, 10000) gunscript_end }; @@ -2606,7 +2606,7 @@ struct inventory_typef invf_00013564[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_rocketlauncher_reload[] = { +struct guncmd invanim_rocketlauncher_reload[] = { gunscript_playanimation(0x03ef, 0, 10000) gunscript_setsoundspeed(16, 900) gunscript_playsound(16, 0x04f9) @@ -2622,7 +2622,7 @@ u32 invanim_rocketlauncher_reload[] = { gunscript_end }; -u32 invanim_rockerlauncher_equiporshoot[] = { +struct guncmd invanim_rockerlauncher_equiporshoot[] = { gunscript_playanimation(0x03f0, 0, 10000) gunscript_end }; @@ -2731,12 +2731,12 @@ struct weapon invitem_rocketlauncher = { 0x40026270, // flags }; -u32 invanim_slayer_equiporshoot[] = { +struct guncmd invanim_slayer_equiporshoot[] = { gunscript_playanimation(0x042a, 0, 10000) gunscript_end }; -u32 invanim_slayer_reload[] = { +struct guncmd invanim_slayer_reload[] = { gunscript_playanimation(0x0429, 0, 10000) gunscript_setsoundspeed(52, 800) gunscript_playsound(52, 0x0053) @@ -2844,12 +2844,12 @@ struct inventory_typef invf_unused_8006d890[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_devastator_equiporshoot[] = { +struct guncmd invanim_devastator_equiporshoot[] = { gunscript_playanimation(0x03f7, 0, 10000) gunscript_end }; -u32 invanim_devastator_reload[] = { +struct guncmd invanim_devastator_reload[] = { gunscript_playanimation(0x03f8, 0, 10000) gunscript_setsoundspeed(15, 600) gunscript_playsound(15, 0x0053) @@ -2972,17 +2972,17 @@ struct weaponfunc invfunc_mine_threatdetector = { 0x00080000, // flags }; -u32 inanim_mine_equiporreload[] = { +struct guncmd invanim_mine_equiporreload[] = { gunscript_playanimation(0x0430, 0, 10000) gunscript_end }; -u32 invanim_mine_unequip[] = { +struct guncmd invanim_mine_unequip[] = { gunscript_playanimation(0x0431, 0, 10000) gunscript_end }; -u32 invanim_mine_throw[] = { +struct guncmd invanim_mine_throw[] = { gunscript_playanimation(0x0435, 0, 10000) gunscript_waitforzreleased(10) gunscript_waittime(13, 2) @@ -3007,14 +3007,14 @@ struct inventory_ammo invammo_timedmine = { AMMOTYPE_TIMED_MINE, CASING_NONE, 1, // clip size - inanim_mine_equiporreload, // reload animation + invanim_mine_equiporreload, // reload animation 33554432, // style }; struct weapon invitem_timedmine = { FILE_GTIMEDMINE, // hi model FILE_GTIMEDMINE, // lo model - inanim_mine_equiporreload, // equip animation + invanim_mine_equiporreload, // equip animation invanim_mine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation @@ -3044,17 +3044,17 @@ struct inventory_typef invf_00013b40[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_remotemine_equiporreload[] = { +struct guncmd invanim_remotemine_equiporreload[] = { gunscript_playanimation(0x0432, 0, 10000) gunscript_end }; -u32 invanim_remotemine_unequip[] = { +struct guncmd invanim_remotemine_unequip[] = { gunscript_playanimation(0x0433, 0, 10000) gunscript_end }; -u32 invanim_remotemine_throw[] = { +struct guncmd invanim_remotemine_throw[] = { gunscript_playanimation(0x0436, 0, 10000) gunscript_waitforzreleased(10) gunscript_waittime(11, 2) @@ -3144,14 +3144,14 @@ struct inventory_ammo invammo_proximitymine = { AMMOTYPE_PROXY_MINE, CASING_NONE, 1, // clip size - inanim_mine_equiporreload, // reload animation + invanim_mine_equiporreload, // reload animation 33554432, // style }; struct weapon invitem_proximitymine = { FILE_GPROXIMITYMINE, // hi model FILE_GPROXIMITYMINE, // lo model - inanim_mine_equiporreload, // equip animation + invanim_mine_equiporreload, // equip animation invanim_mine_unequip, // unequip animation NULL, // pritosec animation NULL, // sectopri animation @@ -3173,17 +3173,17 @@ struct weapon invitem_proximitymine = { 0x00022259, // flags }; -u32 invanim_ecmmine_equiporreload[] = { +struct guncmd invanim_ecmmine_equiporreload[] = { gunscript_playanimation(0x0437, 0, 10000) gunscript_end }; -u32 invanim_ecmmine_unequip[] = { +struct guncmd invanim_ecmmine_unequip[] = { gunscript_playanimation(0x0438, 0, 10000) gunscript_end }; -u32 invanim_ecmmine_throw[] = { +struct guncmd invanim_ecmmine_throw[] = { gunscript_playanimation(0x0438, 0, 10000) gunscript_waittime(23, 2) gunscript_end @@ -3268,7 +3268,7 @@ struct inventory_typef invf_00013df8[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_grenade_throw[] = { +struct guncmd invanim_grenade_throw[] = { gunscript_playanimation(0x0426, 0, 10000) gunscript_popoutsackofpills(0x0006) gunscript_playsound(6, 0x05c1) @@ -3277,7 +3277,7 @@ u32 invanim_grenade_throw[] = { gunscript_end }; -u32 invanim_grenade_equiporreload[] = { +struct guncmd invanim_grenade_equiporreload[] = { gunscript_playanimation(0x042b, 0, 10000) gunscript_end }; @@ -3409,7 +3409,7 @@ struct inventory_typef invf_00013fa4[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_farsight_reload[] = { +struct guncmd invanim_farsight_reload[] = { gunscript_playanimation(0x03eb, 0, 10000) gunscript_showpart(1, 40) gunscript_playsound(72, 0x0433) @@ -3418,7 +3418,7 @@ u32 invanim_farsight_reload[] = { gunscript_end }; -u32 invanim_farsight_equiporshoot[] = { +struct guncmd invanim_farsight_equiporshoot[] = { gunscript_playanimation(0x03ec, 0, 10000) gunscript_end }; @@ -3522,7 +3522,7 @@ struct inventory_typef invf_00014100[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_crossbow_reload[] = { +struct guncmd invanim_crossbow_reload[] = { gunscript_playanimation(0x00d4, 0, 10000) gunscript_hidepart(1, 40) gunscript_showpart(1, 41) @@ -3537,21 +3537,21 @@ u32 invanim_crossbow_reload[] = { gunscript_end }; -u32 invanim_crossbow_shoot[] = { +struct guncmd invanim_crossbow_shoot[] = { gunscript_playanimation(0x00c2, 0, 10000) gunscript_hidepart(20, 40) gunscript_playsound(37, 0x04f8) gunscript_end }; -u32 invanim_crossbow_unequip[] = { +struct guncmd invanim_crossbow_unequip[] = { gunscript_playanimation(0x00d3, 0, 10000) gunscript_hidepart(1, 40) gunscript_playsound(37, 0x04f8) gunscript_end }; -u32 invanim_crosbow_equip[] = { +struct guncmd invanim_crosbow_equip[] = { gunscript_playanimation(0x00c1, 0, 10000) gunscript_playsound(32, 0x04fc) gunscript_playsound(75, 0x04f8) @@ -3664,19 +3664,19 @@ struct inventory_typef invf_00014314[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_tranquilizer_lethalinject[] = { +struct guncmd invanim_tranquilizer_lethalinject[] = { gunscript_playanimation(0x0411, 0, 10000) gunscript_waittime(18, 2) gunscript_end }; -u32 invanim_tranquilizer_equiporshoot[] = { +struct guncmd invanim_tranquilizer_equiporshoot[] = { gunscript_playanimation(0x042d, 0, 10000) gunscript_waittime(7, 5) gunscript_end }; -u32 invanim_tranquilizer_reload[] = { +struct guncmd invanim_tranquilizer_reload[] = { gunscript_playanimation(0x0410, 0, 10000) gunscript_showpart(1, 53) gunscript_showpart(1, 40) @@ -3843,12 +3843,12 @@ struct inventory_typef invf_00014590[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_sniperrifle_equip[] = { +struct guncmd invanim_sniperrifle_equip[] = { gunscript_playanimation(0x040c, 0, 10000) gunscript_end }; -u32 invanim_sniperrifle_reload[] = { +struct guncmd invanim_sniperrifle_reload[] = { gunscript_playanimation(0x040f, 0, 10000) gunscript_setsoundspeed(22, 850) gunscript_playsound(22, 0x01d8) @@ -3946,12 +3946,12 @@ struct weapon invitem_sniperrifle = { 0x00026650, // flags }; -u32 invanim_laser_equip[] = { +struct guncmd invanim_laser_equip[] = { gunscript_playanimation(0x042e, 0, 10000) gunscript_end }; -u32 invanim_laser_unequip[] = { +struct guncmd invanim_laser_unequip[] = { gunscript_playanimation(0x042f, 0, 10000) gunscript_end }; @@ -4039,7 +4039,7 @@ struct inventory_typef invf_000147fc[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_pp9i_equiporshoot[] = { +struct guncmd invanim_pp9i_equiporshoot[] = { gunscript_playanimation(0x0440, 0, 10000) gunscript_waittime(10, 5) gunscript_end @@ -4100,7 +4100,7 @@ struct weapon invitem_pp9i = { 0x000af67c, // flags }; -u32 invanim_cc13_equiporshoot[] = { +struct guncmd invanim_cc13_equiporshoot[] = { gunscript_playanimation(0x043f, 0, 10000) gunscript_waittime(10, 5) gunscript_end @@ -4678,52 +4678,52 @@ struct inventory_typef invf_00014fc0[] = { { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }, }; -u32 invanim_combatknife_equip[] = { +struct guncmd invanim_combatknife_equip[] = { gunscript_playanimation(0x0403, 0, 10000) gunscript_waittime(24, 2) gunscript_end }; -u32 invanim_combatknife_slash2[] = { +struct guncmd invanim_combatknife_slash2[] = { gunscript_playanimation(0x0404, 0, 10000) gunscript_waittime(24, 2) gunscript_end }; -u32 invanim_combatknife_slash[] = { +struct guncmd invanim_combatknife_slash[] = { gunscript_random(50, invanim_combatknife_slash2) gunscript_include(0, invanim_combatknife_equip) gunscript_end }; -u32 invanim_combatknife_pritosec[] = { +struct guncmd invanim_combatknife_pritosec[] = { gunscript_playanimation(0x0405, 0, 10000) gunscript_playsound(30, 0x80a7) gunscript_playsound(40, 0x80a6) gunscript_end }; -u32 invanim_combatknife_sectopri[] = { +struct guncmd invanim_combatknife_sectopri[] = { gunscript_playanimation(0x0405, 65535, 55536) gunscript_playsound(10, 0x80a8) gunscript_playsound(20, 0x80a6) gunscript_end }; -u32 invanim_combatknife_throw[] = { +struct guncmd invanim_combatknife_throw[] = { gunscript_playanimation(0x041b, 0, 10000) gunscript_waitforzreleased(12) gunscript_waittime(16, 2) gunscript_end }; -u32 invanim_unused_8007f05c[] = { +struct guncmd invanim_unused_8007f05c[] = { gunscript_playanimation(0x041c, 0, 10000) gunscript_waittime(22, 1) gunscript_end }; -u32 invanim_combatknife_reload[] = { +struct guncmd invanim_combatknife_reload[] = { gunscript_include(2, invanim_combatknife_sectopri) gunscript_include(0, invanim_combatknife_pritosec) gunscript_end @@ -5336,17 +5336,17 @@ struct weapon invitem_xrayscanner = { 0x08600058, // flags }; -u32 invanim_datauplink_equip[] = { +struct guncmd invanim_datauplink_equip[] = { gunscript_playanimation(0x0439, 0, 10000) gunscript_end }; -u32 invanim_datauplink_unequip[] = { +struct guncmd invanim_datauplink_unequip[] = { gunscript_playanimation(0x043a, 0, 10000) gunscript_end }; -u32 invanim_unused_8007f794[] = { +struct guncmd invanim_unused_8007f794[] = { gunscript_playanimation(0x043b, 0, 10000) gunscript_end }; @@ -5915,7 +5915,7 @@ struct weapon invitem_rocketlauncher_34 = { 0x40026070, // flags }; -u32 invanim_tester_shoot[] = { +struct guncmd invanim_tester_shoot[] = { gunscript_playanimation(0x0112, 0, 10000) gunscript_end }; diff --git a/src/include/constants.h b/src/include/constants.h index 8ef998308..feec37ded 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -867,6 +867,19 @@ #define GOPOSFLAG_DUCK 0x40 #define GOPOSFLAG_80 0x80 +#define GUNCMD_END 0 +#define GUNCMD_SHOWPART 1 +#define GUNCMD_HIDEPART 2 +#define GUNCMD_WAITFORZRELEASED 3 +#define GUNCMD_WAITTIME 4 +#define GUNCMD_PLAYSOUND 5 +#define GUNCMD_INCLUDE 6 +#define GUNCMD_RANDOM 7 +#define GUNCMD_REPEATUNTILFULL 8 +#define GUNCMD_POPOUTSACKOFPILLS 9 +#define GUNCMD_PLAYANIMATION 10 +#define GUNCMD_SETSOUNDSPEED 11 + #define GUNMEMOWNER_0 0 #define GUNMEMOWNER_1 1 #define GUNMEMOWNER_2 2 diff --git a/src/include/game/game_097ba0.h b/src/include/game/game_097ba0.h index 95f344596..63ed2af80 100644 --- a/src/include/game/game_097ba0.h +++ b/src/include/game/game_097ba0.h @@ -13,8 +13,8 @@ u32 func0f097f28(void); u32 func0f098030(void); u32 func0f09815c(void); u32 func0f0981e8(void); -bool func0f098884(struct remoteminething *arg0, struct shorthand *hand); -void func0f0988e0(struct remoteminething *arg0, bool arg1, struct hand *hand); +bool func0f098884(struct guncmd *cmd, struct shorthand *hand); +void func0f0988e0(struct guncmd *cmd, bool arg1, struct hand *hand); u32 func0f098a44(void); u32 func0f098bfc(void); void func0f098c0c(struct hand *hand); @@ -43,7 +43,7 @@ s32 func0f09b8e0(struct handweaponinfo *info, s32 handnum, struct hand *hand, s3 s32 func0f09bc2c(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate); u32 func0f09bd58(void); bool func0f09bec8(s32 handnum); -s32 func0f09bf44(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate); +u32 func0f09bf44(void); s32 func0f09c01c(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate); s32 func0f09cb44(struct handweaponinfo *info, s32 handnum, struct hand *hand, s32 lvupdate); s32 func0f09cb5c(struct handweaponinfo *info, s32 handnum, s32 lvupdate); diff --git a/src/include/game/game_0b0fd0.h b/src/include/game/game_0b0fd0.h index 9d3314f80..ee359f3bb 100644 --- a/src/include/game/game_0b0fd0.h +++ b/src/include/game/game_0b0fd0.h @@ -35,7 +35,7 @@ bool handHasFunctionFlags(struct shorthand *hand, u32 flags); s8 weaponGetMaxFireRatePerTick(u32 weaponnum, u32 funcindex); u32 currentPlayerGetSight(void); void func0f0b201c(struct shorthand *hand, f32 *arg1); -u32 *handGetPriToSecAnim(struct shorthand *hand); -u32 *handGetSecToPriAnim(struct shorthand *hand); +struct guncmd *handGetPriToSecAnim(struct shorthand *hand); +struct guncmd *handGetSecToPriAnim(struct shorthand *hand); #endif diff --git a/src/include/gunscript.h b/src/include/gunscript.h index a0b92536a..35c814763 100644 --- a/src/include/gunscript.h +++ b/src/include/gunscript.h @@ -1,48 +1,36 @@ #define gunscript_end \ - 0, \ - 0, + { GUNCMD_END }, #define gunscript_showpart(keyframe, part) \ - 0x01000000 | keyframe, \ - part, + { GUNCMD_SHOWPART, 0, keyframe, part }, #define gunscript_hidepart(keyframe, part) \ - 0x02000000 | keyframe, \ - part, + { GUNCMD_HIDEPART, 0, keyframe, part }, #define gunscript_waitforzreleased(keyframe) \ - 0x03000000 | keyframe, \ - 0, + { GUNCMD_WAITFORZRELEASED, 0, keyframe }, #define gunscript_waittime(keyframe, time) \ - 0x04000000 | keyframe, \ - time, + { GUNCMD_WAITTIME, 0, keyframe, time }, #define gunscript_playsound(keyframe, sound) \ - 0x05000000 | keyframe, \ - sound, + { GUNCMD_PLAYSOUND, 0, keyframe, sound }, #define gunscript_include(unk1, address) \ - 0x06000000 | (unk1 << 16), \ - (u32)address, + { GUNCMD_INCLUDE, unk1, 0, (u32)address }, #define gunscript_random(probability, address) \ - 0x07000000 | probability, \ - (u32)address, + { GUNCMD_RANDOM, 0, probability, (u32)address }, #define gunscript_repeatuntilfull(triggerkey, dontloop, gototrigger) \ - 0x08000000 | triggerkey, \ - (dontloop << 16) | gototrigger, + { GUNCMD_REPEATUNTILFULL, 0, triggerkey, (dontloop << 16) | gototrigger }, #define gunscript_popoutsackofpills(unk1) \ - 0x09000000 | unk1, \ - 0, + { GUNCMD_POPOUTSACKOFPILLS, 0, unk1 }, #define gunscript_playanimation(animation, direction, speed) \ - 0x0a000000 | animation, \ - (direction << 16) | speed, + { GUNCMD_PLAYANIMATION, 0, animation, (direction << 16) | speed }, #define gunscript_setsoundspeed(keyframe, speed) \ - 0x0b000000 | keyframe, \ - speed, + { GUNCMD_SETSOUNDSPEED, 0, keyframe, speed }, diff --git a/src/include/types.h b/src/include/types.h index bd55eb319..46add71a6 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -2046,7 +2046,7 @@ struct hand { /*0x0cdc*/ u32 unk0cdc; /*0x0ce0*/ u32 unk0ce0; /*0x0ce4*/ u32 attacktype; - /*0x0ce8*/ struct remoteminething *unk0ce8; + /*0x0ce8*/ struct guncmd *unk0ce8; /*0x0cec*/ ubool unk0cec; /*0x0cf0*/ struct coord unk0cf0; /*0x0cfc*/ struct coord unk0cfc; @@ -2087,7 +2087,7 @@ struct hand { /*0x0d70*/ u32 unk0d70; /*0x0d74*/ u16 unk0d74[4]; /*0x0d7c*/ u32 unk0d7c; - /*0x0d80*/ struct remoteminething *unk0d80; + /*0x0d80*/ struct guncmd *unk0d80; /*0x0d84*/ struct audiohandle *audiohandle; /*0x0d88*/ u32 ispare4; /*0x0d8c*/ u32 ispare5; @@ -2107,7 +2107,7 @@ struct hand { /*0x0dc4*/ struct abmag abmag; /*0x0dcc*/ u32 unk0dcc; /*0x0dd0*/ u32 unk0dd0; - /*0x0dd4*/ u32 unk0dd4; + /*0x0dd4*/ s32 unk0dd4; /*0x0dd8*/ u32 unk0dd8; }; @@ -2772,7 +2772,7 @@ struct weaponfunc { /*0x06*/ u8 unk06; /*0x07*/ s8 ammoindex; // -1 = no ammo, 0 or 1 = index into weapon->ammos[] /*0x08*/ struct inventory_menupos *menupos; - /*0x0c*/ u32 *fire_animation; + /*0x0c*/ struct guncmd *fire_animation; /*0x10*/ u32 flags; }; @@ -2893,7 +2893,7 @@ struct inventory_ammo { u32 type; u32 casingeject; s16 clipsize; - u32 *reload_animation; + struct guncmd *reload_animation; u32 style; }; @@ -2905,10 +2905,10 @@ struct modelpartvisibility { struct weapon { /*0x00*/ u16 hi_model; /*0x02*/ u16 lo_model; - /*0x04*/ u32 *equip_animation; - /*0x08*/ u32 *unequip_animation; - /*0x0c*/ u32 *pritosec_animation; - /*0x10*/ u32 *sectopri_animation; + /*0x04*/ struct guncmd *equip_animation; + /*0x08*/ struct guncmd *unequip_animation; + /*0x0c*/ struct guncmd *pritosec_animation; + /*0x10*/ struct guncmd *sectopri_animation; /*0x14*/ void *functions[2]; /*0x1c*/ struct inventory_ammo *ammos[2]; /*0x24*/ struct inventory_typee *eptr; @@ -6509,15 +6509,11 @@ struct var800a3180 { /*0x64*/ u32 unk64; }; -struct remoteminething { - u8 unk00; +struct guncmd { + u8 type; u8 unk01; u16 unk02; - - union { - u32 unk04; - struct remoteminething *next; - }; + u32 unk04; }; struct pakthing {