CC Cut Direction Related Changes

This commit is contained in:
elijah-thomas774
2026-09-26 13:47:43 -04:00
parent f2fae8ecf5
commit 7bab8b97b8
41 changed files with 268 additions and 261 deletions
+2 -2
View File
@@ -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
View File
@@ -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) {
-13
View File
@@ -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,
+93 -111
View File
@@ -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
View File
@@ -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;
}
+2 -2
View File
@@ -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},
};
+6 -6
View File
@@ -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 */
+3 -2
View File
@@ -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},
+5 -6
View File
@@ -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) {
+4 -4
View File
@@ -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}
+2 -2
View File
@@ -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}
+2 -2
View File
@@ -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}
+2 -3
View File
@@ -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}
+2 -3
View File
@@ -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
+2 -2
View File
@@ -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}
+2 -2
View File
@@ -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},
};
+6 -6
View File
@@ -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}
+6 -2
View File
@@ -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},
+6 -2
View File
@@ -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},
+2 -2
View File
@@ -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}
+2 -2
View File
@@ -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}
+13 -9
View File
@@ -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() {}
+2 -2
View File
@@ -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}
};
+2 -2
View File
@@ -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
+3 -2
View File
@@ -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},
+3 -2
View File
@@ -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},
+7 -2
View File
@@ -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}
+5 -5
View File
@@ -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;
+6 -2
View File
@@ -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}
};
+2 -2
View File
@@ -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}
+4 -4
View File
@@ -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},
};
+6 -2
View File
@@ -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()}
+2 -2
View File
@@ -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}
};
+4 -4
View File
@@ -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},
+6 -6
View File
@@ -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},
};
+4 -4
View File
@@ -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 {
+5 -5
View File
@@ -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) {
+3 -2
View File
@@ -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},