1#pragma once
2
3#include <math/seadBoundBox.h>
4#include <math/seadMatrix.h>
5#include <math/seadVector.h>
6#include <prim/seadRuntimeTypeInfo.h>
7
8namespace al {
9
10class SensorMsg;
11class LiveActor;
12class HitSensor;
13class SensorMsg;
14struct ActorInitInfo;
15class SensorSortCmpFuncBase;
16class ActorSensorController;
17class ComboCounter;
18
19HitSensor* addHitSensor(LiveActor*, const ActorInitInfo&, const char*, u32, f32, u16,
20 const sead::Vector3f&);
21
22HitSensor* addHitSensorPlayer(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
23 const sead::Vector3f&);
24
25HitSensor* addHitSensorPlayerAttack(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
26 const sead::Vector3f&);
27HitSensor* addHitSensorPlayerEye(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
28 const sead::Vector3f&);
29HitSensor* addHitSensorEnemy(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
30 const sead::Vector3f&);
31HitSensor* addHitSensorEnemyBody(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
32 const sead::Vector3f&);
33HitSensor* addHitSensorEnemyAttack(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
34 const sead::Vector3f&);
35HitSensor* addHitSensorMapObj(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
36 const sead::Vector3f&);
37HitSensor* addHitSensorBindable(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
38 const sead::Vector3f&);
39HitSensor* addHitSensorBindableGoal(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
40 const sead::Vector3f&);
41HitSensor* addHitSensorBindableAllPlayer(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
42 const sead::Vector3f&);
43HitSensor* addHitSensorBindableBubbleOutScreen(LiveActor*, const ActorInitInfo&, const char*, f32,
44 u16, const sead::Vector3f&);
45HitSensor* addHitSensorBindableKoura(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
46 const sead::Vector3f&);
47HitSensor* addHitSensorBindableRouteDokan(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
48 const sead::Vector3f&);
49HitSensor* addHitSensorBindableBubblePadInput(LiveActor*, const ActorInitInfo&, const char*, f32,
50 u16, const sead::Vector3f&);
51HitSensor* addHitSensorCollisionParts(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
52 const sead::Vector3f&);
53HitSensor* addHitSensorEye(LiveActor*, const ActorInitInfo&, const char*, f32, u16,
54 const sead::Vector3f&);
55void setHitSensorSort(LiveActor*, const char*, const SensorSortCmpFuncBase*);
56void setHitSensorPosPtr(LiveActor*, const char*, const sead::Vector3f*);
57HitSensor* getHitSensor(const LiveActor*, const char*);
58void setHitSensorMtxPtr(LiveActor*, const char*, const sead::Matrix34f*);
59void setHitSensorJointMtx(LiveActor*, const char*, const char*);
60void setSensorRadius(LiveActor*, const char*, f32);
61void setSensorRadius(LiveActor*, f32);
62f32 getSensorRadius(const LiveActor*, const char*);
63f32 getSensorRadius(const LiveActor*);
64const sead::Vector3f& getSensorPos(const LiveActor*, const char*);
65const sead::Vector3f& getSensorPos(const LiveActor*);
66void setSensorFollowPosOffset(LiveActor*, const char*, const sead::Vector3f&);
67void setSensorFollowPosOffset(LiveActor*, const sead::Vector3f&);
68const sead::Vector3f& getSensorFollowPosOffset(const LiveActor*, const char*);
69const sead::Vector3f& getSensorFollowPosOffset(const LiveActor*);
70ActorSensorController* createActorSensorController(LiveActor*, const char*);
71void setSensorRadius(ActorSensorController*, f32);
72void setSensorScale(ActorSensorController*, f32);
73void setSensorFollowPosOffset(ActorSensorController*, const sead::Vector3f&);
74f32 getOriginalSensorRadius(const ActorSensorController*);
75const sead::Vector3f& getOriginalSensorFollowPosOffset(const ActorSensorController*);
76void resetActorSensorController(ActorSensorController*);
77void calcPosBetweenSensors(sead::Vector3f*, const HitSensor*, const HitSensor*, f32);
78f32 calcDistance(const HitSensor*, const HitSensor*);
79const sead::Vector3f& getSensorPos(const HitSensor*);
80f32 calcDistanceV(const sead::Vector3f&, const HitSensor*, const HitSensor*);
81f32 calcDistanceH(const sead::Vector3f&, const HitSensor*, const HitSensor*);
82bool calcDirBetweenSensors(sead::Vector3f*, const HitSensor*, const HitSensor*);
83bool calcDirBetweenSensorsH(sead::Vector3f*, const HitSensor*, const HitSensor*);
84bool calcDirBetweenSensorsNormal(sead::Vector3f*, const HitSensor*, const HitSensor*,
85 sead::Vector3f);
86void calcVecBetweenSensors(sead::Vector3f*, const HitSensor*, const HitSensor*);
87void calcVecBetweenSensorsH(sead::Vector3f*, const HitSensor*, const HitSensor*);
88void calcVecBetweenSensorsNormal(sead::Vector3f*, const HitSensor*, const HitSensor*,
89 sead::Vector3f);
90s32 calcStrikeArrowCollideWallAndCeilingBetweenAttackSensor(const LiveActor*, const HitSensor*,
91 const HitSensor*, const sead::Vector3f&,
92 f32);
93LiveActor* getSensorHost(const HitSensor*);
94bool isFaceBetweenSensors(const sead::Vector3f&, const HitSensor*, const HitSensor*);
95bool isFaceBetweenSensorsH(const sead::Vector3f&, const HitSensor*, const HitSensor*);
96bool isEnableLookAtTargetSensor(const HitSensor*, const sead::Vector3f&, f32);
97bool isSensorValid(const HitSensor*);
98bool isHitBoxSensor(const HitSensor*, const sead::Vector3f&, const sead::BoundBox3f&);
99f32 getSensorRadius(const HitSensor*);
100bool isHitBoxSensor(const HitSensor*, const sead::Matrix34f&, const sead::BoundBox3f&);
101bool isHitCylinderSensor(const HitSensor*, const sead::Vector3f&, const sead::Vector3f&, f32);
102bool isHitCylinderSensor(const HitSensor*, const HitSensor*, const sead::Vector3f&, f32);
103bool isHitCylinderSensor(sead::Vector3f*, sead::Vector3f*, const HitSensor*, const sead::Vector3f&,
104 const sead::Vector3f&, f32);
105bool isHitCylinderSensor(sead::Vector3f*, sead::Vector3f*, const HitSensor*, const HitSensor*,
106 const sead::Vector3f&, f32);
107bool isHitCylinderSensorHeight(const HitSensor*, const HitSensor*, const sead::Vector3f&, f32, f32);
108bool isHitCircleSensor(sead::Vector3f*, sead::Vector3f*, const HitSensor*, const sead::Vector3f&,
109 const sead::Vector3f&, f32, f32);
110bool isHitCircleSensor(sead::Vector3f*, sead::Vector3f*, const HitSensor*, const HitSensor*,
111 const sead::Vector3f&, f32, f32);
112bool isHitCircleSensor(const HitSensor*, const sead::Vector3f&, const sead::Vector3f&, f32, f32);
113bool isHitCircleSensor(const HitSensor*, const HitSensor*, const sead::Vector3f&, f32, f32);
114bool isHitPlaneSensor(const HitSensor*, const sead::Vector3f&, const sead::Vector3f&, f32);
115bool isHitPlaneSensor(const HitSensor*, const HitSensor*, const sead::Vector3f&, f32);
116const sead::Vector3f& getActorTrans(const HitSensor*);
117const sead::Vector3f& getActorVelocity(const HitSensor*);
118const sead::Vector3f& getActorGravity(const HitSensor*);
119bool isSensorName(const HitSensor*, const char*);
120bool isSensorHostName(const HitSensor*, const char*);
121bool isSensorHost(const HitSensor*, const LiveActor*);
122void validateHitSensors(LiveActor*);
123void invalidateHitSensors(LiveActor*);
124bool isSensorValid(const LiveActor*, const char*);
125void validateHitSensor(LiveActor*, const char*);
126void invalidateHitSensor(LiveActor*, const char*);
127void validateHitSensorBindableAll(LiveActor*);
128bool isSensorBindableAll(const HitSensor*);
129void validateHitSensorEnemyAll(LiveActor*);
130bool isSensorEnemy(const HitSensor*);
131void validateHitSensorEnemyAttackAll(LiveActor*);
132bool isSensorEnemyAttack(const HitSensor*);
133void validateHitSensorEnemyBodyAll(LiveActor*);
134bool isSensorEnemyBody(const HitSensor*);
135void validateHitSensorEyeAll(LiveActor*);
136bool isSensorEye(const HitSensor*);
137void validateHitSensorMapObjAll(LiveActor*);
138bool isSensorMapObj(const HitSensor*);
139void validateHitSensorNpcAll(LiveActor*);
140bool isSensorNpc(const HitSensor*);
141void validateHitSensorPlayerAll(LiveActor*);
142bool isSensorPlayerAll(const HitSensor*);
143void validateHitSensorRideAll(LiveActor*);
144bool isSensorRide(const HitSensor*);
145void invalidateHitSensorEyeAll(LiveActor*);
146void invalidateHitSensorPlayerAll(LiveActor*);
147void invalidateHitSensorPlayerAttackAll(LiveActor*);
148bool isSensorPlayerAttack(const HitSensor*);
149
150bool sendMsgPlayerAttackTrample(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
151bool sendMsgPlayerTrampleReflect(HitSensor* receiver, HitSensor* sender,
152 ComboCounter* comboCounter);
153bool sendMsgPlayerReflectOrTrample(HitSensor* receiver, HitSensor* sender,
154 ComboCounter* comboCounter);
155bool sendMsgPlayerHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
156bool sendMsgPlayerObjHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
157bool sendMsgPlayerObjHipDropReflect(HitSensor* receiver, HitSensor* sender,
158 ComboCounter* comboCounter);
159bool sendMsgPlayerObjHipDropHighJump(HitSensor* receiver, HitSensor* sender,
160 ComboCounter* comboCounter);
161bool sendMsgPlayerHipDropKnockDown(HitSensor* receiver, HitSensor* sender);
162bool sendMsgPlayerStatueDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
163bool sendMsgPlayerObjStatueDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
164bool sendMsgPlayerObjStatueDropReflect(HitSensor* receiver, HitSensor* sender,
165 ComboCounter* comboCounter);
166bool sendMsgPlayerObjStatueDropReflectNoCondition(HitSensor* receiver, HitSensor* sender);
167bool sendMsgPlayerStatueTouch(HitSensor* receiver, HitSensor* sender);
168bool sendMsgPlayerUpperPunch(HitSensor* receiver, HitSensor* sender);
169bool sendMsgPlayerObjUpperPunch(HitSensor* receiver, HitSensor* sender);
170bool sendMsgPlayerRollingAttack(HitSensor* receiver, HitSensor* sender);
171bool sendMsgPlayerRollingReflect(HitSensor* receiver, HitSensor* sender);
172bool sendMsgPlayerObjRollingAttack(HitSensor* receiver, HitSensor* sender);
173bool sendMsgPlayerObjRollingAttackFailure(HitSensor* receiver, HitSensor* sender);
174bool sendMsgPlayerInvincibleAttack(HitSensor* receiver, HitSensor* sender,
175 ComboCounter* comboCounter);
176bool sendMsgPlayerFireBallAttack(HitSensor* receiver, HitSensor* sender);
177bool sendMsgPlayerRouteDokanFireBallAttack(HitSensor* receiver, HitSensor* sender);
178bool sendMsgPlayerTailAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
179bool sendMsgPlayerTouch(HitSensor* receiver, HitSensor* sender);
180bool sendMsgPlayerKick(HitSensor* receiver, HitSensor* sender);
181bool sendMsgPlayerCatch(HitSensor* receiver, HitSensor* sender);
182bool sendMsgPlayerSlidingAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
183bool sendMsgPlayerBoomerangAttack(HitSensor* receiver, HitSensor* sender,
184 ComboCounter* comboCounter);
185bool sendMsgPlayerBoomerangAttackCollide(HitSensor* receiver, HitSensor* sender);
186bool sendMsgPlayerBoomerangReflect(HitSensor* receiver, HitSensor* sender);
187bool sendMsgPlayerBoomerangBreak(HitSensor* receiver, HitSensor* sender);
188bool sendMsgPlayerBodyAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
189bool sendMsgPlayerBodyLanding(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
190bool sendMsgPlayerBodyAttackReflect(HitSensor* receiver, HitSensor* sender,
191 ComboCounter* comboCounter);
192bool sendMsgPlayerClimbAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
193bool sendMsgPlayerSpinAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
194bool sendMsgPlayerGiantAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
195bool sendMsgPlayerCooperationHipDrop(HitSensor* receiver, HitSensor* sender,
196 ComboCounter* comboCounter);
197bool sendMsgPlayerClimbSlidingAttack(HitSensor* receiver, HitSensor* sender,
198 ComboCounter* comboCounter);
199bool sendMsgPlayerClimbRollingAttack(HitSensor* receiver, HitSensor* sender,
200 ComboCounter* comboCounter);
201bool sendMsgPlayerGiantHipDrop(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
202bool sendMsgPlayerDisregard(HitSensor* receiver, HitSensor* sender);
203bool sendMsgPlayerItemGet(HitSensor* receiver, HitSensor* sender);
204bool sendMsgPlayerPutOnEquipment(HitSensor* receiver, HitSensor* sender);
205bool sendMsgPlayerReleaseEquipment(HitSensor* receiver, HitSensor* sender);
206bool sendMsgPlayerReleaseEquipmentGoal(HitSensor* receiver, HitSensor* sender, u32);
207bool sendMsgPlayerFloorTouch(HitSensor* receiver, HitSensor* sender);
208bool sendMsgPlayerDamageTouch(HitSensor* receiver, HitSensor* sender);
209bool sendMsgPlayerCarryFront(HitSensor* receiver, HitSensor* sender);
210bool sendMsgPlayerCarryFrontWallKeep(HitSensor* receiver, HitSensor* sender);
211bool sendMsgPlayerCarryUp(HitSensor* receiver, HitSensor* sender);
212bool sendMsgPlayerCarryKeepDemo(HitSensor* receiver, HitSensor* sender);
213bool sendMsgPlayerCarryWarp(HitSensor* receiver, HitSensor* sender);
214bool sendMsgPlayerLeave(HitSensor* receiver, HitSensor* sender);
215bool sendMsgPlayerRelease(HitSensor* receiver, HitSensor* sender);
216bool sendMsgPlayerReleaseBySwing(HitSensor* receiver, HitSensor* sender);
217bool sendMsgPlayerReleaseDamage(HitSensor* receiver, HitSensor* sender);
218bool sendMsgPlayerReleaseDead(HitSensor* receiver, HitSensor* sender);
219bool sendMsgPlayerReleaseDemo(HitSensor* receiver, HitSensor* sender);
220bool sendMsgPlayerToss(HitSensor* receiver, HitSensor* sender);
221bool sendMsgPlayerInvincibleTouch(HitSensor* receiver, HitSensor* sender,
222 ComboCounter* comboCounter);
223bool sendMsgEnemyAttack(HitSensor* receiver, HitSensor* sender);
224bool sendMsgEnemyAttackBoomerang(HitSensor* receiver, HitSensor* sender);
225bool sendMsgEnemyAttackFire(HitSensor* receiver, HitSensor* sender, const char*);
226bool sendMsgEnemyAttackNeedle(HitSensor* receiver, HitSensor* sender);
227bool sendMsgEnemyFloorTouch(HitSensor* receiver, HitSensor* sender);
228bool sendMsgEnemyItemGet(HitSensor* receiver, HitSensor* sender);
229bool sendMsgEnemyRouteDokanAttack(HitSensor* receiver, HitSensor* sender);
230bool sendMsgEnemyRouteDokanFire(HitSensor* receiver, HitSensor* sender);
231bool sendMsgEnemyTouch(HitSensor* receiver, HitSensor* sender);
232bool sendMsgEnemyUpperPunch(HitSensor* receiver, HitSensor* sender);
233bool sendMsgEnemyTrample(HitSensor* receiver, HitSensor* sender);
234bool sendMsgMapObjTrample(HitSensor* receiver, HitSensor* sender);
235bool sendMsgPressureDeath(HitSensor* receiver, HitSensor* sender);
236bool sendMsgNpcTouch(HitSensor* receiver, HitSensor* sender);
237bool sendMsgExplosion(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
238bool sendMsgExplosionCollide(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
239bool sendMsgPush(HitSensor* receiver, HitSensor* sender);
240bool sendMsgPushStrong(HitSensor* receiver, HitSensor* sender);
241bool sendMsgPushVeryStrong(HitSensor* receiver, HitSensor* sender);
242bool sendMsgHit(HitSensor* receiver, HitSensor* sender);
243bool sendMsgHitStrong(HitSensor* receiver, HitSensor* sender);
244bool sendMsgHitVeryStrong(HitSensor* receiver, HitSensor* sender);
245bool sendMsgKnockDown(HitSensor* receiver, HitSensor* sender);
246bool sendMsgMapPush(HitSensor* receiver, HitSensor* sender);
247bool sendMsgVanish(HitSensor* receiver, HitSensor* sender);
248bool sendMsgChangeAlpha(LiveActor* receiver, f32 alpha);
249bool sendMsgShowModel(HitSensor* receiver, HitSensor* sender);
250bool sendMsgHideModel(HitSensor* receiver, HitSensor* sender);
251bool sendMsgRestart(HitSensor* receiver, HitSensor* sender);
252bool sendMsgNeedleBallAttack(HitSensor* receiver, HitSensor* sender);
253bool sendMsgPunpunFloorTouch(HitSensor* receiver, HitSensor* sender);
254bool sendMsgInvalidateFootPrint(HitSensor* receiver, HitSensor* sender);
255bool sendMsgKickKouraAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
256bool sendMsgKickKouraAttackCollide(HitSensor* receiver, HitSensor* sender,
257 ComboCounter* comboCounter);
258bool sendMsgKickKouraGetItem(HitSensor* receiver, HitSensor* sender);
259bool sendMsgKickKouraReflect(HitSensor* receiver, HitSensor* sender);
260bool sendMsgKickKouraCollideNoReflect(HitSensor* receiver, HitSensor* sender);
261bool sendMsgKickKouraBreak(HitSensor* receiver, HitSensor* sender);
262bool sendMsgKickKouraBlow(HitSensor* receiver, HitSensor* sender);
263bool sendMsgKickStoneAttack(HitSensor* receiver, HitSensor* sender);
264bool sendMsgKickStoneAttackCollide(HitSensor* receiver, HitSensor* sender);
265bool sendMsgKickStoneAttackHold(HitSensor* receiver, HitSensor* sender);
266bool sendMsgKickStoneAttackReflect(HitSensor* receiver, HitSensor* sender);
267bool sendMsgKickStoneTrample(HitSensor* receiver, HitSensor* sender);
268bool sendMsgKillerAttack(HitSensor* receiver, HitSensor* sender);
269bool sendMsgLiftGeyser(HitSensor* receiver, HitSensor* sender);
270bool sendMsgWarpStart(HitSensor* receiver, HitSensor* sender);
271bool sendMsgWarpEnd(HitSensor* receiver, HitSensor* sender);
272bool sendMsgHoldCancel(HitSensor* receiver, HitSensor* sender);
273bool sendMsgHoleIn(HitSensor* receiver, HitSensor* sender);
274bool sendMsgJumpInhibit(HitSensor* receiver, HitSensor* sender);
275bool sendMsgGoalKill(HitSensor* receiver, HitSensor* sender);
276bool sendMsgGoal(HitSensor* receiver, HitSensor* sender);
277bool sendMsgBindStart(HitSensor* receiver, HitSensor* sender);
278bool sendMsgBindInit(HitSensor* receiver, HitSensor* sender, u32);
279bool sendMsgBindEnd(HitSensor* receiver, HitSensor* sender);
280bool sendMsgBindCancel(HitSensor* receiver, HitSensor* sender);
281bool sendMsgBindCancelByDemo(HitSensor* receiver, HitSensor* sender);
282bool sendMsgBindDamage(HitSensor* receiver, HitSensor* sender);
283bool sendMsgBindSteal(HitSensor* receiver, HitSensor* sender);
284bool sendMsgBindGiant(HitSensor* receiver, HitSensor* sender);
285bool sendMsgBallAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
286bool sendMsgBallRouteDokanAttack(HitSensor* receiver, HitSensor* sender,
287 ComboCounter* comboCounter);
288bool sendMsgBallAttackHold(HitSensor* receiver, HitSensor* sender);
289bool sendMsgBallAttackDRCHold(HitSensor* receiver, HitSensor* sender);
290bool sendMsgBallAttackCollide(HitSensor* receiver, HitSensor* sender);
291bool sendMsgBallTrample(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
292bool sendMsgBallTrampleCollide(HitSensor* receiver, HitSensor* sender);
293bool sendMsgBallItemGet(HitSensor* receiver, HitSensor* sender);
294bool sendMsgFireBalCollide(HitSensor* receiver, HitSensor* sender);
295bool sendMsgFireBallFloorTouch(HitSensor* receiver, HitSensor* sender);
296bool sendMsgDokanBazookaAttack(HitSensor* receiver, HitSensor* sender);
297bool sendMsgRideAllPlayerItemGet(HitSensor* receiver, HitSensor* sender);
298bool sendMsgHideModel(LiveActor* receiver);
299bool sendMsgShowModel(LiveActor* receiver);
300bool sendMsgRestart(LiveActor* receiver);
301bool sendMsgCollisionImpulse(HitSensor* receiver, HitSensor* sender, sead::Vector3f*,
302 const sead::Vector3f&, f32, const sead::Vector3f&, f32);
303bool sendMsgSwitchOn(LiveActor* receiver);
304bool sendMsgSwitchOnInit(LiveActor* receiver);
305bool sendMsgSwitchOffInit(LiveActor* receiver);
306bool sendMsgSwitchKillOn(LiveActor* receiver);
307bool sendMsgSwitchKillOnInit(LiveActor* receiver);
308bool sendMsgSwitchKillOffInit(LiveActor* receiver);
309bool sendMsgPlayerFloorTouchToColliderGround(LiveActor* receiver, HitSensor* sender);
310bool sendMsgPlayerUpperPunchToColliderCeiling(LiveActor* receiver, HitSensor* sender);
311bool sendMsgEnemyFloorTouchToColliderGround(LiveActor* receiver, HitSensor* sender);
312bool sendMsgEnemyUpperPunchToColliderCeiling(LiveActor* receiver, HitSensor* sender);
313bool sendMsgAskSafetyPoint(HitSensor* receiver, HitSensor* sender, sead::Vector3f**);
314bool sendMsgAskSafetyPointToColliderGround(LiveActor* receiver, HitSensor* sender,
315 sead::Vector3f**);
316bool sendMsgTouchAssist(HitSensor* receiver, HitSensor* sender);
317bool sendMsgTouchAssistTrig(HitSensor* receiver, HitSensor* sender);
318bool sendMsgTouchStroke(HitSensor* receiver, HitSensor* sender);
319bool sendMsgScreenPointInvalidCollisionParts(HitSensor* receiver, HitSensor* sender);
320bool sendMsgBlockUpperPunch(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
321bool sendMsgBlockLowerPunch(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
322bool sendMsgBlockItemGet(HitSensor* receiver, HitSensor* sender);
323bool sendMsgKillerItemGet(HitSensor* receiver, HitSensor* sender);
324bool sendMsgPlayerKouraAttack(HitSensor* receiver, HitSensor* sender, ComboCounter* comboCounter);
325bool sendMsgLightFlash(HitSensor* receiver, HitSensor* sender);
326bool sendMsgForceAbyss(HitSensor* receiver, HitSensor* sender);
327bool sendMsgIsNerveSupportFreeze(HitSensor* receiver, HitSensor* sender);
328bool sendMsgOnSyncSupportFreeze(HitSensor* receiver, HitSensor* sender);
329bool sendMsgOffSyncSupportFreeze(HitSensor* receiver, HitSensor* sender);
330bool sendMsgSwordAttackHighLeft(HitSensor* receiver, HitSensor* sender);
331bool sendMsgSwordAttackLowLeft(HitSensor* receiver, HitSensor* sender);
332bool sendMsgSwordAttackHighRight(HitSensor* receiver, HitSensor* sender);
333bool sendMsgSwordAttackLowRight(HitSensor* receiver, HitSensor* sender);
334bool sendMsgSwordAttackJumpUnder(HitSensor* receiver, HitSensor* sender);
335bool sendMsgSwordBeamAttack(HitSensor* receiver, HitSensor* sender);
336bool sendMsgSwordBeamReflectAttack(HitSensor* receiver, HitSensor* sender);
337bool sendMsgShieldGuard(HitSensor* receiver, HitSensor* sender);
338bool sendMsgEnemyAttackKnockDown(HitSensor* receiver, HitSensor* sender);
339bool sendMsgAskMultiPlayerEnemy(HitSensor* receiver, HitSensor* sender);
340bool sendMsgItemGettable(HitSensor* receiver, HitSensor* sender);
341bool sendMsgKikkiThrow(HitSensor* receiver, HitSensor* sender);
342bool sendMsgIsKikkiThrowTarget(HitSensor* receiver, HitSensor* sender);
343bool sendMsgPlayerCloudGet(HitSensor* receiver, HitSensor* sender);
344bool sendMsgAutoJump(HitSensor* receiver, HitSensor* sender);
345bool sendMsgPlayerTouchShadow(HitSensor* receiver, HitSensor* sender);
346bool sendMsgPlayerPullOutShadow(HitSensor* receiver, HitSensor* sender);
347bool sendMsgPlayerAttackShadow(HitSensor* receiver, HitSensor* sender);
348bool sendMsgPlayerAttackShadowStrong(HitSensor* receiver, HitSensor* sender);
349bool sendMsgPlayerAttackChangePos(HitSensor* receiver, HitSensor* sender, sead::Vector3f* pos);
350bool sendMsgAtmosOnlineLight(HitSensor* receiver, HitSensor* sender);
351bool sendMsgLightBurn(HitSensor* receiver, HitSensor* sender);
352bool sendMsgMoonLightBurn(HitSensor* receiver, HitSensor* sender);
353bool sendMsgString(HitSensor* receiver, HitSensor* sender, const char* str);
354bool sendMsgStringV4fPtr(HitSensor* receiver, HitSensor* sender, const char* str,
355 sead::Vector4f* vec);
356bool sendMsgStringV4fSensorPtr(HitSensor* receiver, HitSensor* sender, const char* str,
357 sead::Vector4f* vec);
358bool sendMsgStringVoidPtr(HitSensor* receiver, HitSensor* sender, const char* str, void* ptr);
359
360bool isMsgPushAll(const SensorMsg* msg);
361bool isMsgPush(const SensorMsg* msg);
362bool isMsgPushStrong(const SensorMsg* msg);
363bool isMsgPushVeryStrong(const SensorMsg* msg);
364bool isMsgHoldReleaseAll(const SensorMsg* msg);
365bool isMsgHoldCancel(const SensorMsg* msg);
366bool isMsgPlayerRelease(const SensorMsg* msg);
367bool isMsgPlayerReleaseBySwing(const SensorMsg* msg);
368bool isMsgPlayerReleaseDead(const SensorMsg* msg);
369bool isMsgPlayerReleaseDamage(const SensorMsg* msg);
370bool isMsgPlayerReleaseDemo(const SensorMsg* msg);
371bool isMsgItemGetDirectAll(const SensorMsg* msg);
372bool isMsgPlayerItemGet(const SensorMsg* msg);
373bool isMsgRideAllPlayerItemGet(const SensorMsg* msg);
374bool isMsgPlayerTailAttack(const SensorMsg* msg);
375bool isMsgItemGetByObjAll(const SensorMsg* msg);
376bool isMsgBallItemGet(const SensorMsg* msg);
377bool isMsgKickKouraItemGet(const SensorMsg* msg);
378bool isMsgKillerItemGet(const SensorMsg* msg);
379bool isMsgItemGetAll(const SensorMsg* msg);
380bool isMsgFloorTouch(const SensorMsg* msg);
381bool isMsgPlayerFloorTouch(const SensorMsg* msg);
382bool isMsgEnemyFloorTouch(const SensorMsg* msg);
383bool isMsgUpperPunch(const SensorMsg* msg);
384bool isMsgPlayerUpperPunch(const SensorMsg* msg);
385bool isMsgEnemyUpperPunch(const SensorMsg* msg);
386bool isMsgPlayerTrample(const SensorMsg* msg);
387bool isMsgPlayerTrampleReflect(const SensorMsg* msg);
388bool isMsgPlayerHipDropAll(const SensorMsg* msg);
389bool isMsgPlayerStatueDrop(const SensorMsg* msg);
390bool isMsgPlayerObjHipDropAll(const SensorMsg* msg);
391bool isMsgPlayerObjStatueDrop(const SensorMsg* msg);
392bool isMsgPlayerObjHipDropReflectAll(const SensorMsg* msg);
393bool isMsgPlayerObjStatueDropReflect(const SensorMsg* msg);
394bool isMsgPlayerObjHipDropHighJump(const SensorMsg* msg);
395bool isMsgPlayerHipDropKnockDown(const SensorMsg* msg);
396bool isMsgPlayerObjStatueDropReflectNoCondition(const SensorMsg* msg);
397bool isMsgPlayerStatueTouch(const SensorMsg* msg);
398bool isMsgPlayerObjUpperPunch(const SensorMsg* msg);
399bool isMsgPlayerRollingAttack(const SensorMsg* msg);
400bool isMsgPlayerRollingReflect(const SensorMsg* msg);
401bool isMsgPlayerObjRollingAttack(const SensorMsg* msg);
402bool isMsgPlayerObjRollingAttackFailure(const SensorMsg* msg);
403bool isMsgPlayerInvincibleAttack(const SensorMsg* msg);
404bool isMsgPlayerFireBallAttack(const SensorMsg* msg);
405bool isMsgPlayerRouteDokanFireBallAttack(const SensorMsg* msg);
406bool isMsgPlayerKick(const SensorMsg* msg);
407bool isMsgPlayerCatch(const SensorMsg* msg);
408bool isMsgPlayerSlidingAttack(const SensorMsg* msg);
409bool isMsgPlayerBoomerangAttack(const SensorMsg* msg);
410bool isMsgPlayerBoomerangAttackCollide(const SensorMsg* msg);
411bool isMsgPlayerBoomerangReflect(const SensorMsg* msg);
412bool isMsgPlayerBoomerangBreak(const SensorMsg* msg);
413bool isMsgPlayerBodyAttack(const SensorMsg* msg);
414bool isMsgPlayerBodyLanding(const SensorMsg* msg);
415bool isMsgPlayerBodyAttackReflect(const SensorMsg* msg);
416bool isMsgPlayerClimbAttack(const SensorMsg* msg);
417bool isMsgPlayerSpinAttack(const SensorMsg* msg);
418bool isMsgPlayerGiantAttack(const SensorMsg* msg);
419bool isMsgPlayerCooperationHipDrop(const SensorMsg* msg);
420bool isMsgPlayerClimbSlidingAttack(const SensorMsg* msg);
421bool isMsgPlayerClimbRollingAttack(const SensorMsg* msg);
422bool isMsgPlayerGiantHipDrop(const SensorMsg* msg);
423bool isMsgPlayerDisregard(const SensorMsg* msg);
424bool isMsgPlayerDash(const SensorMsg* msg);
425bool isMsgPlayerDamageTouch(const SensorMsg* msg);
426bool isMsgPlayerFloorTouchBind(const SensorMsg* msg);
427bool isMsgPlayerTouch(const SensorMsg* msg);
428bool isMsgPlayerInvincibleTouch(const SensorMsg* msg);
429bool isMsgPlayerGiantTouch(const SensorMsg* msg);
430bool isMsgPlayerObjTouch(const SensorMsg* msg);
431bool isMsgPlayerPutOnEquipment(const SensorMsg* msg);
432bool isMsgPlayerReleaseEquipment(const SensorMsg* msg);
433bool isMsgPlayerReleaseEquipmentGoal(const SensorMsg* msg);
434bool isMsgPlayerCarryFront(const SensorMsg* msg);
435bool isMsgPlayerCarryFrontWallKeep(const SensorMsg* msg);
436bool isMsgPlayerCarryUp(const SensorMsg* msg);
437bool isMsgPlayerCarryKeepDemo(const SensorMsg* msg);
438bool isMsgPlayerCarryWarp(const SensorMsg* msg);
439bool isMsgPlayerLeave(const SensorMsg* msg);
440bool isMsgPlayerToss(const SensorMsg* msg);
441bool isMsgEnemyAttack(const SensorMsg* msg);
442bool isMsgEnemyAttackFire(const SensorMsg* msg);
443bool isMsgEnemyAttackKnockDown(const SensorMsg* msg);
444bool isMsgEnemyAttackBoomerang(const SensorMsg* msg);
445bool isMsgEnemyAttackNeedle(const SensorMsg* msg);
446bool isMsgEnemyItemGet(const SensorMsg* msg);
447bool isMsgEnemyRouteDokanAttack(const SensorMsg* msg);
448bool isMsgEnemyRouteDokanFire(const SensorMsg* msg);
449bool isMsgExplosion(const SensorMsg* msg);
450bool isMsgExplosionCollide(const SensorMsg* msg);
451bool isMsgBindStart(const SensorMsg* msg);
452bool isMsgBindInit(const SensorMsg* msg);
453bool isMsgBindEnd(const SensorMsg* msg);
454bool isMsgBindCancel(const SensorMsg* msg);
455bool isMsgBindCancelByDemo(const SensorMsg* msg);
456bool isMsgBindDamage(const SensorMsg* msg);
457bool isMsgBindSteal(const SensorMsg* msg);
458bool isMsgBindGiant(const SensorMsg* msg);
459bool isMsgPressureDeath(const SensorMsg* msg);
460bool isMsgNpcTouch(const SensorMsg* msg);
461bool isMsgHit(const SensorMsg* msg);
462bool isMsgHitStrong(const SensorMsg* msg);
463bool isMsgHitVeryStrong(const SensorMsg* msg);
464bool isMsgKnockDown(const SensorMsg* msg);
465bool isMsgMapPush(const SensorMsg* msg);
466bool isMsgVanish(const SensorMsg* msg);
467bool isMsgChangeAlpha(const SensorMsg* msg);
468bool isMsgShowModel(const SensorMsg* msg);
469bool isMsgHideModel(const SensorMsg* msg);
470bool isMsgRestart(const SensorMsg* msg);
471bool isMsgEnemyTouch(const SensorMsg* msg);
472bool isMsgEnemyTrample(const SensorMsg* msg);
473bool isMsgMapObjTrample(const SensorMsg* msg);
474bool isMsgNeedleBallAttack(const SensorMsg* msg);
475bool isMsgPunpunFloorTouch(const SensorMsg* msg);
476bool isMsgInvalidateFootPrint(const SensorMsg* msg);
477bool isMsgKickKouraAttack(const SensorMsg* msg);
478bool isMsgKickKouraAttackCollide(const SensorMsg* msg);
479bool isMsgKickKouraReflect(const SensorMsg* msg);
480bool isMsgKickKouraCollideNoReflect(const SensorMsg* msg);
481bool isMsgKickKouraBreak(const SensorMsg* msg);
482bool isMsgKickKouraBlow(const SensorMsg* msg);
483bool isMsgKickStoneAttack(const SensorMsg* msg);
484bool isMsgKickStoneAttackCollide(const SensorMsg* msg);
485bool isMsgKickStoneAttackHold(const SensorMsg* msg);
486bool isMsgKickStoneAttackReflect(const SensorMsg* msg);
487bool isMsgKickStoneTrample(const SensorMsg* msg);
488bool isMsgKillerAttack(const SensorMsg* msg);
489bool isMsgLiftGeyser(const SensorMsg* msg);
490bool isMsgWarpStart(const SensorMsg* msg);
491bool isMsgWarpEnd(const SensorMsg* msg);
492bool isMsgHoleIn(const SensorMsg* msg);
493bool isMsgJumpInhibit(const SensorMsg* msg);
494bool isMsgGoalKill(const SensorMsg* msg);
495bool isMsgGoal(const SensorMsg* msg);
496bool isMsgBallAttack(const SensorMsg* msg);
497bool isMsgBallRouteDokanAttack(const SensorMsg* msg);
498bool isMsgBallAttackHold(const SensorMsg* msg);
499bool isMsgBallAttackDRCHold(const SensorMsg* msg);
500bool isMsgBallAttackCollide(const SensorMsg* msg);
501bool isMsgBallTrample(const SensorMsg* msg);
502bool isMsgBallTrampleCollide(const SensorMsg* msg);
503bool isMsgFireBallCollide(const SensorMsg* msg);
504bool isMsgFireBallFloorTouch(const SensorMsg* msg);
505bool isMsgDokanBazookaAttack(const SensorMsg* msg);
506bool isMsgSwitchOn(const SensorMsg* msg);
507bool isMsgSwitchOnInit(const SensorMsg* msg);
508bool isMsgSwitchOffInit(const SensorMsg* msg);
509bool isMsgSwitchKillOn(const SensorMsg* msg);
510bool isMsgSwitchKillOnInit(const SensorMsg* msg);
511bool isMsgSwitchKillOffInit(const SensorMsg* msg);
512bool isMsgAskSafetyPoint(const SensorMsg* msg);
513bool trySetAskSafetyPointFollowPos(const SensorMsg* msg, sead::Vector3f*);
514bool isMsgTouchAssist(const SensorMsg* msg);
515bool isMsgTouchAssistNoPat(const SensorMsg* msg);
516bool isMsgTouchAssistTrig(const SensorMsg* msg);
517bool isMsgTouchAssistTrigOff(const SensorMsg* msg);
518bool isMsgTouchAssistTrigNoPat(const SensorMsg* msg);
519bool isMsgTouchAssistBurn(const SensorMsg* msg);
520bool isMsgTouchAssistAll(const SensorMsg* msg);
521bool isMsgTouchCarryItem(const SensorMsg* msg);
522bool isMsgTouchReleaseItem(const SensorMsg* msg);
523bool isMsgTouchStroke(const SensorMsg* msg);
524bool isMsgIsNerveSupportFreeze(const SensorMsg* msg);
525bool isMsgOnSyncSupportFreeze(const SensorMsg* msg);
526bool isMsgOffSyncSupportFreeze(const SensorMsg* msg);
527bool isMsgScreenPointInvalidCollisionParts(const SensorMsg* msg);
528bool isMsgBlockUpperPunch(const SensorMsg* msg);
529bool isMsgBlockLowerPunch(const SensorMsg* msg);
530bool isMsgBlockItemGet(const SensorMsg* msg);
531bool isMsgPlayerKouraAttack(const SensorMsg* msg);
532bool isMsgLightFlash(const SensorMsg* msg);
533bool isMsgForceAbyss(const SensorMsg* msg);
534bool isMsgSwordAttackHigh(const SensorMsg* msg);
535bool isMsgSwordAttackHighLeft(const SensorMsg* msg);
536bool isMsgSwordAttackHighRight(const SensorMsg* msg);
537bool isMsgSwordAttackLow(const SensorMsg* msg);
538bool isMsgSwordAttackLowLeft(const SensorMsg* msg);
539bool isMsgSwordAttackLowRight(const SensorMsg* msg);
540bool isMsgSwordBeamAttack(const SensorMsg* msg);
541bool isMsgSwordBeamReflectAttack(const SensorMsg* msg);
542bool isMsgSwordAttackJumpUnder(const SensorMsg* msg);
543bool isMsgShieldGuard(const SensorMsg* msg);
544bool isMsgAskMultiPlayerEnemy(const SensorMsg* msg);
545bool isMsgItemGettable(const SensorMsg* msg);
546bool isMsgKikkiThrow(const SensorMsg* msg);
547bool isMsgIsKikkiThrowTarget(const SensorMsg* msg);
548bool isMsgPlayerCloudGet(const SensorMsg* msg);
549bool isMsgAutoJump(const SensorMsg* msg);
550bool isMsgPlayerTouchShadow(const SensorMsg* msg);
551bool isMsgPlayerPullOutShadow(const SensorMsg* msg);
552bool isMsgPlayerAttackShadow(const SensorMsg* msg);
553bool isMsgPlayerAttackShadowStrong(const SensorMsg* msg);
554bool isMsgPlayerAttackChangePos(const SensorMsg* msg);
555bool isMsgAtmosOnlineLight(const SensorMsg* msg);
556bool isMsgLightBurn(const SensorMsg* msg);
557bool isMsgMoonLightBurn(const SensorMsg* msg);
558bool isMsgString(const SensorMsg* msg);
559bool isMsgStringV4fPtr(const SensorMsg* msg);
560bool isMsgStringV4fSensorPtr(const SensorMsg* msg);
561bool isMsgStringVoidPtr(const SensorMsg* msg);
562bool isMsgPlayerTrampleForCrossoverSensor(const SensorMsg* msg, const HitSensor*, const HitSensor*);
563// Unnamed function at 8FD424 here
564bool isMsgPlayerTrampleReflectForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
565 const HitSensor*);
566bool isMsgPlayerUpperPunchForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
567 const HitSensor*, f32);
568bool isMsgKickStoneTrampleForCrossoverSensor(const SensorMsg* msg, const HitSensor*,
569 const HitSensor*);
570bool sendMsgEnemyAttackForCrossoverSensor(HitSensor*, HitSensor*);
571bool sendMsgEnemyAttackForCrossoverCylinderSensor(HitSensor*, HitSensor*, const sead::Vector3f&,
572 const sead::Vector3f&, f32);
573
574bool isSensorPlayer(const HitSensor*);
575bool isSensorPlayerFoot(const HitSensor*);
576bool isSensorPlayerDecoration(const HitSensor*);
577bool isSensorPlayerEye(const HitSensor*);
578bool isSensorPlayerOrPlayerWeapon(const HitSensor*);
579bool isSensorCollision(const HitSensor*);
580bool isSensorPlayerFireBall(const HitSensor*);
581bool isSensorHoldObj(const HitSensor*);
582bool isSensorLookAt(const HitSensor*);
583bool isSensorBindableGoal(const HitSensor*);
584bool isSensorBindableAllPlayer(const HitSensor*);
585bool isSensorBindableBubbleOutScreen(const HitSensor*);
586bool isSensorBindableKoura(const HitSensor*);
587bool isSensorBindableRouteDokan(const HitSensor*);
588bool isSensorBindableBubblePadInput(const HitSensor*);
589bool isSensorBindable(const HitSensor*);
590bool isSensorSimple(const HitSensor*);
591void updateHitSensorsAll(LiveActor*);
592bool isMySensor(const HitSensor*, const LiveActor*);
593bool isSensorHitAnyPlane(const HitSensor*, const HitSensor*, const sead::Vector3f&);
594bool isSensorHitRingShape(const HitSensor*, const HitSensor*, f32);
595bool tryGetEnemyAttackFireMaterialCode(const char**, const SensorMsg*);
596bool sendMsgPushAndKillVelocityToTarget(LiveActor*, HitSensor*, HitSensor*);
597bool sendMsgPushAndKillVelocityToTargetH(LiveActor*, HitSensor*, HitSensor*);
598bool pushAndAddVelocity(LiveActor*, const HitSensor*, const HitSensor*, f32);
599bool pushAndAddVelocityH(LiveActor*, const HitSensor*, const HitSensor*, f32);
600bool pushAndAddVelocityV(LiveActor*, const HitSensor*, const HitSensor*, f32);
601bool tryReceiveMsgPushAndAddVelocity(LiveActor*, const SensorMsg*, const HitSensor*,
602 const HitSensor*, f32);
603bool tryReceiveMsgPushAndAddVelocityH(LiveActor*, const SensorMsg*, const HitSensor*,
604 const HitSensor*, f32);
605bool tryReceiveMsgPushAndCalcPushTrans(sead::Vector3f*, const SensorMsg*, const LiveActor*,
606 const HitSensor*, const HitSensor*, f32);
607bool sendMsgCollidePush(HitSensor*, HitSensor*, const sead::Vector3f&);
608bool tryReceiveMsgCollidePush(sead::Vector3f*, const SensorMsg*);
609f32 getChangeAlphaValue(const SensorMsg*);
610u32 getBindInitType(const SensorMsg*);
611const char* getMsgString(const SensorMsg*);
612const char* getMsgStringV4fPtr(const SensorMsg*, sead::Vector4f**);
613const char* getMsgStringV4fSensorPtr(const SensorMsg*, sead::Vector4f, HitSensor**);
614const char* getMsgStringVoidPtr(const SensorMsg*, void**);
615u32 getPlayerReleaseEquipmentGoalType(const SensorMsg*);
616} // namespace al
617
618namespace AttackSensorFunction {
619u16 getAttackSensorNum(const al::HitSensor*);
620u16 getAttackSensorNumMax(const al::HitSensor*);
621al::HitSensor* getAttackSensor(const al::HitSensor*, s32);
622al::HitSensor* findNearestAttackSensor(const al::HitSensor*);
623} // namespace AttackSensorFunction
624
625// Unnamed function at 8FEB0C here
626