diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index f349084fa..0fd7c02d6 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -14540,7 +14540,7 @@ glabel func0f027e1c /* f027f0c: 27a400a4 */ addiu $a0,$sp,0xa4 /* f027f10: 8fa40048 */ lw $a0,0x48($sp) /* f027f14: 8e250004 */ lw $a1,0x4($s1) -/* f027f18: 0fc29f66 */ jal func0f0a7d98 +/* f027f18: 0fc29f66 */ jal handPlayPropHitSound /* f027f1c: 2406ffff */ addiu $a2,$zero,-1 /* f027f20: 8fa200f8 */ lw $v0,0xf8($sp) /* f027f24: 3c0b800a */ lui $t3,%hi(g_Vars+0x284) @@ -14983,7 +14983,7 @@ glabel func0f027e1c /* f027928: 27a400a4 */ addiu $a0,$sp,0xa4 /* f02792c: 8fa40048 */ lw $a0,0x48($sp) /* f027930: 8e250004 */ lw $a1,0x4($s1) -/* f027934: 0fc296b1 */ jal func0f0a7d98 +/* f027934: 0fc296b1 */ jal handPlayPropHitSound /* f027938: 2406ffff */ addiu $a2,$zero,-1 /* f02793c: 8fa200f8 */ lw $v0,0xf8($sp) /* f027940: 3c0a800a */ lui $t2,0x800a diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index c77e95d21..e1e4453aa 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -4172,7 +4172,7 @@ void func0f0341dc(struct chrdata *chr, f32 damage, struct coord *vector, struct } /** - * Unused, and same as func0f034330 but sets ibh to IBH_GENERAL instead of argument. + * Unused, and same as chrDamageByImpact but sets ibh to IBH_GENERAL instead of argument. */ void func0f034248(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop) { @@ -4196,7 +4196,10 @@ void func0f034248(struct chrdata *chr, f32 damage, struct coord *vector, struct NULL); // explosionpos } -void func0f034330(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop, s32 ibh) +/** + * Used for punching, but also used by AI commands to make chrs take damage. + */ +void chrDamageByImpact(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop, s32 ibh) { struct modelnode *node = NULL; struct model *model = NULL; @@ -7662,77 +7665,6 @@ bool chrCanSeeChr(struct chrdata *chr, struct chrdata *target, s16 *room) return cansee; } -u32 var80068298 = 0x01000000; -u32 var8006829c = 0x0000027c; -u32 var800682a0 = 0x00000005; -u32 var800682a4 = 0x00140000; -u32 var800682a8 = 0x42700000; -u32 var800682ac = 0x0000027d; -u32 var800682b0 = 0x00000005; -u32 var800682b4 = 0x00140000; -u32 var800682b8 = 0x41f80000; -u32 var800682bc = 0x0000027e; -u32 var800682c0 = 0x00000005; -u32 var800682c4 = 0x00140000; -u32 var800682c8 = 0x42400000; -u32 var800682cc = 0x0000027f; -u32 var800682d0 = 0x00000005; -u32 var800682d4 = 0x00140000; -u32 var800682d8 = 0x428a0000; -u32 var800682dc = 0x00000212; -u32 var800682e0 = 0x00000005; -u32 var800682e4 = 0x00140000; -u32 var800682e8 = 0x42800000; -u32 var800682ec = 0x00000213; -u32 var800682f0 = 0x00000005; -u32 var800682f4 = 0x00140000; -u32 var800682f8 = 0x42500000; -u32 var800682fc = 0x00000214; -u32 var80068300 = 0x00000005; -u32 var80068304 = 0x00140000; -u32 var80068308 = 0x424c0000; -u32 var8006830c = 0x0000020e; -u32 var80068310 = 0x00000005; -u32 var80068314 = 0x00140000; -u32 var80068318 = 0x42540000; -u32 var8006831c = 0x0000020f; -u32 var80068320 = 0x00000005; -u32 var80068324 = 0x00140000; -u32 var80068328 = 0x42b20000; -u32 var8006832c = 0x00000210; -u32 var80068330 = 0x00000005; -u32 var80068334 = 0x00140000; -u32 var80068338 = 0x428e0000; -u32 var8006833c = 0x00000215; -u32 var80068340 = 0x00000005; -u32 var80068344 = 0x00140000; -u32 var80068348 = 0x42780000; -u32 var8006834c = 0x00000211; -u32 var80068350 = 0x00000005; -u32 var80068354 = 0x00140000; -u32 var80068358 = 0x42900000; -u32 var8006835c = 0x0000034c; -u32 var80068360 = 0x0000000f; -u32 var80068364 = 0x00190000; -u32 var80068368 = 0x42c80000; -u32 var8006836c = 0x0000034d; -u32 var80068370 = 0x0000000f; -u32 var80068374 = 0x00190000; -u32 var80068378 = 0xbf800000; -u32 var8006837c = 0x00000395; -u32 var80068380 = 0x0000000f; -u32 var80068384 = 0x00190000; -u32 var80068388 = 0xbf800000; -u32 var8006838c = 0x00000346; -u32 var80068390 = 0x0000000f; -u32 var80068394 = 0x00190000; -u32 var80068398 = 0xbf800000; -u32 var8006839c = 0x00000347; -u32 var800683a0 = 0x0000000f; -u32 var800683a4 = 0x00190000; -u32 var800683a8 = 0xbf800000; -u32 var800683ac = 0x0000034f; - bool chrCanSeeTarget(struct chrdata *chr) { bool cansee; @@ -9082,109 +9014,105 @@ bool chrDropItem(struct chrdata *chr, u32 modelnum, u32 weaponnum) return false; } -GLOBAL_ASM( -glabel func0f03ba44 -/* f03ba44: 27bdffb8 */ addiu $sp,$sp,-72 -/* f03ba48: afbf0024 */ sw $ra,0x24($sp) -/* f03ba4c: afb0001c */ sw $s0,0x1c($sp) -/* f03ba50: 00808025 */ or $s0,$a0,$zero -/* f03ba54: afb10020 */ sw $s1,0x20($sp) -/* f03ba58: afa5004c */ sw $a1,0x4c($sp) -/* f03ba5c: afa60050 */ sw $a2,0x50($sp) -/* f03ba60: 0fc0a221 */ jal chrGetTargetProp -/* f03ba64: afa70054 */ sw $a3,0x54($sp) -/* f03ba68: 3c0e8007 */ lui $t6,%hi(var80068298) -/* f03ba6c: 8dce8298 */ lw $t6,%lo(var80068298)($t6) -/* f03ba70: 00408825 */ or $s1,$v0,$zero -/* f03ba74: 02002025 */ or $a0,$s0,$zero -/* f03ba78: afae0040 */ sw $t6,0x40($sp) -/* f03ba7c: 8e0302d4 */ lw $v1,0x2d4($s0) -/* f03ba80: 24050014 */ addiu $a1,$zero,0x14 -/* f03ba84: 10600008 */ beqz $v1,.L0f03baa8 -/* f03ba88: 00000000 */ nop -/* f03ba8c: 8c6f0020 */ lw $t7,0x20($v1) -/* f03ba90: a3af0040 */ sb $t7,0x40($sp) -/* f03ba94: 8e1802d4 */ lw $t8,0x2d4($s0) -/* f03ba98: 8f19004c */ lw $t9,0x4c($t8) -/* f03ba9c: 00194080 */ sll $t0,$t9,0x2 -/* f03baa0: 00084fc2 */ srl $t1,$t0,0x1f -/* f03baa4: a3a90043 */ sb $t1,0x43($sp) -.L0f03baa8: -/* f03baa8: 0fc1241a */ jal chrIsTargetInFov -/* f03baac: 93a60057 */ lbu $a2,0x57($sp) -/* f03bab0: 5040003e */ beqzl $v0,.L0f03bbac -/* f03bab4: 93a40040 */ lbu $a0,0x40($sp) -/* f03bab8: 0fc12472 */ jal chrGetDistanceToTarget -/* f03babc: 02002025 */ or $a0,$s0,$zero -/* f03bac0: 8faa0050 */ lw $t2,0x50($sp) -/* f03bac4: 448a2000 */ mtc1 $t2,$f4 -/* f03bac8: 00000000 */ nop -/* f03bacc: 468021a0 */ cvt.s.w $f6,$f4 -/* f03bad0: 4606003c */ c.lt.s $f0,$f6 -/* f03bad4: 00000000 */ nop -/* f03bad8: 45020034 */ bc1fl .L0f03bbac -/* f03badc: 93a40040 */ lbu $a0,0x40($sp) -/* f03bae0: 8e02001c */ lw $v0,0x1c($s0) -/* f03bae4: 26260008 */ addiu $a2,$s1,0x8 -/* f03bae8: 24070033 */ addiu $a3,$zero,0x33 -/* f03baec: 24440008 */ addiu $a0,$v0,0x8 -/* f03baf0: 0c00b706 */ jal func0002dc18 -/* f03baf4: 24450028 */ addiu $a1,$v0,0x28 -/* f03baf8: 5040002c */ beqzl $v0,.L0f03bbac -/* f03bafc: 93a40040 */ lbu $a0,0x40($sp) -/* f03bb00: 8e0b001c */ lw $t3,0x1c($s0) -/* f03bb04: c6280008 */ lwc1 $f8,0x8($s1) -/* f03bb08: 44809000 */ mtc1 $zero,$f18 -/* f03bb0c: c56a0008 */ lwc1 $f10,0x8($t3) -/* f03bb10: 27a40034 */ addiu $a0,$sp,0x34 -/* f03bb14: e7b20038 */ swc1 $f18,0x38($sp) -/* f03bb18: 460a4401 */ sub.s $f16,$f8,$f10 -/* f03bb1c: 27a50038 */ addiu $a1,$sp,0x38 -/* f03bb20: 27a6003c */ addiu $a2,$sp,0x3c -/* f03bb24: e7b00034 */ swc1 $f16,0x34($sp) -/* f03bb28: 8e0c001c */ lw $t4,0x1c($s0) -/* f03bb2c: c6240010 */ lwc1 $f4,0x10($s1) -/* f03bb30: c5860010 */ lwc1 $f6,0x10($t4) -/* f03bb34: 46062201 */ sub.s $f8,$f4,$f6 -/* f03bb38: 0c0011e4 */ jal guNormalize -/* f03bb3c: e7a8003c */ swc1 $f8,0x3c($sp) -/* f03bb40: 27a40040 */ addiu $a0,$sp,0x40 -/* f03bb44: 02202825 */ or $a1,$s1,$zero -/* f03bb48: 0fc29f66 */ jal func0f0a7d98 -/* f03bb4c: 2406ffff */ addiu $a2,$zero,-1 -/* f03bb50: 92220000 */ lbu $v0,0x0($s1) -/* f03bb54: 24010006 */ addiu $at,$zero,0x6 -/* f03bb58: 10410003 */ beq $v0,$at,.L0f03bb68 -/* f03bb5c: 24010003 */ addiu $at,$zero,0x3 -/* f03bb60: 54410012 */ bnel $v0,$at,.L0f03bbac -/* f03bb64: 93a40040 */ lbu $a0,0x40($sp) -.L0f03bb68: -/* f03bb68: 0fc2c74a */ jal handGetDamage -/* f03bb6c: 27a40040 */ addiu $a0,$sp,0x40 -/* f03bb70: 8fad004c */ lw $t5,0x4c($sp) -/* f03bb74: 8e0e001c */ lw $t6,0x1c($s0) -/* f03bb78: 8e240004 */ lw $a0,0x4($s1) -/* f03bb7c: 448d5000 */ mtc1 $t5,$f10 -/* f03bb80: 240f00c8 */ addiu $t7,$zero,0xc8 -/* f03bb84: afaf0014 */ sw $t7,0x14($sp) -/* f03bb88: 46805420 */ cvt.s.w $f16,$f10 -/* f03bb8c: 27a60034 */ addiu $a2,$sp,0x34 -/* f03bb90: 27a70040 */ addiu $a3,$sp,0x40 -/* f03bb94: afae0010 */ sw $t6,0x10($sp) -/* f03bb98: 46100482 */ mul.s $f18,$f0,$f16 -/* f03bb9c: 44059000 */ mfc1 $a1,$f18 -/* f03bba0: 0fc0d0cc */ jal func0f034330 -/* f03bba4: 00000000 */ nop -/* f03bba8: 93a40040 */ lbu $a0,0x40($sp) -.L0f03bbac: -/* f03bbac: 0fc18261 */ jal func0f060984 -/* f03bbb0: 8e05001c */ lw $a1,0x1c($s0) -/* f03bbb4: 8fbf0024 */ lw $ra,0x24($sp) -/* f03bbb8: 8fb0001c */ lw $s0,0x1c($sp) -/* f03bbbc: 8fb10020 */ lw $s1,0x20($sp) -/* f03bbc0: 03e00008 */ jr $ra -/* f03bbc4: 27bd0048 */ addiu $sp,$sp,0x48 -); +void chrPunchInflictDamage(struct chrdata *chr, s32 damage, s32 range, u8 arg3) +{ + struct prop *targetprop = chrGetTargetProp(chr); + struct shorthand hand = {WEAPON_UNARMED, 0, 0, FUNC_PRIMARY}; + struct coord vector; + + if (chr->aibot) { + hand.weaponnum = chr->aibot->weaponnum; + hand.weaponfunc = chr->aibot->gunfunc; + } + + if (chrIsTargetInFov(chr, 20, arg3) + && chrGetDistanceToTarget(chr) < range + && func0002dc18(&chr->prop->pos, chr->prop->rooms, &targetprop->pos, 0x33)) { + vector.x = targetprop->pos.x - chr->prop->pos.x; + vector.y = 0; + vector.z = targetprop->pos.z - chr->prop->pos.z; + + guNormalize(&vector.x, &vector.y, &vector.z); + + handPlayPropHitSound(&hand, targetprop, -1); + + if (targetprop->type == PROPTYPE_PLAYER || targetprop->type == PROPTYPE_CHR) { + chrDamageByImpact(targetprop->chr, handGetDamage(&hand) * damage, &vector, &hand, chr->prop, 200); + } + } + + weaponPlayWhooshSound(hand.weaponnum, chr->prop); +} + +u32 var8006829c = 0x0000027c; +u32 var800682a0 = 0x00000005; +u32 var800682a4 = 0x00140000; +u32 var800682a8 = 0x42700000; +u32 var800682ac = 0x0000027d; +u32 var800682b0 = 0x00000005; +u32 var800682b4 = 0x00140000; +u32 var800682b8 = 0x41f80000; +u32 var800682bc = 0x0000027e; +u32 var800682c0 = 0x00000005; +u32 var800682c4 = 0x00140000; +u32 var800682c8 = 0x42400000; +u32 var800682cc = 0x0000027f; +u32 var800682d0 = 0x00000005; +u32 var800682d4 = 0x00140000; +u32 var800682d8 = 0x428a0000; +u32 var800682dc = 0x00000212; +u32 var800682e0 = 0x00000005; +u32 var800682e4 = 0x00140000; +u32 var800682e8 = 0x42800000; +u32 var800682ec = 0x00000213; +u32 var800682f0 = 0x00000005; +u32 var800682f4 = 0x00140000; +u32 var800682f8 = 0x42500000; +u32 var800682fc = 0x00000214; +u32 var80068300 = 0x00000005; +u32 var80068304 = 0x00140000; +u32 var80068308 = 0x424c0000; +u32 var8006830c = 0x0000020e; +u32 var80068310 = 0x00000005; +u32 var80068314 = 0x00140000; +u32 var80068318 = 0x42540000; +u32 var8006831c = 0x0000020f; +u32 var80068320 = 0x00000005; +u32 var80068324 = 0x00140000; +u32 var80068328 = 0x42b20000; +u32 var8006832c = 0x00000210; +u32 var80068330 = 0x00000005; +u32 var80068334 = 0x00140000; +u32 var80068338 = 0x428e0000; +u32 var8006833c = 0x00000215; +u32 var80068340 = 0x00000005; +u32 var80068344 = 0x00140000; +u32 var80068348 = 0x42780000; +u32 var8006834c = 0x00000211; +u32 var80068350 = 0x00000005; +u32 var80068354 = 0x00140000; +u32 var80068358 = 0x42900000; +u32 var8006835c = 0x0000034c; +u32 var80068360 = 0x0000000f; +u32 var80068364 = 0x00190000; +u32 var80068368 = 0x42c80000; +u32 var8006836c = 0x0000034d; +u32 var80068370 = 0x0000000f; +u32 var80068374 = 0x00190000; +u32 var80068378 = 0xbf800000; +u32 var8006837c = 0x00000395; +u32 var80068380 = 0x0000000f; +u32 var80068384 = 0x00190000; +u32 var80068388 = 0xbf800000; +u32 var8006838c = 0x00000346; +u32 var80068390 = 0x0000000f; +u32 var80068394 = 0x00190000; +u32 var80068398 = 0xbf800000; +u32 var8006839c = 0x00000347; +u32 var800683a0 = 0x0000000f; +u32 var800683a4 = 0x00190000; +u32 var800683a8 = 0xbf800000; +u32 var800683ac = 0x0000034f; GLOBAL_ASM( glabel chrTryPunchOrKick @@ -10121,7 +10049,7 @@ void chrTickAnim(struct chrdata *chr) if (chr->act_anim.unk040 != 0 && modelGetCurAnimFrame(chr->model) >= (s32)chr->act_anim.unk042) { chr->act_anim.unk040 = 0; - func0f03ba44(chr, chr->act_anim.unk044, chr->act_anim.unk046, chr->act_anim.unk041); + chrPunchInflictDamage(chr, chr->act_anim.unk044, chr->act_anim.unk046, chr->act_anim.unk041); } // Play sneezing sound @@ -14326,7 +14254,7 @@ glabel var7f1a9184 .PF0f041678: /* f041678: 27a40260 */ addiu $a0,$sp,0x260 /* f04167c: 8fa5025c */ lw $a1,0x25c($sp) -/* f041680: 0fc2a079 */ jal func0f0a7d98 +/* f041680: 0fc2a079 */ jal handPlayPropHitSound /* f041684: 2406ffff */ li $a2,-1 /* f041688: 8fa40088 */ lw $a0,0x88($sp) /* f04168c: 8c8b0020 */ lw $t3,0x20($a0) @@ -14430,7 +14358,7 @@ glabel var7f1a9184 /* f0417f4: 27a40260 */ addiu $a0,$sp,0x260 /* f0417f8: 8cad0004 */ lw $t5,0x4($a1) /* f0417fc: 2406ffff */ li $a2,-1 -/* f041800: 0fc2a079 */ jal func0f0a7d98 +/* f041800: 0fc2a079 */ jal handPlayPropHitSound /* f041804: afad0070 */ sw $t5,0x70($sp) /* f041808: 8fa40070 */ lw $a0,0x70($sp) /* f04180c: 8c990020 */ lw $t9,0x20($a0) @@ -14510,7 +14438,7 @@ glabel var7f1a9184 .PF0f041920: /* f041920: 27a40260 */ addiu $a0,$sp,0x260 /* f041924: 8fa501cc */ lw $a1,0x1cc($sp) -/* f041928: 0fc2a079 */ jal func0f0a7d98 +/* f041928: 0fc2a079 */ jal handPlayPropHitSound /* f04192c: 2406ffff */ li $a2,-1 /* f041930: 27a40244 */ addiu $a0,$sp,0x244 /* f041934: 27a50234 */ addiu $a1,$sp,0x234 @@ -15916,7 +15844,7 @@ glabel var7f1a9184 .L0f0414d4: /* f0414d4: 27a40260 */ addiu $a0,$sp,0x260 /* f0414d8: 8fa5025c */ lw $a1,0x25c($sp) -/* f0414dc: 0fc29f66 */ jal func0f0a7d98 +/* f0414dc: 0fc29f66 */ jal handPlayPropHitSound /* f0414e0: 2406ffff */ addiu $a2,$zero,-1 /* f0414e4: 8fa40088 */ lw $a0,0x88($sp) /* f0414e8: 8c8e0020 */ lw $t6,0x20($a0) @@ -16020,7 +15948,7 @@ glabel var7f1a9184 /* f041650: 27a40260 */ addiu $a0,$sp,0x260 /* f041654: 8cac0004 */ lw $t4,0x4($a1) /* f041658: 2406ffff */ addiu $a2,$zero,-1 -/* f04165c: 0fc29f66 */ jal func0f0a7d98 +/* f04165c: 0fc29f66 */ jal handPlayPropHitSound /* f041660: afac0070 */ sw $t4,0x70($sp) /* f041664: 8fa40070 */ lw $a0,0x70($sp) /* f041668: 8c8d0020 */ lw $t5,0x20($a0) @@ -16100,7 +16028,7 @@ glabel var7f1a9184 .L0f04177c: /* f04177c: 27a40260 */ addiu $a0,$sp,0x260 /* f041780: 8fa501cc */ lw $a1,0x1cc($sp) -/* f041784: 0fc29f66 */ jal func0f0a7d98 +/* f041784: 0fc29f66 */ jal handPlayPropHitSound /* f041788: 2406ffff */ addiu $a2,$zero,-1 /* f04178c: 27a40244 */ addiu $a0,$sp,0x244 /* f041790: 27a50234 */ addiu $a1,$sp,0x234 @@ -17500,7 +17428,7 @@ glabel var7f1a9184 .NB0f040c9c: /* f040c9c: 27a40260 */ addiu $a0,$sp,0x260 /* f040ca0: 8fa5025c */ lw $a1,0x25c($sp) -/* f040ca4: 0fc296b1 */ jal func0f0a7d98 +/* f040ca4: 0fc296b1 */ jal handPlayPropHitSound /* f040ca8: 2406ffff */ addiu $a2,$zero,-1 /* f040cac: 8fa40088 */ lw $a0,0x88($sp) /* f040cb0: 8c8c0020 */ lw $t4,0x20($a0) @@ -17604,7 +17532,7 @@ glabel var7f1a9184 /* f040e18: 27a40260 */ addiu $a0,$sp,0x260 /* f040e1c: 8cb90004 */ lw $t9,0x4($a1) /* f040e20: 2406ffff */ addiu $a2,$zero,-1 -/* f040e24: 0fc296b1 */ jal func0f0a7d98 +/* f040e24: 0fc296b1 */ jal handPlayPropHitSound /* f040e28: afb90070 */ sw $t9,0x70($sp) /* f040e2c: 8fa40070 */ lw $a0,0x70($sp) /* f040e30: 8c8b0020 */ lw $t3,0x20($a0) @@ -17684,7 +17612,7 @@ glabel var7f1a9184 .NB0f040f44: /* f040f44: 27a40260 */ addiu $a0,$sp,0x260 /* f040f48: 8fa501cc */ lw $a1,0x1cc($sp) -/* f040f4c: 0fc296b1 */ jal func0f0a7d98 +/* f040f4c: 0fc296b1 */ jal handPlayPropHitSound /* f040f50: 2406ffff */ addiu $a2,$zero,-1 /* f040f54: 27a40244 */ addiu $a0,$sp,0x244 /* f040f58: 27a50234 */ addiu $a1,$sp,0x234 @@ -23947,7 +23875,7 @@ void chrTickSkJump(struct chrdata *chr) } if (chr->act_skjump.hit == false && chrGetDistanceToTarget(chr) < 150.0f) { - func0f03ba44(chr, 3, 0x96, 0); + chrPunchInflictDamage(chr, 3, 0x96, 0); chr->act_skjump.hit = true; } diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index 0ba5b576b..b881a2e64 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -813,7 +813,7 @@ bool ai0019(void) if (chr && chr->prop) { f32 damage = handGetDamage((struct shorthand *)&cmd[4]); - func0f034330(chr, damage, &pos, (struct shorthand *)&cmd[4], NULL, (s8)cmd[3]); + chrDamageByImpact(chr, damage, &pos, (struct shorthand *)&cmd[4], NULL, (s8)cmd[3]); } g_Vars.aioffset += 8; @@ -847,7 +847,7 @@ bool aiChrDamageChr(void) guNormalize(&vector.x, &vector.y, &vector.z); weapon = prop->weapon; damage = handGetDamage((struct shorthand *)&weapon->weaponnum); - func0f034330(chr2, damage, &vector, (struct shorthand *)&weapon->weaponnum, chr1->prop, (s8)cmd[4]); + chrDamageByImpact(chr2, damage, &vector, (struct shorthand *)&weapon->weaponnum, chr1->prop, (s8)cmd[4]); } } diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index 9ff3a33be..f6dc044bb 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -27645,7 +27645,7 @@ struct audiohandle **func0f0a7d5c(void) #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( -glabel func0f0a7d98 +glabel handPlayPropHitSound .late_rodata glabel var7f1aca94 .word 0x453b8000 @@ -28093,7 +28093,7 @@ glabel var7f1aca94 ); #else GLOBAL_ASM( -glabel func0f0a7d98 +glabel handPlayPropHitSound .late_rodata glabel var7f1aca94 .word 0x453b8000 diff --git a/src/game/game_190260.c b/src/game/game_190260.c index 5ef20e2fa..1f79d5ddb 100644 --- a/src/game/game_190260.c +++ b/src/game/game_190260.c @@ -9133,7 +9133,7 @@ glabel var7f1b8fc8 /* f197f4c: 02802025 */ move $a0,$s4 /* f197f50: 24050002 */ li $a1,0x2 /* f197f54: 02003025 */ move $a2,$s0 -/* f197f58: 0fc0eef2 */ jal func0f03ba44 +/* f197f58: 0fc0eef2 */ jal chrPunchInflictDamage /* f197f5c: 00003825 */ move $a3,$zero /* f197f60: 16600199 */ bnez $s3,.PF0f1985c8 /* f197f64: 00000000 */ nop @@ -12141,7 +12141,7 @@ glabel var7f1b8fc8 /* f196e7c: 02802025 */ or $a0,$s4,$zero /* f196e80: 24050002 */ addiu $a1,$zero,0x2 /* f196e84: 02003025 */ or $a2,$s0,$zero -/* f196e88: 0fc0ee91 */ jal func0f03ba44 +/* f196e88: 0fc0ee91 */ jal chrPunchInflictDamage /* f196e8c: 00003825 */ or $a3,$zero,$zero /* f196e90: 1660018e */ bnez $s3,.L0f1974cc /* f196e94: 00000000 */ nop diff --git a/src/game/game_1999b0.c b/src/game/game_1999b0.c index 1da1625ab..89f4d2492 100644 --- a/src/game/game_1999b0.c +++ b/src/game/game_1999b0.c @@ -267,7 +267,7 @@ bool aibotDoFarsightThing(struct chrdata *chr, u32 arg1, struct coord *vector, s if (oppchr != chr && value > rand && func0f06b39c(arg3, vector, &oppprop->pos, func0f0278a4(oppchr))) { - func0f0a7d98(&hand, oppprop, -1); + handPlayPropHitSound(&hand, oppprop, -1); if (oppchr->model && chrGetShield(oppchr) > 0) { chrCalculateShieldHit(oppchr, &oppprop->pos, vector, &node, &ibh, &model, &side); diff --git a/src/game/prop.c b/src/game/prop.c index 14f220659..2a1929a8a 100644 --- a/src/game/prop.c +++ b/src/game/prop.c @@ -428,7 +428,7 @@ Gfx *propsRender(Gfx *gdl, s16 arg1, s32 arg2, s16 *arg3) #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( -glabel func0f060984 +glabel weaponPlayWhooshSound .late_rodata glabel var7f1a9e44 .word 0x4031eb85 @@ -590,7 +590,7 @@ glabel var7f1a9e50 ); #else GLOBAL_ASM( -glabel func0f060984 +glabel weaponPlayWhooshSound .late_rodata glabel var7f1a9e44 .word 0x4031eb85 @@ -2127,7 +2127,7 @@ glabel var7f1a9eb8 /* f061c64: 10000003 */ b .L0f061c74 /* f061c68: 00000000 */ nop .L0f061c6c: -/* f061c6c: 0fc18261 */ jal func0f060984 +/* f061c6c: 0fc18261 */ jal weaponPlayWhooshSound /* f061c70: 8c6500bc */ lw $a1,0xbc($v1) .L0f061c74: /* f061c74: 10000031 */ b .L0f061d3c @@ -2655,7 +2655,7 @@ void handInflictCloseRangeDamage(s32 handnum, struct shorthand *hand, bool arg2) handCalculateShotSpread(&spb8, &vector, handnum, true); skipthething = true; func00015b10(currentPlayerGetUnk174c(), &vector); - func0f0a7d98(hand, prop, -1); + handPlayPropHitSound(hand, prop, -1); if (chr->model && chrGetShield(chr) > 0) { chrCalculateShieldHit(chr, &playerprop->pos, &vector, &node, &ibh, &model, &side); diff --git a/src/game/propobj.c b/src/game/propobj.c index b172c273c..263951a1b 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -12279,7 +12279,7 @@ glabel func0f06f0a0 /* f06f240: 00000000 */ nop /* f06f244: 14e20012 */ bne $a3,$v0,.L0f06f290 /* f06f248: 2604005c */ addiu $a0,$s0,0x5c -/* f06f24c: 0fc29f66 */ jal func0f0a7d98 +/* f06f24c: 0fc29f66 */ jal handPlayPropHitSound /* f06f250: 2406ffff */ addiu $a2,$zero,-1 /* f06f254: 9219005c */ lbu $t9,0x5c($s0) /* f06f258: 2401001a */ addiu $at,$zero,0x1a @@ -37054,7 +37054,7 @@ glabel var7f1aa5a8 /* f07a3fc: 51e00114 */ beqzl $t7,.L0f07a850 /* f07a400: 8fa40198 */ lw $a0,0x198($sp) .L0f07a404: -/* f07a404: 0fc29f66 */ jal func0f0a7d98 +/* f07a404: 0fc29f66 */ jal handPlayPropHitSound /* f07a408: 2406ffff */ addiu $a2,$zero,-1 /* f07a40c: 8fa400ac */ lw $a0,0xac($sp) /* f07a410: 8c980020 */ lw $t8,0x20($a0) @@ -37182,7 +37182,7 @@ glabel var7f1aa5a8 /* f07a5dc: 27a400a0 */ addiu $a0,$sp,0xa0 .L0f07a5e0: /* f07a5e0: 8fa500a8 */ lw $a1,0xa8($sp) -/* f07a5e4: 0fc29f66 */ jal func0f0a7d98 +/* f07a5e4: 0fc29f66 */ jal handPlayPropHitSound /* f07a5e8: 240600f2 */ addiu $a2,$zero,0xf2 /* f07a5ec: 10000098 */ b .L0f07a850 /* f07a5f0: 8fa40198 */ lw $a0,0x198($sp) @@ -37323,7 +37323,7 @@ glabel var7f1aa5a8 .L0f07a7f4: /* f07a7f4: 27a40118 */ addiu $a0,$sp,0x118 /* f07a7f8: 8fa50124 */ lw $a1,0x124($sp) -/* f07a7fc: 0fc29f66 */ jal func0f0a7d98 +/* f07a7fc: 0fc29f66 */ jal handPlayPropHitSound /* f07a800: 2406ffff */ addiu $a2,$zero,-1 /* f07a804: 3c013f00 */ lui $at,0x3f00 /* f07a808: 44815000 */ mtc1 $at,$f10 @@ -37338,7 +37338,7 @@ glabel var7f1aa5a8 /* f07a82c: 27a6014c */ addiu $a2,$sp,0x14c /* f07a830: 27a70118 */ addiu $a3,$sp,0x118 /* f07a834: 44050000 */ mfc1 $a1,$f0 -/* f07a838: 0fc0d0cc */ jal func0f034330 +/* f07a838: 0fc0d0cc */ jal chrDamageByImpact /* f07a83c: 00000000 */ nop /* f07a840: 44809000 */ mtc1 $zero,$f18 /* f07a844: 8fad0194 */ lw $t5,0x194($sp) @@ -38016,7 +38016,7 @@ glabel var7f1aa5a8 /* f07a3fc: 51e00114 */ beqzl $t7,.L0f07a850 /* f07a400: 8fa40198 */ lw $a0,0x198($sp) .L0f07a404: -/* f07a404: 0fc29f66 */ jal func0f0a7d98 +/* f07a404: 0fc29f66 */ jal handPlayPropHitSound /* f07a408: 2406ffff */ addiu $a2,$zero,-1 /* f07a40c: 8fa400ac */ lw $a0,0xac($sp) /* f07a410: 8c980020 */ lw $t8,0x20($a0) @@ -38144,7 +38144,7 @@ glabel var7f1aa5a8 /* f07a5dc: 27a400a0 */ addiu $a0,$sp,0xa0 .L0f07a5e0: /* f07a5e0: 8fa500a8 */ lw $a1,0xa8($sp) -/* f07a5e4: 0fc29f66 */ jal func0f0a7d98 +/* f07a5e4: 0fc29f66 */ jal handPlayPropHitSound /* f07a5e8: 240600f2 */ addiu $a2,$zero,0xf2 /* f07a5ec: 10000098 */ b .L0f07a850 /* f07a5f0: 8fa40198 */ lw $a0,0x198($sp) @@ -38285,7 +38285,7 @@ glabel var7f1aa5a8 .L0f07a7f4: /* f07a7f4: 27a40118 */ addiu $a0,$sp,0x118 /* f07a7f8: 8fa50124 */ lw $a1,0x124($sp) -/* f07a7fc: 0fc29f66 */ jal func0f0a7d98 +/* f07a7fc: 0fc29f66 */ jal handPlayPropHitSound /* f07a800: 2406ffff */ addiu $a2,$zero,-1 /* f07a804: 3c013f00 */ lui $at,0x3f00 /* f07a808: 44815000 */ mtc1 $at,$f10 @@ -38300,7 +38300,7 @@ glabel var7f1aa5a8 /* f07a82c: 27a6014c */ addiu $a2,$sp,0x14c /* f07a830: 27a70118 */ addiu $a3,$sp,0x118 /* f07a834: 44050000 */ mfc1 $a1,$f0 -/* f07a838: 0fc0d0cc */ jal func0f034330 +/* f07a838: 0fc0d0cc */ jal chrDamageByImpact /* f07a83c: 00000000 */ nop /* f07a840: 44809000 */ mtc1 $zero,$f18 /* f07a844: 8fad0194 */ lw $t5,0x194($sp) @@ -59821,7 +59821,7 @@ glabel func0f085eac /* f08627c: 15600005 */ bnez $t3,.L0f086294 /* f086280: 8fa40048 */ lw $a0,0x48($sp) /* f086284: 8d050004 */ lw $a1,0x4($t0) -/* f086288: 0fc29f66 */ jal func0f0a7d98 +/* f086288: 0fc29f66 */ jal handPlayPropHitSound /* f08628c: 8506003a */ lh $a2,0x3a($t0) /* f086290: 8fa80124 */ lw $t0,0x124($sp) .L0f086294: @@ -60550,7 +60550,7 @@ glabel func0f085eac /* f084ad8: 15800005 */ bnez $t4,.NB0f084af0 /* f084adc: 8fa40048 */ lw $a0,0x48($sp) /* f084ae0: 8d050004 */ lw $a1,0x4($t0) -/* f084ae4: 0fc296b1 */ jal func0f0a7d98 +/* f084ae4: 0fc296b1 */ jal handPlayPropHitSound /* f084ae8: 8506003a */ lh $a2,0x3a($t0) /* f084aec: 8fa80124 */ lw $t0,0x124($sp) .NB0f084af0: @@ -73999,7 +73999,7 @@ glabel var7f1ab214 .L0f091a70: /* f091a70: 27a40094 */ addiu $a0,$sp,0x94 /* f091a74: 8fa50214 */ lw $a1,0x214($sp) -/* f091a78: 0fc29f66 */ jal func0f0a7d98 +/* f091a78: 0fc29f66 */ jal handPlayPropHitSound /* f091a7c: 2406ffff */ addiu $a2,$zero,-1 /* f091a80: 0fc2c74a */ jal handGetDamage /* f091a84: 27a40094 */ addiu $a0,$sp,0x94 @@ -74014,7 +74014,7 @@ glabel var7f1ab214 /* f091aa8: 8fa6020c */ lw $a2,0x20c($sp) /* f091aac: 27a70094 */ addiu $a3,$sp,0x94 /* f091ab0: 44052000 */ mfc1 $a1,$f4 -/* f091ab4: 0fc0d0cc */ jal func0f034330 +/* f091ab4: 0fc0d0cc */ jal chrDamageByImpact /* f091ab8: 00000000 */ nop /* f091abc: 44809000 */ mtc1 $zero,$f18 /* f091ac0: 8fad0204 */ lw $t5,0x204($sp) @@ -74048,7 +74048,7 @@ glabel var7f1ab214 /* f091b24: afa9006c */ sw $t1,0x6c($sp) /* f091b28: 27a40094 */ addiu $a0,$sp,0x94 /* f091b2c: 01002825 */ or $a1,$t0,$zero -/* f091b30: 0fc29f66 */ jal func0f0a7d98 +/* f091b30: 0fc29f66 */ jal handPlayPropHitSound /* f091b34: 2406ffff */ addiu $a2,$zero,-1 .L0f091b38: /* f091b38: 8fab006c */ lw $t3,0x6c($sp) @@ -74118,7 +74118,7 @@ glabel var7f1ab214 /* f091c28: afb80068 */ sw $t8,0x68($sp) /* f091c2c: 27a40094 */ addiu $a0,$sp,0x94 /* f091c30: 01e02825 */ or $a1,$t7,$zero -/* f091c34: 0fc29f66 */ jal func0f0a7d98 +/* f091c34: 0fc29f66 */ jal handPlayPropHitSound /* f091c38: 2406ffff */ addiu $a2,$zero,-1 .L0f091c3c: /* f091c3c: 8fa40208 */ lw $a0,0x208($sp) @@ -74728,7 +74728,7 @@ glabel var7f1ab214 .L0f091a70: /* f091a70: 27a40094 */ addiu $a0,$sp,0x94 /* f091a74: 8fa50214 */ lw $a1,0x214($sp) -/* f091a78: 0fc29f66 */ jal func0f0a7d98 +/* f091a78: 0fc29f66 */ jal handPlayPropHitSound /* f091a7c: 2406ffff */ addiu $a2,$zero,-1 /* f091a80: 0fc2c74a */ jal handGetDamage /* f091a84: 27a40094 */ addiu $a0,$sp,0x94 @@ -74743,7 +74743,7 @@ glabel var7f1ab214 /* f091aa8: 8fa6020c */ lw $a2,0x20c($sp) /* f091aac: 27a70094 */ addiu $a3,$sp,0x94 /* f091ab0: 44052000 */ mfc1 $a1,$f4 -/* f091ab4: 0fc0d0cc */ jal func0f034330 +/* f091ab4: 0fc0d0cc */ jal chrDamageByImpact /* f091ab8: 00000000 */ nop /* f091abc: 44809000 */ mtc1 $zero,$f18 /* f091ac0: 8fad0204 */ lw $t5,0x204($sp) @@ -74777,7 +74777,7 @@ glabel var7f1ab214 /* f091b24: afa9006c */ sw $t1,0x6c($sp) /* f091b28: 27a40094 */ addiu $a0,$sp,0x94 /* f091b2c: 01002825 */ or $a1,$t0,$zero -/* f091b30: 0fc29f66 */ jal func0f0a7d98 +/* f091b30: 0fc29f66 */ jal handPlayPropHitSound /* f091b34: 2406ffff */ addiu $a2,$zero,-1 .L0f091b38: /* f091b38: 8fab006c */ lw $t3,0x6c($sp) @@ -74847,7 +74847,7 @@ glabel var7f1ab214 /* f091c28: afb80068 */ sw $t8,0x68($sp) /* f091c2c: 27a40094 */ addiu $a0,$sp,0x94 /* f091c30: 01e02825 */ or $a1,$t7,$zero -/* f091c34: 0fc29f66 */ jal func0f0a7d98 +/* f091c34: 0fc29f66 */ jal handPlayPropHitSound /* f091c38: 2406ffff */ addiu $a2,$zero,-1 .L0f091c3c: /* f091c3c: 8fa40208 */ lw $a0,0x208($sp) diff --git a/src/include/game/chr/chraction.h b/src/include/game/chr/chraction.h index e2ed1ebba..07ae150b1 100644 --- a/src/include/game/chr/chraction.h +++ b/src/include/game/chr/chraction.h @@ -62,7 +62,7 @@ bool func0f034080(struct chrdata *chr, struct modelnode *node, struct prop *prop void chrDamageByMisc(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop); void chrDamageByLaser(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop); void func0f0341dc(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop, u32 ibh, struct prop *prop2, struct modelnode *node, struct model *model, s32 side, s16 *arg10); -void func0f034330(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop, s32 arg5); +void chrDamageByImpact(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *prop, s32 arg5); void chrDamageByExplosion(struct chrdata *chr, f32 damage, struct coord *vector, struct prop *prop, struct coord *explosionpos); void playerUpdateDamageStats(struct prop *attacker, struct prop *victim, f32 damage); void chrDamage(struct chrdata *chr, f32 damage, struct coord *vector, struct shorthand *hand, struct prop *aprop, s32 ibh, bool damageshield, struct prop *prop2, struct modelnode *node, struct model *model, s32 side, s16 *arg11, bool explosion, struct coord *explosionpos); @@ -116,7 +116,7 @@ s32 func0f03aca0(struct chrdata *chr, f32 arg1, u8 arg2); bool chrTryRunFromTarget(struct chrdata *chr); u32 func0f03b1e0(struct chrdata *chr); bool chrDropItem(struct chrdata *chr, u32 modelnum, u32 weaponnum); -void func0f03ba44(struct chrdata *chr, u32 arg1, u32 arg2, u32 arg3); +void chrPunchInflictDamage(struct chrdata *chr, s32 arg1, s32 arg2, u8 arg3); bool chrTryPunchOrKick(struct chrdata *chr, u32 arg1); struct eyespy *chrToEyespy(struct chrdata *chr); void chrTickStand(struct chrdata *chr); diff --git a/src/include/game/game_097ba0.h b/src/include/game/game_097ba0.h index 13c01f8d9..d3c0c27f0 100644 --- a/src/include/game/game_097ba0.h +++ b/src/include/game/game_097ba0.h @@ -137,7 +137,7 @@ void func0f0a6c30(void); s32 func0f0a70f8(void); void func0f0a7138(Gfx **gdl); struct audiohandle **func0f0a7d5c(void); -void func0f0a7d98(struct shorthand *hand, struct prop *prop, s32 arg2); +void handPlayPropHitSound(struct shorthand *hand, struct prop *prop, s32 arg2); void func0f0a8404(struct coord *pos, s16 *rooms, s32 arg2); u32 func0f0a84c8(void); void handSetTriggerOn(s32 handnum, bool on); diff --git a/src/include/game/prop.h b/src/include/game/prop.h index be8d0b80e..5cc0a36cd 100644 --- a/src/include/game/prop.h +++ b/src/include/game/prop.h @@ -18,7 +18,7 @@ void propReparent(struct prop *mover, struct prop *adopter); void propDetach(struct prop *prop); Gfx *propRender(Gfx *gdl, struct prop *prop, bool withalpha); Gfx *propsRender(Gfx *gdl, s16 arg1, s32 arg2, s16 *arg3); -u32 func0f060984(void); +void weaponPlayWhooshSound(s32 weaponnum, struct prop *prop); u32 func0f060bac(void); void func0f060db8(s32 handnum, bool arg1, struct coord *arg2, struct coord *arg3, struct coord *arg4, struct coord *arg5, u32 arg6, f32 arg7, bool arg8); struct prop *func0f061d54(s32 handnum, u32 arg1, u32 arg2);