mirror of
https://github.com/zeldaret/ss
synced 2026-10-08 05:33:53 -04:00
CC Cut Direction Related Changes
This commit is contained in:
@@ -18794,8 +18794,8 @@ ChkTgBit23__8cCcD_ObjCFv = .text:0x80328E80; // type:function size:0xC
|
||||
ChkTgBit20__8cCcD_ObjCFv = .text:0x80328E90; // type:function size:0xC
|
||||
ChkTgBit24__8cCcD_ObjCFv = .text:0x80328EA0; // type:function size:0xC
|
||||
ChkTgBit25__8cCcD_ObjCFv = .text:0x80328EB0; // type:function size:0xC
|
||||
GetTgSoundID__8cCcD_ObjCFv = .text:0x80328EC0; // type:function size:0x8
|
||||
GetTg_0x6A__8cCcD_ObjCFv = .text:0x80328ED0; // type:function size:0x8
|
||||
GetTgAtCutDir__8cCcD_ObjCFv = .text:0x80328EC0; // type:function size:0x8
|
||||
GetTgAtCutAng__8cCcD_ObjCFv = .text:0x80328ED0; // type:function size:0x8
|
||||
ChkTgBit8__8cCcD_ObjCFv = .text:0x80328EE0; // type:function size:0xC
|
||||
GetTg_0x4A__8cCcD_ObjCFv = .text:0x80328EF0; // type:function size:0x8
|
||||
GetTgActor__8cCcD_ObjFv = .text:0x80328F00; // type:function size:0x8
|
||||
|
||||
+25
-13
@@ -328,7 +328,7 @@ struct cCcD_SrcGObjTg {
|
||||
/* 0x04 */ u32 mSPrm;
|
||||
/* 0x08 */ cCcD_SrcGObjTgInfo mInfo;
|
||||
/* 0x0C */ u16 field_0x0C;
|
||||
/* 0x0E */ u16 field_0x0E;
|
||||
/* 0x0E */ u16 mCutDir; // cCcD_CutDir
|
||||
};
|
||||
|
||||
enum dCcD_ObjAtType {
|
||||
@@ -386,7 +386,21 @@ struct cCcD_SrcGObjAtInfo {
|
||||
enum cCcD_AtSPrm {
|
||||
AT_SPRM_DAMAGE = 0x4,
|
||||
};
|
||||
enum cCcD_CutDir {
|
||||
CUT_DIR_NONE = 0,
|
||||
CUT_DIR_U = (1 << 0), // 0x0001
|
||||
CUT_DIR_LU = (1 << 1), // 0x0002
|
||||
CUT_DIR_L = (1 << 2), // 0x0004
|
||||
CUT_DIR_LD = (1 << 3), // 0x0008
|
||||
CUT_DIR_D = (1 << 4), // 0x0010
|
||||
CUT_DIR_RD = (1 << 5), // 0x0020
|
||||
CUT_DIR_R = (1 << 6), // 0x0040
|
||||
CUT_DIR_RU = (1 << 7), // 0x0080
|
||||
CUT_DIR_STAB = (1 << 8), // 0x0100
|
||||
|
||||
CUT_DIR_ALL =
|
||||
(CUT_DIR_U | CUT_DIR_LU | CUT_DIR_L | CUT_DIR_LD | CUT_DIR_D | CUT_DIR_RD | CUT_DIR_R | CUT_DIR_RU | CUT_DIR_STAB)
|
||||
};
|
||||
struct cCcD_SrcGObjAt {
|
||||
/* 0x00 */ u32 mType;
|
||||
/* 0x04 */ u32 mSPrm;
|
||||
@@ -395,8 +409,8 @@ struct cCcD_SrcGObjAt {
|
||||
/* 0x0D */ u8 field_0xD;
|
||||
/* 0x0E */ u8 field_0xE;
|
||||
/* 0x0F */ u8 field_0xF;
|
||||
/* 0x10 */ u16 field_0x10;
|
||||
/* 0x12 */ s16 field_0x12;
|
||||
/* 0x10 */ u16 mCutDir; // cCcD_CutDir
|
||||
/* 0x12 */ s16 mCutAng;
|
||||
};
|
||||
|
||||
struct cCcD_SrcGObjCo {
|
||||
@@ -595,12 +609,12 @@ public:
|
||||
return mAtHitSrc.mType;
|
||||
}
|
||||
|
||||
void SetFlag_0xA(u16 flag) {
|
||||
mSrc.field_0x0E = flag;
|
||||
void SetCutDir(u16 flag) {
|
||||
mSrc.mCutDir = flag;
|
||||
}
|
||||
|
||||
u16 GetFlag_0xA(u16 mask) const {
|
||||
return mSrc.field_0x0E & mask;
|
||||
u16 ChkCutDir(u16 mask) const {
|
||||
return mSrc.mCutDir & mask;
|
||||
}
|
||||
void ClrSet() {
|
||||
OffSPrm(1);
|
||||
@@ -816,8 +830,8 @@ public:
|
||||
bool ChkTgBit23() const;
|
||||
bool ChkTgBit24() const;
|
||||
bool ChkTgBit25() const;
|
||||
s32 GetTgSoundID() const;
|
||||
s16 GetTg_0x6A() const;
|
||||
s32 GetTgAtCutDir() const;
|
||||
s16 GetTgAtCutAng() const;
|
||||
bool ChkTgBit8() const;
|
||||
u8 GetTg_0x4A() const;
|
||||
dAcObjBase_c *GetTgActor();
|
||||
@@ -879,10 +893,8 @@ public:
|
||||
void SetAtRpm(u32 f) {
|
||||
mAt.SetRPrm(f);
|
||||
}
|
||||
|
||||
// Related to directional attacks?
|
||||
void SetTgFlag_0xA(u16 flag) {
|
||||
mTg.SetFlag_0xA(flag);
|
||||
void SetTgCutDir(u16 flag) {
|
||||
mTg.SetCutDir(flag);
|
||||
}
|
||||
|
||||
void SetTgSrcField_0x0C(u16 val) {
|
||||
|
||||
@@ -468,19 +468,6 @@ public:
|
||||
ATTACK_FINAL_BLOW = 11,
|
||||
};
|
||||
|
||||
enum SpecificPlayerAttackDirection_e {
|
||||
/* 0x000 */ ATTACK_DIRECTION_NONE = 0,
|
||||
/* 0x001 */ ATTACK_DIRECTION_DOWN = 1 << 0,
|
||||
/* 0x002 */ ATTACK_DIRECTION_DOWNRIGHT = 1 << 1,
|
||||
/* 0x004 */ ATTACK_DIRECTION_RIGHT = 1 << 2,
|
||||
/* 0x008 */ ATTACK_DIRECTION_UPRIGHT = 1 << 3,
|
||||
/* 0x010 */ ATTACK_DIRECTION_UP = 1 << 4,
|
||||
/* 0x020 */ ATTACK_DIRECTION_UPLEFT = 1 << 5,
|
||||
/* 0x040 */ ATTACK_DIRECTION_LEFT = 1 << 6,
|
||||
/* 0x080 */ ATTACK_DIRECTION_DOWNLEFT = 1 << 7,
|
||||
/* 0x100 */ ATTACK_DIRECTION_STAB = 1 << 8,
|
||||
};
|
||||
|
||||
enum ModelUpdateFlags_e {
|
||||
UPDATE_MODEL_SWORD = 0x20,
|
||||
UPDATE_MODEL_SHIELD = 0x40,
|
||||
|
||||
@@ -58,13 +58,13 @@ STATE_DEFINE(dAcBlastboss_c, ThunderWait);
|
||||
|
||||
static dCcD_SrcCyl sSrcCyl1 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BELLOWS | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
|
||||
0x4103,
|
||||
{0, 0x4, 0x407},
|
||||
0x0,
|
||||
0x0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x0}},
|
||||
/* mCylInf */
|
||||
{40.f, 300.f}
|
||||
@@ -72,9 +72,8 @@ static dCcD_SrcCyl sSrcCyl1 = {
|
||||
|
||||
static dCcD_SrcCyl sSrcCyl2 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_BELLOWS, 0x103, {0, 0x4, 0x407}, 0x0, 0x0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BELLOWS, 0x103, {0, 0x4, 0x407}, 0x0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x0}},
|
||||
/* mCylInf */
|
||||
{70.f, 30.f}
|
||||
@@ -82,9 +81,8 @@ static dCcD_SrcCyl sSrcCyl2 = {
|
||||
|
||||
static dCcD_SrcCyl sSrcCyl3 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{0x0, 0x0, {0, 0x0, 0x407}, 0x0, 0x0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {0x0, 0x0, {0, 0x0, 0x407}, 0x0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE5}},
|
||||
/* mCylInf */
|
||||
{100.f, 250.f}
|
||||
@@ -92,9 +90,8 @@ static dCcD_SrcCyl sSrcCyl3 = {
|
||||
|
||||
static dCcD_SrcSph sSrcSph1 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x2008D, {0, 0, 0}, 4, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{0, 0, {0, 0x0, 0x407}, 0, 0},
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x2008D, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {0, 0, {0, 0x0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mSphInf */
|
||||
{100.0f}
|
||||
@@ -102,9 +99,8 @@ static dCcD_SrcSph sSrcSph1 = {
|
||||
|
||||
static dCcD_SrcSph sSrcSph2 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x22008D, {0, 0, 4}, 8, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_0x800000 | AT_TYPE_BUGNET, 0x103, {0, 0x19, 0x407}, 0, 0},
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x22008D, {0, 0, 4}, 8, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_0x800000 | AT_TYPE_BUGNET, 0x103, {0, 0x19, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mSphInf */
|
||||
{100.0f}
|
||||
@@ -112,9 +108,8 @@ static dCcD_SrcSph sSrcSph2 = {
|
||||
|
||||
static dCcD_SrcSph sSrcSph = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_BELLOWS, 0x4103, {0, 0x0, 0x40F}, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BELLOWS, 0x4103, {0, 0x0, 0x40F}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mSphInf */
|
||||
{30.0f}
|
||||
@@ -1115,10 +1110,9 @@ void dAcBlastboss_c::executeState_Fight() {
|
||||
checkForCloseRangeAttack();
|
||||
checkForCounter();
|
||||
}
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
} else {
|
||||
// TODO
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
}
|
||||
|
||||
if (mTimers[TIMER_4] == 1) {
|
||||
@@ -1204,14 +1198,14 @@ void dAcBlastboss_c::executeState_Attack() {
|
||||
mStateMgr.changeState(StateID_CounterAttack);
|
||||
return;
|
||||
}
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
} else {
|
||||
if (mpCurrentAnm == "AttackR") {
|
||||
mCc1.SetTgFlag_0xA(0xE);
|
||||
mCc1.SetTgCutDir(CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU);
|
||||
} else if (mpCurrentAnm == "AttackL") {
|
||||
mCc1.SetTgFlag_0xA(0xE0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_RD | CUT_DIR_R | CUT_DIR_RU);
|
||||
} else {
|
||||
mCc1.SetTgFlag_0xA(0x1);
|
||||
mCc1.SetTgCutDir(CUT_DIR_U);
|
||||
}
|
||||
}
|
||||
checkForCounter();
|
||||
@@ -1285,12 +1279,12 @@ void dAcBlastboss_c::executeState_CounterAttack() {
|
||||
if (link->checkCurrentAction(/* BACKFLIP */ 0x62)) {
|
||||
field_0x113E = 20;
|
||||
}
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
if (field_0x113E != 0) {
|
||||
field_0x1142 = 0;
|
||||
field_0x1134 = 0;
|
||||
} else if (b) {
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
field_0x1142 = 0;
|
||||
checkForCounter();
|
||||
}
|
||||
@@ -1310,7 +1304,7 @@ void dAcBlastboss_c::initializeState_PunchAttack() {
|
||||
void dAcBlastboss_c::executeState_PunchAttack() {
|
||||
f32 speed = 0.0f;
|
||||
field_0x1131 = 1;
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x800);
|
||||
if (mMdl.getAnm().getFrame() < 15.0f) {
|
||||
speed = -10.0f;
|
||||
@@ -1340,7 +1334,7 @@ void dAcBlastboss_c::executeState_DashAttack() {
|
||||
field_0x1131 = 1;
|
||||
f32 targetSpeed = 0.0f;
|
||||
f32 stepSize = 40.0f; // never set differently
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x1000);
|
||||
switch (mSubState) {
|
||||
case SUB_STATE_0: {
|
||||
@@ -1415,7 +1409,7 @@ void dAcBlastboss_c::executeState_SmallAttack() {
|
||||
field_0x1131 = 1;
|
||||
f32 targetSpeed = 0.0f;
|
||||
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
switch (mSubState) {
|
||||
case SUB_STATE_0: {
|
||||
if (mMdl.getAnm().getFrame() >= 31.0f && mMdl.getAnm().getFrame() <= 33.0f) {
|
||||
@@ -1467,7 +1461,7 @@ void dAcBlastboss_c::initializeState_ThunderAttack() {
|
||||
void dAcBlastboss_c::executeState_ThunderAttack() {
|
||||
field_0x1131 = 1;
|
||||
f32 targetSpeed = 0.0f;
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
sLib::addCalcAngle(mAngle.y.ref(), mYAngleToLink, 2, 0x400);
|
||||
if (mMdl.getAnm().getFrame() >= 21.0f && mMdl.getAnm().getFrame() <= 25.0f) {
|
||||
mSwordMdl.enable();
|
||||
@@ -1516,16 +1510,16 @@ void dAcBlastboss_c::executeState_Guard() {
|
||||
};
|
||||
|
||||
static const u32 sGuardFlags[] = {
|
||||
0x8 | 0x4 | 0x2,
|
||||
0x8 | 0x4 | 0x2,
|
||||
0x10 | 0x8 | 0x4 | 0x2,
|
||||
0x80 | 0x40 | 0x20,
|
||||
0x80 | 0x40 | 0x20,
|
||||
0x80 | 0x40 | 0x20 | 0x10,
|
||||
0x80 | 0x2 | 0x1,
|
||||
0x20 | 0x10 | 0x8,
|
||||
0x100,
|
||||
0x100 | 0x80 | 0x40 | 0x20 | 0x10 | 0x8 | 0x4 | 0x2 | 0x1,
|
||||
CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_RIGHT
|
||||
CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_UPRIGHT
|
||||
CUT_DIR_D | CUT_DIR_LD | CUT_DIR_L | CUT_DIR_LU, // GUARD_DOWNRIGHT
|
||||
CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD, // GUARD_LEFT
|
||||
CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD, // GUARD_UPLEFT
|
||||
CUT_DIR_RU | CUT_DIR_R | CUT_DIR_RD | CUT_DIR_D, // GUARD_DOWNLEFT
|
||||
CUT_DIR_RU | CUT_DIR_LU | CUT_DIR_U, // GUARD_UP
|
||||
CUT_DIR_RD | CUT_DIR_D | CUT_DIR_LD, // GUARD_DOWN
|
||||
CUT_DIR_STAB, // GUARD_CENTER
|
||||
CUT_DIR_ALL,
|
||||
};
|
||||
|
||||
switch (mSubState) {
|
||||
@@ -1607,21 +1601,21 @@ void dAcBlastboss_c::executeState_Guard() {
|
||||
setAnmRate(1.0f);
|
||||
if (link->isAttacking()) {
|
||||
switch (dAcPy_c::GetLinkM()->getSpecificAttackDirection()) {
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: mGuardDirection = GUARD_UP; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_LEFT: mGuardDirection = GUARD_LEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT: mGuardDirection = GUARD_UPLEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: mGuardDirection = GUARD_DOWNLEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT: mGuardDirection = GUARD_RIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT: mGuardDirection = GUARD_UPRIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: mGuardDirection = GUARD_DOWNRIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UP: mGuardDirection = GUARD_DOWN; break;
|
||||
default: mGuardDirection = GUARD_CENTER; break;
|
||||
case CUT_DIR_U: mGuardDirection = GUARD_UP; break;
|
||||
case CUT_DIR_R: mGuardDirection = GUARD_LEFT; break;
|
||||
case CUT_DIR_RU: mGuardDirection = GUARD_UPLEFT; break;
|
||||
case CUT_DIR_RD: mGuardDirection = GUARD_DOWNLEFT; break;
|
||||
case CUT_DIR_L: mGuardDirection = GUARD_RIGHT; break;
|
||||
case CUT_DIR_LU: mGuardDirection = GUARD_UPRIGHT; break;
|
||||
case CUT_DIR_LD: mGuardDirection = GUARD_DOWNRIGHT; break;
|
||||
case CUT_DIR_D: mGuardDirection = GUARD_DOWN; break;
|
||||
default: mGuardDirection = GUARD_CENTER; break;
|
||||
}
|
||||
setAnm(sGuardNames[mGuardDirection], 3.0);
|
||||
}
|
||||
}
|
||||
|
||||
mCc1.SetTgFlag_0xA(sGuardFlags[mGuardDirection]);
|
||||
mCc1.SetTgCutDir(sGuardFlags[mGuardDirection]);
|
||||
checkForRangeAttack();
|
||||
}
|
||||
void dAcBlastboss_c::finalizeState_Guard() {}
|
||||
@@ -1629,13 +1623,9 @@ void dAcBlastboss_c::finalizeState_Guard() {}
|
||||
void dAcBlastboss_c::initializeState_GuardBreak() {
|
||||
s32 side;
|
||||
s32 attackDir = dAcPy_c::GetLinkM()->getSpecificAttackDirection();
|
||||
if (attackDir == daPlayerActBase_c::ATTACK_DIRECTION_LEFT ||
|
||||
attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT ||
|
||||
attackDir == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) {
|
||||
if (attackDir == CUT_DIR_R || attackDir == CUT_DIR_RU || attackDir == CUT_DIR_RD) {
|
||||
side = 0;
|
||||
} else if (attackDir == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT ||
|
||||
attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT ||
|
||||
attackDir == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) {
|
||||
} else if (attackDir == CUT_DIR_L || attackDir == CUT_DIR_LU || attackDir == CUT_DIR_LD) {
|
||||
side = 1;
|
||||
} else {
|
||||
side = (s32)cM::rndF(1.99f);
|
||||
@@ -1659,7 +1649,7 @@ void dAcBlastboss_c::executeState_GuardBreak() {
|
||||
mSpeed = -30.0f;
|
||||
}
|
||||
sLib::addCalcScaled(&mSpeed, 1.0f, 4.0f);
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
checkForCounter();
|
||||
}
|
||||
void dAcBlastboss_c::finalizeState_GuardBreak() {}
|
||||
@@ -1682,7 +1672,7 @@ void dAcBlastboss_c::executeState_Damage() {
|
||||
}
|
||||
field_0x113E = 0;
|
||||
if (mIsPhaseTwo == 0 && !link->isAttackingSpin()) {
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
}
|
||||
checkForCounter();
|
||||
}
|
||||
@@ -1722,7 +1712,7 @@ void dAcBlastboss_c::executeState_SitDamage() {
|
||||
mTimers[TIMER_4] = 15;
|
||||
}
|
||||
checkForCounter();
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
return;
|
||||
}
|
||||
case SUB_STATE_5: {
|
||||
@@ -1749,7 +1739,7 @@ void dAcBlastboss_c::executeState_SitDamage() {
|
||||
}
|
||||
}
|
||||
}
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
}
|
||||
void dAcBlastboss_c::finalizeState_SitDamage() {}
|
||||
|
||||
@@ -1996,13 +1986,13 @@ void dAcBlastboss_c::executeState_Stun() {
|
||||
|
||||
sLib::addCalcScaled(&mSpeed, 1.0f, 10.0f);
|
||||
if (mChanceAttackCounter >= 7) {
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
checkForCounter();
|
||||
} else {
|
||||
if (mInvulnerabilityTimerMaybe != 0) {
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
} else {
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2016,7 +2006,7 @@ void dAcBlastboss_c::initializeState_ThunderWait() {
|
||||
}
|
||||
void dAcBlastboss_c::executeState_ThunderWait() {
|
||||
dAcPy_c *link = dAcPy_c::GetLinkM();
|
||||
mCc1.SetTgFlag_0xA(0);
|
||||
mCc1.SetTgCutDir(CUT_DIR_NONE);
|
||||
|
||||
switch (mSubState) {
|
||||
case SUB_STATE_0: {
|
||||
@@ -2051,7 +2041,7 @@ void dAcBlastboss_c::executeState_ThunderWait() {
|
||||
}
|
||||
case SUB_STATE_5: {
|
||||
if (mMdl.getAnm().getFrame() >= 20.0f) {
|
||||
mCc1.SetTgFlag_0xA(0x1FF);
|
||||
mCc1.SetTgCutDir(CUT_DIR_ALL);
|
||||
checkForCounter();
|
||||
}
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
@@ -2264,15 +2254,13 @@ bool dAcBlastboss_c::checkDamage() {
|
||||
field_0x1138 = 10;
|
||||
field_0x11B8 = 5.0f;
|
||||
field_0x11A4 = 7.0f;
|
||||
if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) {
|
||||
if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU ||
|
||||
mLastAttackDirection == CUT_DIR_RD) {
|
||||
field_0x1137 = 1;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU ||
|
||||
mLastAttackDirection == CUT_DIR_LD) {
|
||||
field_0x1137 = 2;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_STAB) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_STAB) {
|
||||
field_0x1137 = 3;
|
||||
} else {
|
||||
field_0x1137 = 0;
|
||||
@@ -2310,15 +2298,13 @@ bool dAcBlastboss_c::checkDamage() {
|
||||
mAttackKnockbackZ = v2.z;
|
||||
field_0x11B8 = 5.0f;
|
||||
field_0x11A4 = 7.0f;
|
||||
if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) {
|
||||
if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU ||
|
||||
mLastAttackDirection == CUT_DIR_RD) {
|
||||
field_0x1137 = 1;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU ||
|
||||
mLastAttackDirection == CUT_DIR_LD) {
|
||||
field_0x1137 = 2;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWN) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_U) {
|
||||
field_0x1137 = 3;
|
||||
} else {
|
||||
field_0x1137 = 0;
|
||||
@@ -2347,15 +2333,13 @@ bool dAcBlastboss_c::checkDamage() {
|
||||
field_0x1138 = 10;
|
||||
field_0x11B8 = 5.0f;
|
||||
field_0x11A4 = 7.0f;
|
||||
if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_LEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT) {
|
||||
if (mLastAttackDirection == CUT_DIR_R || mLastAttackDirection == CUT_DIR_RU ||
|
||||
mLastAttackDirection == CUT_DIR_RD) {
|
||||
field_0x1137 = 1;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_RIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT ||
|
||||
mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_L || mLastAttackDirection == CUT_DIR_LU ||
|
||||
mLastAttackDirection == CUT_DIR_LD) {
|
||||
field_0x1137 = 2;
|
||||
} else if (mLastAttackDirection == daPlayerActBase_c::ATTACK_DIRECTION_STAB) {
|
||||
} else if (mLastAttackDirection == CUT_DIR_STAB) {
|
||||
field_0x1137 = 3;
|
||||
} else {
|
||||
field_0x1137 = 0;
|
||||
@@ -2500,14 +2484,12 @@ bool dAcBlastboss_c::checkForCounter() {
|
||||
|
||||
if (mStateMgr.isState(StateID_Attack)) {
|
||||
if (mpCurrentAnm == "AttackR" &&
|
||||
(attackDir == dAcPy_c::ATTACK_DIRECTION_RIGHT || attackDir == dAcPy_c::ATTACK_DIRECTION_UPRIGHT ||
|
||||
attackDir == dAcPy_c::ATTACK_DIRECTION_DOWNRIGHT)) {
|
||||
(attackDir == CUT_DIR_L || attackDir == CUT_DIR_LD || attackDir == CUT_DIR_LU)) {
|
||||
mGuardDirection = GUARD_RIGHT;
|
||||
} else if (mpCurrentAnm == "AttackL" && (attackDir == dAcPy_c::ATTACK_DIRECTION_LEFT ||
|
||||
attackDir == dAcPy_c::ATTACK_DIRECTION_UPLEFT ||
|
||||
attackDir == dAcPy_c::ATTACK_DIRECTION_DOWNLEFT)) {
|
||||
} else if (mpCurrentAnm == "AttackL" &&
|
||||
(attackDir == CUT_DIR_R || attackDir == CUT_DIR_RD || attackDir == CUT_DIR_RU)) {
|
||||
mGuardDirection = GUARD_LEFT;
|
||||
} else if (mpCurrentAnm == "AttackU" && attackDir == daPlayerActBase_c::ATTACK_DIRECTION_DOWN) {
|
||||
} else if (mpCurrentAnm == "AttackU" && attackDir == CUT_DIR_U) {
|
||||
mGuardDirection = GUARD_UP;
|
||||
} else {
|
||||
return false;
|
||||
@@ -2521,15 +2503,15 @@ bool dAcBlastboss_c::checkForCounter() {
|
||||
}
|
||||
|
||||
switch (attackDir) {
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: mGuardDirection = GUARD_UP; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_LEFT: mGuardDirection = GUARD_LEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT: mGuardDirection = GUARD_UPLEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: mGuardDirection = GUARD_DOWNLEFT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT: mGuardDirection = GUARD_RIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT: mGuardDirection = GUARD_UPRIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: mGuardDirection = GUARD_DOWNRIGHT; break;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UP: mGuardDirection = GUARD_DOWN; break;
|
||||
default: mGuardDirection = GUARD_CENTER; break;
|
||||
case CUT_DIR_U: mGuardDirection = GUARD_UP; break;
|
||||
case CUT_DIR_R: mGuardDirection = GUARD_LEFT; break;
|
||||
case CUT_DIR_RU: mGuardDirection = GUARD_UPLEFT; break;
|
||||
case CUT_DIR_RD: mGuardDirection = GUARD_DOWNLEFT; break;
|
||||
case CUT_DIR_L: mGuardDirection = GUARD_RIGHT; break;
|
||||
case CUT_DIR_LU: mGuardDirection = GUARD_UPRIGHT; break;
|
||||
case CUT_DIR_LD: mGuardDirection = GUARD_DOWNRIGHT; break;
|
||||
case CUT_DIR_D: mGuardDirection = GUARD_DOWN; break;
|
||||
default: mGuardDirection = GUARD_CENTER; break;
|
||||
}
|
||||
if (!mStateMgr.isState(StateID_Guard)) {
|
||||
mStateMgr.changeState(StateID_Guard);
|
||||
@@ -3047,20 +3029,20 @@ bool dAcBlastboss_c::checkForLinkSwordBySwordHit() {
|
||||
|
||||
u8 dAcBlastboss_c::classifyAttackDirection(s32 attackDir) {
|
||||
switch (attackDir) {
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_LEFT:
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNLEFT:
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPLEFT: return 0;
|
||||
case CUT_DIR_R:
|
||||
case CUT_DIR_RU:
|
||||
case CUT_DIR_RD: return 0;
|
||||
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_RIGHT:
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWNRIGHT:
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UPRIGHT: return 1;
|
||||
case CUT_DIR_L:
|
||||
case CUT_DIR_LU:
|
||||
case CUT_DIR_LD: return 1;
|
||||
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_DOWN: return 2;
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_UP: return 3;
|
||||
case CUT_DIR_U: return 2;
|
||||
case CUT_DIR_D: return 3;
|
||||
|
||||
case daPlayerActBase_c::ATTACK_DIRECTION_STAB: return 4;
|
||||
case CUT_DIR_STAB: return 4;
|
||||
|
||||
default: return -1;
|
||||
default: return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -127,9 +127,9 @@ SPECIAL_ACTOR_PROFILE(E_KS, dAcEKs_c, fProfile::E_KS, 0xFE, 0, 4099);
|
||||
|
||||
static dCcD_SrcSph sSrcSph = {
|
||||
{
|
||||
/* mObjAt */ {AT_TYPE_DAMAGE, 0x1D, {0, 0, 0}, 2, 0, 0, 0, 0, 0},
|
||||
/* mObjAt */ {AT_TYPE_DAMAGE, 0x1D, {0, 0, 0}, 2, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~AT_TYPE_COMMON0, 0x200303, {0, 1, 0x40F}, 8, 0},
|
||||
{~AT_TYPE_COMMON0, 0x200303, {0, 1, 0x40F}, 8, CUT_DIR_NONE},
|
||||
/* mObjCo*/ {0xE5},
|
||||
},
|
||||
{35.f}
|
||||
@@ -293,27 +293,27 @@ void dAcEKs_c::fn_155_A60() {
|
||||
s16 a = 0;
|
||||
s16 x = -cLib::targetAngleX(mPosition, dAcPy_c::GetLink()->mPosition);
|
||||
|
||||
if (mSph.GetTgSoundID() == 0x01) {
|
||||
if (mSph.GetTgAtCutDir() == CUT_DIR_U) {
|
||||
x += 0x2000;
|
||||
} else if (mSph.GetTgSoundID() == 0x80) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_RU) {
|
||||
a = 0x1000;
|
||||
x += 0x1000;
|
||||
} else if (mSph.GetTgSoundID() == 0x40) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_R) {
|
||||
a = 0x2000;
|
||||
} else if (mSph.GetTgSoundID() == 0x20) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_RD) {
|
||||
a = 0x1000;
|
||||
x += -0x1000;
|
||||
} else if (mSph.GetTgSoundID() == 0x10) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_D) {
|
||||
x += -0x2000;
|
||||
} else if (mSph.GetTgSoundID() == 0x08) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_LD) {
|
||||
a = -0x1000;
|
||||
x += -0x1000;
|
||||
} else if (mSph.GetTgSoundID() == 0x04) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_L) {
|
||||
a = -0x2000;
|
||||
} else if (mSph.GetTgSoundID() == 0x02) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_LU) {
|
||||
a = -0x1000;
|
||||
x += 0x1000;
|
||||
} else if (mSph.GetTgSoundID() == 0x100) {
|
||||
} else if (mSph.GetTgAtCutDir() == CUT_DIR_STAB) {
|
||||
x += -0x4000;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,8 +51,8 @@
|
||||
SPECIAL_ACTOR_PROFILE(E_REMLY, dAcEremly_c, fProfile::E_REMLY, 0xE1, 0, 3);
|
||||
|
||||
static dCcD_SrcSph sSphSrc = {
|
||||
{{AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 2, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x303, {0, 0, 0x40F}, 8, 0},
|
||||
{{AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 2, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x303, {0, 0, 0x40F}, 8, CUT_DIR_NONE},
|
||||
{0xE5}},
|
||||
{50.f},
|
||||
};
|
||||
|
||||
@@ -45,18 +45,18 @@ static mVec3_c sArrVecs[5] = {
|
||||
|
||||
/* clang-format off */
|
||||
static dCcD_SrcSph sCcSrcHead = {
|
||||
{{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, 0, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, 0},
|
||||
{{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0xC5}},
|
||||
{180.0f},};
|
||||
static dCcD_SrcSph sCcSrcSpine = {
|
||||
{{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, 0, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, 0},
|
||||
{{AT_TYPE_DAMAGE,0x1D, {0, 0, 0}, 4, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0x18, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0xC5}},
|
||||
{170.0f},};
|
||||
static dCcD_SrcSph sCcSrcRear = {
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0, 0x407}, 0, 0},
|
||||
{{0, 0, {0, 0, 0}, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_COMMON0 | AT_TYPE_PHYSICS), 0x303, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0xC5}},
|
||||
{200.0f},};
|
||||
/* clang-format on */
|
||||
|
||||
@@ -46,8 +46,9 @@ SPECIAL_ACTOR_PROFILE(E_SM, dAcEsm_c, fProfile::E_SM, 0xEB, 0, 4098);
|
||||
|
||||
static dCcD_SrcSph sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x3303, {0, 3, 0x40F}, 8, 0},
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0xD, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x3303, {0, 3, 0x40F}, 8, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xC5}},
|
||||
/* mSphInf */
|
||||
{50.f},
|
||||
|
||||
@@ -41,8 +41,9 @@
|
||||
SPECIAL_ACTOR_PROFILE(NPC_BEE, dAcNpcBee_c, fProfile::NPC_BEE, 0x123, 0, 0);
|
||||
|
||||
static dCcD_SrcSph beeColliderSrc = {
|
||||
/* mObjInf */ {/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, 0},
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_0x2000000, 0x20000F, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_BOMB, 0x00004011, {0, 00, 0x40F}, 8, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mSphInf */
|
||||
{15.0f}
|
||||
@@ -381,10 +382,8 @@ void dAcNpcBee_c::handleBeeFlyingStates(dAcNpcBeeSingleBee *bee) {
|
||||
dodgedSword = false;
|
||||
local_98 = dAcPy_c::GetLink()->getPosition() - bee->mPos;
|
||||
if (local_98.squareMagXZ() < 90000.f) {
|
||||
if (dAcPy_c::GetLink()->getSpecificAttackDirection() ==
|
||||
(s16)daPlayerActBase_c::ATTACK_DIRECTION_LEFT ||
|
||||
dAcPy_c::GetLink()->getSpecificAttackDirection() ==
|
||||
(s16)daPlayerActBase_c::ATTACK_DIRECTION_RIGHT) {
|
||||
if (dAcPy_c::GetLink()->getSpecificAttackDirection() == (s16)CUT_DIR_R ||
|
||||
dAcPy_c::GetLink()->getSpecificAttackDirection() == (s16)CUT_DIR_L) {
|
||||
local_98.y += 150.f;
|
||||
if (std::fabsf(local_98.y) < 50.f) {
|
||||
if (local_98.y < 0.f) {
|
||||
|
||||
@@ -91,13 +91,13 @@ STATE_DEFINE(dAcOBarrel_c, Rebirth);
|
||||
namespace {
|
||||
static dCcD_SrcCyl sSrcCyl = {
|
||||
{
|
||||
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10013, {0, 0, 0}, 4, 0, 0, 0, 0, 0},
|
||||
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10013, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000),
|
||||
0x2000111,
|
||||
{0, 0xF, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo*/ {0xE9},
|
||||
},
|
||||
{
|
||||
@@ -106,13 +106,13 @@ static dCcD_SrcCyl sSrcCyl = {
|
||||
};
|
||||
static dCcD_SrcSph sSrcSph = {
|
||||
{
|
||||
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10003, {0, 0, 0}, 4, 0, 0, 0, 0, 0},
|
||||
/* mObjAt */ {AT_TYPE_PHYSICS, 0x10003, {0, 0, 0}, 4, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x2000111,
|
||||
{0, 0xF, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo*/ {0xE9},
|
||||
},
|
||||
{55.f}
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
// clang-format off
|
||||
dCcD_SrcSph dAcObjBirdSp_c::sCcSrc = {
|
||||
/* mObjInf */ {
|
||||
/* mObjAt */ {0, 2, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjAt */ {0, 2, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
// AT_TYPE_COMMON0 - AT_TYPE_WIND
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x00000105, {0, 00, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x00004029}},
|
||||
/* mSphInf */ {1000.0f}
|
||||
};
|
||||
|
||||
@@ -43,8 +43,8 @@ const char *const dAcOBlockUnderground::sDzbPlcNames[4] = {
|
||||
|
||||
const dCcD_SrcCyl dAcOBlockUnderground::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {AT_TYPE_BOMB, 0x11, {0, 8, 0x407}, 0x0, 0x0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BOMB, 0x11, {0, 8, 0x407}, 0x0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mCylInf */
|
||||
{50.f, 100.f}
|
||||
|
||||
@@ -32,13 +32,13 @@ char *CHAIR_FILES[9] = {
|
||||
|
||||
static dCcD_SrcCyl sChairColData = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
|
||||
0x111,
|
||||
{0, 0x7, 0x407},
|
||||
0x0,
|
||||
0x0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mCylInf */
|
||||
{40.f, 50.f}
|
||||
|
||||
@@ -16,9 +16,8 @@ const f32 dAcOcloudDive_c::height = 40.0f;
|
||||
|
||||
dCcD_SrcCyl dAcOcloudDive_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_BOMB, 0x111, {0, 0, 0x407}, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BOMB, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mCylInf */
|
||||
{100.f, 10.f}
|
||||
|
||||
@@ -29,13 +29,12 @@ SPECIAL_ACTOR_PROFILE(OBJ_DUNGEON_SHIP, dAcODungeonShip_c, fProfile::OBJ_DUNGEON
|
||||
|
||||
dCcD_SrcCps dAcODungeonShip_c::sCcSrc = {
|
||||
{
|
||||
|
||||
{0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{0, 0x1003E, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 0, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
{0xE8},
|
||||
},
|
||||
{1000.0f},
|
||||
|
||||
@@ -39,8 +39,8 @@ bool dAcOFlyingClawshotTarget_c::createHeap() {
|
||||
|
||||
// clang-format off
|
||||
const cCcD_SrcGObj dAcOFlyingClawshotTarget_c::sColSrc = {
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, 0},
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1080111, {0, 6, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x0}
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
@@ -21,14 +21,14 @@ STATE_DEFINE(dAcOgrassCoil_c, Wait);
|
||||
|
||||
dCcD_SrcCyl dAcOgrassCoil_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_SWORD | AT_TYPE_BOMB | AT_TYPE_0x40 | AT_TYPE_SLINGSHOT | AT_TYPE_WHIP | AT_TYPE_ARROW |
|
||||
AT_TYPE_CLAWSHOT | AT_TYPE_0x800000,
|
||||
0x200111,
|
||||
{0, 0xb, 0x407},
|
||||
0x0,
|
||||
0x0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x29}},
|
||||
/* mCylInf */
|
||||
{50.f, 130.f}
|
||||
|
||||
@@ -28,13 +28,13 @@ STATE_DEFINE(dAcOGrave_c, Wait);
|
||||
STATE_DEFINE(dAcOGrave_c, Move);
|
||||
|
||||
dCcD_SrcUnk dAcOGrave_c::sUnkSrc = {
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 6, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
{-65.0f, 0.0f, -25.0f, 65.0f, 156.0f, 25.0f},
|
||||
};
|
||||
|
||||
@@ -40,14 +40,14 @@ InteractionTargetDef dAcOivyRope_c::sInteraction = {
|
||||
|
||||
dCcD_SrcCps dAcOivyRope_c::sCpsSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_0x800000 | AT_TYPE_BEETLE | AT_TYPE_CLAWSHOT | AT_TYPE_ARROW | AT_TYPE_WHIP | AT_TYPE_SLINGSHOT |
|
||||
AT_TYPE_BOMB | AT_TYPE_SWORD,
|
||||
0x111,
|
||||
{0, 0x19, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x4029}},
|
||||
/* mCpsInf */
|
||||
{10.f}
|
||||
@@ -55,9 +55,9 @@ dCcD_SrcCps dAcOivyRope_c::sCpsSrc = {
|
||||
|
||||
dCcD_SrcSph dAcOivyRope_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x11, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x11, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~AT_TYPE_COMMON0, 0x111, {0, 0, 0x407}, 0, 0},
|
||||
{~AT_TYPE_COMMON0, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x29}},
|
||||
/* mSphInf */
|
||||
{100.f}
|
||||
@@ -65,9 +65,9 @@ dCcD_SrcSph dAcOivyRope_c::sSphSrc = {
|
||||
|
||||
dCcD_SrcCyl dAcOivyRope_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{AT_TYPE_BELLOWS, 0x311, {0, 0, 8}, 8, 0},
|
||||
{AT_TYPE_BELLOWS, 0x311, {0, 0, 8}, 8, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x109}},
|
||||
/* mCylInf */
|
||||
{10.f, 750.f}
|
||||
|
||||
@@ -21,9 +21,13 @@ STATE_DEFINE(dAcOpinwheel_c, Deceleration);
|
||||
|
||||
dCcD_SrcSph dAcOpinwheel_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 6, 0x8}, 8, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 6, 0x8},
|
||||
8,
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mSphInf */
|
||||
{50.f},
|
||||
|
||||
@@ -36,9 +36,13 @@ STATE_DEFINE(dAcOropeIgaiga_c, Water);
|
||||
|
||||
dCcD_SrcSph dAcOropeIgaiga_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x1F, {0, 0, 0}, 1, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {AT_TYPE_DAMAGE, 0x1F, {0, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_BUGNET), 0x311, {0, 0, 0x407}, 0, 0},
|
||||
{~(AT_TYPE_WIND | AT_TYPE_0x8000 | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_BUGNET),
|
||||
0x311,
|
||||
{0, 0, 0x407},
|
||||
0,
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xA9}},
|
||||
/* mSphInf */
|
||||
{20.f},
|
||||
|
||||
@@ -25,8 +25,8 @@ STATE_DEFINE(dAcOSeatSword_c, Get);
|
||||
|
||||
dCcD_SrcCyl dAcOSeatSword_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, 0x0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {0, 0x311, {0, 0, 0x407}, 0x0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mCylInf */
|
||||
{20.f, 100.f}
|
||||
|
||||
@@ -39,9 +39,9 @@ STATE_DEFINE(dAcOsoil_c, Ready);
|
||||
|
||||
dCcD_SrcCyl dAcOsoil_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{0, 0x111, {0, 0, 0x407}, 0, 0},
|
||||
{0, 0x111, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xC9}},
|
||||
/* mCylInf */
|
||||
{10.f, 15.f}
|
||||
|
||||
@@ -2,16 +2,20 @@
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "f/f_base.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_SPIKE, dAcOspike_c, fProfile::OBJ_SPIKE, 0x1D9, 0, 2);
|
||||
|
||||
// clang-format off
|
||||
dCcD_SrcUnk dAcOspike_c::sCcSrc = {
|
||||
{{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, },
|
||||
{0}},
|
||||
{-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}};
|
||||
// clang-format on
|
||||
{{AT_TYPE_DAMAGE, 0x2003F, {0, 0, 0}, 1, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0x0, 0x06, 0x407},
|
||||
0,
|
||||
CUT_DIR_NONE},
|
||||
{0}},
|
||||
{-1.0f, -246.0f, -472.0f, 73.0f, 255.0f, 482.0f}
|
||||
};
|
||||
|
||||
const mVec3_c dAcOspike_c::sVec1 = mVec3_c(-1.0f, -246.0f, -472.0f);
|
||||
const mVec3_c dAcOspike_c::sVec2 = mVec3_c(73.0f, 255.0f, 482.0f);
|
||||
@@ -68,19 +72,19 @@ int dAcOspike_c::create() {
|
||||
}
|
||||
|
||||
int dAcOspike_c::doDelete() {
|
||||
return 1;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOspike_c::actorExecute() {
|
||||
mStateMgr.executeState();
|
||||
mCollision.cM3dGUnk::Set(mPosition, mRotation.y);
|
||||
dCcS::GetInstance()->Set(&mCollision);
|
||||
return 1;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcOspike_c::draw() {
|
||||
drawModelType1(&mMdl);
|
||||
return 1;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcOspike_c::initializeState_Wait() {}
|
||||
|
||||
@@ -16,8 +16,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_TARZAN_POLE, dAcOTarzanPole_c, fProfile::OBJ_TARZAN_PO
|
||||
// clang-format off
|
||||
dCcD_SrcSph dAcOTarzanPole_c::sCcSrc = {
|
||||
/* mObjInf */ {
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {(AT_TYPE_WHIP | AT_TYPE_WIND), 0x800311, {0, 0, 0x407}, 0x0000, 0x0000},
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {(AT_TYPE_WHIP | AT_TYPE_WIND), 0x800311, {0, 0, 0x407}, 0x0000, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x00000000}},
|
||||
/* mSphInf */ {10.0f}
|
||||
};
|
||||
|
||||
@@ -18,12 +18,12 @@ f32 dAcOtoD3StoneFigure_c::sRadius = 85.0f;
|
||||
f32 dAcOtoD3StoneFigure_c::sHeight = 290.0f;
|
||||
|
||||
dCcD_SrcCyl dAcOtoD3StoneFigure_c::sCcSrc = {
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x1000111,
|
||||
{0, 0x06, 0x407},
|
||||
0,
|
||||
0},
|
||||
CUT_DIR_NONE},
|
||||
{0xE9}},
|
||||
{dAcOtoD3StoneFigure_c::sRadius, dAcOtoD3StoneFigure_c::sHeight}
|
||||
};
|
||||
|
||||
@@ -10,8 +10,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_TRIFORCE, dAcOtriforce_c, fProfile::OBJ_TRIFORCE, 0x15
|
||||
|
||||
// clang-format off
|
||||
dCcD_SrcSph dAcOtriforce_c::sCcSrc = {
|
||||
{{0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, 0},
|
||||
{{0, 0, 0, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, 0x0, 0x06, 0x407, 0, CUT_DIR_NONE},
|
||||
{0xE9}},
|
||||
{150.0f}};
|
||||
// clang-format on
|
||||
|
||||
@@ -52,8 +52,9 @@ STATE_DEFINE(dAcOtubo_c, Rebirth);
|
||||
|
||||
dCcD_SrcSph dAcOtubo_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, 0},
|
||||
{/* mObjAt */ {AT_TYPE_PHYSICS, 0x12, {0, 0, 0}, 2, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x801111, {0, 0xA, 0x40F}, 8, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x1E9}},
|
||||
/* mSphInf */
|
||||
{30.f},
|
||||
|
||||
@@ -34,8 +34,9 @@ STATE_DEFINE(dAcOTumbleWeed_c, Slope);
|
||||
|
||||
dCcD_SrcSph dAcOTumbleWeed_c::sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000), 0x111, {0, 8, 0x40F}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mSphInf */
|
||||
{60.f},
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "c/c_lib.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/npc/d_a_npc_talk_kensei.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/d_vec.h"
|
||||
@@ -13,9 +14,13 @@ SPECIAL_ACTOR_PROFILE(OBJ_WARP_HOLE, dAcOwarpHole_c, fProfile::OBJ_WARP_HOLE, 0x
|
||||
|
||||
dCcD_SrcCyl dAcOwarpHole_c::sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000), 0x111, {0, 0, 0x407}, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_BEETLE | AT_TYPE_WIND | AT_TYPE_0x8000),
|
||||
0x111,
|
||||
{0, 0, 0x407},
|
||||
0,
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x29}},
|
||||
/* mCylInf */
|
||||
{320.f, 300.f}
|
||||
|
||||
@@ -21,8 +21,8 @@ const f32 dTgReaction_c::sHeight = 100.0f;
|
||||
|
||||
// clang-format off
|
||||
dCcD_SrcCyl dTgReaction_c::sCcSrc = {
|
||||
{{0, 0, 0, 0, 0, 0, 0, 0, 0},
|
||||
{AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8},
|
||||
{{0, 0, 0, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{AT_TYPE_BELLOWS, 0x213, {0, 0, 0x8},0x8, CUT_DIR_NONE},
|
||||
{0xE8}},
|
||||
{dTgReaction_c::sRadius, dTgReaction_c::sHeight}
|
||||
};
|
||||
@@ -74,19 +74,19 @@ int dTgReaction_c::create() {
|
||||
switch (getReactType()) {
|
||||
case REACT_SLINGSHOT:
|
||||
mCollision.SetTgType(AT_TYPE_SLINGSHOT);
|
||||
mCollision.SetTgFlag_0xA(0);
|
||||
mCollision.SetTgCutDir(CUT_DIR_NONE);
|
||||
mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x);
|
||||
mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y);
|
||||
break;
|
||||
case REACT_GUST_BELLOWS:
|
||||
mCollision.SetTgType(AT_TYPE_BELLOWS);
|
||||
mCollision.SetTgFlag_0xA(8);
|
||||
mCollision.SetTgCutDir(CUT_DIR_LD);
|
||||
mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x);
|
||||
mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y);
|
||||
break;
|
||||
case REACT_UNDERWATER:
|
||||
mCollision.SetTgType(AT_TYPE_BUBBLE);
|
||||
mCollision.SetTgFlag_0xA(0);
|
||||
mCollision.SetTgCutDir(CUT_DIR_NONE);
|
||||
mCollision.SetR(sCcSrc.mCylInf.mRadius * mScale.x);
|
||||
mCollision.SetH(sCcSrc.mCylInf.mHeight * mScale.y);
|
||||
break;
|
||||
|
||||
@@ -260,8 +260,12 @@ static const GlitteringSporeRupeeChance sSporeRupeeChances[] = {
|
||||
};
|
||||
|
||||
static const dCcD_SrcCyl sSrcCyl = {
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x111, {0, 0x08, 0x407}, 0, 0},
|
||||
{{0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{~(AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND),
|
||||
0x111,
|
||||
{0, 0x08, 0x407},
|
||||
0,
|
||||
CUT_DIR_NONE},
|
||||
{0xE9}},
|
||||
{40.0f, 60.0f}
|
||||
};
|
||||
|
||||
@@ -26,9 +26,9 @@ STATE_DEFINE(dAcSalbageObj_c, Kill);
|
||||
|
||||
static dCcD_SrcCyl sCylSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~0, 0x111, {0, 0x02, 0x407}, 0, 0},
|
||||
{~0, 0x111, {0, 0x02, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mCylInf */
|
||||
{0.0f, 0.0f}
|
||||
|
||||
@@ -66,10 +66,10 @@ STATE_DEFINE(dAcArrow_c, Bound);
|
||||
// clang-format off
|
||||
|
||||
cCcD_SrcGObj dAcArrow_c::sCcSrcInf = {
|
||||
{AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, sDamageArrMaybe[0], 0, 0, 0, 0, 0},
|
||||
{AT_TYPE_ARROW, 0x8BB, {0x15,0, 0}, sDamageArrMaybe[0], 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{
|
||||
~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_ARROW | AT_TYPE_0x100 | AT_TYPE_WIND | AT_TYPE_SLINGSHOT),
|
||||
0x210, {0, 0, 0x407}, 0, 0
|
||||
0x210, {0, 0, 0x407}, 0, CUT_DIR_NONE
|
||||
},
|
||||
{0},
|
||||
};
|
||||
@@ -80,8 +80,8 @@ dCcD_SrcCps dAcArrow_c::sCc1 = {
|
||||
};
|
||||
|
||||
const dCcD_SrcSph dAcArrow_c::sCc2 = {
|
||||
{{0x0, 0x0, 0x0, 0, 0, 0, 0, 0, 0},
|
||||
{AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, 0},
|
||||
{{0x0, 0x0, 0x0, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{AT_TYPE_SWORD, 0x211, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0xC28}},
|
||||
{100.0f},
|
||||
};
|
||||
|
||||
@@ -85,9 +85,13 @@ STATE_DEFINE(dAcBomb_c, WindCarry);
|
||||
|
||||
dCcD_SrcSph sSphSrc = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {AT_TYPE_BOMB, 0x1803E, {0, 0, 0}, sHIO.getSomething(), 0, 0, 0, 0, 0},
|
||||
{/* mObjAt */ {AT_TYPE_BOMB, 0x1803E, {0, 0, 0}, sHIO.getSomething(), 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_0x10), 0x800111, {0, 0x0A, 0x40F}, 0, 0},
|
||||
{~(AT_TYPE_BUGNET | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_0x10),
|
||||
0x800111,
|
||||
{0, 0x0A, 0x40F},
|
||||
0,
|
||||
CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}},
|
||||
/* mSphInf */
|
||||
{sHIO.getBombScale()}
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
|
||||
dBgS_BeetleLinChk dAcBoomerang_c::sLinChk;
|
||||
dCcD_SrcSph dAcBoomerang_c::sSphSrc = {
|
||||
{{AT_TYPE_BEETLE, BoomerangAtFlags, {4, 0, 0}, 0, 1, 0, 0, 0},
|
||||
{~AT_TYPE_COMMON0, 0x291, {0, 0, 0x407}, 0, 0},
|
||||
{{AT_TYPE_BEETLE, BoomerangAtFlags, {4, 0, 0}, 0, 1, 0, CUT_DIR_NONE, 0},
|
||||
{~AT_TYPE_COMMON0, 0x291, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0x28}},
|
||||
{15.f}
|
||||
};
|
||||
|
||||
@@ -32,8 +32,8 @@ SPECIAL_ACTOR_PROFILE(OBJ_FAIRY, dAcOFairy_c, fProfile::OBJ_FAIRY, 0x22D, 0, 0x2
|
||||
|
||||
static dCcD_SrcSph sSphSrc1 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_WIND, 0x200311, {0, 0, 0x40F}, 0, 0},
|
||||
{/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {AT_TYPE_BUGNET | AT_TYPE_BELLOWS | AT_TYPE_WIND, 0x200311, {0, 0, 0x40F}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0}},
|
||||
/* mSphInf */
|
||||
{30.f},
|
||||
@@ -41,8 +41,8 @@ static dCcD_SrcSph sSphSrc1 = {
|
||||
|
||||
static dCcD_SrcSph sSphSrc2 = {
|
||||
/* mObjInf */
|
||||
{/* mObjAt */ {0, 0x0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {0, 0x0, {0, 0, 0x40F}, 0, 0},
|
||||
{/* mObjAt */ {0, 0x0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {0, 0x0, {0, 0, 0x40F}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x29}},
|
||||
/* mSphInf */
|
||||
{10.f},
|
||||
|
||||
@@ -92,8 +92,8 @@ static char *const sOpenEventNames[] = {
|
||||
// clang-format off
|
||||
// TODO just copied from somewhere
|
||||
const cCcD_SrcGObj dAcTbox_c::sColSrc = {
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, 0},
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0xE9}
|
||||
};
|
||||
// clang-format on
|
||||
@@ -1079,8 +1079,8 @@ int dAcTbox_c::create() {
|
||||
if (mVariant == SMALL) {
|
||||
// clang-format off
|
||||
static const dCcD_SrcUnk s3 = {{
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0x407}, 0, 0},
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {7, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x0}},
|
||||
{0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f},
|
||||
};
|
||||
@@ -1090,8 +1090,8 @@ int dAcTbox_c::create() {
|
||||
} else {
|
||||
// clang-format off
|
||||
static const dCcD_SrcUnk s4 = {{
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, 0, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0x407}, 0, 0},
|
||||
/* mObjAt */ {0, 0, {0, 0, 0}, 0, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
/* mObjTg */ {~(AT_TYPE_BUGNET | AT_TYPE_BEETLE | AT_TYPE_GLITTERING_SPORES | AT_TYPE_0x8000 | AT_TYPE_WIND), 0x1010111, {6, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
/* mObjCo */ {0x0}},
|
||||
{0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f},
|
||||
};
|
||||
|
||||
@@ -486,12 +486,12 @@ bool cCcD_Obj::ChkTgBit25() const {
|
||||
return mTg.MskAtHitSPrm(0x2000000);
|
||||
}
|
||||
|
||||
s32 cCcD_Obj::GetTgSoundID() const {
|
||||
return mTg.mAtHitSrc.field_0x10;
|
||||
s32 cCcD_Obj::GetTgAtCutDir() const {
|
||||
return mTg.mAtHitSrc.mCutDir;
|
||||
}
|
||||
|
||||
s16 cCcD_Obj::GetTg_0x6A() const {
|
||||
return mTg.mAtHitSrc.field_0x12;
|
||||
s16 cCcD_Obj::GetTgAtCutAng() const {
|
||||
return mTg.mAtHitSrc.mCutAng;
|
||||
}
|
||||
|
||||
bool cCcD_Obj::ChkTgBit8() const {
|
||||
|
||||
@@ -874,9 +874,9 @@ bool dTgMassObjInstance::checkForHit(
|
||||
}
|
||||
hitPosition = link->mPosition;
|
||||
distance = mGroundHeight.distance(hitPosition);
|
||||
if ((s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_DOWN ||
|
||||
(s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_UP ||
|
||||
(s32)link->getSpecificAttackDirection() == dAcPy_c::ATTACK_DIRECTION_STAB) {
|
||||
if ((s32)link->getSpecificAttackDirection() == CUT_DIR_U ||
|
||||
(s32)link->getSpecificAttackDirection() == CUT_DIR_D ||
|
||||
(s32)link->getSpecificAttackDirection() == CUT_DIR_STAB) {
|
||||
if (distance < fVar20) {
|
||||
isNotCut = 0;
|
||||
} else {
|
||||
@@ -893,8 +893,8 @@ bool dTgMassObjInstance::checkForHit(
|
||||
hitPosition = dAcPy_c::GetLink()->getSwordPos();
|
||||
|
||||
distance = mGroundHeight.distance(hitPosition);
|
||||
if ((s32)link->getSpecificAttackDirection() != dAcPy_c::ATTACK_DIRECTION_DOWNRIGHT &&
|
||||
(s32)link->getSpecificAttackDirection() != dAcPy_c::ATTACK_DIRECTION_DOWNLEFT) {
|
||||
if ((s32)link->getSpecificAttackDirection() != CUT_DIR_LU &&
|
||||
(s32)link->getSpecificAttackDirection() != CUT_DIR_RU) {
|
||||
return true;
|
||||
}
|
||||
if (distance >= fVar21) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "toBeSorted/d_enemy_sword_mdl.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/cc/d_cc_s.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "m/m3d/m_shadow.h"
|
||||
@@ -11,8 +12,8 @@
|
||||
|
||||
dCcD_SrcCps sCcSrc = {
|
||||
{
|
||||
{AT_TYPE_DAMAGE, 0x8D, {1, 0, 0}, 1, 0, 0, 0, 0, 0},
|
||||
{0, 0, {0, 0, 0x407}, 0, 0},
|
||||
{AT_TYPE_DAMAGE, 0x8D, {1, 0, 0}, 1, 0, 0, 0, CUT_DIR_NONE, 0},
|
||||
{0, 0, {0, 0, 0x407}, 0, CUT_DIR_NONE},
|
||||
{0},
|
||||
},
|
||||
{30.0f},
|
||||
|
||||
Reference in New Issue
Block a user