Do InteractBattle.cpp

This commit is contained in:
intns 2021-12-15 12:16:21 +00:00
parent bacbbeeda3
commit c22dd7b53f
9 changed files with 180 additions and 414 deletions

View File

@ -69,6 +69,7 @@ pikmin2.usa.dol: `sha1: 90d328bf8f190c90472e8c19e7e53c6ad0fe0d1a`
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameHighscore.cpp">plugProjectKandoU/gameHighscore.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameIconTexture.cpp">plugProjectKandoU/gameIconTexture.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/gameSoundEvent.cpp">plugProjectKandoU/gameSoundEvent.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/interactBattle.cpp">plugProjectKandoU/interactBattle.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/kandoLib.cpp">plugProjectKandoU/kandoLib.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/objectTypes.cpp">plugProjectKandoU/objectTypes.cpp</a>
- <a href="https://github.com/doldecomp/pikmin2/tree/main/src/plugProjectKandoU/pelletCarry.cpp">plugProjectKandoU/pelletCarry.cpp</a>

View File

@ -1,111 +0,0 @@
.include "macros.inc"
.section .data, "wa" # 0x8049E220 - 0x804EFC20
.balign 0x8
.global __vt__Q24Game12InteractKill
__vt__Q24Game12InteractKill:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game12InteractKillFPQ24Game8Creature
.4byte actPiki__Q24Game12InteractKillFPQ24Game4Piki
.4byte actNavi__Q24Game11InteractionFPQ24Game4Navi
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
.global __vt__Q24Game15InteractSwallow
__vt__Q24Game15InteractSwallow:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
.4byte actPiki__Q24Game15InteractSwallowFPQ24Game4Piki
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
.global __vt__Q24Game14InteractAttack
__vt__Q24Game14InteractAttack:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game14InteractAttackFPQ24Game8Creature
.4byte actPiki__Q24Game11InteractionFPQ24Game4Piki
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
.global __vt__Q24Game13InteractFlick
__vt__Q24Game13InteractFlick:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game13InteractFlickFPQ24Game8Creature
.4byte actPiki__Q24Game13InteractFlickFPQ24Game4Piki
.4byte actNavi__Q24Game13InteractFlickFPQ24Game4Navi
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
.section .text, "ax" # 0x800056C0 - 0x80472F00
.global actCommon__Q24Game13InteractFlickFPQ24Game8Creature
actCommon__Q24Game13InteractFlickFPQ24Game8Creature:
/* 8019FE78 0019CDB8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8019FE7C 0019CDBC 7C 08 02 A6 */ mflr r0
/* 8019FE80 0019CDC0 90 01 00 14 */ stw r0, 0x14(r1)
/* 8019FE84 0019CDC4 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8019FE88 0019CDC8 7C 9F 23 78 */ mr r31, r4
/* 8019FE8C 0019CDCC 7F E3 FB 78 */ mr r3, r31
/* 8019FE90 0019CDD0 4B FF F6 E5 */ bl isStickTo__Q24Game8CreatureFv
/* 8019FE94 0019CDD4 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8019FE98 0019CDD8 41 82 00 0C */ beq lbl_8019FEA4
/* 8019FE9C 0019CDDC 7F E3 FB 78 */ mr r3, r31
/* 8019FEA0 0019CDE0 4B FF F5 85 */ bl endStick__Q24Game8CreatureFv
lbl_8019FEA4:
/* 8019FEA4 0019CDE4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8019FEA8 0019CDE8 38 60 00 01 */ li r3, 1
/* 8019FEAC 0019CDEC 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8019FEB0 0019CDF0 7C 08 03 A6 */ mtlr r0
/* 8019FEB4 0019CDF4 38 21 00 10 */ addi r1, r1, 0x10
/* 8019FEB8 0019CDF8 4E 80 00 20 */ blr
.global actCommon__Q24Game14InteractAttackFPQ24Game8Creature
actCommon__Q24Game14InteractAttackFPQ24Game8Creature:
/* 8019FEBC 0019CDFC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8019FEC0 0019CE00 7C 08 02 A6 */ mflr r0
/* 8019FEC4 0019CE04 90 01 00 14 */ stw r0, 0x14(r1)
/* 8019FEC8 0019CE08 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8019FECC 0019CE0C 7C 9F 23 78 */ mr r31, r4
/* 8019FED0 0019CE10 80 63 00 04 */ lwz r3, 4(r3)
/* 8019FED4 0019CE14 81 83 00 00 */ lwz r12, 0(r3)
/* 8019FED8 0019CE18 81 8C 00 1C */ lwz r12, 0x1c(r12)
/* 8019FEDC 0019CE1C 7D 89 03 A6 */ mtctr r12
/* 8019FEE0 0019CE20 4E 80 04 21 */ bctrl
/* 8019FEE4 0019CE24 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8019FEE8 0019CE28 41 82 00 28 */ beq lbl_8019FF10
/* 8019FEEC 0019CE2C 7F E3 FB 78 */ mr r3, r31
/* 8019FEF0 0019CE30 81 9F 00 00 */ lwz r12, 0(r31)
/* 8019FEF4 0019CE34 81 8C 00 7C */ lwz r12, 0x7c(r12)
/* 8019FEF8 0019CE38 7D 89 03 A6 */ mtctr r12
/* 8019FEFC 0019CE3C 4E 80 04 21 */ bctrl
/* 8019FF00 0019CE40 54 60 06 3F */ clrlwi. r0, r3, 0x18
/* 8019FF04 0019CE44 40 82 00 0C */ bne lbl_8019FF10
/* 8019FF08 0019CE48 38 60 00 00 */ li r3, 0
/* 8019FF0C 0019CE4C 48 00 00 08 */ b lbl_8019FF14
lbl_8019FF10:
/* 8019FF10 0019CE50 38 60 00 01 */ li r3, 1
lbl_8019FF14:
/* 8019FF14 0019CE54 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8019FF18 0019CE58 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8019FF1C 0019CE5C 7C 08 03 A6 */ mtlr r0
/* 8019FF20 0019CE60 38 21 00 10 */ addi r1, r1, 0x10
/* 8019FF24 0019CE64 4E 80 00 20 */ blr
.global actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
actCommon__Q24Game15InteractSwallowFPQ24Game8Creature:
/* 8019FF28 0019CE68 38 60 00 01 */ li r3, 1
/* 8019FF2C 0019CE6C 4E 80 00 20 */ blr
.global actCommon__Q24Game12InteractKillFPQ24Game8Creature
actCommon__Q24Game12InteractKillFPQ24Game8Creature:
/* 8019FF30 0019CE70 38 60 00 01 */ li r3, 1
/* 8019FF34 0019CE74 4E 80 00 20 */ blr

View File

@ -66,112 +66,103 @@ struct Creature : public CellObject {
Creature();
virtual Vector3f getPosition() = 0; // _00
virtual void checkCollision(CellObject*); // _04
virtual void getBoundingSphere(Sys::Sphere&) = 0; // _08
virtual bool collisionUpdatable(); // _0C
virtual bool isPiki(); // _10
virtual bool isNavi(); // _14
virtual bool deferPikiCollision(); // _18
virtual char* getTypeName(); // _1C
virtual u8 getObjType(); // _20
virtual void constructor(); // _24
virtual void onInit(CreatureInitArg*); // _28
virtual void onKill(CreatureKillArg*); // _2C
virtual void onInitPost(CreatureInitArg*); // _30
virtual void doAnimation(); // _34
virtual void doEntry(); // _38
virtual void doSetView(int); // _3C
virtual void doViewCalc(); // _40
virtual void doSimulation(float); // _44
virtual void doDirectDraw(Graphics&); // _48
virtual float getBodyRadius(); // _4C
virtual float getCellRadius(); // _50
virtual void initPosition(Vector3f&); // _54
virtual void onInitPosition(Vector3f&); // _58
virtual float getFaceDir() = 0; // _5C
virtual void setVelocity(Vector3f&) = 0; // _60
virtual Vector3f getVelocity() = 0; // _64
virtual void onSetPosition(Vector3f&) = 0; // _68
virtual void onSetPositionPost(Vector3f&); // _6C
virtual void updateTrMatrix() = 0; // _70
virtual bool isTeki(); // _74
virtual bool isPellet(); // _78
virtual void inWaterCallback(WaterBox*); // _7C
virtual void outWaterCallback(); // _80
virtual bool inWater(); // _84
virtual void getFlockMgr(); // _88
virtual void onStartCapture(); // _8C
virtual void onUpdateCapture(Matrixf&); // _90
virtual void onEndCapture(); // _94
virtual bool isAtari(); // _98
virtual void setAtari(bool); // _9C
virtual bool isAlive(); // _A0
virtual void setAlive(bool); // _A4
virtual bool isCollisionFlick(); // _A8
virtual void setCollisionFlick(bool); // _AC
virtual bool isMovieActor(); // _B0
virtual bool isMovieExtra(); // _B4
virtual bool isMovieMotion(); // _B8
virtual void setMovieMotion(bool); // _BC
virtual bool isBuried(); // _C0
virtual bool isFlying(); // _C4
virtual bool isUnderground(); // _C8
virtual bool isLivingThing(); // _CC
virtual bool isDebugCollision(); // _D0
virtual void setDebugCollision(bool); // _D4
virtual void doSave(Stream&); // _D8
virtual void doLoad(Stream&); // _DC
virtual void bounceCallback(Sys::Triangle*); // _E0
virtual void collisionCallback(CollEvent&); // _E4
virtual void platCallback(PlatEvent&); // _E8
virtual void getJAIObject(); // _EC
virtual PSM::Creature* getPSCreature(); // _F0
virtual void getSound_AILOD(); // _F4
virtual Vector3f* getSound_PosPtr(); // _F8
virtual bool sound_culling(); // _FC
virtual float getSound_CurrAnimFrame(); // _100
virtual float getSound_CurrAnimSpeed(); // _104
virtual void on_movie_begin(bool); // _108
virtual void on_movie_end(bool); // _10C
virtual void movieStartAnimation(ulong); // _110
virtual void movieStartDemoAnimation(SysShape::AnimInfo*); // _114
virtual void movieSetAnimationLastFrame(); // _118
virtual void movieSetTranslation(Vector3f&, float); // _11C
virtual void movieSetFaceDir(float); // _120
virtual bool movieGotoPosition(Vector3f&); // _124
virtual void movieUserCommand(ulong, MoviePlayer*); // _128
virtual void getShadowParam(ShadowParam&); // _12C
virtual bool needShadow(); // _130
virtual void getLifeGaugeParam(LifeGaugeParam&); // _134
virtual void getLODSphere(Sys::Sphere&); // _138
virtual void getLODCylinder(Sys::Cylinder&); // _13C
virtual void startPick(); // _140
virtual void endPick(bool); // _144
virtual u32* getMabiki(); // _148
virtual Footmarks* getFootmarks(); // _14C
virtual void onStickStart(Creature*); // _150
virtual void onStickEnd(Creature*); // _154
virtual void onStickStartSelf(Creature*); // _158
virtual void onStickEndSelf(Creature*); // _15C
virtual bool isSlotFree(short); // _160
virtual int getFreeStickSlot(); // _164
virtual int getNearFreeStickSlot(Vector3f&); // _168
virtual int getRandomFreeStickSlot(); // _16C
virtual void onSlotStickStart(Creature*, short); // _170
virtual void onSlotStickEnd(Creature*, short); // _174
virtual void calcStickSlotGlobal(short, Vector3f&); // _178
virtual void getVelocityAt(Vector3f&, Vector3f&) = 0; // _17C
virtual void getAngularEffect(Vector3f&, Vector3f&); // _180
virtual void applyImpulse(Vector3f&, Vector3f&); // _184
virtual bool ignoreAtari(Creature*); // _188
virtual void getSuckPos(); // _18C
virtual void getGoalPos(); // _190
virtual bool isSuckReady(); // _194
virtual bool isSuckArriveWait(); // _198
virtual void stimulate(Interaction&); // _19C
virtual char* getCreatureName(); // _1A0
virtual s32 getCreatureID(); // _1A4
virtual void constructor(); // _2C
virtual void onInit(CreatureInitArg*); // _30
virtual void onKill(CreatureKillArg*); // _34
virtual void onInitPost(CreatureInitArg*); // _38
virtual void doAnimation(); // _3C
virtual void doEntry(); // _40
virtual void doSetView(int); // _44
virtual void doViewCalc(); // _48
virtual void doSimulation(float); // _4C
virtual void doDirectDraw(Graphics&); // _50
virtual float getBodyRadius(); // _54
virtual float getCellRadius(); // _58
virtual void initPosition(Vector3f&); // _5C
virtual void onInitPosition(Vector3f&); // _60
virtual float getFaceDir() = 0; // _64
virtual void setVelocity(Vector3f&) = 0; // _68
virtual Vector3f getVelocity() = 0; // _6C
virtual void onSetPosition(Vector3f&) = 0; // _70
virtual void onSetPositionPost(Vector3f&); // _74
virtual void updateTrMatrix() = 0; // _78
virtual bool isTeki(); // _7C
virtual bool isPellet(); // _80
virtual void inWaterCallback(WaterBox*); // _84
virtual void outWaterCallback(); // _88
virtual bool inWater(); // _8C
virtual void getFlockMgr(); // _90
virtual void onStartCapture(); // _94
virtual void onUpdateCapture(Matrixf&); // _98
virtual void onEndCapture(); // _9C
virtual bool isAtari(); // _A0
virtual void setAtari(bool); // _A4
virtual bool isAlive(); // _A8
virtual void setAlive(bool); // _AC
virtual bool isCollisionFlick(); // _B0
virtual void setCollisionFlick(bool); // TODO: Write the rest
virtual bool isMovieActor();
virtual bool isMovieExtra();
virtual bool isMovieMotion();
virtual void setMovieMotion(bool);
virtual bool isBuried();
virtual bool isFlying();
virtual bool isUnderground();
virtual bool isLivingThing();
virtual bool isDebugCollision();
virtual void setDebugCollision(bool);
virtual void doSave(Stream&);
virtual void doLoad(Stream&);
virtual void bounceCallback(Sys::Triangle*);
virtual void collisionCallback(CollEvent&);
virtual void platCallback(PlatEvent&);
virtual void getJAIObject();
virtual PSM::Creature* getPSCreature();
virtual void getSound_AILOD();
virtual Vector3f* getSound_PosPtr();
virtual bool sound_culling();
virtual float getSound_CurrAnimFrame();
virtual float getSound_CurrAnimSpeed();
virtual void on_movie_begin(bool);
virtual void on_movie_end(bool);
virtual void movieStartAnimation(ulong);
virtual void movieStartDemoAnimation(SysShape::AnimInfo*);
virtual void movieSetAnimationLastFrame();
virtual void movieSetTranslation(Vector3f&, float);
virtual void movieSetFaceDir(float);
virtual bool movieGotoPosition(Vector3f&);
virtual void movieUserCommand(ulong, MoviePlayer*);
virtual void getShadowParam(ShadowParam&);
virtual bool needShadow();
virtual void getLifeGaugeParam(LifeGaugeParam&);
virtual void getLODSphere(Sys::Sphere&);
virtual void getLODCylinder(Sys::Cylinder&);
virtual void startPick();
virtual void endPick(bool);
virtual u32* getMabiki();
virtual Footmarks* getFootmarks();
virtual void onStickStart(Creature*);
virtual void onStickEnd(Creature*);
virtual void onStickStartSelf(Creature*);
virtual void onStickEndSelf(Creature*);
virtual bool isSlotFree(short);
virtual int getFreeStickSlot();
virtual int getNearFreeStickSlot(Vector3f&);
virtual int getRandomFreeStickSlot();
virtual void onSlotStickStart(Creature*, short);
virtual void onSlotStickEnd(Creature*, short);
virtual void calcStickSlotGlobal(short, Vector3f&);
virtual void getVelocityAt(Vector3f&, Vector3f&) = 0;
virtual void getAngularEffect(Vector3f&, Vector3f&);
virtual void applyImpulse(Vector3f&, Vector3f&);
virtual bool ignoreAtari(Creature*);
virtual void getSuckPos();
virtual void getGoalPos();
virtual bool isSuckReady();
virtual bool isSuckArriveWait();
virtual void stimulate(Interaction&);
virtual char* getCreatureName();
virtual s32 getCreatureID();
void applyAirDrag(float, float, float);
void calcSphereDistance(Game::Creature*);
@ -201,6 +192,7 @@ struct Creature : public CellObject {
void updateCell();
void updateLOD(Game::AILODParm&);
void updateStick(Vector3f&);
bool isStickTo();
Matrixf* m_captureMatrix; // _0B8
union {

View File

@ -1,51 +0,0 @@
#ifndef _GAME_INTERACTBATTLE_H
#define _GAME_INTERACTBATTLE_H
#include "types.h"
namespace Game {
struct Piki;
struct Navi;
struct EnemyBase;
struct Pellet;
struct Onyon;
struct BaseItem;
struct Creature;
struct Interaction__vt {
void* pointer;
void* pointer2;
bool (*actCommon)(void*, void*);
bool (*actPiki)(void*, Piki*);
bool (*actNavi)(void*, Navi*);
bool (*actEnemy)(void*, EnemyBase*);
bool (*actPellet)(void*, Pellet*);
bool (*actOnyon)(void*, Onyon*);
bool (*actItem)(void*, BaseItem*);
};
struct InteractFlick {
bool actCommon(Creature*);
bool actNavi(Navi*);
bool actPiki(Piki*);
Interaction__vt* m_vtbl; // _00
Creature* m_creature; // _04
f32 m_knockback; // _08
f32 m_damage; // _0C
f32 _10; // _10
};
struct InteractAttack {
bool actCommon(Creature*);
bool actNavi(Navi*);
bool actEnemy(EnemyBase*);
bool actItem(BaseItem*);
Interaction__vt* m_vtbl; // _00
Creature* m_creature; // _04
f32 _08; // _08
f32 _0C; // _0C
};
} // namespace Game
#endif

View File

@ -1,23 +0,0 @@
#ifndef _GAME_INTERACTDOPE_H
#define _GAME_INTERACTDOPE_H
#include "types.h"
#include "Game/Interaction.h"
namespace Game {
struct InteractDope : public Interaction {
virtual bool actCommon(Creature*); // _00
virtual bool actPiki(Piki*); // _04
virtual bool actNavi(Navi*); // _08
virtual bool actEnemy(EnemyBase*); // _0C
virtual bool actPellet(Pellet*); // _10
virtual bool actOnyon(Onyon*); // _14
virtual bool actItem(BaseItem*); // _18
// _00 VTBL
Creature* m_creature; // _04
s32 _08;
};
} // namespace Game
#endif

View File

@ -15,6 +15,55 @@ struct Interaction {
// _00 VTBL
};
struct InteractFlick : public Interaction {
virtual bool actCommon(Creature*);
virtual bool actPiki(Piki*);
virtual bool actNavi(Navi*);
// _00 VTBL
Creature* m_creature; // _04
f32 m_knockback; // _08
f32 m_damage; // _0C
f32 _10; // _10
};
struct InteractAttack : public Interaction {
virtual bool actCommon(Creature*);
virtual bool actNavi(Navi*);
virtual bool actEnemy(EnemyBase*);
virtual bool actItem(BaseItem*);
// _00 VTBL
Creature* m_creature; // _04
f32 _08; // _08
f32 _0C; // _0C
};
struct InteractDope : public Interaction {
virtual bool actPiki(Piki*); // _04
virtual bool actEnemy(EnemyBase*); // _0C
// _00 VTBL
Creature* m_creature; // _04
s32 _08;
};
struct InteractSwallow : public InteractAttack {
virtual bool actCommon(Creature*);
virtual bool actPiki(Piki*);
// _00 VTBL
Creature* m_creature; // _04
};
struct InteractKill : public Interaction {
virtual bool actCommon(Creature*);
virtual bool actPiki(Piki*);
// _00 VTBL
Creature* m_creature; // _04
};
} // namespace Game
#endif

View File

@ -514,7 +514,7 @@ KANDO:=\
$(BUILD_DIR)/asm/plugProjectKandoU/aiPrimitives.o\
$(BUILD_DIR)/asm/plugProjectKandoU/aiFormation.o\
$(BUILD_DIR)/asm/plugProjectKandoU/creatureStick.o\
$(BUILD_DIR)/asm/plugProjectKandoU/interactBattle.o\
$(BUILD_DIR)/src/plugProjectKandoU/interactBattle.o\
$(BUILD_DIR)/asm/plugProjectKandoU/aiFree.o\
$(BUILD_DIR)/asm/plugProjectKandoU/aiAttack.o\
$(BUILD_DIR)/asm/plugProjectKandoU/aiTransport.o\

View File

@ -1,140 +1,49 @@
#include "Game/InteractBattle.h"
#include "Game/Interaction.h"
#include "Game/Creature.h"
#include "types.h"
/*
Generated from dpostproc
.section .data, "wa" # 0x8049E220 - 0x804EFC20
.global __vt__Q24Game12InteractKill
__vt__Q24Game12InteractKill:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game12InteractKillFPQ24Game8Creature
.4byte actPiki__Q24Game12InteractKillFPQ24Game4Piki
.4byte actNavi__Q24Game11InteractionFPQ24Game4Navi
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
.global __vt__Q24Game15InteractSwallow
__vt__Q24Game15InteractSwallow:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game15InteractSwallowFPQ24Game8Creature
.4byte actPiki__Q24Game15InteractSwallowFPQ24Game4Piki
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
.global __vt__Q24Game14InteractAttack
__vt__Q24Game14InteractAttack:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game14InteractAttackFPQ24Game8Creature
.4byte actPiki__Q24Game11InteractionFPQ24Game4Piki
.4byte actNavi__Q24Game14InteractAttackFPQ24Game4Navi
.4byte actEnemy__Q24Game14InteractAttackFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game14InteractAttackFPQ24Game8BaseItem
.global __vt__Q24Game13InteractFlick
__vt__Q24Game13InteractFlick:
.4byte 0
.4byte 0
.4byte actCommon__Q24Game13InteractFlickFPQ24Game8Creature
.4byte actPiki__Q24Game13InteractFlickFPQ24Game4Piki
.4byte actNavi__Q24Game13InteractFlickFPQ24Game4Navi
.4byte actEnemy__Q24Game11InteractionFPQ24Game9EnemyBase
.4byte actPellet__Q24Game11InteractionFPQ24Game6Pellet
.4byte actOnyon__Q24Game11InteractionFPQ24Game5Onyon
.4byte actItem__Q24Game11InteractionFPQ24Game8BaseItem
*/
/*
* --INFO--
* Address: 8019FE78
* Size: 000044
*/
namespace Game {
bool InteractFlick::actCommon(Creature* param_1)
bool InteractFlick::actCommon(Creature* creature)
{
if (param_1->isStickTo()) {
param_1->endStick();
// On flick, we unstick and get sent flying away. Weeeee.
if (creature->isStickTo()) {
creature->endStick();
}
return true;
};
///*
// * --INFO--
// * Address: 8019FEBC
// * Size: 00006C
// */
// void Game::InteractAttack::actCommon(Game::Creature*)
//{
// /*
// .loc_0x0:
// stwu r1, -0x10(r1)
// mflr r0
// stw r0, 0x14(r1)
// stw r31, 0xC(r1)
// mr r31, r4
// lwz r3, 0x4(r3)
// lwz r12, 0x0(r3)
// lwz r12, 0x1C(r12)
// mtctr r12
// bctrl
// rlwinm. r0,r3,0,24,31
// beq- .loc_0x54
// mr r3, r31
// lwz r12, 0x0(r31)
// lwz r12, 0x7C(r12)
// mtctr r12
// bctrl
// rlwinm. r0,r3,0,24,31
// bne- .loc_0x54
// li r3, 0
// b .loc_0x58
/*
* --INFO--
* Address: 8019FEBC
* Size: 00006C
*/
bool InteractAttack::actCommon(Creature* creature)
{
// If anything other than a teki tries to attack the navi, don't register
if (m_creature->isNavi() && !creature->isTeki()) {
return false;
}
// .loc_0x54:
// li r3, 0x1
return true;
}
// .loc_0x58:
// lwz r0, 0x14(r1)
// lwz r31, 0xC(r1)
// mtlr r0
// addi r1, r1, 0x10
// blr
// */
//}
/*
* --INFO--
* Address: 8019FF28
* Size: 000008
*/
bool InteractSwallow::actCommon(Game::Creature* creature) { return true; }
///*
// * --INFO--
// * Address: 8019FF28
// * Size: 000008
// */
// void Game::InteractSwallow::actCommon(Game::Creature*)
//{
// /*
// .loc_0x0:
// li r3, 0x1
// blr
// */
//}
///*
// * --INFO--
// * Address: 8019FF30
// * Size: 000008
// */
// void Game::InteractKill::actCommon(Game::Creature*)
//{
// /*
// .loc_0x0:
// li r3, 0x1
// blr
// */
//}
/*
* --INFO--
* Address: 8019FF30
* Size: 000008
*/
bool InteractKill::actCommon(Game::Creature* creature) { return true; }
}; // namespace Game

View File

@ -1,6 +1,6 @@
#include "Game/InteractFarmKarero.h"
#include "Game/InteractFarmHaero.h"
#include "Game/InteractDope.h"
#include "Game/Interaction.h"
#include "Game/EnemyBase.h"
namespace Game {