Merge commit '46da46b152472c668875d67c336f59ded62d3ecc' into compile

This commit is contained in:
kipcode66
2026-01-23 17:04:18 -05:00
495 changed files with 24331 additions and 21201 deletions
+2 -1
View File
@@ -1,8 +1,9 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
@@ -5,9 +5,10 @@
#include "JSystem/JSystem.h" // IWYU pragma: keep
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
void J3DModelData::clear() {
mpRawData = 0;
+6 -2
View File
@@ -95,7 +95,9 @@ JKRHeap::JKRFreeCallback JKRHeap::sFreeCallback;
bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) {
void* arenaLo = OSGetArenaLo();
void* arenaHi = OSGetArenaHi();
OS_REPORT("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi);
#if !PLATFORM_GCN
OSReport("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi);
#endif
if (arenaLo == arenaHi)
return false;
@@ -123,7 +125,9 @@ bool JKRHeap::initArena(char** memory, u32* size, int maxHeaps) {
bool JKRHeap::initArena2(char** memory, u32* size, int maxHeaps) {
void* arenaLo = OSGetMEM2ArenaLo();
void* arenaHi = OSGetMEM2ArenaHi();
OS_REPORT("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi);
#if !PLATFORM_GCN
OSReport("original arenaLo = %p arenaHi = %p\n", arenaLo, arenaHi);
#endif
if (arenaLo == arenaHi) {
return false;
}
+59 -5
View File
@@ -9,6 +9,8 @@
JSUList<JKRThread> JKRThread::sThreadList(0);
void* JKRIdleThread::sThread;
JKRThreadSwitch* JKRThreadSwitch::sManager;
u32 JKRThreadSwitch::sTotalCount;
@@ -99,6 +101,12 @@ JKRThread* JKRThread::searchThread(OSThread* thread) {
return NULL;
}
static void dummy1(JKRThread* thread, JKRThread::TLoad* load) {
load->getId();
load->isValid();
thread->getLoadInfo();
}
JKRThreadSwitch::JKRThreadSwitch(JKRHeap* param_0) {
mHeap = param_0;
OSSetSwitchThreadCallback(JKRThreadSwitch::callback);
@@ -123,6 +131,11 @@ JKRThreadSwitch* JKRThreadSwitch::createManager(JKRHeap* heap) {
return sManager;
}
static void dummy2(JKRThread::TLoad* load) {
load->setValid(false);
load->setId(0);
}
JKRThread* JKRThreadSwitch::enter(JKRThread* thread, int thread_id) {
if (!thread) {
return NULL;
@@ -210,6 +223,10 @@ void JKRThreadSwitch::callback(OSThread* current, OSThread* next) {
}
}
void dummy3(JKRThreadSwitch* threadSw, JKRThreadName_* name) {
threadSw->draw(name);
}
void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list, JUTConsole* console) {
const char* print_0 = " total: switch:%3d time:%d(%df)\n";
const char* print_1 = " -------------------------------------\n";
@@ -263,15 +280,52 @@ void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list, JUTConsole* console
}
}
void* JKRThread::run() {
return NULL;
static void dummy4(JKRTask* thread, JSULink<JKRTask>* link) {
thread->getStack();
delete link;
}
void JKRThreadSwitch::draw(JKRThreadName_* thread_name_list) {
draw(thread_name_list, NULL);
JKRTask::~JKRTask() {
sTaskList.remove(&mTaskLink);
}
JKRThreadSwitch::~JKRThreadSwitch() {}
void* JKRTask::run() {
struct TaskMessage {
void (*field_0x0)(int);
int field_0x4;
void* field_0x8;
};
OSInitFastCast();
while (true) {
TaskMessage* msg = (TaskMessage*)waitMessageBlock();
if (msg->field_0x0) {
msg->field_0x0(msg->field_0x4);
check();
if (field_0x94) {
OSSendMessage(field_0x94, msg->field_0x8, OS_MESSAGE_NOBLOCK);
}
}
msg->field_0x0 = NULL;
}
}
int JKRTask::check() {
int result = 0;
u8* ptr = (u8*)JKRThread::getStack();
JUT_ASSERT(1033, *((u32*)ptr) == 0xDEADBABE);
ptr += 4;
result += 4;
while (*ptr++ == 0xDE) { result++; }
return result;
}
#if !PLATFORM_GCN
static void dummy(JKRIdleThread* thread) {
thread->run();
delete thread;
thread->destroy();
}
#endif
#pragma push
#pragma force_active on
+16 -16
View File
@@ -9,6 +9,15 @@
#include <cstdarg>
#endif
inline void enter_(int param_0, int param_1, int param_2, const char* fmt, va_list args) {
char buf[0x100];
int ret = vsnprintf(buf, 0x100, fmt, args);
if (ret < 0) {
return;
}
JUTDbPrint::getManager()->enter(param_0, param_1, param_2, buf, ret < 0x100 ? ret : 0xFF);
}
JUTDbPrint::JUTDbPrint(JUTFont* pFont, JKRHeap* pHeap) {
mFont = pFont;
mFirst = NULL;
@@ -53,6 +62,11 @@ void JUTDbPrint::enter(int param_0, int param_1, int param_2, const char* param_
}
}
static void dummy() {
va_list args;
enter_(0, 0, 0, 0, args);
}
void JUTDbPrint::flush() {
this->flush(0, 0, JUTVideo::getManager()->getFbWidth(), JUTVideo::getManager()->getEfbHeight());
}
@@ -92,27 +106,13 @@ void JUTDbPrint::drawString(int posX, int posY, int len, const u8* str) {
void JUTReport(int param_0, int param_1, char const* fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[0x100];
int ret = vsnprintf(buf, 0x100, fmt, args);
enter_(param_0, param_1, 1, fmt, args);
va_end(args);
if (ret < 0) {
return;
}
JUTDbPrint::sDebugPrint->enter(param_0, param_1, 1, buf, ret < 0x100 ? ret : 0xFF);
}
void JUTReport(int param_0, int param_1, int param_2, char const* fmt, ...) {
va_list args;
va_start(args, fmt);
char buf[0x100];
int ret = vsnprintf(buf, 0x100, fmt, args);
enter_(param_0, param_1, param_2, fmt, args);
va_end(args);
if (ret < 0) {
return;
}
JUTDbPrint::sDebugPrint->enter(param_0, param_1, param_2, buf, ret < 0x100 ? ret : 0xFF);
}
+30 -35
View File
@@ -10,8 +10,21 @@
#include <dolphin/dolphin.h>
#include <stdint.h>
struct CallbackObject {
/* 0x00 */ JUTExceptionUserCallback callback;
/* 0x04 */ u16 error;
/* 0x08 */ OSContext* context;
/* 0x0C */ int param_3;
/* 0x10 */ int param_4;
};
OSMessageQueue JUTException::sMessageQueue = {0};
STATIC_ASSERT(sizeof(CallbackObject) == 0x14);
static CallbackObject exCallbackObject;
JSUList<JUTException::JUTExMapFile> JUTException::sMapFileList(false);
static OSTime c3bcnt[4] = {0, 0, 0, 0};
const char* JUTException::sCpuExpName[17] = {
@@ -38,10 +51,16 @@ JUTException* JUTException::sErrorManager;
JUTExceptionUserCallback JUTException::sPreUserCallback;
JUTExceptionUserCallback JUTException::sPostUserCallback;
JUTExceptionUserCallback JUTException::sPostUserCallback;
#if PLATFORM_GCN
const int stack_size = 0x1C00;
#else
const int stack_size = 0x4000;
#endif
JUTException::JUTException(JUTDirectPrint* directPrint)
: JKRThread(0x1C00, 0x10, 0), mDirectPrint(directPrint) {
: JKRThread(stack_size, 0x10, 0), mDirectPrint(directPrint) {
OSSetErrorHandler(__OS_EXCEPTION_DSI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_ISI, (OSErrorHandler)errorHandler);
OSSetErrorHandler(__OS_EXCEPTION_PROGRAM, (OSErrorHandler)errorHandler);
@@ -74,16 +93,6 @@ JUTException* JUTException::create(JUTDirectPrint* directPrint) {
OSMessage JUTException::sMessageBuffer[1] = {0};
struct CallbackObject {
/* 0x00 */ JUTExceptionUserCallback callback;
/* 0x04 */ u16 error;
/* 0x06 */ u16 pad_0x06;
/* 0x08 */ OSContext* context;
/* 0x0C */ int param_3;
/* 0x10 */ int param_4;
/* 0x14 */
};
void* JUTException::run() {
u32 msr = PPCMfmsr();
msr &= ~0x0900;
@@ -118,9 +127,6 @@ void* JUTException::run() {
}
}
STATIC_ASSERT(sizeof(CallbackObject) == 0x14);
static CallbackObject exCallbackObject;
void* JUTException::sConsoleBuffer;
u32 JUTException::sConsoleBufferSize;
@@ -154,8 +160,6 @@ void JUTException::errorHandler(OSError error, OSContext* context, u32 param_3,
OSYieldThread();
}
JSUList<JUTException::JUTExMapFile> JUTException::sMapFileList(false);
void JUTException::panic_f_va(char const* file, int line, char const* format, va_list args) {
char buffer[256];
vsnprintf(buffer, sizeof(buffer) - 1, format, args);
@@ -525,12 +529,8 @@ bool JUTException::isEnablePad() const {
bool JUTException::readPad(u32* out_trigger, u32* out_button) {
bool result = false;
OSTime start_time = OSGetTime();
OSTime ms;
do {
OSTime end_time = OSGetTime();
OSTime ticks = end_time - start_time;
ms = ticks / (OS_TIMER_CLOCK / 1000);
} while (ms < 0x32);
} while (OSTicksToMilliseconds(OSGetTime() - start_time) < 0x32);
if (mGamePad == (JUTGamePad*)0xffffffff) {
JUTGamePad gamePad0(JUTGamePad::EPort1);
@@ -750,24 +750,19 @@ void JUTException::printContext(OSError error, OSContext* context, u32 dsisr, u3
}
void JUTException::waitTime(s32 timeout_ms) {
if (timeout_ms) {
OSTime start_time = OSGetTime();
OSTime ms;
do {
OSTime end_time = OSGetTime();
OSTime ticks = end_time - start_time;
ms = ticks / (OS_TIMER_CLOCK / 1000);
} while (ms < timeout_ms);
if (!timeout_ms) {
return;
}
OSTime start_time = OSGetTime();
do {
} while (OSTicksToMilliseconds(OSGetTime() - start_time) < timeout_ms);
}
void JUTException::createFB() {
_GXRenderModeObj* renderMode = &GXNtsc480Int;
void* end = (void*)OSGetArenaHi();
u16 width = ALIGN_NEXT(renderMode->fbWidth, 16);
u16 height = renderMode->xfbHeight;
u32 pixel_count = width * height;
u32 size = pixel_count * 2;
u32 size = (u16(ALIGN_NEXT(u16(renderMode->fbWidth), 16)) * renderMode->xfbHeight) * 2;
void* begin = (void*)ALIGN_PREV((uintptr_t)end - size, 32);
void* object = (void*)ALIGN_PREV((s32)begin - sizeof(JUTExternalFB), 32);
@@ -807,7 +802,7 @@ void JUTException::appendMapFile(char const* path) {
}
for (JSUListIterator<JUTExMapFile> iterator = sMapFileList.getFirst(); iterator != sMapFileList.getEnd(); iterator++) {
if (strcmp(path, iterator->mPath) == 0) {
if (strcmp(path, iterator.getObject()->mPath) == 0) {
return;
}
}
+25 -13
View File
@@ -50,6 +50,8 @@ void JUTGamePad::initList() {
u32 JUTGamePad::sSuppressPadReset;
u8 data_8074CFA4_debug;
s32 JUTGamePad::sAnalogMode;
BOOL JUTGamePad::init() {
@@ -80,7 +82,7 @@ u32 JUTGamePad::sRumbleSupported;
u32 JUTGamePad::read() {
sRumbleSupported = PADRead(mPadStatus);
switch (getClampMode()) {
switch (sClampMode) {
case EClampStick:
PADClamp(mPadStatus);
break;
@@ -89,17 +91,18 @@ u32 JUTGamePad::read() {
break;
}
u32 reset_mask = 0;
u32 bittest;
u32 reset_mask = 0;
for (int i = 0; i < 4; i++) {
bittest = PAD_CHAN0_BIT >> i;
if (mPadStatus[i].err == 0) {
PADStatus* pad_status = &mPadStatus[i];
u32 stick_status;
stick_status = mPadMStick[i].update(mPadStatus[i].stickX, mPadStatus[i].stickY, sStickMode, EMainStick, mPadButton[i].mButton) << 0x18;
stick_status |= (mPadSStick[i].update(mPadStatus[i].substickX, mPadStatus[i].substickY, sStickMode, ESubStick, mPadButton[i].mButton) << 0x10);
stick_status = mPadMStick[i].update(pad_status->stickX, pad_status->stickY, sStickMode, EMainStick, mPadButton[i].mButton) << 0x18;
stick_status |= (mPadSStick[i].update(pad_status->substickX, pad_status->substickY, sStickMode, ESubStick, mPadButton[i].mButton) << 0x10);
mPadButton[i].update(&mPadStatus[i], stick_status);
mPadButton[i].update(pad_status, stick_status);
} else if (mPadStatus[i].err == -1) {
mPadMStick[i].update(0, 0, sStickMode, EMainStick, 0);
mPadSStick[i].update(0, 0, sStickMode, ESubStick, 0);
@@ -109,6 +112,9 @@ u32 JUTGamePad::read() {
reset_mask |= bittest;
}
} else {
if (data_8074CFA4_debug) {
OS_REPORT("game pad read error (%d)\n", mPadStatus[i].err);
}
mPadButton[i].mTrigger = 0;
mPadButton[i].mRelease = 0;
mPadButton[i].mRepeat = 0;
@@ -135,9 +141,11 @@ u32 JUTGamePad::read() {
}
if (pad->getPadRecord() != NULL && pad->getPadRecord()->isActive()) {
int port = pad->mPortNum;
if (port >= 0 && mPadStatus[port].err == 0) {
pad->getPadRecord()->write(&mPadStatus[port]);
if (pad->mPortNum >= 0) {
int port = pad->mPortNum;
if (mPadStatus[port].err == 0) {
pad->getPadRecord()->write(&mPadStatus[port]);
}
}
}
}
@@ -388,17 +396,21 @@ u32 JUTGamePad::CStick::getButton(u32 buttons) {
if (-sReleasePoint < mPosX && mPosX < sReleasePoint) {
button = button & ~0x3;
} else if (mPosX <= -sPressPoint) {
button = (button & ~0x2) | 1;
button = (button & ~0x2);
button |= 1;
} else if (mPosX >= sPressPoint) {
button = (button & ~0x1) | 2;
button = (button & ~0x1);
button |= 2;
}
if (-sReleasePoint < mPosY && mPosY < sReleasePoint) {
button = button & ~0xC;
} else if (mPosY <= -sPressPoint) {
button = (button & ~0x8) | 4;
button = (button & ~0x8);
button |= 4;
} else if (mPosY >= sPressPoint) {
button = (button & ~0x4) | 8;
button = (button & ~0x4);
button |= 8;
}
return button;
@@ -463,7 +475,7 @@ void JUTGamePad::CRumble::update(s16 port) {
stopMotorHard(port);
mLength = 0;
} else if (mFrameCount == 0) {
if (mStatus[port] == 0) {
if (mStatus[port] == false) {
startMotor(port);
}
return;
+4
View File
@@ -56,9 +56,11 @@ JUTVideo::~JUTVideo() {
}
void JUTVideo::preRetraceProc(u32 retrace_count) {
#if PLATFORM_GCN
if (!sManager) {
return;
}
#endif
if (sManager->mPreCallback) {
(*sManager->mPreCallback)(retrace_count);
@@ -166,9 +168,11 @@ void JUTVideo::drawDoneCallback() {
}
void JUTVideo::postRetraceProc(u32 retrace_count) {
#if PLATFORM_GCN
if (!sManager) {
return;
}
#endif
if (sManager->mPostCallback != NULL) {
sManager->mPostCallback(retrace_count);
@@ -73,17 +73,31 @@ class numeric_limits<float> {
public:
inline static float min();
inline static float max() { return FLT_MAX; }
inline static float signaling_NaN() { return *(float*)__float_nan; }
inline static float signaling_NaN() {
#if __REVOLUTION_SDK__
static const unsigned long x = 0x7fbfffffUL;
return *reinterpret_cast<const float*>(&x);
#else
return *(float*)__float_nan;
#endif
}
};
#if __REVOLUTION_SDK__
template <>
class numeric_limits<double> {
public:
static const unsigned long long x = 0x7ff0000000000001ULL;
inline static double min();
inline static double max();
inline static double signaling_NaN() { return *reinterpret_cast<const double*>(&x); }
inline static double signaling_NaN() {
static const unsigned long long x = 0x7ff7ffffffffffffULL;
return *reinterpret_cast<const double*>(&x);
}
//TODO: this function is almost certainly fake, but for some reason the constant shows up twice in debug .rodata
inline static double signaling_NaN_2() {
static const unsigned long long x = 0x7ff7ffffffffffffULL;
return *reinterpret_cast<const double*>(&x);
}
};
#endif
+4 -4
View File
@@ -143,7 +143,7 @@ void Z2SoundObjMgr::searchEnemy() {
Z2Calc::CURVE_POSITIVE);
f32 veryFarDist = 5000.0f;
for (JSULink<Z2CreatureEnemy>* i = getFirst(); i != NULL; i = i->getNext()) {
for (JSULink<Z2CreatureEnemy>* i = field_0x0.getFirst(); i != NULL; i = i->getNext()) {
Z2CreatureEnemy* enemy = i->getObject();
if (enemy == NULL) {
JUT_WARN_DEVICE(100, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n");
@@ -349,7 +349,7 @@ u8 Z2SoundObjMgr::getEnemyID(const char* enemyName, JSULink<Z2CreatureEnemy>* en
if (enemyName != NULL) {
for (u8 i = 0; i < ARRAY_SIZEU(mEnemyInfo); i++) {
if (strcmp(enemyName, mEnemyInfo[(u32)i].mName) == 0) {
append(enemyLink);
field_0x0.append(enemyLink);
return i;
}
}
@@ -379,7 +379,7 @@ void Z2SoundObjMgr::deleteEnemyAll() {
JSULink<Z2CreatureEnemy>* i;
// not moving the pointer forward looks like a bug, but deleteObject() actually unlinks the enemy from its owning list
while (i = getFirst(), i != NULL) {
while (i = field_0x0.getFirst(), i != NULL) {
Z2CreatureEnemy* enemy = i->getObject();
if (enemy == NULL) {
JUT_WARN_DEVICE(367, 1, "%s", "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n");
@@ -399,7 +399,7 @@ bool Z2SoundObjMgr::removeEnemy(JSULink<Z2CreatureEnemy>* enemyLink) {
field_0x18--;
}
bool result = remove(enemyLink);
bool result = field_0x0.remove(enemyLink);
return result;
}
+1 -1
View File
@@ -289,7 +289,7 @@ static int daDr_IsDelete(daDr_c* i_this) {
}
int daDr_c::_delete() {
fpc_ProcID id = fopAcM_GetID(this);
fopAcM_RegisterDeleteID(this, "DR");
if (heap != NULL) {
mpModelMorf->stopZelAnime();
+4132 -3411
View File
File diff suppressed because it is too large Load Diff
+1228 -1994
View File
File diff suppressed because it is too large Load Diff
+42 -34
View File
@@ -94,9 +94,12 @@ bool daAlink_c::checkBoomerangChargeEnd() {
}
BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
if (checkNoResetFlg0(FLG0_UNK_20) && !checkEventRun() && !checkWolf() &&
checkModeFlg(0x10000000) &&
(checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime())) {
if (checkNoResetFlg0(FLG0_UNK_20)
&& !checkEventRun()
&& !checkWolf()
&& checkModeFlg(0x10000000)
&& (checkHorseNoUpperAnime() || checkHorseTurnAnime() || checkBoomerangThrowAnime()))
{
deleteEquipItem(FALSE, FALSE);
seStartOnlyReverb(JA_SE_LK_BOOM_CATCH);
offNoResetFlg0(FLG0_UNK_20);
@@ -110,13 +113,12 @@ BOOL daAlink_c::checkBoomerangCarry(fopAc_ac_c* i_grabActor) {
return 0;
}
void daAlink_c::initBoomerangUpperAnimeSpeed(int param_0) {
void daAlink_c::initBoomerangUpperAnimeSpeed(BOOL param_0) {
if (!checkBoomerangThrowAnime()) {
if (param_0 != 0) {
f32 tmp = 0.0f;
mUpperFrameCtrl[2].setRate(tmp);
mUpperFrameCtrl[2].setFrame(tmp);
getNowAnmPackUpper(UPPER_2)->setFrame(tmp);
if (param_0) {
mUpperFrameCtrl[2].setRate(0.0f);
mUpperFrameCtrl[2].setFrame(0.0f);
getNowAnmPackUpper(UPPER_2)->setFrame(0.0f);
} else {
mUpperFrameCtrl[2].setRate(mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed);
}
@@ -129,37 +131,36 @@ BOOL daAlink_c::checkBoomerangAnime() const {
BOOL daAlink_c::checkBoomerangThrowAnime() const {
return (mEquipItem == fpcNm_ITEM_BOOMERANG || checkNoResetFlg1(FLG1_UNK_2) || mEquipItem == 0x102) &&
checkUpperAnime(0x53);
checkUpperAnime(dRes_ID_ALANM_BCK_BOOMTHROW_e);
}
void daAlink_c::setBoomerangReadyQuake() {
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartQuake(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
onNoResetFlg3(FLG3_UNK_4);
mItemVar0.field_0x3018 = mpHIO->mItem.mBoomerang.m.mChargeTime;
}
void daAlink_c::setBoomerangReadyAnime() {
f32 var_f31;
if (checkAttentionLock()) {
var_f31 = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
f32 anm_speed;
if (!checkAttentionLock()) {
anm_speed = 0.0f;
} else {
var_f31 = 0.0f;
anm_speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
}
setUpperAnimeBaseSpeed(0x54, var_f31, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, anm_speed, 3.0f);
setBoomerangReadyQuake();
}
void daAlink_c::setThrowBoomerangAnime() {
setUpperAnimeParam(0x53, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMTHROW_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mThrowAnm);
cancelItemUseQuake(0);
}
void daAlink_c::setBoomerangCatchAnime() {
setUpperAnimeParam(0x52, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
setFacePriBck(0xE8);
setUpperAnimeParam(dRes_ID_ALANM_BCK_BOOMCATCH_e, UPPER_2, &mpHIO->mItem.mBoomerang.m.mCatchAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f97 = 254;
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
@@ -234,12 +235,20 @@ void daAlink_c::throwBoomerang() {
int daAlink_c::returnBoomerang(int param_0) {
dComIfGp_clearPlayerStatus0(0, 0x400000);
if (mEquipItem == fpcNm_ITEM_NONE && !checkMagneBootsOn() && mItemAcKeep.getActor() == NULL &&
!checkBoardRide() && !checkBoarRide() && !checkWolf() &&
(mProcID != PROC_HANG_READY || field_0x3198 != 3) && (!checkEventRun() || param_0 != 0) &&
(checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
checkDashDamageAnime() || checkBoomerangAnime()) &&
!checkModeFlg(0x1BD0810)) {
if (mEquipItem == fpcNm_ITEM_NONE
&& !checkMagneBootsOn()
&& mItemAcKeep.getActor() == NULL
#if !PLATFORM_SHIELD
&& !checkBoardRide()
&& !checkBoarRide()
#endif
&& !checkWolf()
&& (mProcID != PROC_HANG_READY || field_0x3198 != 3)
&& (!checkEventRun() || param_0 != 0)
&& (checkNoUpperAnime() || checkPlayerGuard() || checkHorseTurnAnime() ||
checkDashDamageAnime() || checkBoomerangAnime())
&& !checkModeFlg(0x1BD0810))
{
mItemAcKeep = mThrowBoomerangAcKeep;
mThrowBoomerangAcKeep.clearData();
@@ -247,8 +256,7 @@ int daAlink_c::returnBoomerang(int param_0) {
field_0x2f94 = 2;
onNoResetFlg0(FLG0_UNK_20);
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
return 1;
}
@@ -349,7 +357,7 @@ void daAlink_c::setBoomerangSight() {
daBoomerang_c* boomerang = (daBoomerang_c*)mItemAcKeep.getActor();
if (boomerang->getLockReserve() || (check_line && !boomerang->getLockCntMax())) {
setItemActionButtonStatus(0x10);
setItemActionButtonStatus(BUTTON_STATUS_LOCK);
itemActionTrigger();
}
}
@@ -376,7 +384,7 @@ int daAlink_c::procBoomerangSubject() {
}
if (checkBoomerangReadyAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -414,14 +422,14 @@ int daAlink_c::procBoomerangMove() {
}
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
@@ -432,7 +440,7 @@ int daAlink_c::procBoomerangMove() {
}
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
@@ -459,7 +467,7 @@ int daAlink_c::procBoomerangCatch() {
onModeFlg(4);
}
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
resetUpperAnime(UPPER_2, -1.0f);
checkNextAction(0);
} else {
+71 -83
View File
@@ -12,7 +12,7 @@ static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1);
int daAlink_c::bottleModelCallBack() {
if (mItemMode != 0) {
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(field_0x30c2));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mRightItemJntNo));
mDoMtx_stack_c::transM(-3.0f, -1.0f, 0.3f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(102.0f), cM_deg2s(-0.5f), cM_deg2s(-122.0f));
mDoMtx_copy(mDoMtx_stack_c::get(), mHeldItemModel->getAnmMtx(1));
@@ -22,6 +22,8 @@ int daAlink_c::bottleModelCallBack() {
}
static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
@@ -46,36 +48,36 @@ BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) {
void daAlink_c::setBottleModel(u16 i_itemNo) {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModelEnv(loadAramBmd(0x310, 0x5C00), 0x1020200);
field_0x072c = loadAramItemBtp(0x3AE, mHeldItemModel);
field_0x0724 = loadAramItemBrk(0x322, mHeldItemModel);
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOTTLE_e, 0x5C00), 0x1020200);
field_0x072c = loadAramItemBtp(dRes_ID_ALANM_BTP_AL_BOTTLE_e, mHeldItemModel);
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_BOTTLE_e, mHeldItemModel);
if (checkDrinkBottleItem(i_itemNo) || checkOilBottleItemNotGet(i_itemNo)) {
field_0x071c = loadAramItemBtk(0x328, mHeldItemModel);
field_0x0720 = loadAramItemBtk(0x327, mHeldItemModel);
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_YURE_e, mHeldItemModel);
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_D_NOMU_e, mHeldItemModel);
} else {
field_0x071c = loadAramItemBtk(0x32A, mHeldItemModel);
field_0x0720 = loadAramItemBtk(0x329, mHeldItemModel);
field_0x071c = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_NUKU_e, mHeldItemModel);
field_0x0720 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_DASU_e, mHeldItemModel);
}
field_0x0718 = loadAramItemBtk(0x32B, mHeldItemModel);
field_0x0718 = loadAramItemBtk(dRes_ID_ALANM_BTK_BOTTLE_YURE_e, mHeldItemModel);
if (i_itemNo == fpcNm_ITEM_FAIRY) {
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E8, 0xC00);
mpHookTipModel = initModel(loadAramBmd(0x31D, 0x1400), 0);
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_NV_e, 0xC00);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_NV_e, 0x1400), 0);
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(142, FALSE);
}
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
} else if (i_itemNo == fpcNm_ITEM_WORM) {
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(0x1E9, 0xC00);
mpHookTipModel = initModel(loadAramBmd(0x31E, 0x2400), 0);
J3DAnmTransform* bck = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_O_GD_WORM_e, 0xC00);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_WORM_e, 0x2400), 0);
if (!mHookTipBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(151, FALSE);
}
mHookTipBck.entry(mpHookTipModel->getModelData(), 0.0f);
} else if (i_itemNo == fpcNm_ITEM_BEE_CHILD) {
mpHookTipModel = initModel(loadAramBmd(0x31C, 0x1000), 0);
mpHookTipModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_O_GD_HK_e, 0x1000), 0);
}
mDoExt_setCurrentHeap(prev_heap);
@@ -139,14 +141,13 @@ void daAlink_c::setBottleModel(u16 i_itemNo) {
}
}
int daAlink_c::commonBottleDrink(int param_0) {
int daAlink_c::commonBottleDrink(BOOL param_0) {
simpleAnmPlay(field_0x0718);
simpleAnmPlay(field_0x071c);
daPy_frameCtrl_c* frameCtrl_p;
u16 current_anm;
if (param_0 || mUpperAnmHeap[2].getIdx() == 0x247) {
if (param_0 || mUpperAnmHeap[2].getIdx() == dRes_ID_ALANM_BCK_TAKEL_e) {
frameCtrl_p = &mUpperFrameCtrl[2];
current_anm = mUpperAnmHeap[2].getIdx();
} else {
@@ -222,18 +223,14 @@ int daAlink_c::commonBottleDrink(int param_0) {
if (dComIfGs_getLife() <= 2) {
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
} else if (dComIfGs_getLife() <= 4) {
mItemVar0.mBottleItemHealAmount =
(dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() ||
cM_rnd() < 0.5f)
{
mItemVar0.mBottleItemHealAmount = (dComIfGs_getMaxLifeGauge() / 2) - dComIfGs_getLife();
} else if (dComIfGs_getLife() == dComIfGs_getMaxLifeGauge() || cM_rnd() < 0.5f) {
mItemVar0.mBottleItemHealAmount = -4;
} else {
mItemVar0.mBottleItemHealAmount = 4;
}
} else if (mEquipItem == fpcNm_ITEM_CHUCHU_PURPLE) {
f32 rnd = cM_rndF(6.0f);
if (rnd < 1.0f) {
mItemVar0.mBottleItemHealAmount = dComIfGs_getMaxLifeGauge();
} else if (rnd < 2.0f) {
@@ -329,7 +326,6 @@ int daAlink_c::commonBottleDrink(int param_0) {
return 0;
}
fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
cXyz fairy_pos;
@@ -345,11 +341,8 @@ fopAc_ac_c* daAlink_c::makeFairy(cXyz* i_pos, u32 i_params) {
i_pos = &fairy_pos;
}
fopAc_ac_c* fairy_actor =
(fopAc_ac_c*)fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
&shape_angle, NULL, -1, NULL, NULL);
field_0x285c.setData(fairy_actor);
field_0x285c.setData(fopAcM_fastCreate(PROC_Obj_Yousei, i_params, i_pos, fopAcM_GetRoomNo(this),
&shape_angle, NULL, -1, NULL, NULL));
onResetFlg0(RFLG0_UNK_400);
if (checkEventRun() && field_0x285c.getActor() != NULL) {
@@ -365,7 +358,7 @@ int daAlink_c::procBottleDrinkInit(u16 i_itemNo) {
return 1;
}
} else {
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
return 0;
}
@@ -401,8 +394,8 @@ int daAlink_c::procBottleDrink() {
return 1;
}
int daAlink_c::procBottleOpenInit(u16 param_0) {
if (!dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
int daAlink_c::procBottleOpenInit(u16 i_itemNo) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
return 0;
}
@@ -414,7 +407,7 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
setSingleAnimeParam(ANM_BOTTLE_OPEN, &mpHIO->mItem.mBottle.m.mOpenBottleAnm);
keepItemData();
setBottleModel(param_0);
setBottleModel(i_itemNo);
dComIfGp_setPlayerStatus1(0, 0x4000);
mProcVar1.field_0x300a = 0;
field_0x32cc = -1;
@@ -435,21 +428,19 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
mProcVar3.field_0x300e = 0;
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
dCam_getBody()->StartEventCamera(0x12, fopAcM_GetID(this), "Type", 1, &field_0x3194, 0);
mProcVar2.field_0x300c = 0;
field_0x27c8.initialize(current.pos.y + field_0x598);
field_0x27c8.initialize(current.pos.y + mHeight);
if (param_0 == 0x67) {
setCylAtParam(0x200, dCcG_At_Spl_UNK_0, 0, 0, 0, 30.0f, 30.0f);
if (i_itemNo == fpcNm_ITEM_WATER_BOTTLE) {
setCylAtParam(AT_TYPE_LANTERN_SWING, dCcG_At_Spl_UNK_0, 0, dCcD_SE_NONE, 0, 30.0f, 30.0f);
}
mProcVar4.field_0x3010 = 0;
mProcVar4.field_0x3010 = 0;
return 1;
}
int daAlink_c::procBottleOpen() {
static Vec const bottleTop = {0.0f, 25.0f, 0.0f};
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
@@ -486,17 +477,17 @@ int daAlink_c::procBottleOpen() {
mHeldItemModel->getModelData()->entryTexMtxAnimator(field_0x071c);
if (mEquipItem == fpcNm_ITEM_FAIRY) {
cXyz spC;
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &spC);
cXyz fairyPos;
mDoMtx_multVec(mHeldItemModel->getBaseTRMtx(), &bottleTop, &fairyPos);
if (makeFairy(&spC, 0)) {
if (makeFairy(&fairyPos, 0)) {
onModeFlg(0x8000000);
mpHookTipModel = NULL;
resetFairyEffect();
}
}
} else if (frameCtrl_p->getFrame() >= 18.0f) {
field_0x2f93 = 5;
mRightHandIndex = 5;
}
} else {
if (checkAnmEnd(frameCtrl_p) && mProcVar0.field_0x3008 != 0) {
@@ -534,14 +525,12 @@ int daAlink_c::procBottleOpen() {
return 1;
}
int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
fopAc_ac_c* var_r31 = param_0;
if (var_r31 != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
int daAlink_c::procBottleSwingInit(fopAc_ac_c* i_catchActor, int param_1) {
if (i_catchActor != NULL && mEquipItem != fpcNm_ITEM_KANTERA) {
return procPreActionUnequipInit(PROC_BOTTLE_SWING, NULL);
}
if (var_r31 == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
if (i_catchActor == NULL && getReadyItem() != fpcNm_ITEM_EMPTY_BOTTLE) {
return checkWaitAction();
}
@@ -551,22 +540,24 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
field_0x2f98 = 4;
mProcVar4.field_0x3010 = param_1;
if (var_r31 != NULL) {
field_0x280c.setData(var_r31);
fopAc_ac_c* catchActor;
if (i_catchActor != NULL) {
catchActor = i_catchActor;
field_0x280c.setData(i_catchActor);
} else {
var_r31 = dComIfGp_att_getCatghTarget();
catchActor = dComIfGp_att_getCatghTarget();
}
BOOL temp_r3;
s16 temp_r30;
if (var_r31 != NULL) {
if (var_r31->attention_info.position.y > field_0x3834.y - 30.0f) {
s16 catchActorName;
if (catchActor != NULL) {
if (catchActor->attention_info.position.y > field_0x3834.y - 30.0f) {
temp_r3 = false;
} else {
temp_r3 = true;
}
temp_r30 = fopAcM_GetName(var_r31);
catchActorName = fopAcM_GetName(catchActor);
} else {
if (field_0x2fbc != 11 && field_0x2fbc != 6 && mWaterY > current.pos.y + 10.0f) {
temp_r3 = true;
@@ -574,16 +565,16 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
temp_r3 = false;
}
temp_r30 = PROC_ALINK;
catchActorName = PROC_ALINK;
}
if (temp_r30 == PROC_OBJ_OILTUBO || temp_r30 == PROC_TAG_SSDRINK ||
temp_r30 == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
if (catchActorName == PROC_OBJ_OILTUBO || catchActorName == PROC_TAG_SSDRINK ||
catchActorName == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
{
setSingleAnimeParam(ANM_BOTTLE_SCOOP, &mpHIO->mItem.mBottle.m.mScoopAnm);
if (mEquipItem == fpcNm_ITEM_KANTERA) {
onNoResetFlg2(FLG2_UNK_10000000);
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
JPABaseEmitter* emitter_p = dComIfGp_particle_getEmitter(field_0x31c4);
if (emitter_p != NULL) {
@@ -594,15 +585,15 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
field_0x3478 = mpHIO->mItem.mBottle.m.mScoopAnm.mCancelFrame;
field_0x347c = 14.0f;
if (var_r31 != NULL) {
shape_angle.y = cLib_targetAngleY(&current.pos, &var_r31->current.pos);
if (catchActor != NULL) {
shape_angle.y = cLib_targetAngleY(&current.pos, &catchActor->current.pos);
current.angle.y = shape_angle.y;
current.pos.x = var_r31->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
current.pos.z = var_r31->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
current.pos.x = catchActor->current.pos.x - cM_ssin(shape_angle.y) * 70.0f;
current.pos.z = catchActor->current.pos.z - cM_scos(shape_angle.y) * 70.0f;
}
if (temp_r30 == PROC_OBJ_OILTUBO) {
if (catchActorName == PROC_OBJ_OILTUBO) {
onModeFlg(0x2000);
}
} else if (temp_r3) {
@@ -622,7 +613,6 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* param_0, int param_1) {
return 1;
}
int daAlink_c::procBottleSwing() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
@@ -702,9 +692,8 @@ int daAlink_c::procBottleSwing() {
return 1;
}
int daAlink_c::procBottleGetInit(int param_0) {
BOOL proc_pickup = mProcID == PROC_PICK_UP;
int daAlink_c::procBottleGetInit(BOOL param_0) {
BOOL isPrevPickUp = mProcID == PROC_PICK_UP;
commonProcInit(PROC_BOTTLE_GET);
int var_r30;
@@ -712,19 +701,19 @@ int daAlink_c::procBottleGetInit(int param_0) {
setSingleAnime(ANM_BOTTLE_GET, mpHIO->mItem.mBottle.m.mGetAnm.mSpeed, 40.0f,
mpHIO->mItem.mBottle.m.mGetAnm.mEndFrame,
mpHIO->mItem.mBottle.m.mGetAnm.mInterpolation);
field_0x2f93 = 0xFE;
mRightHandIndex = 0xFE;
if (proc_pickup) {
if (isPrevPickUp) {
execItemGet(fpcNm_ITEM_KANTERA);
var_r30 = 0xF8;
var_r30 = fpcNm_ITEM_KANTERA2;
dComIfGp_setItemOilCount(-dComIfGs_getMaxOil());
} else {
dComIfGp_setItemOilCount(dComIfGs_getMaxOil());
if (param_0) {
var_r30 = 0x9C;
var_r30 = fpcNm_ITEM_CHUCHU_YELLOW2;
} else {
var_r30 = 0x6E;
var_r30 = fpcNm_ITEM_OIL2;
}
}
@@ -751,15 +740,14 @@ int daAlink_c::procBottleGetInit(int param_0) {
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
if (mEquipItem == fpcNm_ITEM_FAIRY_DROP || mEquipItem == fpcNm_ITEM_CHUCHU_RARE || mEquipItem == fpcNm_ITEM_WORM) {
setFaceBasicTexture(FTANM_UNK_48);
setFaceBasicBck(0x143);
setFaceBasicTexture(FTANM_I_BINGET);
setFaceBasicBck(dRes_ID_ALANM_BCK_FI_e);
} else if (mEquipItem == fpcNm_ITEM_UGLY_SOUP) {
setFaceBasicBck(0x146);
setFaceBasicBck(dRes_ID_ALANM_BCK_FJ_e);
}
// event flag 0x4A40: Ordon Day 1 completed
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(0x4A40)) {
dComIfGs_onEventBit(0x4C80); // event flag 0x4C80: Collected Bee Larva on Ordon Day 2
if (mEquipItem == fpcNm_ITEM_BEE_CHILD && dComIfGs_isEventBit(dSv_event_flag_c::F_0700)) {
dComIfGs_onEventBit(dSv_event_flag_c::F_0618);
}
return 1;
@@ -770,7 +758,7 @@ int daAlink_c::procBottleGet() {
simpleAnmPlay(field_0x0718);
if (frameCtrl->checkAnmEnd() && checkEndMessage(field_0x32cc)) {
if (checkAnmEnd(frameCtrl) && checkEndMessage(field_0x32cc)) {
resetFairyEffect();
if (mEquipItem != fpcNm_ITEM_KANTERA) {
deleteEquipItem(FALSE, FALSE);
@@ -778,12 +766,12 @@ int daAlink_c::procBottleGet() {
resetSpecialEvent();
} else if (frameCtrl->getFrame() >= 37.0f) {
field_0x2f93 = 0xFE;
mRightHandIndex = 0xFE;
} else if (frameCtrl->getFrame() >= 15.0f) {
mItemMode = 0;
} else if (frameCtrl->getFrame() >= 5.0f) {
mHeldItemModel->getModelData()->getMaterialNodePointer(0)->getShape()->show();
field_0x2f93 = 5;
mRightHandIndex = 5;
mItemMode = 1;
}
+71 -65
View File
@@ -8,7 +8,7 @@
#include "d/actor/d_a_arrow.h"
#include "d/actor/d_a_horse.h"
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, int i_forceCharge) const {
void daAlink_c::getArrowFlyData(f32* o_distance, f32* o_speed, BOOL i_forceCharge) const {
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
*o_distance = mpHIO->mItem.mBow.m.mSlingshotDistance;
*o_speed = mpHIO->mItem.mBow.m.mSlingshotSpeed;
@@ -53,43 +53,45 @@ BOOL daAlink_c::checkBowAndSlingItem(int i_itemNo) {
}
void daAlink_c::setSlingModel() {
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x1F9);
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_PWAIT_e);
JKRHeap* prev_heap = setItemHeap();
J3DModelData* model_data = loadAramBmd(0x319, 0x2C00);
mHeldItemModel = initModel(model_data, 0);
mItemBck.init(bck, 0, 2, 1.0f, 0, -1, false);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PACHI_e, 0x2C00), 0);
if (!mItemBck.init(bck, FALSE, J3DFrameCtrl::EMode_LOOP, 1.0f, 0, -1, false)) {
JUT_ASSERT(108, 0);
}
mDoExt_setCurrentHeap(prev_heap);
field_0x2f95 = 5;
field_0x2f94 = 103;
}
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* param_0, s16* param_1) {
cXyz* daAlink_c::checkBowCameraArrowPosP(s16* o_angleX, s16* o_angleY) {
if (!checkBowAnime() || mEquipItem == fpcNm_ITEM_PACHINKO) {
return NULL;
}
s16 var_28;
s16 angle_y;
if (checkHorseRide() && checkBoarSingleBattle() && dComIfGp_getHorseActor() != NULL) {
var_28 = dComIfGp_getHorseActor()->shape_angle.y;
angle_y = dComIfGp_getHorseActor()->shape_angle.y;
} else if (checkMagneBootsOn()) {
var_28 = field_0x3118;
angle_y = field_0x3118;
} else {
var_28 = shape_angle.y;
angle_y = shape_angle.y;
}
var_28 += mBodyAngle.y;
angle_y += mBodyAngle.y;
mDoMtx_stack_c::transS(field_0x3834);
concatMagneBootMtx();
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, var_28, 0);
mDoMtx_stack_c::ZXYrotM(mBodyAngle.x, angle_y, 0);
static Vec const localPos = {3.45f, 45.32f, -7.0f};
static const Vec localPos = {3.45f, 45.32f, -7.0f};
mDoMtx_stack_c::multVec(&localPos, &mHeldItemRootPos);
*param_0 = mBodyAngle.x;
*param_1 = var_28;
*o_angleX = mBodyAngle.x;
*o_angleY = angle_y;
return &mHeldItemRootPos;
}
@@ -111,8 +113,13 @@ void daAlink_c::makeArrow() {
field_0x301e = 0;
}
fopAc_ac_c* arrow_p = daArrow_c::makeArrow(this, field_0x301e);
mItemAcKeep.setData(arrow_p);
mItemAcKeep.setData(daArrow_c::makeArrow(this, field_0x301e));
if (mItemAcKeep.getActor() == NULL) {
// "Not enough memory to create item!!"
OS_REPORT("メモリが足りなくてアイテム発生できません!!\n");
JUT_ASSERT(221, 0);
}
}
mItemVar0.field_0x3018 = 0;
@@ -152,7 +159,7 @@ void daAlink_c::changeArrowType() {
return;
}
setItemActionButtonStatus(0x11);
setItemActionButtonStatus(BUTTON_STATUS_SWITCH);
if (arrowChangeTrigger()) {
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
@@ -179,14 +186,13 @@ void daAlink_c::changeArrowType() {
}
}
BOOL daAlink_c::cancelBowMoveRideNotAtn() {
return checkModeFlg(0x400) && checkAttentionLock() && mTargetedActor == NULL;
}
BOOL daAlink_c::cancelBowMove() {
if (mTargetedActor == NULL && !checkAttentionLock() && mFastShotTime == 0 &&
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
!checkBowReadyAnime() && (!checkBowShootAnime() || checkAnmEnd(&mUpperFrameCtrl[2])))
{
resetUpperAnime(UPPER_2, -1.0f);
return true;
@@ -208,7 +214,7 @@ void daAlink_c::setBowReadyAnime() {
}
}
setUpperAnimeBase(0xD);
setUpperAnimeBase(dRes_ID_ALANM_BCK_ASHOOTWAIT_e);
if (checkResetFlg0(RFLG0_UNK_80)) {
mItemMode = 0;
@@ -220,23 +226,23 @@ void daAlink_c::setBowReadyAnime() {
field_0x2f96 = 4;
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F1, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_PSHOOT_e, -1.0f);
} else {
changeItemBck(0x43, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_BASHOOT_e, -1.0f);
}
}
void daAlink_c::setBowReloadAnime() {
setUpperAnimeParam(9, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
setFacePriTexture(FTANM_UNK_8);
setFacePriBck(0xE5);
setUpperAnimeParam(dRes_ID_ALANM_BCK_ARELORD_e, UPPER_2, &mpHIO->mItem.mBow.m.mLoadAnm);
setFacePriTexture(FTANM_FINISHA);
setFacePriBck(dRes_ID_ALANM_BCK_FARELORD_e);
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F0, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
changeItemBck(dRes_ID_ALANM_BCK_PRELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
field_0x2f97 = 5;
seStartOnlyReverb(Z2SE_AL_PACHINKO_DRAW);
} else {
changeItemBck(0x41, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
changeItemBck(dRes_ID_ALANM_BCK_BARELORD_e, mpHIO->mItem.mBow.m.mLoadAnm.mStartFrame);
field_0x2f97 = 7;
seStartOnlyReverb(Z2SE_AL_DRAW_BOW);
}
@@ -249,7 +255,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
daPy_frameCtrl_c* frameCtrl_p = &mUpperFrameCtrl[2];
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
static Vec const slingLocalPos = {10.0f, 10.0f, 0.0f};
static const Vec slingLocalPos = {10.0f, 10.0f, 0.0f};
mDoMtx_multVec(getLeftItemMatrix(), &slingLocalPos, &mHeldItemRootPos);
}
@@ -273,29 +279,29 @@ BOOL daAlink_c::checkUpperItemActionBow() {
if (checkReadyItem()) {
if (mItemVar0.field_0x3018 != 0) {
setUpperAnimeParam(0xC, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
setFacePriBck(0xE8);
setUpperAnimeParam(dRes_ID_ALANM_BCK_ASHOOT_e, UPPER_2, &mpHIO->mItem.mBow.m.mShootAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f96 = 0;
u16 var_r29;
u16 bck_res_id;
if (mEquipItem == fpcNm_ITEM_PACHINKO) {
var_r29 = 0x1F1;
bck_res_id = dRes_ID_ALANM_BCK_PSHOOT_e;
if (dComIfGs_getPachinkoNum() != 0 &&
daArrow_c::makeSlingStone(this, &mHeldItemRootPos) != NULL)
{
dComIfGp_setItemPachinkoNumCount(-1);
}
} else if (field_0x301c != 0) {
var_r29 = 0x43;
bck_res_id = dRes_ID_ALANM_BCK_BASHOOT_e;
} else {
var_r29 = 0x44;
bck_res_id = dRes_ID_ALANM_BCK_BASHOOTTAME_e;
}
changeItemBck(var_r29, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
changeItemBck(bck_res_id, mpHIO->mItem.mBow.m.mShootAnm.mStartFrame);
mItemVar0.field_0x3018 = 0;
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
if (!itemButton()) {
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
seStartOnlyReverb(Z2SE_AL_PACHINKO_SHOT);
mItemVar0.field_0x3018 = 1;
resetFacePriAnime();
@@ -303,11 +309,11 @@ BOOL daAlink_c::checkUpperItemActionBow() {
} else if (!itemButton()) {
if (arrow_p != NULL) {
u32 sound;
int shock_strength;
int vibmode;
if (field_0x301c != 0) {
arrow_p->setShoot();
shock_strength = 1;
vibmode = VIBMODE_S_POWER1;
if (arrow_p->checkBombArrow()) {
sound = Z2SE_OBJ_ARROWBOMB_SHOT;
@@ -316,7 +322,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
} else {
arrow_p->setChargeShoot();
shock_strength = 2;
vibmode = VIBMODE_S_POWER2;
if (arrow_p->checkBombArrow()) {
sound = Z2SE_OBJ_ARROWBOMB_SHOTGAIN;
@@ -325,7 +331,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
}
dComIfGp_getVibration().StartShock(shock_strength, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(vibmode, 1, cXyz(0.0f, 1.0f, 0.0f));
seStartOnlyReverb(sound);
if (field_0x301e == 1) {
@@ -352,13 +358,13 @@ BOOL daAlink_c::checkUpperItemActionBow() {
}
} else if (checkBowReloadAnime()) {
if (checkAnmEnd(frameCtrl_p)) {
setUpperAnimeBaseSpeed(10, 0.0f, -1.0f);
setFacePriTexture(FTANM_UNK_9);
setFacePriBck(0xE6);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_ARELORDTAME_e, 0.0f, -1.0f);
setFacePriTexture(FTANM_ARELORD);
setFacePriBck(dRes_ID_ALANM_BCK_FARELORDTAME_e);
if (mEquipItem != fpcNm_ITEM_PACHINKO) {
changeItemBck(0x42, 0.0f);
dComIfGp_getVibration().StartQuake(1, 1, cXyz(0.0f, 1.0f, 0.0f));
changeItemBck(dRes_ID_ALANM_BCK_BARELORDTAME_e, 0.0f);
dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
onNoResetFlg3(FLG3_UNK_4);
}
}
@@ -423,7 +429,6 @@ BOOL daAlink_c::checkUpperItemActionBow() {
return cancelUpperItemReadyAnime(0);
}
void daAlink_c::checkUpperItemActionBowFly() {
if (checkBowAnime()) {
checkUpperItemActionBow();
@@ -439,7 +444,7 @@ int daAlink_c::checkNextActionBow() {
mFastShotTime--;
}
BOOL var_r31 = false;
BOOL is_hawk_arrow = false;
if (!checkBowAnime()) {
setBowReadyAnime();
setFastShotTimer();
@@ -452,7 +457,7 @@ int daAlink_c::checkNextActionBow() {
mItemVar0.field_0x3018 = 1;
if (mEquipItem == fpcNm_ITEM_HAWK_ARROW) {
var_r31 = true;
is_hawk_arrow = true;
mFastShotTime = 0;
}
@@ -471,7 +476,7 @@ int daAlink_c::checkNextActionBow() {
}
}
BOOL rt;
BOOL rt = FALSE;
if (!checkAttentionLock() && mFastShotTime == 0) {
if (checkModeFlg(0x400)) {
if (checkCanoeRide()) {
@@ -494,7 +499,7 @@ int daAlink_c::checkNextActionBow() {
}
}
if (rt && var_r31) {
if (rt && is_hawk_arrow) {
dComIfGp_setPlayerStatus0(0, 0x200000);
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
}
@@ -502,36 +507,37 @@ int daAlink_c::checkNextActionBow() {
return rt;
}
void daAlink_c::setBowModel() {
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x59);
JKRHeap* old_heap = setItemHeap();
J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(dRes_ID_ALANM_BCK_BVJMPCL_e);
JKRHeap* heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_BOW_e, 0x4C00), 0);
if (!mItemBck.init(bck, FALSE, 2, 1.0f, 0, -1, false)) {
JUT_ASSERT(894, 0);
}
mDoExt_setCurrentHeap(old_heap);
mDoExt_setCurrentHeap(heap);
field_0x33dc = mItemBck.getBckAnm()->getFrameMax() - 0.001f;
field_0x2f95 = 5;
field_0x2f94 = 0x67;
}
bool daAlink_c::checkBowGrabLeftHand() const {
return checkReinRide() && !checkBowAnime();
}
void daAlink_c::setBowHangAnime() {
if (checkBowItem(mEquipItem)) {
changeItemBck(0x58, 0.0f);
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCH_e, 0.0f);
}
}
void daAlink_c::setBowNormalAnime() {
if (checkBowItem(mEquipItem)) {
changeItemBck(0x59, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_BVJMPCL_e, -1.0f);
} else if (mEquipItem == fpcNm_ITEM_PACHINKO) {
changeItemBck(0x1F9, -1.0f);
changeItemBck(dRes_ID_ALANM_BCK_PWAIT_e, -1.0f);
}
}
@@ -563,7 +569,7 @@ int daAlink_c::procBowSubjectInit() {
}
int daAlink_c::procBowSubject() {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
if (!checkNextAction(0) && setBodyAngleToCamera()) {
setBowSight();
}
@@ -597,21 +603,21 @@ int daAlink_c::procBowMove() {
onEndResetFlg0(ERFLG0_UNK_8000000);
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
current.angle.y = shape_angle.y - 0x4000;
} else {
offModeFlg(1);
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
File diff suppressed because it is too large Load Diff
+35 -39
View File
@@ -43,7 +43,7 @@ fopAc_ac_c* daAlink_c::getCopyRodCameraActor() {
return NULL;
}
void daAlink_c::initCopyRodUpperAnimeSpeed(int param_0) {
void daAlink_c::initCopyRodUpperAnimeSpeed(BOOL param_0) {
if (!checkCopyRodThrowAnime()) {
if (param_0) {
mUpperFrameCtrl[2].setRate(0.0f);
@@ -60,11 +60,9 @@ BOOL daAlink_c::checkForestOldCentury() {
}
BOOL daAlink_c::checkCopyRodTopUse() {
// Event flag 0x2580: Dominion Rod power restored
return (dComIfGs_isEventBit(0x2580) &&
!(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0)) ||
dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
checkForestOldCentury();
return (dComIfGs_isEventBit(dSv_event_flag_c::F_0302) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e != 0))
|| dStage_stagInfo_GetSaveTbl(dComIfGp_getStage()->getStagInfo()) == dStage_SaveTbl_LV6
|| checkForestOldCentury();
}
BOOL daAlink_c::checkCopyRodAnime() const {
@@ -73,7 +71,7 @@ BOOL daAlink_c::checkCopyRodAnime() const {
void daAlink_c::setCopyRodControllAnime() {
if (checkNoUpperAnime() && getCopyRodControllActor()) {
setUpperAnimeBaseSpeed(0x202, 0.0f, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_RODD_e, 0.0f, 3.0f);
field_0x2f96 = 2;
field_0x2f97 = 5;
field_0x33e8 = 0.0f;
@@ -81,26 +79,26 @@ void daAlink_c::setCopyRodControllAnime() {
}
void daAlink_c::setCopyRodControllUpperSpeedRate() {
f32 var_f31;
f32 max_speed;
if (checkAttentionLock()) {
var_f31 = 1.0f;
max_speed = 1.0f;
} else {
if (mProcID == PROC_STEP_MOVE) {
var_f31 = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
max_speed = fabsf(field_0x3478 / mpHIO->mMove.m.mMaxSpeed);
} else {
var_f31 = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
max_speed = fabsf(mNormalSpeed / mpHIO->mMove.m.mMaxSpeed);
}
if (checkHeavyStateOn(1, 1)) {
var_f31 *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
if (checkHeavyStateOn(TRUE, TRUE)) {
max_speed *= 1.0f / (mHeavySpeedMultiplier * mHeavySpeedMultiplier);
}
}
if (var_f31 > 1.0f) {
var_f31 = 1.0f;
if (max_speed > 1.0f) {
max_speed = 1.0f;
}
cLib_chaseF(&field_0x33e8, var_f31, 0.15f);
cLib_chaseF(&field_0x33e8, max_speed, 0.15f);
daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
frame_ctrl->setFrame(field_0x33e8 * frame_ctrl->getEnd());
@@ -109,9 +107,8 @@ void daAlink_c::setCopyRodControllUpperSpeedRate() {
void daAlink_c::setCopyRodModel() {
JKRHeap* heap = setItemHeap();
J3DModelData* mdl_data = loadAramBmd(0x315, 0x5400);
mHeldItemModel = initModel(mdl_data, 0x80000, 0x1000000);
field_0x0724 = loadAramItemBrk(0x323, mHeldItemModel);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_CROD_e, 0x5400), 0x1000000);
field_0x0724 = loadAramItemBrk(dRes_ID_ALANM_BRK_AL_CROD_CHANGE_COLOR_e, mHeldItemModel);
mDoExt_setCurrentHeap(heap);
field_0x0724->setFrame(0.0f);
@@ -119,25 +116,25 @@ void daAlink_c::setCopyRodModel() {
mAtCps[0].SetAtSpl(dCcG_At_Spl_UNK_0);
mAtCps[0].SetAtAtp(0);
mAtCps[0].SetAtSe(20);
mAtCps[0].SetAtSe(dCcD_SE_COPYROD);
mAtCps[0].SetAtHitMark(1);
mAtCps[0].OnAtSetBit();
mAtCps[0].SetAtHitCallback(NULL);
mAtCps[0].SetAtMtrl(dCcD_MTRL_NONE);
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(field_0x30c0));
mHeldItemModel->setBaseTRMtx(mpLinkModel->getAnmMtx(mLeftItemJntNo));
mHeldItemModel->calc();
}
void daAlink_c::setCopyRodReadyAnime() {
f32 speed;
if (checkAttentionLock()) {
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
} else {
if (!checkAttentionLock()) {
speed = 0.0f;
} else {
speed = mpHIO->mItem.mBoomerang.m.mIdleAnmSpeed;
}
setUpperAnimeBaseSpeed(0x54, speed, 3.0f);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_BOOMWAIT_e, speed, 3.0f);
if (checkCopyRodTopUse()) {
seStartSwordCut(Z2SE_AL_COPYROD_READY);
@@ -160,6 +157,7 @@ void daAlink_c::throwCopyRod() {
onNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
mItemAcKeep.clearData();
}
dComIfGp_clearPlayerStatus0(0, 0x80);
mFastShotTime = -1;
voiceStart(Z2SE_AL_V_ATTACK_S);
@@ -179,20 +177,19 @@ void daAlink_c::throwCopyRod() {
int daAlink_c::returnCopyRod() {
offNoResetFlg3(FLG3_COPY_ROD_THROW_AFTER);
int var_r31;
BOOL rt;
if (mEquipItem == fpcNm_ITEM_COPY_ROD) {
mItemAcKeep = mCopyRodAcKeep;
onNoResetFlg0(FLG0_UNK_20);
var_r31 = 1;
rt = TRUE;
f32 tmp_0 = 0.0f;
dComIfGp_getVibration().StartShock(1, 1, cXyz(tmp_0, 1.0f, tmp_0));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
} else {
var_r31 = 0;
rt = FALSE;
}
mCopyRodAcKeep.clearData();
return var_r31;
return rt;
}
BOOL daAlink_c::checkUpperItemActionCopyRod() {
@@ -255,7 +252,6 @@ int daAlink_c::checkNextActionCopyRod() {
void daAlink_c::setCopyRodSight() {
if (mItemAcKeep.getActor() && !checkCopyRodThrowAnime()) {
cXyz sight_pos;
checkSightLine(getCopyRodBallDisMax(), &sight_pos);
mSight.setPos(&sight_pos);
mSight.onDrawFlg();
@@ -288,7 +284,7 @@ int daAlink_c::procCopyRodSubject() {
}
if (checkCopyRodReadyAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -326,20 +322,20 @@ int daAlink_c::procCopyRodMove() {
}
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkZeroSpeedF()) {
onModeFlg(1);
if (field_0x2f98 != 3) {
field_0x2f98 = 3;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
}
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
setBodyAngleXReadyAnime(0);
}
@@ -383,7 +379,7 @@ int daAlink_c::procCopyRodSwing() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
mProcVar2.field_0x300c = 0;
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
setCopyRodControllAnime();
checkNextAction(0);
} else if (frameCtrl->getFrame() > field_0x3480 && checkNextAction(1)) {
@@ -413,7 +409,7 @@ int daAlink_c::procCopyRodReviveInit() {
if (mDemo.getParam0() == 0) {
if (mEquipItem != fpcNm_ITEM_COPY_ROD) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
mEquipItem = fpcNm_ITEM_COPY_ROD;
setCopyRodModel();
}
@@ -428,7 +424,7 @@ int daAlink_c::procCopyRodReviveInit() {
int daAlink_c::procCopyRodRevive() {
simpleAnmPlay(field_0x0724);
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(&mUnderFrameCtrl[0])) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
+144 -120
View File
@@ -28,8 +28,13 @@ void daAlink_c::setCrawlMoveDirectionArrow() {
static const u8 data_80452F39 = 4;
u8 direction = 0;
camera_class* camera = (camera_class*)dComIfGp_getCamera(field_0x317c);
BOOL bvar = cLib_distanceAngleS(fopCamM_GetAngleY(camera), shape_angle.y) > 0x4000;
BOOL bvar;
if (cLib_distanceAngleS(fopCamM_GetAngleY(dComIfGp_getCamera(field_0x317c)), shape_angle.y) > 0x4000) {
bvar = TRUE;
} else {
bvar = FALSE;
}
if (field_0x3198 & 4) {
if (!bvar) {
@@ -140,9 +145,20 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
var_r29 |= 8;
}
}
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x), 0.5f * (sp34.z + sp28.z), sp70.x, sp70.z, param_0->x - (95.0f * temp_f31), param_0->z - (95.0f * temp_f30), &sp64.x, &sp64.z, &spC)) {
f32 var_f27 = param_0->x - (95.0f * temp_f31);
f32 var_f26 = param_0->z - (95.0f * temp_f30);
if (cM3d_Len2dSqPntAndSegLine(0.5f * (sp34.x + sp28.x),
0.5f * (sp34.z + sp28.z),
sp70.x,
sp70.z,
var_f27,
var_f26,
&sp64.x,
&sp64.z,
&spC))
{
sp64.y = current.pos.y;
if (checkWolf()) {
return procWolfLieAutoMoveInit(var_r29, &sp64);
@@ -155,15 +171,15 @@ BOOL daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
}
int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
int param_4, u8* param_5) {
int param_4, u8* param_5) {
if (commonLineCheck(param_0, param_1) && ((param_4 == 0 && (!checkWolf() || !dComIfGp_checkPlayerStatus0(0, 0x08000000))) || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 6) && (!checkWolf() || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7)) {
cM3dGPla sp3C;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp3C);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
int temp_r27 = dComIfG_Bgsp().GetSpecialCode(mLinkLinChk);
if (cBgW_CheckBWall(sp3C.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(sp3C.mNormal.y))) {
if (cBgW_CheckBWall(tripla.mNormal.y) || (param_3 == 2 && cBgW_CheckBGround(tripla.mNormal.y))) {
cXyz sp1C = *param_1 - mLinkLinChk.GetCross();
s16 temp_r26 = sp3C.mNormal.atan2sX_Z();
s16 temp_r26 = tripla.mNormal.atan2sX_Z();
s16 temp_r3 = sp1C.atan2sX_Z();
if (abs((s16)((temp_r3 + 0x8000) - temp_r26)) > 0x3000) {
@@ -172,34 +188,34 @@ int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int
f32 temp_f31 = -sp1C.absXZ() * cM_scos(((temp_r3 - temp_r26) - 0x8000));
param_2->x = temp_f31 * sp3C.mNormal.x;
param_2->x = temp_f31 * tripla.mNormal.x;
if (param_3 != 1) {
param_2->y = 0.0f;
} else {
param_2->y = sp1C.y;
}
param_2->z = temp_f31 * sp3C.mNormal.z;
param_2->z = temp_f31 * tripla.mNormal.z;
if (param_5 != NULL && (dKy_pol_argument_get(&mLinkLinChk) & 0x60)) {
*param_5 = 3;
cM3dGPla sp28;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp28);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
field_0x311e = sp28.mNormal.atan2sX_Z();
field_0x311e = tripla.mNormal.atan2sX_Z();
if (checkIcePolygonDamage(&mLinkLinChk)) {
*param_5 |= 0x80;
*param_5 |= (u8)0x80;
}
if (dKy_pol_argument_get(&mLinkLinChk) & 0x20) {
*param_5 |= 0x40;
*param_5 |= (u8)0x40;
}
}
return 1;
}
if (param_3 == 1 && (temp_r27 == 1 || (sp3C.mNormal.y < field_0x3470 && temp_r27 == 2))) {
if (param_3 == 1 && (temp_r27 == 1 || (tripla.mNormal.y < field_0x3470 && temp_r27 == 2))) {
*param_2 = *param_1 - mLinkLinChk.GetCross();
return 1;
}
@@ -233,24 +249,24 @@ void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
}
BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2, cXyz* param_3,
s16* param_4, s16* param_5) {
s16* param_4, s16* param_5) {
cXyz sp58;
cXyz sp4C;
if (commonLineCheck(param_0, param_1)) {
cM3dGPla sp64;
cM3dGPla tripla;
*param_2 = mLinkLinChk.GetCross();
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
*param_4 = sp64.mNormal.atan2sX_Z();
*param_4 = tripla.mNormal.atan2sX_Z();
sp4C = *param_2 + (sp64.mNormal * 95.0f);
sp4C = *param_2 + (tripla.mNormal * 95.0f);
sp58 = (sp4C + *param_2) * 0.5f;
if (commonLineCheck(&sp58, &sp4C)) {
*param_3 = mLinkLinChk.GetCross();
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &sp64);
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tripla);
*param_5 = sp64.mNormal.atan2sX_Z();
*param_5 = tripla.mNormal.atan2sX_Z();
cXyz sp40 = *param_2 - *param_3;
f32 temp_f31 = sp40.abs2XZ();
@@ -265,25 +281,25 @@ BOOL daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param_2,
void daAlink_c::decideCrawlDoStatus() {
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x80)) {
if (checkSubjectEnd(1) || mWaterY > current.pos.y) {
if (checkSubjectEnd(TRUE) || mWaterY > current.pos.y) {
dComIfGp_clearPlayerStatus0(0, 0x2000);
}
} else {
dCamera_c* camera = dCam_getBody();
} else if (dCam_getBody()->ChangeModeOK(4) && mWaterY <= current.pos.y) {
onResetFlg0(RFLG0_UNK_4000000);
if (camera->ChangeModeOK(4) && mWaterY <= current.pos.y) {
onResetFlg0(RFLG0_UNK_4000000);
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
setSubjectMode();
}
if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
setSubjectMode();
}
}
}
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) {
mLinkRoofChk.SetPos(*param_0);
return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598;
if (dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= mHeight) {
return TRUE;
}
return FALSE;
}
BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
@@ -303,6 +319,8 @@ BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
}
BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3) {
UNUSED(param_3);
cXyz spC0;
cXyz spB4;
cXyz spA8;
@@ -325,7 +343,9 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
*param_2 += sp90;
spB4 = (*param_2 * 2.0f) - spC0;
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) || checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16)) {
if (checkCrawlSideWall(param_2, &spC0, &spA8, &sp9C, &sp16, &sp14) ||
checkCrawlSideWall(param_2, &spB4, &sp9C, &spA8, &sp14, &sp16))
{
field_0x3198 = 1;
field_0x37c8 = ((spA8 + sp9C) * 0.5f) - sp90;
mProcVar2.field_0x300c = sp16 + 0x4000;
@@ -336,9 +356,7 @@ BOOL daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2, in
}
void daAlink_c::setCrawlMoveHoll() {
f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
if (frame_ctrl_rate) {
if (mUnderFrameCtrl[0].getRate()) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 5, 0x1000, 0x800);
current.angle.y = shape_angle.y;
}
@@ -357,7 +375,7 @@ void daAlink_c::setCrawlMoveAngle() {
cXyz sp2C;
cXyz sp38;
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mCrouch.m.mCrawlTurnRate,
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mCrouch.m.mCrawlTurnRate,
mpHIO->mCrouch.m.mCrawlTurnMax,
mpHIO->mCrouch.m.mCrawlTurnMin);
@@ -386,14 +404,14 @@ void daAlink_c::setCrawlMoveAngle() {
}
}
void daAlink_c::stopHalfMoveAnime(f32 param_0) {
void daAlink_c::stopHalfMoveAnime(f32 i_frame) {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
f32 frame;
if (frame_ctrl->checkPass(0.0f)) {
frame = 0.0f;
} else {
frame = param_0;
frame = i_frame;
}
frame_ctrl->setRate(0.0f);
@@ -402,11 +420,11 @@ void daAlink_c::stopHalfMoveAnime(f32 param_0) {
}
void daAlink_c::setCrawlAutoMoveAimPos() {
int temp_r30 = getDirectionFromShapeAngle();
int direction = getDirectionFromShapeAngle();
f32 temp_f31 = cM_ssin(shape_angle.y);
f32 temp_f30 = cM_scos(shape_angle.y);
if (temp_r30 == 2 && (field_0x3198 & 4)) {
if (direction == DIR_LEFT && (field_0x3198 & 4)) {
field_0x37c8.x += 1.5f * (95.0f * temp_f30);
field_0x37c8.z -= 1.5f * (95.0f * temp_f31);
@@ -419,7 +437,7 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
}
mProcVar0.field_0x3008 = -1;
} else if (temp_r30 == 3 && (field_0x3198 & 8)) {
} else if (direction == DIR_RIGHT && (field_0x3198 & 8)) {
field_0x37c8.x -= 1.5f * (95.0f * temp_f30);
field_0x37c8.z += 1.5f * (95.0f * temp_f31);
@@ -432,14 +450,14 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
}
mProcVar0.field_0x3008 = -1;
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && temp_r30 == 0) || (shape_angle.y != current.angle.y && temp_r30 == 1))) {
} else if ((field_0x3198 & 1) && ((shape_angle.y == current.angle.y && direction == DIR_FORWARD) || (shape_angle.y != current.angle.y && direction == DIR_BACKWARD))) {
field_0x37c8.x += 1.5f * (95.0f * cM_ssin(current.angle.y));
field_0x37c8.z += 1.5f * (95.0f * cM_scos(current.angle.y));
mProcVar2.field_0x300c = shape_angle.y;
mProcVar3.field_0x300e = 0;
mProcVar0.field_0x3008 = -1;
} else if ((shape_angle.y == current.angle.y && temp_r30 == 1) || (shape_angle.y != current.angle.y && temp_r30 == 0)) {
} else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) || (shape_angle.y != current.angle.y && direction == DIR_FORWARD)) {
current.angle.y += 0x8000;
field_0x37c8.x -= 1.5f * (95.0f * cM_ssin(current.angle.y));
field_0x37c8.z -= 1.5f * (95.0f * cM_scos(current.angle.y));
@@ -503,50 +521,50 @@ int daAlink_c::procCrawlStart() {
return 1;
}
int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
int daAlink_c::procCrawlMoveInit(s16 i_angleX, s16 i_angleZ) {
BOOL var_r29;
BOOL var_r28 = 0;
BOOL var_r28 = FALSE;
if (mProcID == PROC_CRAWL_AUTO_MOVE) {
var_r29 = 0;
var_r29 = FALSE;
} else {
var_r29 = 1;
var_r29 = TRUE;
if (mProcID == PROC_CRAWL_START) {
var_r28 = 1;
var_r28 = TRUE;
}
}
BOOL var_r27;
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
var_r27 = 1;
var_r27 = TRUE;
} else {
var_r27 = 0;
var_r27 = FALSE;
}
commonProcInit(PROC_CRAWL_MOVE);
mProcVar3.field_0x300e = 0;
if (var_r29 != 0) {
f32 var_f31 = getCrawlMoveAnmSpeed();
if (var_r28 != 0) {
if (var_r29) {
f32 anm_speed = getCrawlMoveAnmSpeed();
if (var_r28) {
mProcVar3.field_0x300e = 1;
} else if (getDirectionFromShapeAngle() == 1) {
var_f31 *= -1.0f;
} else if (getDirectionFromShapeAngle() == DIR_BACKWARD) {
anm_speed *= -1.0f;
}
current.angle.y = shape_angle.y;
setSingleAnimeBaseSpeed(ANM_CRAWL, var_f31, mpHIO->mCrouch.m.mCrawlInterpolation);
setSingleAnimeBaseSpeed(ANM_CRAWL, anm_speed, mpHIO->mCrouch.m.mCrawlInterpolation);
}
field_0x3198 = var_r29 ^ 1;
shape_angle.x = param_0;
shape_angle.z = param_1;
shape_angle.x = i_angleX;
shape_angle.z = i_angleZ;
field_0x33cc = 1.0f;
field_0x2f99 = 0xC;
dComIfGp_setPlayerStatus0(0, 0x08000000);
if (var_r27 != 0) {
if (var_r27) {
dComIfGp_setPlayerStatus0(0, 0x2000);
}
@@ -554,7 +572,7 @@ int daAlink_c::procCrawlMoveInit(s16 param_0, s16 param_1) {
}
int daAlink_c::procCrawlMove() {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
cXyz sp54;
cXyz sp48;
cXyz sp3C;
@@ -587,33 +605,33 @@ int daAlink_c::procCrawlMove() {
if ((var_r27 != 0 && mProcVar3.field_0x300e == 0) || getSlidePolygon(&sp60) || checkCrawlWaterIn()) {
procCrawlEndInit(1, shape_angle.x, shape_angle.z);
} else {
BOOL var_r26 = 0;
BOOL var_r26 = FALSE;
f32 temp_f31 = getCrawlMoveAnmSpeed();
if (temp_r29->getRate() > 0.0f) {
setWaterInAnmRate(temp_r29, temp_f31);
} else if (temp_r29->getRate() < 0.0f) {
setWaterInAnmRate(temp_r29, -temp_f31);
if (framectrl->getRate() > 0.0f) {
setWaterInAnmRate(framectrl, temp_f31);
} else if (framectrl->getRate() < 0.0f) {
setWaterInAnmRate(framectrl, -temp_f31);
} else {
var_r26 = 1;
var_r26 = TRUE;
}
if (var_r26 == 1 || temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
if (var_r26 == TRUE || framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
if (mProcVar3.field_0x300e != 0) {
mProcVar3.field_0x300e--;
setWaterInAnmRate(temp_r29, temp_f31);
temp_r29->setLoop(0);
setWaterInAnmRate(framectrl, temp_f31);
framectrl->setLoop(0);
} else if (checkInputOnR()) {
if (getDirectionFromShapeAngle() != 1) {
setWaterInAnmRate(temp_r29, temp_f31);
temp_r29->setLoop(0);
if (getDirectionFromShapeAngle() != DIR_BACKWARD) {
setWaterInAnmRate(framectrl, temp_f31);
framectrl->setLoop(0);
} else {
setWaterInAnmRate(temp_r29, -temp_f31);
temp_r29->setLoop(temp_r29->getEnd());
setWaterInAnmRate(framectrl, -temp_f31);
framectrl->setLoop(framectrl->getEnd());
}
initBasAnime();
} else if (var_r26 == 0) {
} else if (var_r26 == FALSE) {
stopHalfMoveAnime(17.0f);
}
}
@@ -624,9 +642,9 @@ int daAlink_c::procCrawlMove() {
if (checkCrawlInHoll(&sp54, &sp3C, &sp18, var_r27)) {
setCrawlMoveHoll();
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && var_r27 == 0 && changeCrawlAutoMoveProc(&sp18) ) {
} else if (sp8 != 0 && temp_r25 && temp_r24 && temp_r23 && !var_r27 && changeCrawlAutoMoveProc(&sp18) ) {
return 1;
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && temp_r29->getRate() > 0.0f) {
} else if (mProcVar3.field_0x300e == 0 && checkInputOnR() && framectrl->getRate() > 0.0f) {
setCrawlMoveAngle();
}
@@ -648,7 +666,13 @@ int daAlink_c::procCrawlMove() {
}
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000) != 0 ? TRUE : FALSE;
BOOL var_r30;
if (dComIfGp_checkPlayerStatus0(0, 0x2000)) {
var_r30 = TRUE;
} else {
var_r30 = FALSE;
}
commonProcInit(PROC_CRAWL_AUTO_MOVE);
field_0x37c8 = *param_1;
field_0x33cc = 1.0f;
@@ -671,24 +695,24 @@ int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
int daAlink_c::procCrawlAutoMove() {
field_0x2f99 = 0xC;
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
s16 temp_r27 = shape_angle.y;
s16 temp_r26 = current.angle.y;
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
s16 prev_shapeangle = shape_angle.y;
s16 prev_angle = current.angle.y;
if (mProcVar0.field_0x3008 > 0) {
if (temp_r29->checkPass(0.0f) || temp_r29->checkPass(17.0f)) {
if (framectrl->checkPass(0.0f) || framectrl->checkPass(17.0f)) {
stopHalfMoveAnime(17.0f);
mNormalSpeed = 0.0f;
} else if (checkAnmEnd(temp_r29)) {
} else if (checkAnmEnd(framectrl)) {
mNormalSpeed = 0.0f;
mProcVar0.field_0x3008 -= 1;
mProcVar0.field_0x3008--;
}
setCrawlMoveDirectionArrow();
decideCrawlDoStatus();
shape_angle.y = temp_r27;
current.angle.y = temp_r26;
shape_angle.y = prev_shapeangle;
current.angle.y = prev_angle;
} else if (mProcVar0.field_0x3008 == 0) {
setCrawlMoveDirectionArrow();
if (checkInputOnR()) {
@@ -698,19 +722,19 @@ int daAlink_c::procCrawlAutoMove() {
dComIfGp_setAdvanceDirection(0);
if (shape_angle.y == current.angle.y) {
setWaterInAnmRate(temp_r29, 2.0f);
temp_r29->setLoop(0);
setWaterInAnmRate(framectrl, 2.0f);
framectrl->setLoop(0);
} else {
setWaterInAnmRate(temp_r29, -2.0f);
temp_r29->setLoop(temp_r29->getEnd());
setWaterInAnmRate(framectrl, -2.0f);
framectrl->setLoop(framectrl->getEnd());
}
initBasAnime();
}
} else {
decideCrawlDoStatus();
shape_angle.y = temp_r27;
current.angle.y = temp_r26;
shape_angle.y = prev_shapeangle;
current.angle.y = prev_angle;
}
} else {
int var_r28 = 1;
@@ -754,55 +778,55 @@ int daAlink_c::procCrawlAutoMove() {
return 1;
}
int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
f32 var_f31 = temp_r29->getFrame();
int daAlink_c::procCrawlEndInit(int param_0, s16 i_angleX, s16 i_angleZ) {
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
f32 frame = framectrl->getFrame();
commonProcInit(PROC_CRAWL_END);
current.angle.y = shape_angle.y;
field_0x2f99 = 0xC;
const daAlinkHIO_anm_c* temp_r30 = &mpHIO->mCrouch.m.mCrawlEndAnm;
const daAlinkHIO_anm_c* anmParams = &mpHIO->mCrouch.m.mCrawlEndAnm;
f32 var_f30;
f32 morf;
if (param_0 != 0) {
var_f30 = temp_r30->mInterpolation;
morf = anmParams->mInterpolation;
} else {
var_f30 = -1.0f;
morf = -1.0f;
}
setSingleAnime(ANM_CRAWL_START, temp_r30->mSpeed, temp_r30->mStartFrame, temp_r30->mEndFrame, var_f30);
setSingleAnime(ANM_CRAWL_START, anmParams->mSpeed, anmParams->mStartFrame, anmParams->mEndFrame, morf);
if (param_0 == 0) {
if (temp_r30->mStartFrame > var_f31) {
var_f31 = temp_r30->mStartFrame;
} else if (temp_r30->mEndFrame <= var_f31) {
var_f31 = temp_r30->mEndFrame;
if (anmParams->mStartFrame > frame) {
frame = anmParams->mStartFrame;
} else if (anmParams->mEndFrame <= frame) {
frame = anmParams->mEndFrame;
}
temp_r29->setFrame(var_f31);
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
framectrl->setFrame(frame);
getNowAnmPackUnder(UNDER_0)->setFrame(frame);
}
J3DTransformInfo sp10;
getNowAnmPackUnder(UNDER_0)->getTransform(0, &sp10);
J3DTransformInfo transinfo;
getNowAnmPackUnder(UNDER_0)->getTransform(0, &transinfo);
field_0x34d4.x = sp10.mTranslate.x;
field_0x34d4.y = sp10.mTranslate.y;
field_0x34d4.z = sp10.mTranslate.z;
field_0x34d4.x = transinfo.mTranslate.x;
field_0x34d4.y = transinfo.mTranslate.y;
field_0x34d4.z = transinfo.mTranslate.z;
mNormalSpeed = 0.0f;
shape_angle.x = param_1;
shape_angle.z = param_2;
shape_angle.x = i_angleX;
shape_angle.z = i_angleZ;
if (temp_r30->mCancelFrame > temp_r30->mStartFrame) {
field_0x347c = temp_r30->mCancelFrame;
if (anmParams->mCancelFrame > anmParams->mStartFrame) {
field_0x347c = anmParams->mCancelFrame;
} else {
field_0x347c = temp_r30->mStartFrame;
field_0x347c = anmParams->mStartFrame;
}
field_0x3478 = 1.0f / (temp_r30->mEndFrame - field_0x347c);
field_0x3478 = 1.0f / (anmParams->mEndFrame - field_0x347c);
field_0x3588 = l_waitBaseAnime;
return 1;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+115 -101
View File
@@ -6,24 +6,19 @@
#include "d/actor/d_a_alink.h"
#include "d/d_com_inf_game.h"
#include "d/actor/d_a_obj_gra2.h"
#include "d/actor/d_a_npc_kn.h"
BOOL daAlink_c::checkEnemyGroup(fopAc_ac_c* i_actor) {
return i_actor != NULL && (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e ||
fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
return i_actor != NULL
&& (fopAcM_GetGroup(i_actor) == fopAc_ENEMY_e || fopAcM_GetName(i_actor) == PROC_E_ZH || checkSpecialNpc(i_actor));
}
// properly setup later
class daNpc_Kn_c : public fopAc_ac_c {
public:
bool checkBattleMode() { return true; }
};
BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* i_actor) {
s16 name = fopAcM_GetName(i_actor);
return ((name == PROC_NPC_KAKASHI || name == PROC_NPC_KN) &&
static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
return name == PROC_NPC_KAKASHI ||
(name == PROC_NPC_KN && static_cast<daNpc_Kn_c*>(i_actor)->checkBattleMode()) ||
(name == PROC_OBJ_GRA && !static_cast<daObj_GrA_c*>(i_actor)->checkNpcObjGra());
}
BOOL daAlink_c::checkShieldAttackEmphasys() {
@@ -56,20 +51,29 @@ void daAlink_c::stickArrowIncrement(int param_0) {
}
if (arrow_num != 0) {
if (checkShieldGet() && checkItemGet(fpcNm_ITEM_BOW, true)) {
int arrow_type = arrow_num == 1 ? fpcNm_ITEM_ARROW_1 : fpcNm_ITEM_ARROW_10;
if (checkShieldGet()
#if !PLATFORM_SHIELD
&& checkItemGet(fpcNm_ITEM_BOW, true)
#endif
)
{
int arrow_type;
if (arrow_num == 1) {
arrow_type = fpcNm_ITEM_ARROW_1;
} else {
arrow_type = fpcNm_ITEM_ARROW_10;
}
dComIfGp_setItemArrowNumCount(arrow_num);
fopAcM_createItemForSimpleDemo(&current.pos, arrow_type, -1, NULL, NULL, 0.0f,
0.0f);
}
onResetFlg0(RFLG0_UNK_1);
onResetFlg0(RFLG0_STICK_ARROW_RESET);
}
}
}
void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
fpc_ProcID new_arrow_id = fopAcM_GetID(i_actor);
@@ -106,12 +110,11 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
}
}
BOOL daAlink_c::checkWoodShieldEquipNotIronBall() const {
return checkWoodShieldEquip() && !checkIronBallEquip();
}
void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1, cXyz* param_2,
void daAlink_c::getArrowShieldOffset(const cXyz* param_0, const csXyz* param_1, cXyz* param_2,
cXyz* param_3) const {
cXyz sp54;
mDoMtx_stack_c::ZXYrotS(param_1->x + cM_rndFX(0x1000), param_1->y + cM_rndFX(0x1000), 0);
@@ -120,7 +123,7 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
mDoMtx_stack_c::inverse();
mDoMtx_stack_c::multVecSR(&sp54, param_3);
static Vec const localCenter = {-15.0f, 0.0f, 18.0f};
static const Vec localCenter = {-15.0f, 0.0f, 18.0f};
cXyz sp60;
mDoMtx_multVec(getShieldMtx(), &localCenter, &sp60);
@@ -140,9 +143,8 @@ void daAlink_c::getArrowShieldOffset(cXyz const* param_0, csXyz const* param_1,
mDoMtx_stack_c::multVec(&sp6C, param_2);
}
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* param_2,
cXyz const* param_3) const {
void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, const cXyz* param_2,
const cXyz* param_3) const {
cXyz sp1C;
mDoMtx_multVecSR(getShieldMtx(), param_3, &sp1C);
@@ -153,9 +155,12 @@ void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* par
}
BOOL daAlink_c::checkUpperGuardAnime() const {
return checkNoResetFlg2(FLG2_UNK_8000000) && !checkEventRun() &&
!checkNoResetFlg0(FLG0_UNK_2) && mProcID != PROC_GUARD_BREAK &&
mProcID != PROC_CUT_REVERSE && mProcID != PROC_GUARD_ATTACK;
return checkNoResetFlg2(FLG2_UNK_8000000) &&
!checkEventRun() &&
!checkNoResetFlg0(FLG0_UNK_2) &&
mProcID != PROC_GUARD_BREAK &&
mProcID != PROC_CUT_REVERSE &&
mProcID != PROC_GUARD_ATTACK;
}
BOOL daAlink_c::checkPlayerGuard() const {
@@ -168,15 +173,20 @@ BOOL daAlink_c::checkPlayerGuardAndAttack() const {
}
BOOL daAlink_c::checkGuardAccept() {
return checkModeFlg(0x80) && checkShieldGet() && !checkFmChainGrabAnime() &&
return checkModeFlg(0x80) &&
checkShieldGet() &&
!checkFmChainGrabAnime() &&
!checkNotBattleStage();
}
void daAlink_c::setUpperGuardAnime(f32) {
void daAlink_c::setUpperGuardAnime(f32 param_0) {
UNUSED(param_0);
onNoResetFlg2(FLG2_UNK_8000000);
}
void daAlink_c::setShieldGuard() {
f32 var_f31 = mNowAnmPackUpper[2].getRatio();
if ((mProcID == PROC_GUARD_SLIP && mEquipItem != fpcNm_ITEM_IRONBALL) || checkSmallUpperGuardAnime() ||
(checkGuardAccept() && !checkGrabAnime() && !checkUpperReadyThrowAnime() &&
!checkDkCaught2Anime() && !checkKandelaarSwingAnime() && !checkCutDashAnime() &&
@@ -191,28 +201,28 @@ void daAlink_c::setShieldGuard() {
void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
int var_r31;
int var_r30;
BOOL isRebound;
if (checkWoodShieldEquipNotIronBall() && !checkMagicArmorNoDamage()) {
var_r31 = 0x29;
var_r30 = 0;
isRebound = FALSE;
} else {
var_r31 = 0x28;
var_r30 = 1;
isRebound = TRUE;
}
u32 hit_se;
if (i_objinf->GetTgHitGObj() != NULL && i_objinf->GetTgHitGObj()->GetAtType() == AT_TYPE_BOMB) {
hit_se = Z2SE_HIT_METAL_WEAPON;
} else {
hit_se = i_objinf->GetTgHitObjHitSeID(var_r30);
hit_se = i_objinf->GetTgHitObjHitSeID(isRebound);
}
mZ2Link.startCollisionSE(hit_se, var_r31);
}
void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
setUpperAnimeBase(0x16);
setUpperAnimeBase(dRes_ID_ALANM_BCK_ATDEFS_e);
cXyz* dmg_vec = getDamageVec(i_objinf);
mBodyAngle.y = (dmg_vec->atan2sX_Z() + 0x8000) - shape_angle.y;
@@ -227,7 +237,7 @@ void daAlink_c::setSmallGuard(dCcD_GObjInf* i_objinf) {
mBodyAngle.x = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mSmallGuardFBAngleMax, mpHIO->mGuard.m.mSmallGuardFBAngleMax);
}
int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
int daAlink_c::procGuardSlipInit(int i_atSpl, dCcD_GObjInf* i_objinf) {
if (mProcID == PROC_GUARD_SLIP) {
return 0;
}
@@ -241,9 +251,11 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
commonProcInit(PROC_GUARD_SLIP);
field_0x2fd4 = 3;
cXyz* temp_r3 = getDamageVec(param_1);
current.angle.y = temp_r3->atan2sX_Z();
cXyz* dmg_vec = getDamageVec(i_objinf);
current.angle.y = dmg_vec->atan2sX_Z();
const daAlinkHIO_anm_c* anmParams;
daAlink_ANM anm;
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
setSingleAnimeBase(ANM_IRONBALL_DEF);
setIronBallWaitUpperAnime(1);
@@ -253,15 +265,14 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
} else {
const daAlinkHIO_anm_c* var_r27 = &mpHIO->mGuard.m.mGuardHitAnm;
daAlink_ANM var_r28;
anmParams = &mpHIO->mGuard.m.mGuardHitAnm;
if (field_0x2f98 == 2) {
var_r28 = ANM_GUARD_LEFT;
anm = ANM_GUARD_LEFT;
} else {
var_r28 = ANM_GUARD_RIGHT;
anm = ANM_GUARD_RIGHT;
}
setSingleAnimeParam(var_r28, var_r27);
setSingleAnimeParam(anm, anmParams);
setUpperGuardAnime(-1.0f);
mProcVar2.field_0x300c = (current.angle.y + 0x8000) - shape_angle.y;
@@ -271,7 +282,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar2.field_0x300c = cLib_minMaxLimit<s16>((s16)mProcVar2.field_0x300c, -mpHIO->mGuard.m.mGuardLRAngleMax, mpHIO->mGuard.m.mGuardLRAngleMax);
}
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(temp_r3->y, temp_r3->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
mProcVar3.field_0x300e = cLib_minMaxLimit<s16>(cM_atan2s(dmg_vec->y, dmg_vec->absXZ()), -mpHIO->mGuard.m.mGuardFBAngleMax, mpHIO->mGuard.m.mGuardFBAngleMax);
mProcVar1.field_0x300a = mpHIO->mGuard.m.mGuardBodyInterpolation + 1;
mProcVar2.field_0x300c = (mProcVar2.field_0x300c - mBodyAngle.y) / mProcVar1.field_0x300a;
mProcVar3.field_0x300e = (mProcVar3.field_0x300e - mBodyAngle.x) / mProcVar1.field_0x300a;
@@ -284,7 +295,7 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
mProcVar4.field_0x3010 = 0;
mProcVar5.field_0x3012 = 0;
if (param_1 != NULL && param_1->GetTgHitAc() != NULL && fopAcM_GetName(param_1->GetTgHitAc()) == PROC_E_MM_MT && param_1->GetTgHitAc()->argument == 1) {
if (i_objinf != NULL && i_objinf->GetTgHitAc() != NULL && fopAcM_GetName(i_objinf->GetTgHitAc()) == PROC_E_MM_MT && i_objinf->GetTgHitAc()->argument == 1) {
if (checkBootsOrArmorHeavy()) {
mNormalSpeed = mpHIO->mGuard.m.mMagneHvyGuardSpeed;
mProcVar5.field_0x3012 = 1;
@@ -294,13 +305,13 @@ int daAlink_c::procGuardSlipInit(int param_0, dCcD_GObjInf* param_1) {
}
mProcVar4.field_0x3010 = 1;
} else if (checkHugeAttack(param_0)) {
} else if (checkHugeAttack(i_atSpl)) {
if ((!checkBootsOrArmorHeavy() && checkMiddleBossGoronRoom()) || checkStageName("D_MN07B")) {
mNormalSpeed = 40.0f;
} else {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedHuge;
}
} else if (checkLargeAttack(param_0)) {
} else if (checkLargeAttack(i_atSpl)) {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedLarge;
} else {
mNormalSpeed = mpHIO->mGuard.m.mGuardSpeedNormal;
@@ -319,7 +330,7 @@ int daAlink_c::procGuardSlip() {
setShapeAngleToAtnActor(0);
if (mProcVar1.field_0x300a != 0) {
mProcVar1.field_0x300a -= 1;
mProcVar1.field_0x300a -= (s16)1;
mBodyAngle.y += mProcVar2.field_0x300c;
mBodyAngle.x += mProcVar3.field_0x300e;
}
@@ -328,19 +339,19 @@ int daAlink_c::procGuardSlip() {
field_0x2f9d = 0x60;
}
f32 var_f31;
f32 speed_step;
if (checkBootsOrArmorHeavy() && mProcVar4.field_0x3010 == 0) {
var_f31 = 2.5f;
speed_step = 2.5f;
} else {
var_f31 = 1.25f;
speed_step = 1.25f;
}
if (mProcVar4.field_0x3010 != 0 && mProcVar5.field_0x3012 != checkBootsOrArmorHeavy()) {
mNormalSpeed = 0.0f;
}
if (cLib_chaseF(&mNormalSpeed, 0.0f, var_f31) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
field_0x814.SetTgApid(0);
if (cLib_chaseF(&mNormalSpeed, 0.0f, speed_step) != 0 && checkAnmEnd(&mUnderFrameCtrl[0])) {
mCcStts.SetTgApid(0);
if (!checkGuardActionChange()) {
onEndResetFlg1(ERFLG1_UNK_20);
@@ -357,41 +368,44 @@ int daAlink_c::procGuardSlip() {
}
int daAlink_c::procGuardAttackInit() {
if (mDemo.getDemoMode() == 0x4B && mProcID == PROC_GUARD_ATTACK) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e && mProcID == PROC_GUARD_ATTACK) {
return 1;
}
commonProcInit(PROC_GUARD_ATTACK);
const daAlinkHIO_guardAttack_c1* temp_r30 = &mpHIO->mGuard.mAtPush.m;
daAlink_ANM anm = ANM_SHIELD_ATTACK;
const daAlinkHIO_guardAttack_c1* params = &mpHIO->mGuard.mAtPush.m;
field_0x2f98 = 3;
field_0x34d4 = l_rWaitBaseAnime;
field_0x3588 = l_rWaitBaseAnime;
setCutType(0x29);
setSingleAnimeParam(ANM_SHIELD_ATTACK, &temp_r30->mAttackAnm);
setCutType(CUT_TYPE_GUARD_ATTACK);
u8 atSe = dCcD_SE_SHIELD_ATTACK;
field_0x3478 = temp_r30->mAttackStartFrame;
field_0x347c = temp_r30->mAttackEndFrame;
field_0x3480 = temp_r30->mSpeed;
setSingleAnimeParam(anm, &params->mAttackAnm);
if (checkHeavyStateOn(1, 1) != 0) {
field_0x3478 = params->mAttackStartFrame;
field_0x347c = params->mAttackEndFrame;
field_0x3480 = params->mSpeed;
if (checkHeavyStateOn(TRUE, TRUE)) {
field_0x3480 *= mHeavySpeedMultiplier;
}
if (mDemo.getDemoMode() == 0x4B) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
field_0x3484 = 1000.0f;
field_0x3488 = 1000.0f;
} else {
field_0x3484 = temp_r30->mAttackAnm.mCancelFrame;
field_0x3488 = temp_r30->mSlashCheckFrame;
field_0x3484 = params->mAttackAnm.mCancelFrame;
field_0x3488 = params->mSlashCheckFrame;
}
mNormalSpeed = 0.0f;
setSwordVoiceSe(Z2SE_AL_V_TATE_OSHI);
mGuardAtCps.ResetAtHit();
mGuardAtCps.SetAtSe(2);
mGuardAtCps.SetAtSe(atSe);
mGuardAtCps.SetR(mpHIO->mGuard.m.mAttackRadius);
current.angle.y = shape_angle.y;
@@ -405,7 +419,7 @@ int daAlink_c::procGuardAttackInit() {
}
int daAlink_c::procGuardAttack() {
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
setUpperGuardAnime(-1.0f);
field_0x2f99 = 4;
@@ -419,17 +433,17 @@ int daAlink_c::procGuardAttack() {
BOOL var_r29;
if (mEquipItem == 0x103 && !checkMagneBootsOn()) {
var_r29 = 1;
var_r29 = TRUE;
if (doTrigger()) {
mProcVar3.field_0x300e = 1;
}
} else {
var_r29 = 0;
var_r29 = FALSE;
}
if (mProcVar0.field_0x3008 == 0 && mGuardAtCps.ChkAtHit()) {
mProcVar0.field_0x3008 = 1;
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER3, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (mProcVar5.field_0x3012 != 0 && commonLineCheck(&field_0x3834, &mRightHandPos) && dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7) {
@@ -439,20 +453,20 @@ int daAlink_c::procGuardAttack() {
if (var_r29) {
if (checkCutHeadState()) {
setDoStatusEmphasys(0x77);
setDoStatusEmphasys(BUTTON_STATUS_HELM_SPLITTER);
} else {
setDoStatus(0x86);
setDoStatus(BUTTON_STATUS_UNK_134);
}
}
if (checkAnmEnd(temp_r30)) {
if (mDemo.getDemoMode() == 0x4B) {
if (checkAnmEnd(framectrl)) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_GUARD_ATTACK_e) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
} else {
if (temp_r30->getFrame() > field_0x3488) {
if (framectrl->getFrame() > field_0x3488) {
if (mProcVar3.field_0x300e != 0) {
return checkDoCutAction();
}
@@ -462,10 +476,10 @@ int daAlink_c::procGuardAttack() {
}
}
if (temp_r30->getFrame() > field_0x3484) {
if (framectrl->getFrame() > field_0x3484) {
onModeFlg(4);
checkNextAction(1);
} else if (temp_r30->getFrame() >= field_0x3478 && temp_r30->getFrame() < field_0x347c) {
} else if (framectrl->getFrame() >= field_0x3478 && framectrl->getFrame() < field_0x347c) {
if (mProcVar5.field_0x3012 == 0) {
mNormalSpeed = field_0x3480;
}
@@ -483,29 +497,29 @@ int daAlink_c::procGuardBreakInit() {
setSingleAnimeParam(ANM_GUARD_BREAK, &mpHIO->mGuard.m.mGuardBreakAnm);
if (mEquipItem == fpcNm_ITEM_IRONBALL) {
deleteEquipItem(0, 0);
deleteEquipItem(FALSE, FALSE);
}
mNormalSpeed = 0.0f;
field_0x3588 = l_halfAtnWaitBaseAnime;
dComIfGp_getVibration().StartShock(5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER5, 0x1F, cXyz(0.0f, 1.0f, 0.0f));
voiceStart(Z2SE_AL_V_GUARD_BROKEN);
return 1;
}
int daAlink_c::procGuardBreak() {
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
setUpperGuardAnime(-1.0f);
onEndResetFlg0(ERFLG0_UNK_8000000);
field_0x2f99 = 4;
if (checkAnmEnd(temp_r30)) {
if (checkAnmEnd(framectrl)) {
if (checkGuardActionChange() == 0) {
onEndResetFlg1(ERFLG1_UNK_20);
}
checkNextAction(0);
} else if (temp_r30->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
} else if (framectrl->getFrame() > mpHIO->mGuard.m.mGuardBreakAnm.mCancelFrame) {
if (!checkGuardActionChange()) {
onEndResetFlg1(ERFLG1_UNK_20);
}
@@ -518,37 +532,37 @@ int daAlink_c::procGuardBreak() {
}
int daAlink_c::procTurnMoveInit(int param_0) {
BOOL temp_r27 = checkUpperGuardAnime();
fopAc_ac_c* temp_r28 = mTargetedActor;
BOOL isUpperGuardAnime = checkUpperGuardAnime();
fopAc_ac_c* targetedActor = mTargetedActor;
commonProcInit(PROC_TURN_MOVE);
mNormalSpeed = 0.0f;
daAlink_ANM var_r29;
daAlink_ANM anm;
if (param_0 == 2) {
var_r29 = ANM_SIDE_ROLL_LEFT;
anm = ANM_SIDE_ROLL_LEFT;
} else if (param_0 == 3) {
var_r29 = ANM_SIDE_ROLL_RIGHT;
anm = ANM_SIDE_ROLL_RIGHT;
} else if (checkInputOnR()) {
if ((s16)(field_0x2fe2 - shape_angle.y) >= 0) {
var_r29 = ANM_SIDE_ROLL_LEFT;
if ((s16)(mMoveAngle - shape_angle.y) >= 0) {
anm = ANM_SIDE_ROLL_LEFT;
} else {
var_r29 = ANM_SIDE_ROLL_RIGHT;
anm = ANM_SIDE_ROLL_RIGHT;
}
} else {
var_r29 = ANM_SIDE_ROLL_LEFT;
anm = ANM_SIDE_ROLL_LEFT;
}
f32 temp_f31 = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
f32 anm_speed = mpHIO->mGuard.mTurnMove.m.mTurnAnm.mSpeed;
mProcVar1.field_0x300a = mpHIO->mGuard.mTurnMove.m.mMaxTurnSpeed;
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
mProcVar1.field_0x300a = mProcVar1.field_0x300a * mpHIO->mItem.mIronBoots.m.mWaterVelocityX;
}
setSingleAnime(var_r29, temp_f31, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
setSingleAnime(anm, anm_speed, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mStartFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mEndFrame, mpHIO->mGuard.mTurnMove.m.mTurnAnm.mInterpolation);
if (var_r29 == ANM_SIDE_ROLL_LEFT) {
if (anm == ANM_SIDE_ROLL_LEFT) {
mProcVar2.field_0x300c = -0x7FF0;
field_0x2f98 = 2;
} else {
@@ -556,9 +570,9 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x2f98 = 3;
}
if (temp_r28 != NULL) {
cXyz sp8 = current.pos - temp_r28->current.pos;
shape_angle.y = fopAcM_searchActorAngleY(this, temp_r28);
if (targetedActor != NULL) {
cXyz sp8 = current.pos - targetedActor->current.pos;
shape_angle.y = fopAcM_searchActorAngleY(this, targetedActor);
field_0x3478 = sp8.absXZ();
mProcVar3.field_0x300e = sp8.atan2sX_Z();
} else {
@@ -569,7 +583,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x347c = (field_0x3478 - 150.0f) / mProcVar2.field_0x300c;
voiceStart(Z2SE_AL_V_SOTOMO_ROLL);
if (mDemo.getDemoMode() == 0x52) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_82_e) {
mProcVar0.field_0x3008 = 1;
} else {
mProcVar0.field_0x3008 = 0;
@@ -579,7 +593,7 @@ int daAlink_c::procTurnMoveInit(int param_0) {
field_0x2f9d = 4;
dComIfGp_setPlayerStatus0(0, 4);
if (temp_r27 != 0) {
if (isUpperGuardAnime) {
onNoResetFlg0(FLG0_UNK_2);
}
@@ -611,22 +625,22 @@ int daAlink_c::procTurnMove() {
shape_angle.y = mProcVar3.field_0x300e + 0x8000;
mProcVar0.field_0x3008 |= checkCutFinishJumpUp();
daPy_frameCtrl_c* temp_r30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (checkNoResetFlg0(FLG0_UNK_2)) {
setUpperGuardAnime(-1.0f);
}
if (checkAnmEnd(temp_r30)) {
if (checkAnmEnd(framectrl)) {
if (!checkAttentionLock()) {
offNoResetFlg2(FLG2_UNK_8000000);
}
checkNextAction(0);
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
} else if (mProcVar0.field_0x3008 != 0 && !checkNotJumpSinkLimit() && framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTwirlCutDelayF) {
procCutFinishJumpUpInit();
dComIfGp_setPlayerStatus0(0, 4);
} else {
if (temp_r30->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
if (framectrl->getFrame() > mpHIO->mGuard.mTurnMove.m.mTurnAnm.mCancelFrame) {
onModeFlg(4);
if (checkNextAction(1)) {
@@ -634,8 +648,8 @@ int daAlink_c::procTurnMove() {
}
}
if (temp_r30->checkPass(19.0f)) {
dComIfGp_getVibration().StartShock(1, 1, cXyz(0.0f, 1.0f, 0.0f));
if (framectrl->checkPass(19.0f)) {
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER1, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (abs(temp_r29) > 0x100) {
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+29 -28
View File
@@ -18,9 +18,9 @@ void daAlink_c::concatMagneBootInvMtx() {
}
}
void daAlink_c::multVecMagneBootInvMtx(cXyz* vec) {
void daAlink_c::multVecMagneBootInvMtx(cXyz* o_dst) {
if (checkMagneBootsOn()) {
mDoMtx_multVecSR(mMagneBootInvMtx, vec, vec);
mDoMtx_multVecSR(mMagneBootInvMtx, o_dst, o_dst);
}
}
@@ -35,7 +35,7 @@ bool daAlink_c::commonMagneLineCheck(cXyz* i_start, cXyz* i_end) {
}
BOOL daAlink_c::checkBootsMoveAnime(int param_0) {
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) ||
return (checkHeavyStateOn(param_0, 1) && !checkNoResetFlg0(FLG0_WATER_IN_MOVE)) ||
checkDkCaught2Anime();
}
@@ -56,7 +56,7 @@ int daAlink_c::setHeavyBoots(int param_0) {
deleteEquipItem(TRUE, FALSE);
}
if (checkNoResetFlg0(FLG0_UNDERWATER) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE) && !dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
return procSwimWaitInit(0);
}
@@ -92,7 +92,6 @@ int daAlink_c::setHeavyBoots(int param_0) {
return 0;
}
s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
if (param_1 == 1 || (param_1 != 2 && field_0x3114 <= 0x4000 && field_0x3114 != -0x8000)) {
return param_0;
@@ -107,12 +106,12 @@ s16 daAlink_c::getMagneBootsLocalAngleY(s16 param_0, int param_1) {
return vec.atan2sX_Z();
}
void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
cM3dGPla poly;
dComIfG_Bgsp().GetTriPla(*i_polyinfo, &poly);
s16 var_r28 = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
s16 var_r26 = field_0x3116;
int temp_r3_2 = abs(var_r28);
if (temp_r3_2 < 500) {
var_r28 = 0;
@@ -145,16 +144,14 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
cXyz sp44 = mMagneBootsTopVec.outprod(poly.mNormal);
sp44.normalizeZP();
f32 var_f1_2 = JMAFastSqrt(1.0f - temp_f1 * temp_f1);
f32 temp_f1_2 = cM_atan2f(var_f1_2, temp_f1);
f32 temp_f1_2 = cM_atan2f(JMAFastSqrt(1.0f - temp_f1 * temp_f1), temp_f1);
f32 var_f2 = temp_f1_2 * 0.2f;
if (var_f2 > 0.4f) {
var_f2 = 0.4f;
} else if (var_f2 < 0.025f) {
var_f2 = 0.025f;
if (0.025f > temp_f1_2) {
if (var_f2 > temp_f1_2) {
var_f2 = temp_f1_2;
}
}
@@ -167,10 +164,10 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
field_0x3114 = cM_atan2s(sp40.absXZ(), sp40.y);
int temp_r3_4 = abs(field_0x3114);
if (temp_r3_4 < 500) {
temp_r3_2 = abs(field_0x3114);
if (temp_r3_2 < 500) {
field_0x3114 = 0;
} else if (temp_r3_4 > 0x7E0B) {
} else if (temp_r3_2 > 0x7E0B) {
field_0x3114 = -0x8000;
}
@@ -189,7 +186,7 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
s16 angle = sp40.atan2sX_Z();
shape_angle.y += angle;
current.angle.y += angle;
field_0x2fe6 += angle;
mPrevAngleY += angle;
field_0x310c += angle;
}
}
@@ -201,7 +198,6 @@ void daAlink_c::setMagneBootsMtx(cBgS_PolyInfo* i_polyinfo, int param_1) {
mDoMtx_multVec(mMagneBootMtx, &cXyz::BaseY, &mMagneBootsTopVec);
}
int daAlink_c::cancelMagneBootsOn() {
offNoResetFlg0(FLG0_MAGNE_BOOTS_ON);
mZ2Link.setMagnetized(false);
@@ -221,10 +217,10 @@ int daAlink_c::cancelMagneBootsOn() {
current.pos += mMagneBootsTopVec * 100.0f;
mLinkGndChk.SetPos(&current.pos);
f32 gnd_cross = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
f32 ground_y = dComIfG_Bgsp().GroundCross(&mLinkGndChk);
current.pos.y -= 100.0f;
if (gnd_cross > current.pos.y) {
current.pos.y = gnd_cross;
if (ground_y > current.pos.y) {
current.pos.y = ground_y;
}
old.pos = current.pos;
@@ -242,7 +238,6 @@ int daAlink_c::cancelMagneBootsOn() {
return 0;
}
int daAlink_c::checkMagneBootsFly() {
if (field_0x2fb8 != 0 && checkEquipHeavyBoots() && !checkDeadHP() &&
mProcID != PROC_MAGNE_BOOTS_FLY && !checkEventRun())
@@ -291,14 +286,13 @@ int daAlink_c::procBootsEquip() {
onModeFlg(4);
checkNextAction(1);
} else if (frameCtrl_p->getFrame() >= 5.0f) {
field_0x2f92 = 1;
field_0x2f93 = 6;
mLeftHandIndex = 1;
mRightHandIndex = 6;
}
return 1;
}
int daAlink_c::procMagneBootsFlyInit() {
cXyz sp44 = field_0x369c.normZP();
cM3dGPla sp50(&sp44, -sp44.inprod(field_0x3834));
@@ -338,20 +332,27 @@ int daAlink_c::procMagneBootsFlyInit() {
}
field_0x3478 = 0.0f;
field_0x594 = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
mMaxSpeed = mpHIO->mItem.mIronBoots.m.mMaxMagneFlySpeed;
mProcVar2.field_0x300c = 0;
voiceStart(Z2SE_AL_V_MAGNET_CAUGHT);
return 1;
}
int daAlink_c::procMagneBootsFly() {
field_0x3478 += mpHIO->mItem.mIronBoots.m.mMagneFlyAccelRate;
if (field_0x3478 > field_0x594) {
field_0x3478 = field_0x594;
if (field_0x3478 > mMaxSpeed) {
field_0x3478 = mMaxSpeed;
}
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2) && checkEquipHeavyBoots()) {
/* !@bug - If iron boots are unequipped mid-flight, player will still stick to magnetic poly
* Fixed in GCN and Wii KOR versions by adding a checkEquipHeavyBoots check
*/
if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)
#if PLATFORM_GCN || VERSION == VERSION_WII_KOR
&& checkEquipHeavyBoots()
#endif
)
{
if (dComIfG_Bgsp().ChkMoveBG(mPolyInfo2)) {
cXyz old_37c8(field_0x37c8);
dComIfG_Bgsp().MoveBgTransPos(mPolyInfo2, true, &field_0x37c8, NULL, NULL);
@@ -377,7 +378,7 @@ int daAlink_c::procMagneBootsFly() {
cLib_addCalcAngleS(&shape_angle.x, sp24.atan2sY_XZ() + -0x4000, 5, 0x1000, 0x100);
cLib_addCalcAngleS(&shape_angle.y, sp24.atan2sX_Z(), 5, 0x1000, 0x100);
mProcVar2.field_0x300c += 0x1C00;
mProcVar2.field_0x300c += (s16)0x1C00;
}
return 1;
+57 -54
View File
@@ -8,6 +8,8 @@
#include "SSystem/SComponent/c_math.h"
static fopAc_ac_c* daAlink_searchIceLeaf(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_Obj_IceLeaf) {
return i_actor;
}
@@ -19,8 +21,8 @@ bool daAlink_c::checkSnowCode() const {
return mGndPolySpecialCode == dBgW_SPCODE_HEAVY_SNOW || mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW;
}
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_poly) {
int code = dComIfG_Bgsp().GetSpecialCode(i_poly);
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_polyinfo) {
int code = dComIfG_Bgsp().GetSpecialCode(i_polyinfo);
return code == dBgW_SPCODE_HEAVY_SNOW || code == dBgW_SPCODE_LIGHT_SNOW;
}
@@ -47,7 +49,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
for (int i = 0; i < 3; i++) {
if (mAcchCir[i].ChkWallHit() && cLib_distanceAngleS(sp8, mAcchCir[i].GetWallAngleY()) <= 0x2000 && mNormalSpeed > 30.0f) {
setJumpMode();
return procCoLargeDamageInit(-4, 1, 0, 0, NULL, 0);
return procCoLargeDamageInit(-4, TRUE, 0, 0, NULL, 0);
}
}
}
@@ -66,14 +68,14 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
s16 var_r27;
if (mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) {
cM3dGPla poly;
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly);
cM3dGPla tripla;
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &tripla);
mProcVar3.field_0x300e = cM_atan2s(poly.mNormal.absXZ(), poly.mNormal.y);
mProcVar3.field_0x300e = cM_atan2s(tripla.mNormal.absXZ(), tripla.mNormal.y);
if (mProcVar3.field_0x300e == 0) {
var_r27 = shape_angle.y;
} else {
var_r27 = poly.mNormal.atan2sX_Z();
var_r27 = tripla.mNormal.atan2sX_Z();
}
} else {
mProcVar3.field_0x300e = 0;
@@ -82,7 +84,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
if (mProcVar0.field_0x3008 != 0) {
mProcVar0.field_0x3008--;
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
}
f32 var_f30 = 0.0f;
@@ -90,10 +92,10 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
s16 var_r24;
if (checkInputOnR() && i_canMove) {
var_r24 = 1024.0f * field_0x33ac * cM_ssin(mStickAngle);
var_r24 = 1024.0f * mMoveValue * cM_ssin(mStickAngle);
if (temp_r26 > 0x6000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT) {
f32 temp_f29 = field_0x33ac * cM_scos((0x8000 - temp_r26) * 2);
f32 temp_f29 = mMoveValue * cM_scos((0x8000 - temp_r26) * 2);
f32 speed_step = temp_f29;
if (speed_step < 0.15f) {
@@ -178,8 +180,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
f32 temp_f26 = (var_f31 * cM_scos(var_r27)) + (mNormalSpeed * cM_scos(shape_angle.y));
mNormalSpeed = JMAFastSqrt((temp_f27 * temp_f27) + (temp_f26 * temp_f26));
if (mNormalSpeed > field_0x594) {
mNormalSpeed = field_0x594;
if (mNormalSpeed > mMaxSpeed) {
mNormalSpeed = mMaxSpeed;
}
if (mNormalSpeed > 0.1f) {
@@ -203,8 +205,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
setCommonBoardAnime(FALSE);
}
if (mNormalSpeed > (0.7f * field_0x594)) {
cLib_chaseF(&mNormalSpeed, 0.7f * field_0x594, 1.5f);
if (mNormalSpeed > (0.7f * mMaxSpeed)) {
cLib_chaseF(&mNormalSpeed, 0.7f * mMaxSpeed, 1.5f);
}
}
@@ -227,19 +229,27 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
return 0;
}
void daAlink_c::setCommonBoardAnime(BOOL i_is_ride_front) {
void daAlink_c::setCommonBoardAnime(BOOL i_isRideFront) {
// Fakematch, retail should use mpHIO->mItem.mBoard.m.mStandAnmSpeed and mpHIO->mItem.mBoard.m.mStandInterpolation
#if DEBUG
setDoubleAnime(
0.0f,
mpHIO->mItem.mBoard.m.mStandAnmSpeed,
1.0f,
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
11,
mpHIO->mItem.mBoard.m.mStandInterpolation
);
#else
setDoubleAnime(
0.0f,
// Fakematch, should be
// mpHIO->mItem.mBoard.m.mStandAnmSpeed,
daAlinkHIO_board_c0::m.mStandAnmSpeed,
1.0f,
i_is_ride_front ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
i_isRideFront ? ANM_RIDE_FRONT : ANM_RIDE_WAIT, ANM_RIDE_STOP,
11,
// Fakematch, should be
// mpHIO->mItem.mBoard.m.mStandInterpolation
daAlinkHIO_board_c0::m.mStandInterpolation
);
#endif
}
int daAlink_c::checkNextActionBoard() {
@@ -296,7 +306,7 @@ int daAlink_c::procBoardRideInit() {
setHeavyBoots(0);
if (mEquipItem != 0x103) {
deleteEquipItem(1, 1);
deleteEquipItem(TRUE, TRUE);
} else {
offKandelaarModel();
}
@@ -335,7 +345,8 @@ int daAlink_c::procBoardRide() {
return 1;
}
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_boardActor) {
#if PLATFORM_GCN
if (mEquipItem != 0x103) {
deleteEquipItem(TRUE, TRUE);
} else {
@@ -347,23 +358,24 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
if (!checkBoardRide()) {
resetUpperAnime(UPPER_2, -1.0f);
}
#endif
if (checkModeFlg(2) && i_board == NULL) {
if (checkModeFlg(2) && i_boardActor == NULL) {
return procBoardJumpInit(0.0f, TRUE);
}
BOOL prev_ride = mProcID == PROC_BOARD_RIDE;
BOOL is_prev_boardRide = mProcID == PROC_BOARD_RIDE;
if (!commonProcInitNotSameProc(PROC_BOARD_WAIT)) {
return 0;
}
current.angle.y = shape_angle.y;
if (i_board != NULL) {
mRideAcKeep.setData(i_board);
((daObjIceLeaf_c*)i_board)->onRide();
if (i_boardActor != NULL) {
mRideAcKeep.setData(i_boardActor);
((daObjIceLeaf_c*)i_boardActor)->onRide();
if (prev_ride) {
if (is_prev_boardRide) {
f32 speed_ratio = mNormalSpeed / mpHIO->mMove.m.mMaxSpeed;
if (speed_ratio > 1.0f) {
speed_ratio = 1.0f;
@@ -374,13 +386,13 @@ int daAlink_c::procBoardWaitInit(fopAc_ac_c* i_board) {
mNormalSpeed = 0.0f;
}
field_0x594 = mpHIO->mItem.mBoard.m.mMaxSpeed;
mMaxSpeed = mpHIO->mItem.mBoard.m.mMaxSpeed;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
setCommonBoardAnime(FALSE);
}
mRideStatus = 4;
mRideStatus = RIDETYPE_BOARD;
mProcVar5.field_0x3012 = 0;
mProcVar1.field_0x300a = 0;
return 1;
@@ -423,7 +435,7 @@ int daAlink_c::procBoardWait() {
return procBoardCutInit();
} else if (mProcVar5.field_0x3012 == 0) {
if (!checkModeFlg(2) && mProcID != PROC_BOARD_ROW) {
setDoStatus(0xA);
setDoStatus(BUTTON_STATUS_CROUCH);
if (doButton()) {
f32 blend_ratio;
@@ -440,7 +452,7 @@ int daAlink_c::procBoardWait() {
}
} else if (mProcVar5.field_0x3012 != 0) {
if (mNormalSpeed > 15.0f) {
setDoStatus(0x19);
setDoStatus(BUTTON_STATUS_JUMP);
}
if (!doButton()) {
@@ -463,7 +475,7 @@ int daAlink_c::procBoardWait() {
int daAlink_c::procBoardRowInit() {
commonProcInit(PROC_BOARD_ROW);
setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), mpHIO->mItem.mBoard.m.mPushInterpolation);
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
mProcVar0.field_0x3008 = 4;
mProcVar4.field_0x3010 = 1;
mProcVar5.field_0x3012 = 0;
@@ -476,7 +488,7 @@ int daAlink_c::procBoardRow() {
}
if (mProcVar4.field_0x3010 != 0) {
onResetFlg1(RFLG1_UNK_40);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
mProcVar0.field_0x3008 = 4;
}
@@ -492,7 +504,6 @@ int daAlink_c::procBoardRow() {
}
} else if (frame_ctrl->checkPass(7.0f)) {
mNormalSpeed += mpHIO->mItem.mBoard.m.mPushAccel;
if (mNormalSpeed > mpHIO->mItem.mBoard.m.mMaxPushSpeed) {
mNormalSpeed = mpHIO->mItem.mBoard.m.mMaxPushSpeed;
}
@@ -530,7 +541,7 @@ int daAlink_c::procBoardTurn() {
mProcVar1.field_0x300a = 1;
}
} else {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 0x1B58, 0x7D0);
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 5, 7000, 2000);
current.angle.y = shape_angle.y;
if (!checkModeFlg(2)) {
@@ -544,7 +555,7 @@ int daAlink_c::procBoardTurn() {
return 1;
}
int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
int daAlink_c::procBoardJumpInit(f32 i_jumpSpeed, BOOL i_isNoSpeed) {
commonProcInit(PROC_BOARD_JUMP);
mProcVar0.field_0x3008 = 0;
mProcVar5.field_0x3012 = 1;
@@ -554,8 +565,8 @@ int daAlink_c::procBoardJumpInit(f32 i_jump_speed, BOOL i_no_speed_set) {
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame,
mpHIO->mItem.mBoard.m.mAirborneAnm.mInterpolation);
if (!i_no_speed_set) {
speed.y = cLib_minMaxLimit(i_jump_speed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
if (!i_isNoSpeed) {
speed.y = cLib_minMaxLimit(i_jumpSpeed, mpHIO->mItem.mBoard.m.mMinJumpSpeedY, mpHIO->mItem.mBoard.m.mMaxJumpSpeedY);
}
mProcVar4.field_0x3010 = 0;
@@ -588,7 +599,6 @@ int daAlink_c::procBoardSubjectivityInit() {
commonProcBoardInit(PROC_BOARD_SUBJECTIVITY);
setSubjectMode();
setCommonBoardAnime(FALSE);
return 1;
}
@@ -603,7 +613,7 @@ int daAlink_c::procBoardSubjectivity() {
shape_angle.y = old_shape_angle;
if (checkSubjectEnd(1)) {
if (checkSubjectEnd(TRUE)) {
procBoardWaitInit(NULL);
} else {
setRideSubjectAngle(old_angle);
@@ -615,17 +625,10 @@ int daAlink_c::procBoardSubjectivity() {
int daAlink_c::procBoardCutInit() {
commonProcBoardInit(PROC_BOARD_CUT);
bool cut_charge = false;
if (checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE)) {
if (mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration) {
cut_charge = true;
}
}
bool isCutCharge = checkUnderMove0BckNoArc(ANM_RIDE_CUT_TURN_CHARGE) && mUnderFrameCtrl[0].getFrame() > mpHIO->mCut.m.mNormalSwingDuration;
setCommonBoardAnime(FALSE);
setCutDash(1, cut_charge);
setCutDash(1, isCutCharge);
mProcVar5.field_0x3012 = 0;
return 1;
}
@@ -660,7 +663,7 @@ int daAlink_c::procBoardCutTurnInit() {
}
mProcVar5.field_0x3012 = 0;
resetCombo(1);
resetCombo(TRUE);
field_0x3478 = mpHIO->mCut.mCutTurn.m.mAttackRadius;
field_0x347c = 0.5f * field_0x3478;
@@ -680,14 +683,14 @@ int daAlink_c::procBoardCutTurn() {
daPy_frameCtrl_c* frame_ctrl = &mUnderFrameCtrl[0];
if (frame_ctrl->getFrame() >= 4.0f && frame_ctrl->getFrame() < 14.0f) {
if (!checkNoResetFlg0(FLG0_UNK_40)) {
if (!checkNoResetFlg0(FLG0_CUT_AT_FLG)) {
seStartSwordCut(Z2SE_AL_KAITENGIRI);
}
onResetFlg0(RFLG0_UNK_2);
cLib_chaseF(&field_0x347c, field_0x3478, 20.0f);
field_0xFB8.SetR(field_0x347c);
onResetFlg1(RFLG1_UNK_40);
mAtSph.SetR(field_0x347c);
onResetFlg1(RFLG1_BOARD_NO_FOOT_ANGLE);
} else {
mProcVar5.field_0x3012 = 0;
}
+51 -50
View File
@@ -42,10 +42,11 @@ bool daAlink_c::checkIronBallGroundStop() const {
void daAlink_c::setIronBallWaitUpperAnime(int param_0) {
if (!checkIronBallWaitAnime() && !checkIronBallPreSwingAnime() &&
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime())) {
setUpperAnimeBaseSpeed(0x19C, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
(mItemVar0.field_0x3018 == 0 || mItemVar0.field_0x3018 == 8) && (param_0 || checkNoUpperAnime()))
{
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBWAIT_e, mpHIO->mItem.mIronBall.m.mWaitAnmSpeed,
mpHIO->mBasic.m.mBasicInterpolation);
setFacePriBck(0xE8);
setFacePriBck(dRes_ID_ALANM_BCK_FAT_e);
field_0x2f96 = 254;
field_0x2f97 = 5;
mItemVar0.field_0x3018 = 0;
@@ -66,7 +67,7 @@ void daAlink_c::checkIronBallDelete() {
}
}
void daAlink_c::setIronBallReturn(int param_0) {
void daAlink_c::setIronBallReturn(BOOL param_0) {
if (param_0 && field_0x301e != 0) {
field_0x301e--;
} else if (mItemVar0.field_0x3018 != 7) {
@@ -89,8 +90,8 @@ void daAlink_c::setIronBallBgCheckPos() {
void daAlink_c::setIronBallModel() {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModelEnv(loadAramBmd(0x311, 0x2800), 0);
mpItemModelData = loadAramBmd(0x317, 0x1000);
mHeldItemModel = initModelEnv(loadAramBmd(dRes_ID_ALANM_BMD_AL_IB_e, 0x2800), 0);
mpItemModelData = loadAramBmd(dRes_ID_ALANM_BMD_AL_HS_KUSARI_e, 0x1000);
mpHookChain = new hsChainShape_c();
mIronBallChainPos = new cXyz[102];
@@ -113,12 +114,12 @@ void daAlink_c::setIronBallModel() {
mpHookChain->setUserArea((uintptr_t)this);
field_0xFB8.SetAtType(AT_TYPE_IRON_BALL);
field_0xFB8.SetAtHitMark(3);
field_0xFB8.SetAtSe(dCcD_SE_HAMMER);
field_0xFB8.SetAtAtp(2);
field_0xFB8.SetAtMtrl(dCcD_MTRL_NONE);
field_0xFB8.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
mAtSph.SetAtType(AT_TYPE_IRON_BALL);
mAtSph.SetAtHitMark(3);
mAtSph.SetAtSe(dCcD_SE_HAMMER);
mAtSph.SetAtAtp(2);
mAtSph.SetAtMtrl(dCcD_MTRL_NONE);
mAtSph.SetR(mpHIO->mItem.mIronBall.m.mAttackRadius);
csXyz* var_r28 = mIronBallChainAngle;
for (int i = 0; i < 102; i++, var_r28++) {
@@ -158,7 +159,7 @@ void daAlink_c::setIronBallModel() {
field_0x3024 = 0;
field_0x3026 = 0;
field_0x173c.Init(0xDC, 0xFF, this);
field_0x173c.Init(220, 0xFF, this);
field_0x1778.Set(l_sphSrc);
field_0x1778.SetStts(&field_0x173c);
field_0x1778.OffTgSetBit();
@@ -289,11 +290,11 @@ void daAlink_c::setIronBallChainPos() {
*var_r26 = (*var_r29 - sp28C) * mpHIO->mItem.mIronBall.m.mChainSpeedRate;
}
} else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) {
daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (mItemVar0.field_0x3018 == 1) {
f32 temp_f25 = sp30->getEnd() - 13.0f;
f32 temp_f29 = (sp30->getFrame() - 13.0f) / temp_f25;
f32 temp_f25 = framectrl->getEnd() - 13.0f;
f32 temp_f29 = (framectrl->getFrame() - 13.0f) / temp_f25;
s16 sp12 = -16384.0f - (14336.0f * temp_f29);
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
@@ -310,7 +311,7 @@ void daAlink_c::setIronBallChainPos() {
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp268, &sp298);
sp38 = 2.0f * (1.0f + sp30->getFrame());
sp38 = 2.0f * (1.0f + framectrl->getFrame());
} else {
sp38 = -1;
}
@@ -448,8 +449,9 @@ BOOL daAlink_c::checkIronBallReturnChange() {
if (mProcID != PROC_IRON_BALL_THROW ||
(!(mBodyAngle.x > 0x400) && mIronBallBgChkPos.y < (current.pos.y - 200.0f)) ||
(mBodyAngle.x > 0x400 && mItemMode == 0x64) ||
(field_0xFB8.ChkAtHit() && field_0xFB8.GetAtHitGObj() != NULL &&
static_cast<dCcD_GObjInf*>(field_0xFB8.GetAtHitGObj())->ChkTgIronBallRebound())) {
(mAtSph.ChkAtHit() && mAtSph.GetAtHitGObj() != NULL &&
static_cast<dCcD_GObjInf*>(mAtSph.GetAtHitGObj())->ChkTgIronBallRebound()))
{
setIronBallReturn(0);
return true;
}
@@ -465,7 +467,7 @@ void daAlink_c::setIronBallPos() {
cXyz spDC;
cXyz spD0(mIronBallCenterPos);
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xF));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(15));
mDoMtx_stack_c::transM(-1.0f, -6.0f, -3.6f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(150.0f), cM_deg2s(-81.0f), cM_deg2s(111.0f));
@@ -478,7 +480,7 @@ void daAlink_c::setIronBallPos() {
mDoMtx_stack_c::multVecZero(&mHeldItemRootPos);
mDoMtx_MtxToRot(mDoMtx_stack_c::get(), &field_0x316c);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(9), &sp10C);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(0xE), &sp100);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(14), &sp100);
spE8 = (sp10C + sp100) * 0.5f;
@@ -494,12 +496,12 @@ void daAlink_c::setIronBallPos() {
cXyz spC4;
cXyz spB8;
if (field_0xFB8.ChkAtHit()) {
if (mAtSph.ChkAtHit()) {
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
}
if (mItemVar0.field_0x3018 == 0) {
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0xA));
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(10));
mDoMtx_stack_c::transM(-35.3f, -9.5f, -16.0f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(61.5f), cM_deg2s(-2.5f), cM_deg2s(50.3f));
mDoMtx_stack_c::multVecZero(mIronBallChainPos);
@@ -513,8 +515,8 @@ void daAlink_c::setIronBallPos() {
mItemMode = 6;
} else if (mItemVar0.field_0x3018 != 1) {
if (mItemVar0.field_0x3018 == 2) {
daPy_frameCtrl_c* temp_r24 = &mUpperFrameCtrl[2];
s16 sp10 = 32768.0f - (65536.0f * (temp_r24->getFrame() / temp_r24->getEnd()));
daPy_frameCtrl_c* framectrl = &mUpperFrameCtrl[2];
s16 sp10 = 32768.0f - (65536.0f * (framectrl->getFrame() / framectrl->getEnd()));
mItemMode = 3;
@@ -570,13 +572,13 @@ void daAlink_c::setIronBallPos() {
spF4 = *mIronBallChainPos - mHookshotTopPos;
f32 temp_f1 = spF4.abs();
BOOL var_r26 = 0;
BOOL var_r26 = FALSE;
if (temp_f1 > 1000.0f) {
spF4 *= 1000.0f / temp_f1;
*mIronBallChainPos = mHookshotTopPos + spF4;
if (field_0x3848->abs2() < 1.0f) {
var_r26 = 1;
var_r26 = TRUE;
} else {
field_0x3848->x = 0.0f;
field_0x3848->z = 0.0f;
@@ -811,14 +813,14 @@ BOOL daAlink_c::checkIronBallAnime() const {
void daAlink_c::setIronBallReadyAnime() {
resetUpperAnime(UPPER_2, -1.0f);
setSingleAnime(ANM_IRONBALL_ATTACK, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, 0.0f,
0x15, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
setUpperAnimeBaseSpeed(0x19A, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
21, mpHIO->mItem.mIronBall.m.mPrepareInterpolation);
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_IBTHROW_e, mpHIO->mItem.mIronBall.m.mPrepareAnmSpeed, -1.0f);
mNowAnmPackUpper[2].setRatio(0.0f);
voiceStart(Z2SE_AL_V_SWING_IB);
field_0xFB8.OffAtSetBit();
field_0xFB8.ResetAtHit();
field_0xFB8.SetAtAtp(2);
mAtSph.OffAtSetBit();
mAtSph.ResetAtHit();
mAtSph.SetAtAtp(2);
field_0x301e = 10;
field_0x3020 = 0;
@@ -845,13 +847,12 @@ BOOL daAlink_c::checkUpperItemActionIronBall() {
return procIronBallThrowInit();
}
if (frameCtrl->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl)) {
if (checkModeFlg(1)) {
setSingleAnimeBaseSpeed(ANM_IRONBALL_TURN, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
}
u16 upperId = getMainBckData(ANM_IRONBALL_TURN)->m_upperID;
setUpperAnimeBaseSpeed(upperId, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
setUpperAnimeBaseSpeed(getMainBckData(ANM_IRONBALL_TURN)->m_upperID, mpHIO->mItem.mIronBall.m.mTurnAnmSpeed, mpHIO->mItem.mIronBall.m.mTurnInterpolation);
mItemVar0.field_0x3018 = 2;
seStartOnlyReverb(Z2SE_AL_IB_SWING);
return 1;
@@ -912,7 +913,7 @@ int daAlink_c::procIronBallSubjectInit() {
int daAlink_c::procIronBallSubject() {
if (checkIronBallAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -943,13 +944,13 @@ int daAlink_c::procIronBallMoveInit() {
int daAlink_c::procIronBallMove() {
if (checkIronBallAnime()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
if (!checkNextAction(0)) {
f32 var_f31 = -1.0f;
f32 morf = -1.0f;
if (checkIronBallPreSwingAnime()) {
mNormalSpeed = 0.0f;
@@ -960,7 +961,7 @@ int daAlink_c::procIronBallMove() {
if (field_0x2f98 != 2) {
field_0x2f98 = 2;
var_f31 = mpHIO->mBasic.m.mBasicInterpolation;
morf = mpHIO->mBasic.m.mBasicInterpolation;
}
} else {
offModeFlg(1);
@@ -969,7 +970,7 @@ int daAlink_c::procIronBallMove() {
if (checkModeFlg(1)) {
setIronBallBaseAnime();
} else {
setBlendAtnMoveAnime(var_f31);
setBlendAtnMoveAnime(morf);
}
setBodyAngleXReadyAnime(0);
@@ -992,12 +993,12 @@ int daAlink_c::procIronBallThrowInit() {
voiceStart(Z2SE_AL_V_THROW_IB);
seStartOnlyReverb(Z2SE_AL_IB_THROW);
field_0xFB8.SetAtAtp(3);
mAtSph.SetAtAtp(3);
return 1;
}
int daAlink_c::procIronBallThrow() {
daPy_frameCtrl_c* temp_r29 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (mEquipItem != fpcNm_ITEM_IRONBALL) {
return checkWaitAction();
@@ -1009,16 +1010,16 @@ int daAlink_c::procIronBallThrow() {
return procIronBallReturnInit();
}
if (mItemVar0.field_0x3018 == 4 && temp_r29->checkPass(6.0f)) {
if (mItemVar0.field_0x3018 == 4 && framectrl->checkPass(6.0f)) {
mItemVar0.field_0x3018 = 5;
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
Vec sp8 = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
mDoMtx_stack_c::multVec(&sp8, field_0x3848);
Vec throwVec = {0.0f, mpHIO->mItem.mIronBall.m.mThrowSpeedY, mpHIO->mItem.mIronBall.m.mThrowSpeedZ};
mDoMtx_stack_c::multVec(&throwVec, field_0x3848);
field_0x3022 = 0;
}
if (checkAnmEnd(temp_r29)) {
if (checkAnmEnd(framectrl)) {
if (mProcVar2.field_0x300c == 0) {
mProcVar2.field_0x300c = 1;
setSingleAnimeBaseSpeed(ANM_IRONBALL_THROW, mpHIO->mItem.mIronBall.m.mThrowAnmSpeed, mpHIO->mItem.mIronBall.m.mThrowInterpolation);
@@ -1028,9 +1029,9 @@ int daAlink_c::procIronBallThrow() {
procIronBallReturnInit();
}
} else if (mProcVar2.field_0x300c != 0) {
if (temp_r29->getFrame() >= 5.0f) {
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
if (framectrl->getFrame() >= 5.0f) {
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
}
@@ -1070,7 +1071,7 @@ int daAlink_c::procIronBallReturn() {
seStartOnlyReverb(Z2SE_AL_IB_CATCH);
dComIfGp_getVibration().StartShock(3, 1, cXyz(0.0f, 1.0f, 0.0f));
} else if (frameCtrl->checkAnmEnd()) {
} else if (checkAnmEnd(frameCtrl)) {
if (mItemVar0.field_0x3018 == 8) {
mItemVar0.field_0x3018 = 0;
setIronBallWaitUpperAnime(1);
+34 -33
View File
@@ -11,6 +11,8 @@
#include "SSystem/SComponent/c_math.h"
static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_TAG_LANTERN) {
return i_actor;
}
@@ -19,10 +21,11 @@ static fopAc_ac_c* daAlink_searchTagKandelaar(fopAc_ac_c* i_actor, void* i_data)
}
static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
daAlink_c* player_p = daAlink_getAlinkActorClass();
if (fopAcM_GetName(i_actor) == PROC_Tag_KtOnFire &&
i_actor->current.pos.abs2(player_p->current.pos) < 22500.0f &&
i_actor->current.pos.abs2(player_p->current.pos) < SQUARE(150.0f) &&
fopAcM_seenActorAngleY(player_p, i_actor) < 0x3000)
{
return i_actor;
@@ -34,7 +37,7 @@ static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* i_data)
void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
if (mpKanteraModel != NULL) {
if (checkNoResetFlg2(FLG2_UNK_1)) {
deleteEquipItem(0, 1);
deleteEquipItem(FALSE, TRUE);
}
onEndResetFlg1(ERFLG1_UNK_4);
@@ -51,7 +54,6 @@ void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
}
BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
f32 tmp_65 = 65.0f; // tmp can be removed with literals
f32 base_y_pos;
if (checkModeFlg(0x40)) {
base_y_pos = mRightFootPos.y;
@@ -59,7 +61,7 @@ BOOL daAlink_c::checkWaterInKandelaarOffset(f32 param_0) {
base_y_pos = current.pos.y;
}
return param_0 > tmp_65 + base_y_pos;
return param_0 > 65.0f + base_y_pos;
}
void daAlink_c::checkWaterInKandelaar(f32 param_0) {
@@ -74,7 +76,7 @@ void daAlink_c::checkWaterInKandelaar(f32 param_0) {
}
void daAlink_c::offKandelaarModel() {
offNoResetFlg2(FLG2_UNK_10000001);
offNoResetFlg2(daPy_FLG2(FLG2_KANDELAAR_LIGHT_OFF | FLG2_UNK_1));
mZ2Link.setKanteraState(0);
}
@@ -111,7 +113,7 @@ int daAlink_c::kandelaarModelCallBack() {
mDoMtx_stack_c::multVec(&sp38, &sp38);
s16 var_r28 = cLib_minMaxLimit<s16>(cM_atan2s(-sp38.z, -sp38.y), -0x1800, 0x1800);
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt((sp38.y * sp38.y) + (sp38.z * sp38.z))), -0x1800, 0x1800);
s16 var_r27 = cLib_minMaxLimit<s16>(cM_atan2s(sp38.x, JMAFastSqrt(SQUARE(sp38.y) + SQUARE(sp38.z))), -0x1800, 0x1800);
mDoMtx_stack_c::transS(sp44);
if (mProcID != PROC_OPEN_TREASURE && (mProcID != PROC_GET_ITEM || mProcVar4.field_0x3010 == 0)) {
@@ -124,10 +126,10 @@ int daAlink_c::kandelaarModelCallBack() {
field_0x3618 = (mKandelaarFlamePos - field_0x3624) * 0.9f;
if (!checkEndResetFlg1(ERFLG1_UNK_8)) {
f32 temp_f31 = JMAFastSqrt((J3DSys::mCurrentMtx[0][0] * J3DSys::mCurrentMtx[0][0]) + (J3DSys::mCurrentMtx[1][0] * J3DSys::mCurrentMtx[1][0]) + (J3DSys::mCurrentMtx[2][0] * J3DSys::mCurrentMtx[2][0]));
f32 scale = JMAFastSqrt(SQUARE(J3DSys::mCurrentMtx[0][0]) + SQUARE(J3DSys::mCurrentMtx[1][0]) + SQUARE(J3DSys::mCurrentMtx[2][0]));
mDoMtx_stack_c::transS(J3DSys::mCurrentMtx[0][3], J3DSys::mCurrentMtx[1][3], J3DSys::mCurrentMtx[2][3]);
mDoMtx_stack_c::ZXYrotM(var_r28, var_r29, var_r27);
mDoMtx_stack_c::scaleM(temp_f31, temp_f31, temp_f31);
mDoMtx_stack_c::scaleM(scale, scale, scale);
mpKanteraModel->setAnmMtx(1, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
@@ -136,7 +138,9 @@ int daAlink_c::kandelaarModelCallBack() {
return 1;
}
static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
static int daAlink_kandelaarModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
if (param_1 == 0) {
@@ -147,7 +151,7 @@ static int daAlink_kandelaarModelCallBack(J3DJoint* param_0, int param_1) {
}
cXyz* daAlink_c::getKandelaarFlamePos() {
if ((!checkNoResetFlg2((daPy_FLG2)0x20001) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
if ((!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_20000 | FLG2_UNK_1)) && !checkEndResetFlg1(ERFLG1_UNK_4)) ||
checkWolf() || !checkNoResetFlg1(FLG1_UNK_80))
{
return NULL;
@@ -157,7 +161,7 @@ cXyz* daAlink_c::getKandelaarFlamePos() {
}
BOOL daAlink_c::checkKandelaarEquipAnime() const {
return checkUpperAnime(0x264) || checkUpperAnime(0x268);
return checkUpperAnime(dRes_ID_ALANM_BCK_WAITHK_e) || checkUpperAnime(dRes_ID_ALANM_BCK_WAITK_e);
}
void daAlink_c::preKandelaarDraw() {
@@ -179,14 +183,14 @@ void daAlink_c::preKandelaarDraw() {
mDoLib_project(&mKandelaarFlamePos, &proj);
camera_class* camera_p = dComIfGp_getCamera(0);
f32 var_f3;
f32 trimHeight;
if (camera_p != NULL) {
var_f3 = camera_p->mCamera.TrimHeight();
trimHeight = camera_p->mCamera.TrimHeight();
} else {
var_f3 = 0.0f;
trimHeight = 0.0f;
}
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > var_f3 && proj.y < FB_HEIGHT - var_f3) {
if (proj.x > 0.0f && proj.x < FB_WIDTH && proj.y > trimHeight && proj.y < FB_HEIGHT - trimHeight) {
dComIfGd_peekZ(proj.x, proj.y, &field_0x32c8);
} else {
field_0x32c8 = 0;
@@ -210,7 +214,7 @@ void daAlink_c::setKandelaarModel() {
if (!checkNoResetFlg2(FLG2_UNK_1)) {
onNoResetFlg2(FLG2_UNK_1);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(field_0x30c0), &mKandelaarFlamePos);
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(mLeftItemJntNo), &mKandelaarFlamePos);
mKandelaarFlamePos.y -= 30.0f;
field_0x3630 = field_0x3624;
@@ -227,7 +231,6 @@ void daAlink_c::setKandelaarModel() {
mZ2Link.setKanteraState(1);
}
void daAlink_c::resetOilBottleModel() {
deleteEquipItem(FALSE, TRUE);
@@ -270,7 +273,7 @@ int daAlink_c::commonKandelaarPour(int param_0) {
current_anm = mUnderAnmHeap[0].getIdx();
}
onNoResetFlg2(FLG2_UNK_10000000);
onNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
if (current_anm == getMainBckData(ANM_OIL_BOTTLE_POUR_START)->m_underID) {
if (checkAnmEnd(frameCtrl_p)) {
@@ -310,14 +313,13 @@ int daAlink_c::commonKandelaarPour(int param_0) {
resetOilBottleModel();
resetSpecialEvent();
offNoResetFlg2(FLG2_UNK_10000000);
offNoResetFlg2(FLG2_KANDELAAR_LIGHT_OFF);
return 1;
}
return 0;
}
void daAlink_c::initKandelaarSwing() {
if (mEquipItem == fpcNm_ITEM_KANTERA) {
if (dComIfGs_getOil() != 0) {
@@ -328,19 +330,19 @@ void daAlink_c::initKandelaarSwing() {
}
voiceStart(Z2SE_AL_V_SWING_BOTTLE);
field_0xFB8.ResetAtHit();
mAtSph.ResetAtHit();
if (!checkEventRun()) {
dComIfGp_setItemOilCount(-mpHIO->mItem.mLantern.m.mShakeOilLoss);
}
field_0xFB8.OffAtSetBit();
field_0xFB8.SetR(50.0f);
field_0xFB8.SetAtType(AT_TYPE_LANTERN_SWING);
field_0xFB8.SetAtHitMark(0);
field_0xFB8.SetAtSe(dCcD_SE_NONE);
field_0xFB8.SetAtAtp(0);
field_0xFB8.SetAtMtrl(dCcD_MTRL_FIRE);
mAtSph.OffAtSetBit();
mAtSph.SetR(50.0f);
mAtSph.SetAtType(AT_TYPE_LANTERN_SWING);
mAtSph.SetAtHitMark(0);
mAtSph.SetAtSe(dCcD_SE_NONE);
mAtSph.SetAtAtp(0);
mAtSph.SetAtMtrl(dCcD_MTRL_FIRE);
}
int daAlink_c::procKandelaarSwingInit() {
@@ -383,17 +385,16 @@ int daAlink_c::procKandelaarSwingInit() {
return 1;
}
int daAlink_c::procKandelaarSwing() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x27) {
if (checkAnmEnd(frameCtrl_p)) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
checkNextAction(0);
}
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != 0x27) {
} else if (frameCtrl_p->getFrame() > field_0x3478 && mDemo.getDemoMode() != daPy_demo_c::DEMO_KANDELAAR_SWING_e) {
onModeFlg(4);
checkNextAction(1);
}
@@ -402,7 +403,7 @@ int daAlink_c::procKandelaarSwing() {
}
int daAlink_c::procKandelaarPourInit() {
if (!dComIfGp_event_compulsory(this, 0, 0xFBFF)) {
if (!dComIfGp_event_compulsory(this, NULL, 0xFBFF)) {
return 0;
}
+45 -38
View File
@@ -63,38 +63,39 @@ int daAlink_c::checkSubjectAction() {
return 0;
}
s16 daAlink_c::checkBodyAngleX(s16 param_0) {
s16 daAlink_c::checkBodyAngleX(s16 i_angle) {
if (checkWolf() || mProcID == PROC_PEEP_SUBJECTIVITY || mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
return param_0;
return i_angle;
}
Vec sp2C = { 0.0f, 0.0f, 0.0f };
sp2C.y = 0.5f * field_0x598;
f32 var_f31 = 0.5f * mHeight;
sp2C.y = var_f31;
cXyz sp20;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp20);
cXyz sp14;
cXyz backbone1_pos;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &backbone1_pos);
cXyz check_pos;
if (param_0 >= 0) {
if (i_angle >= 0) {
sp2C.z = 25.0f;
} else {
sp2C.z = -25.0f;
}
mDoMtx_stack_c::transS(sp20);
mDoMtx_stack_c::transS(backbone1_pos);
concatMagneBootMtx();
mDoMtx_stack_c::ZXYrotM(param_0, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp2C, &sp14);
mDoMtx_stack_c::ZXYrotM(i_angle, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp2C, &check_pos);
if (commonLineCheck(&sp20, &sp14)) {
cXyz sp8 = sp14 - mLinkLinChk.GetCross();
multVecMagneBootInvMtx(&sp8);
if (commonLineCheck(&backbone1_pos, &check_pos)) {
cXyz dist = check_pos - mLinkLinChk.GetCross();
multVecMagneBootInvMtx(&dist);
current.pos.x -= sp8.x;
current.pos.z -= sp8.z;
current.pos.x -= dist.x;
current.pos.z -= dist.z;
}
return param_0;
return i_angle;
}
BOOL daAlink_c::setBodyAngleToCamera() {
@@ -105,7 +106,7 @@ BOOL daAlink_c::setBodyAngleToCamera() {
s16 sp8;
if (checkInputOnR()) {
f32 var_f31 = 512.0f * field_0x33ac * field_0x33ac;
f32 var_f31 = 512.0f * mMoveValue * mMoveValue;
if (checkWolfEyeUp()) {
var_f31 *= 0.6f;
}
@@ -160,11 +161,11 @@ BOOL daAlink_c::subjectCancelTrigger() {
return false;
}
int daAlink_c::checkSubjectEnd(BOOL i_playSound) {
setDoStatus(0x12);
BOOL daAlink_c::checkSubjectEnd(BOOL i_isPlaySe) {
setDoStatus(BUTTON_STATUS_BACK);
if (checkEventRun() || checkEquipAnime() || doTrigger() || checkSetItemTrigger(fpcNm_ITEM_HAWK_EYE) || subjectCancelTrigger() || checkEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL) || dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x2000)) {
if (i_playSound) {
if (i_isPlaySe) {
seStartSystem(Z2SE_SUBJ_VIEW_OUT);
}
@@ -180,7 +181,8 @@ void daAlink_c::searchPeepObj(fopAc_ac_c* i_actor, void* i_data) {
f32 var_f31 = current.pos.abs2(i_actor->current.pos);
if (var_f31 < field_0x3478) {
field_0x3478 = var_f31;
*(fopAc_ac_c**)i_data = i_actor;
fopAc_ac_c** var_r29 = (fopAc_ac_c**)i_data;
*var_r29 = i_actor;
}
}
}
@@ -195,7 +197,7 @@ int daAlink_c::procCoSubjectivityInit() {
mNormalSpeed = 0.0f;
setSubjectMode();
field_0x2fe6 = shape_angle.y;
mPrevAngleY = shape_angle.y;
if (checkWolf()) {
setSingleAnimeWolfBaseSpeed(WANM_WAIT, 0.0f, 3.0f);
@@ -310,7 +312,7 @@ int daAlink_c::procCoPeepSubjectivity() {
mPeepExitID = peep->getSceneListID();
}
if (dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
if (dComIfGp_event_compulsory(this, NULL, 0xFFFF)) {
startPeepChange();
}
}
@@ -319,45 +321,45 @@ int daAlink_c::procCoPeepSubjectivity() {
}
u32 daAlink_c::checkBoardRide() const {
return mRideStatus == 4;
return mRideStatus == RIDETYPE_BOARD;
}
u32 daAlink_c::checkCanoeRide() const {
return mRideStatus == 3;
return mRideStatus == RIDETYPE_CANOE;
}
u32 daAlink_c::checkHorseRide() const {
return mRideStatus == 1;
return mRideStatus == RIDETYPE_HORSE;
}
MtxP daAlink_c::getLeftItemMatrix() {
return mpLinkModel->getAnmMtx(field_0x30c0);
return mpLinkModel->getAnmMtx(mLeftItemJntNo);
}
u32 daAlink_c::checkBoarRide() const {
return mRideStatus == 2;
return mRideStatus == RIDETYPE_BOAR;
}
u32 daAlink_c::checkSpinnerRide() const {
return mRideStatus == 5;
return mRideStatus == RIDETYPE_SPINNER;
}
MtxP daAlink_c::getLeftHandMatrix() {
return mpLinkModel->getAnmMtx(field_0x30b8);
return mpLinkModel->getAnmMtx(mLeftHandJntNo);
}
MtxP daAlink_c::getRightHandMatrix() {
return mpLinkModel->getAnmMtx(field_0x30ba);
return mpLinkModel->getAnmMtx(mRightHandJntNo);
}
void daAlink_c::onSceneChangeArea(u8 exitID, u8 exitDirection, fopAc_ac_c* scexAc) {
mExitID = exitID;
mExitDirection = exitDirection;
mpScnChg = (daScex_c*)scexAc;
void daAlink_c::onSceneChangeArea(u8 i_exitID, u8 i_exitDirection, fopAc_ac_c* i_scexAc) {
mExitID = i_exitID;
mExitDirection = i_exitDirection;
mpScnChg = (daScex_c*)i_scexAc;
}
MtxP daAlink_c::getRightItemMatrix() {
return mpLinkModel->getAnmMtx(field_0x30c2);
return mpLinkModel->getAnmMtx(mRightItemJntNo);
}
u32 daAlink_c::checkPlayerNoDraw() {
@@ -366,5 +368,10 @@ u32 daAlink_c::checkPlayerNoDraw() {
}
daAlink_c::daAlink_c()
: mAnmHeap3(0), mAnmHeap4(0), mFaceBtpHeap(0x800), mFaceBtkHeap(0x400), mFaceBckHeap(0xC00),
mAnmHeap9(0x800) {}
: mAnmHeap3(0),
mAnmHeap4(0),
mFaceBtpHeap(0x800),
mFaceBtkHeap(0x400),
mFaceBckHeap(0xC00),
mAnmHeap9(0x800)
{}
+12 -13
View File
@@ -84,7 +84,6 @@ bool daAlink_c::checkSpinnerTriggerAttack() {
return false;
}
void daAlink_c::setSpinnerSyncPos() {
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
@@ -150,8 +149,8 @@ int daAlink_c::procSpinnerReady() {
return 1;
}
void daAlink_c::setSpinnerStatus(u8 status, u8 flag) {
dComIfGp_setDoStatus(status, flag);
void daAlink_c::setSpinnerStatus(u8 i_status, u8 i_flag) {
dComIfGp_setDoStatus(i_status, i_flag);
}
int daAlink_c::procSpinnerWaitInit() {
@@ -159,7 +158,7 @@ int daAlink_c::procSpinnerWaitInit() {
return 0;
}
mRideStatus = 5;
mRideStatus = RIDETYPE_SPINNER;
setBgCheckParam();
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed, 4.0f);
speed.y = 0.0f;
@@ -177,12 +176,12 @@ int daAlink_c::procSpinnerWaitInit() {
return 1;
}
int daAlink_c::procSpinnerWait() {
daSpinner_c* spinner = (daSpinner_c*)mRideAcKeep.getActor();
if (spinner == NULL || spinner->getDeleteFlg() || checkWindSpeedOnXZ() ||
checkEndResetFlg1(ERFLG1_UNK_1) || checkEndResetFlg0(ERFLG0_UNK_2)) {
checkEndResetFlg1(ERFLG1_NS_SCREAM) || checkEndResetFlg0(ERFLG0_FORCE_WOLF_CHANGE))
{
mNormalSpeed = 0.0f;
setJumpMode();
return procFallInit(1, mpHIO->mAutoJump.m.mFallInterpolation);
@@ -200,7 +199,7 @@ int daAlink_c::procSpinnerWait() {
spinner->setMove(mNormalSpeed, getSpinnerRideMoveTime());
} else if (checkInputOnR()) {
int direction = getDirectionFromAngle(mStickAngle);
s16 angle = field_0x33ac * 384.0f * field_0x33ac;
s16 angle = mMoveValue * 384.0f * mMoveValue;
if (direction == DIR_LEFT) {
shape_angle.y += angle;
@@ -226,10 +225,10 @@ int daAlink_c::procSpinnerWait() {
if (spinner->checkPathMoveNow() == NULL) {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RIDE);
setSpinnerStatus(ACTION_STR_ATTACK, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_ATTACK, BUTTON_STATUS_FLAG_NONE);
} else {
seStartOnlyReverbLevel(Z2SE_AL_SPINNER_RAIL);
setSpinnerStatus(ACTION_STR_JUMP2, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_UNK_101, BUTTON_STATUS_FLAG_NONE);
}
mNormalSpeed = spinner->speedF;
@@ -237,7 +236,7 @@ int daAlink_c::procSpinnerWait() {
if (spinner->checkSpinnerTagIntoIncRot()) {
mProcVar5.field_0x3012 = 1;
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
@@ -247,9 +246,9 @@ int daAlink_c::procSpinnerWait() {
}
} else if (spinner->checkSpinnerTagInto()) {
if (mProcVar5.field_0x3012 != 0) {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_CONTINUATION);
} else {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
setSpinnerStatus(BUTTON_STATUS_SPIN, BUTTON_STATUS_FLAG_NONE);
}
if ((field_0x3198 == ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) ||
@@ -276,7 +275,7 @@ int daAlink_c::procSpinnerWait() {
mpHIO->mItem.mBoard.m.mAirborneAnm.mEndFrame, -1.0f);
mProcVar4.field_0x3010 = 1;
}
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && checkAnmEnd(frameCtrl)) ||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
setSingleAnimeBaseSpeed(ANM_RIDE_CROUCH, mpHIO->mItem.mBoard.m.mSitAnmSpeed,
mpHIO->mItem.mBoard.m.mSitInterpolation);
+149 -142
View File
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkSumouVsActor() {
return false;
}
if (mSpecialMode == 0xD || mSpecialMode == 0xB || mSpecialMode == 0xC || mSpecialMode == 0xE) {
if (mMode == 0xD || mMode == 0xB || mMode == 0xC || mMode == 0xE) {
procSumouWinLoseInit();
return false;
}
@@ -27,15 +27,15 @@ BOOL daAlink_c::checkSumouVsActor() {
void daAlink_c::cancelSumouMode() {
mCargoCarryAcKeep.clearData();
mSpecialMode = 0;
mMode = 0;
}
BOOL daAlink_c::sumouPunchTrigger() {
return itemTriggerCheck(BTN_B);
return swordTrigger();
}
void daAlink_c::setSumouPunchStatus() {
setBStatus(ACTION_STR_SLAP);
setBStatus(BUTTON_STATUS_SLAP);
}
int daAlink_c::procSumouReadyInit() {
@@ -49,7 +49,7 @@ int daAlink_c::procSumouReadyInit() {
field_0x3588 = l_waitBaseAnime;
field_0x34d4 = field_0x3588;
field_0x2f99 = 4;
mSpecialMode = 1;
mMode = 1;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
deleteEquipItem(FALSE, TRUE);
@@ -68,9 +68,9 @@ int daAlink_c::procSumouReady() {
return 1;
}
if (mSpecialMode == 2 || mSpecialMode == 3 || mSpecialMode == 4) {
if (mMode == 2 || mMode == 3 || mMode == 4) {
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
if (doTrigger()) {
@@ -85,20 +85,20 @@ int daAlink_c::procSumouReady() {
if (mUnderAnmHeap[0].getIdx() == getMainBckData(ANM_SUMOU_HAKEYOI)->m_underID &&
mUnderFrameCtrl[0].checkPass(7.0f))
{
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
if (mSpecialMode == 3) {
if (mMode == 3) {
setSingleAnimeBase(ANM_SUMOU_HAKEYOI);
field_0x2f99 = 12;
mSpecialMode = 4;
mMode = 4;
dComIfGp_clearPlayerStatus0(0, 0x2000);
} else if (checkAnmEnd(mUnderFrameCtrl)) {
if (checkInputOnR()) {
s16 temp_r29 = (s16)(field_0x2fe2 - shape_angle.y);
s16 temp_r29 = (s16)(mMoveAngle - shape_angle.y);
int var_r30 = abs(temp_r29);
cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
cLib_distanceAngleS(mMoveAngle, shape_angle.y);
if (var_r30 > 0x800 && var_r30 < 0x7800) {
mNormalSpeed = 1.0f;
@@ -111,10 +111,9 @@ int daAlink_c::procSumouReady() {
}
}
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || mProcVar2.field_0x300c != 0 ||
if (mMode == 0x1C || mMode == 0x1B || mProcVar2.field_0x300c != 0 ||
mProcVar3.field_0x300e != 0 ||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() ==
3 &&
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
!checkZeroSpeedF()))
{
procSumouActionInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e, 0);
@@ -126,7 +125,6 @@ int daAlink_c::procSumouReady() {
return 1;
}
int daAlink_c::procSumouMoveInit() {
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
commonProcInit(PROC_SUMOU_MOVE);
@@ -135,30 +133,36 @@ int daAlink_c::procSumouMoveInit() {
field_0x3478 = 1000.0f;
daAlink_ANM anm;
if (mSpecialMode == 15 || mSpecialMode == 16) {
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
} else {
if (mMode == 15 || mMode == 16) {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE_WAIT;
} else {
anm = ANM_SUMOU_TACKLE_WAIT_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_WAIT_GORON : ANM_SUMOU_TACKLE_WAIT;
#endif
setSingleAnimeBase(anm);
mSpeedModifier = 1.0f;
mSpecialMode = 7;
mMode = 7;
mProcVar2.field_0x300c = 0xFFFF;
mProcVar0.field_0x3008 = 10;
field_0x3478 = 5.0f;
field_0x32cc = Z2SE_AL_V_SUMO_PUSH;
} else {
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE_STAGGER;
} else {
anm = ANM_SUMOU_TACKLE_STAGGER_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_TACKLE_STAGGER_GORON : ANM_SUMOU_TACKLE_STAGGER;
#endif
setSingleAnimeBase(anm);
mSpeedModifier = -1.0f;
mSpecialMode = 8;
mMode = 8;
mProcVar2.field_0x300c = 10;
mProcVar0.field_0x3008 = 15;
field_0x2f9d = 0x60;
@@ -174,7 +178,6 @@ int daAlink_c::procSumouMoveInit() {
return 1;
}
int daAlink_c::procSumouMove() {
field_0x2f99 = 4;
@@ -190,7 +193,7 @@ int daAlink_c::procSumouMove() {
voiceStart(field_0x32cc);
}
if (mSpecialMode == 9 || mSpecialMode == 10) {
if (mMode == 9 || mMode == 10) {
if (mProcVar1.field_0x300a != 0) {
mProcVar1.field_0x300a--;
}
@@ -202,7 +205,7 @@ int daAlink_c::procSumouMove() {
}
f32 var_f1;
if (mSpecialMode == 10 && mProcVar1.field_0x300a == 0) {
if (mMode == 10 && mProcVar1.field_0x300a == 0) {
var_f1 = 1.5f;
} else {
var_f1 = 0.2f;
@@ -210,11 +213,11 @@ int daAlink_c::procSumouMove() {
cLib_chaseF(&sp8, var_f1, 0.3f);
frameCtrl_p->setRate(sp8);
} else if (mSpecialMode == 9) {
} else if (mMode == 9) {
cLib_chaseF(&sp8, 1.5f, 0.3f);
} else {
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
mSpecialMode = 0x23;
mMode = 0x23;
mSpeedModifier = 0.0f;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
@@ -240,26 +243,30 @@ int daAlink_c::procSumouMove() {
dMeter2Info_onBlinkButton(1);
if (mSpecialMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
if (mMode == 0x24 || (mSpeedModifier < 0.0f && mProcVar2.field_0x300c == 0)) {
mProcVar3.field_0x300e = 1;
field_0x2f99 = 12;
if (mSpeedModifier > 0.0f) {
daAlink_ANM anm;
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_PULL_BACK_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_PULL_BACK;
} else {
anm = ANM_SUMOU_PULL_BACK_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_PULL_BACK_GORON : ANM_SUMOU_PULL_BACK;
#endif
setSingleAnimeBase(anm);
mSpecialMode = 0x24;
mMode = 0x24;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_PUSHED_BACK;
field_0x3198 = anm;
} else {
setSingleAnimeBase(ANM_SUMOU_PUSH_BACK);
mSpecialMode = 0x23;
mMode = 0x23;
field_0x3478 = 13.0f;
field_0x32cc = Z2SE_AL_V_SUMO_HOLD_BACK;
field_0x3198 = ANM_SUMOU_PUSH_BACK;
@@ -272,7 +279,7 @@ int daAlink_c::procSumouMove() {
if (mSpeedModifier > 0.0f && checkInputOnR()) {
int direction = getDirectionFromAngle(mStickAngle);
if (direction == DIR_LEFT || direction == DIR_RIGHT) {
var_r31 = field_0x33ac * (mpHIO->mPushpull.m.mSumoRotationAngle * field_0x33ac);
var_r31 = mMoveValue * (mpHIO->mPushpull.m.mSumoRotationAngle * mMoveValue);
if (direction == DIR_RIGHT) {
var_r31 = -var_r31;
@@ -311,18 +318,17 @@ int daAlink_c::procSumouMove() {
return 1;
}
int daAlink_c::procSumouSideMoveInit() {
commonProcInit(PROC_SUMOU_SIDE_MOVE);
mSpecialMode = 0x16;
mMode = 0x16;
field_0x2f98 = 3;
current.angle.y = shape_angle.y + -0x4000;
field_0x594 = mpHIO->mAtnMove.m.mMaxSpeed;
mMaxSpeed = mpHIO->mAtnMove.m.mMaxSpeed;
setSingleAnimeBase(ANM_SUMOU_FIGHT_WAIT);
field_0x3198 = 0x141;
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
field_0x2f99 = 12;
@@ -353,8 +359,8 @@ int daAlink_c::procSumouSideMove() {
current.angle.y = shape_angle.y + 0x4000;
}
int temp_r30_2 = cLib_distanceAngleS(field_0x2fe2, shape_angle.y);
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
int temp_r30_2 = cLib_distanceAngleS(mMoveAngle, shape_angle.y);
if (mMode == 0x1C || mMode == 0x1B || doTrigger() || sumouPunchTrigger() ||
(static_cast<daNpcWrestler_c*>(mCargoCarryAcKeep.getActor())->getWrestlerAction() == 3 &&
!checkZeroSpeedF()))
{
@@ -362,12 +368,12 @@ int daAlink_c::procSumouSideMove() {
}
setSumouPunchStatus();
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
dComIfGp_setAdvanceDirection(5);
f32 var_f1;
if (checkInputOnR() && temp_r30_2 > 0x800 && temp_r30_2 < 0x7800) {
if (abs((s16)(field_0x2fe2 - current.angle.y)) > 0x4000) {
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
current.angle.y += 0x8000;
mNormalSpeed *= -1.0f;
@@ -378,8 +384,8 @@ int daAlink_c::procSumouSideMove() {
}
}
if (field_0x33ac > (1.0f - fabsf(mNormalSpeed / field_0x594)) * 0.3f) {
var_f1 = mpHIO->mAtnMove.m.mAcceleration * field_0x33ac;
if (mMoveValue > (1.0f - fabsf(mNormalSpeed / mMaxSpeed)) * 0.3f) {
var_f1 = mpHIO->mAtnMove.m.mAcceleration * mMoveValue;
} else {
var_f1 = 0.0f;
}
@@ -391,7 +397,7 @@ int daAlink_c::procSumouSideMove() {
if (checkZeroSpeedF()) {
onModeFlg(1);
mSpecialMode = 0x16;
mMode = 0x16;
field_0x2f98 = 3;
current.angle.y = shape_angle.y - 0x4000;
@@ -417,13 +423,15 @@ int daAlink_c::procSumouSideMove() {
mSpeedModifier = 1.0f;
}
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
if (field_0x2f98 == 3) {
mSpecialMode = 0x18;
mMode = 0x18;
} else {
mSpecialMode = 0x17;
mMode = 0x17;
}
mUnderFrameCtrl[0].setRate(mNormalSpeed / field_0x594);
framectrl->setRate(mNormalSpeed / mMaxSpeed);
initBasAnime();
field_0x2f9d = 0x60;
}
@@ -431,8 +439,8 @@ int daAlink_c::procSumouSideMove() {
return 1;
}
int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int unused) {
int daAlink_c::procSumouActionInit(BOOL i_isDoTrigger, BOOL i_isPunchTrigger, int unused) {
UNUSED(unused);
commonProcInit(PROC_SUMOU_ACTION);
daNpcWrestler_c* wrestler_p = (daNpcWrestler_c*)mCargoCarryAcKeep.getActor();
@@ -440,100 +448,94 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
mProcVar5.field_0x3012 = 0;
daAlink_ANM anm;
if (mSpecialMode == 0x21) {
mSpecialMode = 0x22;
if (mMode == 0x21) {
mMode = 0x22;
anm = ANM_SUMOU_PUNCH_SHOCK;
} else if (mSpecialMode == 0x1C) {
i_doTrigger = FALSE;
i_punchTrigger = FALSE;
mSpecialMode = 0x1E;
} else if (mMode == 0x1C) {
i_isDoTrigger = FALSE;
i_isPunchTrigger = FALSE;
mMode = 0x1E;
if (!checkZeroSpeedF()) {
daAlink_ANM var_r0;
if (field_0x2f98 == 2) {
var_r0 = ANM_SUMOU_FIGHT_STEP_LEFT;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
} else {
var_r0 = ANM_SUMOU_FIGHT_STEP_RIGHT;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
}
anm = var_r0;
mProcVar5.field_0x3012 = 1;
} else {
anm = ANM_SUMOU_PUNCH_SHOCK;
}
} else if (mSpecialMode == 0x1B) {
i_doTrigger = FALSE;
i_punchTrigger = FALSE;
mSpecialMode = 0x1D;
} else if (mMode == 0x1B) {
i_isDoTrigger = FALSE;
i_isPunchTrigger = FALSE;
mMode = 0x1D;
anm = ANM_SUMOU_TACKLE_SHOCK;
} else if (wrestler_action == 2) {
if (i_doTrigger) {
mSpecialMode = 0x10;
if (i_isDoTrigger) {
mMode = 0x10;
anm = ANM_SUMOU_DODGE_TACKLE;
} else if (i_punchTrigger) {
mSpecialMode = 0x15;
} else if (i_isPunchTrigger) {
mMode = 0x15;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
} else {
mSpecialMode = 0x1E;
mMode = 0x1E;
if (!checkZeroSpeedF()) {
daAlink_ANM var_r0_2;
if (field_0x2f98 == 2) {
var_r0_2 = ANM_SUMOU_FIGHT_STEP_LEFT;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
} else {
var_r0_2 = ANM_SUMOU_FIGHT_STEP_RIGHT;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
}
anm = var_r0_2;
mProcVar5.field_0x3012 = 1;
} else {
anm = ANM_SUMOU_PUNCH_SHOCK;
}
}
} else if (wrestler_action == 3) {
if (i_doTrigger) {
mSpecialMode = 0x12;
if (i_isDoTrigger) {
mMode = 0x12;
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
} else if (i_punchTrigger) {
mSpecialMode = 0x14;
} else if (i_isPunchTrigger) {
mMode = 0x14;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK;
} else if (!checkZeroSpeedF()) {
if (field_0x2f98 == 3) {
mSpecialMode = 0x1A;
mMode = 0x1A;
anm = ANM_SUMOU_FIGHT_STEP_RIGHT;
} else {
mSpecialMode = 0x19;
mMode = 0x19;
anm = ANM_SUMOU_FIGHT_STEP_LEFT;
}
} else {
mSpecialMode = 0x1D;
mMode = 0x1D;
anm = ANM_SUMOU_TACKLE_SHOCK;
}
} else if (wrestler_action == 1) {
if (i_doTrigger) {
mSpecialMode = 0x11;
if (i_isDoTrigger) {
mMode = 0x11;
anm = ANM_SUMOU_TACKLE_MISS;
} else {
mSpecialMode = 0x13;
mMode = 0x13;
anm = ANM_SUMOU_PUNCH;
}
} else if (wrestler_p->getWrestlerType() != 0 && !checkEquipHeavyBoots()) {
if (i_doTrigger) {
mSpecialMode = 0x12;
if (i_isDoTrigger) {
mMode = 0x12;
anm = ANM_SUMOU_TACKLE_SHOCK_RETURN;
} else {
mSpecialMode = 0x15;
mMode = 0x15;
anm = ANM_SUMOU_PUNCH_MISS_SHOCK_RETURN;
}
} else if (i_doTrigger) {
mSpecialMode = 0xF;
} else if (i_isDoTrigger) {
mMode = 0xF;
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_TACKLE;
} else {
anm = ANM_SUMOU_TACKLE_GORON;
}
} else {
mSpecialMode = 0x13;
mMode = 0x13;
anm = ANM_SUMOU_PUNCH;
}
@@ -541,19 +543,19 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
mDoMtx_stack_c::YrotM(shape_angle.y);
mProcVar3.field_0x300e = 0x82;
if (mSpecialMode == 0x19) {
if (mMode == 0x19) {
dComIfGp_setAdvanceDirection(1);
mProcVar4.field_0x3010 = shape_angle.y - 0x2800;
field_0x2f98 = 2;
} else if (mSpecialMode == 0x1A) {
} else if (mMode == 0x1A) {
field_0x2f98 = 3;
dComIfGp_setAdvanceDirection(4);
mProcVar4.field_0x3010 = shape_angle.y + 0x2800;
} else if (i_doTrigger) {
setDoStatusEmphasys(0x15);
} else if (i_isDoTrigger) {
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
mProcVar3.field_0x300e = 0x15;
field_0x2f98 = 4;
} else if (i_punchTrigger) {
} else if (i_isPunchTrigger) {
setSumouPunchStatus();
mProcVar3.field_0x300e = 0x44;
field_0x2f98 = 4;
@@ -567,13 +569,13 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
field_0x2f98 = 4;
}
f32 var_f31;
f32 anm_frame;
if ((anm == ANM_SUMOU_FIGHT_STEP_RIGHT || anm == ANM_SUMOU_FIGHT_STEP_LEFT) &&
mUnderAnmHeap[0].getIdx() != (getMainBckData(anm)->m_underID & 0xFFF))
{
var_f31 = mUnderFrameCtrl[0].getFrame();
anm_frame = mUnderFrameCtrl[0].getFrame();
} else {
var_f31 = 0.0f;
anm_frame = 0.0f;
}
mProcVar2.field_0x300c = 0;
@@ -587,8 +589,8 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
}
setSingleAnime(anm, 1.0f, 0.0f, end_frame, 3.0f);
mUnderFrameCtrl[0].setFrame(var_f31);
getNowAnmPackUnder(UNDER_0)->setFrame(var_f31);
mUnderFrameCtrl[0].setFrame(anm_frame);
getNowAnmPackUnder(UNDER_0)->setFrame(anm_frame);
cLib_addCalcAngleS(&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos),
@@ -634,7 +636,6 @@ int daAlink_c::procSumouActionInit(BOOL i_doTrigger, BOOL i_punchTrigger, int un
return 1;
}
int daAlink_c::procSumouAction() {
field_0x2f99 = 4;
@@ -650,11 +651,11 @@ int daAlink_c::procSumouAction() {
mProcVar2.field_0x300c++;
if (mSpecialMode == 0x1C || mSpecialMode == 0x1B) {
if (mMode == 0x1C || mMode == 0x1B) {
return procSumouActionInit(FALSE, FALSE, 0);
}
if (mSpecialMode == 0x19 || mSpecialMode == 0x1A) {
if (mMode == 0x19 || mMode == 0x1A) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
current.angle.y = shape_angle.y;
@@ -664,20 +665,20 @@ int daAlink_c::procSumouAction() {
procSumouSideMoveInit();
}
} else {
if (mSpecialMode == 0x13) {
if (mMode == 0x13) {
cLib_addCalcAngleS(
&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
0x2000, 0x800);
current.angle.y = shape_angle.y;
} else if (mSpecialMode == 0x1E && mProcVar5.field_0x3012 != 0) {
} else if (mMode == 0x1E && mProcVar5.field_0x3012 != 0) {
cLib_addCalcAngleS(&shape_angle.y, mProcVar4.field_0x3010, 2, 0x400, 0x40);
current.angle.y = shape_angle.y;
current.pos.set(field_0x37c8.x - field_0x3478 * cM_ssin(current.angle.y),
field_0x37c8.y,
field_0x37c8.z - field_0x3478 * cM_scos(current.angle.y));
} else if (mSpecialMode == 0x1E || mSpecialMode == 0x1D) {
} else if (mMode == 0x1E || mMode == 0x1D) {
cLib_addCalcAngleS(
&shape_angle.y,
cLib_targetAngleY(&current.pos, &mCargoCarryAcKeep.getActor()->current.pos), 2,
@@ -686,18 +687,18 @@ int daAlink_c::procSumouAction() {
}
if (mProcVar3.field_0x300e == 0x15) {
setDoStatusEmphasys(0x15);
setDoStatusEmphasys(BUTTON_STATUS_GRAB);
} else if (mProcVar3.field_0x300e == 0x44) {
setSumouPunchStatus();
}
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (checkAnmEnd(frameCtrl_p)) {
if (mSpecialMode == 0x1E) {
if (mMode == 0x1E) {
procSumouStaggerInit();
} else if (mSpecialMode == 0x12 || mSpecialMode == 0x22 || mSpecialMode == 0x13 ||
mSpecialMode == 0x1A || mSpecialMode == 0x19 || mSpecialMode == 0x11 ||
mSpecialMode == 0x15)
} else if (mMode == 0x12 || mMode == 0x22 || mMode == 0x13 ||
mMode == 0x1A || mMode == 0x19 || mMode == 0x11 ||
mMode == 0x15)
{
procSumouSideMoveInit();
} else {
@@ -725,14 +726,13 @@ int daAlink_c::procSumouAction() {
return 1;
}
int daAlink_c::procSumouStaggerInit() {
commonProcInit(PROC_SUMOU_STAGGER);
if (mSpecialMode == 0x11) {
mSpecialMode = 0x20;
if (mMode == 0x11) {
mMode = 0x20;
} else {
mSpecialMode = 0x1F;
mMode = 0x1F;
}
setSingleAnimeBase(ANM_SUMOU_STAGGER);
@@ -750,8 +750,8 @@ int daAlink_c::procSumouStagger() {
}
mProcVar0.field_0x3008--;
if (mSpecialMode == 0x1C || mSpecialMode == 0x21 || mSpecialMode == 0x1B) {
procSumouActionInit(0, 0, 0);
if (mMode == 0x1C || mMode == 0x21 || mMode == 0x1B) {
procSumouActionInit(FALSE, FALSE, 0);
} else if (mProcVar0.field_0x3008 == 0) {
procSumouSideMoveInit();
}
@@ -760,7 +760,7 @@ int daAlink_c::procSumouStagger() {
}
int daAlink_c::procSumouWinLoseInit() {
if (mSpecialMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
if (mMode == 0xB && mUnderFrameCtrl[0].getAttribute() == 2) {
cancelSumouMode();
return procWaitInit();
}
@@ -770,15 +770,20 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x3478 = 1000.0f;
daAlink_ANM anm = ANM_WAIT;
if (mSpecialMode == 0xB) {
if (mMode == 0xB) {
mProcVar2.field_0x300c = 1;
} else if (mSpecialMode == 0xD) {
} else if (mMode == 0xD) {
field_0x2f99 = 12;
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_WIN_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_WIN;
} else {
anm = ANM_SUMOU_WIN_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_WIN_GORON : ANM_SUMOU_WIN;
#endif
setSingleAnimeBase(anm);
mProcVar2.field_0x300c = 1;
@@ -787,7 +792,7 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x3198 = 13;
} else {
f32 start_frame;
if (mSpecialMode == 12) {
if (mMode == 12) {
start_frame = 24.0f;
voiceStart(Z2SE_AL_V_SUMO_FALL_LOSE);
} else {
@@ -796,11 +801,15 @@ int daAlink_c::procSumouWinLoseInit() {
field_0x32cc = Z2SE_AL_V_SUMO_FALL_LOSE;
}
if (wrestler_p->getWrestlerType() != 0) {
anm = ANM_SUMOU_LOSE_GORON;
} else {
#if VERSION == VERSION_SHIELD_DEBUG // probably a fakematch
if (wrestler_p->getWrestlerType() == 0) {
anm = ANM_SUMOU_LOSE;
} else {
anm = ANM_SUMOU_LOSE_GORON;
}
#else
anm = wrestler_p->getWrestlerType() != 0 ? ANM_SUMOU_LOSE_GORON : ANM_SUMOU_LOSE;
#endif
setSingleAnime(anm, 1.0f, start_frame, -1, 3.0f);
field_0x2f99 = 15;
@@ -818,7 +827,6 @@ int daAlink_c::procSumouWinLoseInit() {
return 1;
}
int daAlink_c::procSumouWinLose() {
if (mProcVar3.field_0x300e == 0) {
if (mProcVar2.field_0x300c != 0) {
@@ -844,7 +852,7 @@ int daAlink_c::procSumouWinLose() {
field_0x3478 = 1000.0f;
field_0x3198 = ANM_SUMOU_KNOCKED_DOWN;
}
} else if (mProcVar3.field_0x300e == 0 && mSpecialMode == 0x25) {
} else if (mProcVar3.field_0x300e == 0 && mMode == 0x25) {
setSingleAnimeBase(ANM_SUMOU_GET_UP);
mProcVar3.field_0x300e = 1;
field_0x3478 = 1000.0f;
@@ -860,7 +868,6 @@ int daAlink_c::procSumouWinLose() {
return 1;
}
int daAlink_c::procSumouShikoInit() {
if (!commonProcInitNotSameProc(PROC_SUMOU_SHIKO)) {
return 0;
@@ -872,10 +879,10 @@ int daAlink_c::procSumouShikoInit() {
field_0x34d4 = field_0x3588;
field_0x2f99 = 12;
mProcVar2.field_0x300c = 0;
mSpecialMode = 0;
mMode = 0;
setFootEffectProcType(5);
deleteEquipItem(0, 1);
deleteEquipItem(FALSE, TRUE);
return 1;
}
@@ -885,7 +892,7 @@ int daAlink_c::procSumouShiko() {
field_0x2f99 = 4;
}
if (mSpecialMode == 1) {
if (mMode == 1) {
return procSumouReadyInit();
}
@@ -899,8 +906,8 @@ int daAlink_c::procSumouShiko() {
} else if (frameCtrl_p->checkPass(65.0f)) {
voiceStart(Z2SE_AL_V_SUMO_SHIKO);
} else if (frameCtrl_p->checkPass(9.0f)) {
field_0x2f92 = 0xFE;
field_0x2f93 = 0xFE;
mLeftHandIndex = 0xFE;
mRightHandIndex = 0xFE;
}
} else {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
+183 -177
View File
@@ -17,7 +17,7 @@ BOOL daAlink_c::checkAcceptUseItemInWater(u16 i_itemNo) const {
void daAlink_c::swimDeleteItem() {
if (!checkHookshotItem(mEquipItem) && (mEquipItem != 0x103 || !checkBootsOrArmorHeavy())) {
deleteEquipItem(1, 1);
deleteEquipItem(TRUE, TRUE);
}
if (checkNoResetFlg2(FLG2_UNK_1)) {
@@ -54,23 +54,21 @@ f32 daAlink_c::getSwimMaxFallSpeed() const {
}
void daAlink_c::checkOxygenTimer() {
BOOL hide_timer;
BOOL is_hide_timer;
if (!checkNoResetFlg0(FLG0_SWIM_UP) ||
(checkModeFlg(MODE_SWIMMING) && mWaterY > 5.0f + current.pos.y))
{
hide_timer = false;
is_hide_timer = false;
} else {
hide_timer = true;
is_hide_timer = true;
}
if (dComIfGp_getOxygenShowFlag()) {
if (checkZoraWearAbility()) {
offOxygenTimer();
} else if (hide_timer) {
s32 max = dComIfGp_getMaxOxygen();
dComIfGp_setOxygenCount(max);
} else if (is_hide_timer) {
dComIfGp_setOxygenCount(dComIfGp_getMaxOxygen());
if (field_0x2fbe < 90) {
field_0x2fbe++;
} else {
@@ -79,7 +77,7 @@ void daAlink_c::checkOxygenTimer() {
} else if (!checkEventRun()) {
dComIfGp_setOxygenCount(-1);
}
} else if (!hide_timer && !checkZoraWearAbility()) {
} else if (!is_hide_timer && !checkZoraWearAbility()) {
if (field_0x2fbe != 0) {
field_0x2fbe--;
} else {
@@ -91,19 +89,19 @@ void daAlink_c::checkOxygenTimer() {
void daAlink_c::offOxygenTimer() {
dComIfGp_offOxygenShowFlag();
s32 max = dComIfGp_getMaxOxygen();
dComIfGp_setOxygen(max);
dComIfGp_setOxygen(dComIfGp_getMaxOxygen());
field_0x2fbe = 90;
}
BOOL daAlink_c::checkPossibleWaterInMode() const {
return checkModeFlg(MODE_VINE_CLIMB) || dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
return checkModeFlg(MODE_VINE_CLIMB) ||
dComIfGp_checkPlayerStatus1(0, 0x2000000) ||
mProcID == PROC_HOOKSHOT_FLY;
}
void daAlink_c::setWaterInAnmRate(daPy_frameCtrl_c* i_frameCtrl, f32 i_rate) {
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
if (checkZoraWearAbility()) {
i_rate *= mpHIO->mItem.mIronBoots.m.mZoraWaterAnmSpeed;
} else {
@@ -121,24 +119,24 @@ void daAlink_c::swimBgCheck(f32 param_0) {
return;
}
cXyz start_pos(current.pos);
cXyz end_pos;
cXyz linechk_start(current.pos);
cXyz linechk_end;
s16 var_r29;
if (getZoraSwim()) {
var_r29 = field_0x3080;
} else {
var_r29 = mProcVar2.field_0x300c;
start_pos.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
linechk_start.y += mpHIO->mWolf.mWlWallHang.m.mAutoWalkHeight;
}
f32 var_f28 = param_0 * cM_scos(var_r29);
end_pos.set(start_pos.x + (var_f28 * cM_ssin(shape_angle.y)),
start_pos.y - param_0 * cM_ssin(var_r29),
start_pos.z + (var_f28 * cM_scos(shape_angle.y)));
linechk_end.set(linechk_start.x + (var_f28 * cM_ssin(shape_angle.y)),
linechk_start.y - param_0 * cM_ssin(var_r29),
linechk_start.z + (var_f28 * cM_scos(shape_angle.y)));
if (!commonLineCheck(&start_pos, &end_pos)) {
if (!commonLineCheck(&linechk_start, &linechk_end)) {
return;
}
@@ -148,12 +146,9 @@ void daAlink_c::swimBgCheck(f32 param_0) {
if (cBgW_CheckBWall(tri.mNormal.y) &&
(mProcID != PROC_METAMORPHOSE || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7))
{
cXyz sp14 = end_pos - mLinkLinChk.GetCross();
f32 temp_f1 = sp14.absXZ();
cXyz sp14 = linechk_end - mLinkLinChk.GetCross();
s16 var_r28 = sp14.atan2sX_Z();
f32 var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
f32 var_f29 = -temp_f1 * var_f26;
f32 var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
f32 var_f31 = var_f29 * tri.mNormal.x;
f32 var_f30 = var_f29 * tri.mNormal.z;
@@ -165,21 +160,18 @@ void daAlink_c::swimBgCheck(f32 param_0) {
onNoResetFlg1(FLG1_UNK_20000000);
}
start_pos.x -= var_f31;
start_pos.z -= var_f30;
end_pos.x -= var_f31;
end_pos.z -= var_f30;
linechk_start.x -= var_f31;
linechk_start.z -= var_f30;
linechk_end.x -= var_f31;
linechk_end.z -= var_f30;
if (commonLineCheck(&start_pos, &end_pos)) {
if (commonLineCheck(&linechk_start, &linechk_end)) {
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tri);
if (cBgW_CheckBWall(tri.mNormal.y)) {
sp14 = end_pos - mLinkLinChk.GetCross();
temp_f1 = sp14.absXZ();
sp14 = linechk_end - mLinkLinChk.GetCross();
var_r28 = sp14.atan2sX_Z();
var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
var_f29 = -temp_f1 * var_f26;
var_f29 = -sp14.absXZ() * cM_scos(sp14.atan2sX_Z() - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
var_f31 += var_f29 * tri.mNormal.x;
var_f30 += var_f29 * tri.mNormal.z;
@@ -193,35 +185,36 @@ void daAlink_c::swimBgCheck(f32 param_0) {
}
void daAlink_c::setSpeedAndAngleSwim() {
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == 0 && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == BUTTON_STATUS_NONE && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
if (checkZoraWearAbility()) {
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
if (field_0x2fcd == 0) {
setDoStatus(0x41);
setDoStatus(BUTTON_STATUS_DIVE);
}
} else {
setDoStatus(0x4C);
setDoStatus(BUTTON_STATUS_SWIM);
}
} else if (!checkNoResetFlg0(FLG0_SWIM_UP)) {
setDoStatus(0x97);
setDoStatus(BUTTON_STATUS_UNK_151);
} else if (mProcID == PROC_SWIM_MOVE && checkUnderMove0BckNoArc(ANM_SWIM_A) && field_0x30d0 == 0 && field_0x30d2 == 0) {
setDoStatus(9);
setDoStatus(BUTTON_STATUS_DASH);
}
}
f32 var_f31;
f32 var_f30;
s16 temp_r29;
if (mProcID == PROC_SWIM_HOOKSHOT_MOVE && !checkHookshotWait()) {
var_f30 = 0.0f;
} else if (checkZoraSwimMove()) {
s16 temp_r29 = shape_angle.y;
temp_r29 = shape_angle.y;
if (mTargetedActor != NULL && current.pos.abs2XZ(mTargetedActor->eyePos) > 22500.0f) {
setShapeAngleToAtnActor(0);
} else if (checkInputOnR()) {
s16 var_r28;
if (checkEventRun()) {
var_r28 = field_0x2fe2;
var_r28 = mMoveAngle;
} else {
var_r28 = shape_angle.y + (16384.0f * cM_ssin(mStickAngle));
}
@@ -230,24 +223,24 @@ void daAlink_c::setSpeedAndAngleSwim() {
}
current.angle.y = shape_angle.y;
var_f30 = 3.0f * cM_scos((shape_angle.y - temp_r29));
var_f30 = 3.0f * cM_scos(shape_angle.y - temp_r29);
} else if (!checkAttentionLock()) {
if (checkInputOnR()) {
s16 temp_r29_2 = shape_angle.y;
temp_r29 = shape_angle.y;
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
} else {
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
cLib_addCalcAngleS(&shape_angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
}
f32 var_f29;
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
var_f29 = 1.0f;
} else {
var_f29 = field_0x33a8;
var_f29 = mStickValue;
}
var_f30 = 3.0f * var_f29 * cM_scos((shape_angle.y - temp_r29_2));
var_f30 = 3.0f * var_f29 * cM_scos(shape_angle.y - temp_r29);
cLib_addCalcAngleS(&current.angle.y, shape_angle.y, 2, 0x2000, 0x1000);
} else {
var_f30 = 0.0f;
@@ -266,17 +259,17 @@ void daAlink_c::setSpeedAndAngleSwim() {
}
if (checkZeroSpeedF()) {
current.angle.y = field_0x2fe2;
current.angle.y = mMoveAngle;
}
s16 temp_r29_3 = current.angle.y;
temp_r29 = current.angle.y;
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
cLib_addCalcAngleS(&current.angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
cLib_addCalcAngleS(&current.angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
} else {
cLib_addCalcAngleS(&current.angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
cLib_addCalcAngleS(&current.angle.y, mMoveAngle, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
}
var_f30 = mpHIO->mSwim.m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3));
var_f30 = mpHIO->mSwim.m.mAcceleration * mStickValue * cM_scos((s16)(current.angle.y - temp_r29));
} else {
var_f30 = 0.0f;
}
@@ -322,7 +315,7 @@ int daAlink_c::checkNextActionSwim() {
field_0x3000 = 30;
}
if ((checkZoraWearAbility() && !checkHeavyStateOn(1, 1)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
if ((checkZoraWearAbility() && !checkHeavyStateOn(TRUE, TRUE)) || checkNoResetFlg0(FLG0_SWIM_UP)) {
setTalkStatus();
}
@@ -333,7 +326,7 @@ int daAlink_c::checkNextActionSwim() {
if (mAttList != NULL && mAttList->mType == fopAc_attn_ETC_e && checkNoResetFlg0(FLG0_SWIM_UP) &&
fopAcM_GetName(field_0x27f4) == PROC_CANOE)
{
setDoStatus(0x17);
setDoStatus(BUTTON_STATUS_GET_ON);
if (doTrigger()) {
return procCanoeRideInit();
@@ -362,9 +355,15 @@ int daAlink_c::checkSwimAction(int param_0) {
var_f31 = mpHIO->mSwim.m.mStartHeight;
}
if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && !checkModeFlg(0x40000) && mProcID != PROC_MAGNE_BOOTS_FLY && ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0) && mDemo.getDemoMode() != 0x11) {
f32 var_f28;
if (checkNoResetFlg0(FLG0_UNK_80)
&& !checkNoResetFlg0(FLG0_WATER_IN_MOVE)
&& !checkModeFlg(0x40000)
&& mProcID != PROC_MAGNE_BOOTS_FLY
&& ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0)
&& mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK_17_e)
{
f32 var_f29;
f32 var_f28;
f32 var_f30;
if (checkWolf()) {
@@ -393,14 +392,14 @@ int daAlink_c::checkSwimAction(int param_0) {
offNoResetFlg0(FLG0_SWIM_UP);
mZ2Link.setInWater(true);
field_0x594 = var_f29;
mMaxSpeed = var_f29;
if (!param_0) {
mNormalSpeed *= 0.75f;
}
if (mNormalSpeed >= field_0x594) {
mNormalSpeed = field_0x594;
if (mNormalSpeed >= mMaxSpeed) {
mNormalSpeed = mMaxSpeed;
}
swimDeleteItem();
@@ -421,7 +420,7 @@ int daAlink_c::checkSwimAction(int param_0) {
}
if (checkModeFlg(2) && !checkPossibleWaterInMode()) {
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 1, cXyz(0.0f, 1.0f, 0.0f));
current.pos.y = var_f30 + var_f31;
speed.y = 0.75f * field_0x3528.y;
@@ -433,15 +432,15 @@ int daAlink_c::checkSwimAction(int param_0) {
if (checkWolf()) {
if (checkNoResetFlg2(FLG2_UNK_8)) {
daAlink_WANM var_r29;
daAlink_WANM anm;
if (cM_rnd() < 0.5f) {
var_r29 = WANM_FLING_LEFT;
anm = WANM_FLING_LEFT;
onNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
} else {
var_r29 = WANM_FLING_RIGHT;
anm = WANM_FLING_RIGHT;
offNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
}
setWolfEnemyThrowUpperAnime(var_r29, 0.0f);
setWolfEnemyThrowUpperAnime(anm, 0.0f);
}
return procWolfSwimWaitInit(1);
@@ -460,7 +459,7 @@ int daAlink_c::checkSwimAction(int param_0) {
}
if (checkBootsOrArmorHeavy() || checkPossibleWaterInMode()) {
onNoResetFlg0(FLG0_UNDERWATER);
onNoResetFlg0(FLG0_WATER_IN_MOVE);
return 0;
}
@@ -541,7 +540,7 @@ int daAlink_c::checkSwimUpAction() {
} else {
current.pos.y = mLinkAcch.GetGroundH();
mLinkAcch.SetGroundHit();
onNoResetFlg0(FLG0_UNDERWATER);
onNoResetFlg0(FLG0_WATER_IN_MOVE);
procLandInit(0.0f);
field_0x2f99 = 0x90;
return 1;
@@ -559,12 +558,14 @@ int daAlink_c::checkSwimUpAction() {
}
void daAlink_c::swimOutAfter(int param_0) {
UNUSED(param_0);
onNoResetFlg0(FLG0_SWIM_UP);
onEndResetFlg1(ERFLG1_UNK_100);
mZ2Link.setInWater(false);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
} else {
field_0x2b98 = 0.0f;
field_0x2f98 = 4;
@@ -630,12 +631,11 @@ int daAlink_c::checkSwimOutAction() {
}
void daAlink_c::setSwimMoveAnime() {
daPy_frameCtrl_c* temp_r28 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* temp_r27 = &mUpperFrameCtrl[2];
daPy_frameCtrl_c* framectrl_under0 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl_upper2 = &mUpperFrameCtrl[2];
f32 var_f31;
f32 temp_f25 = temp_r28->getEnd();
f32 var_f26 = temp_r28->getFrame() * temp_f25;
f32 var_f26 = framectrl_under0->getFrame() * framectrl_under0->getEnd();
if (field_0x3000 != 0 && !checkHookshotAnime()) {
field_0x2f98 = 4;
@@ -650,9 +650,9 @@ void daAlink_c::setSwimMoveAnime() {
field_0x2f98 = 0;
}
daAlink_ANM var_r29;
BOOL var_r26 = 1;
BOOL var_r25 = 0;
daAlink_ANM anm = (daAlink_ANM)field_0x3198;
BOOL var_r26 = TRUE;
BOOL var_r25 = FALSE;
if (field_0x2f98 == 4) {
f32 temp_f29 = mpHIO->mSwim.m.mUnderwaterMaxSpeed + mpHIO->mSwim.m.mUnderwaterButtonAdditionalSpeed;
@@ -660,12 +660,12 @@ void daAlink_c::setSwimMoveAnime() {
field_0x3478 = mpHIO->mSwim.m.mUnderwaterMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed;
if (field_0x594 < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
field_0x594 = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
if (mMaxSpeed < mpHIO->mSwim.m.mUnderwaterMaxSpeed) {
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterMaxSpeed;
} else if (doTrigger()) {
field_0x594 += 0.75f;
if (field_0x594 > temp_f29) {
field_0x594 = temp_f29;
mMaxSpeed += 0.75f;
if (mMaxSpeed > temp_f29) {
mMaxSpeed = temp_f29;
}
if (!checkSwimMoveHandAnime() && !checkZoraSwimDamageAnime()) {
@@ -679,77 +679,77 @@ void daAlink_c::setSwimMoveAnime() {
setUpperAnime(0x23F, UPPER_2, 1.0f, 0.0f, 0x28, var_f28);
mProcVar5.field_0x3012 = 0;
var_r25 = 1;
} else if (temp_r27->getFrame() > 25.0f) {
} else if (framectrl_upper2->getFrame() > 25.0f) {
mProcVar5.field_0x3012 = 1;
}
} else if (!checkSwimMoveHandAnime()) {
cLib_chaseF(&field_0x594, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
cLib_chaseF(&mMaxSpeed, mpHIO->mSwim.m.mUnderwaterMaxSpeed, 0.4f);
}
var_f31 = 1.0f / mpHIO->mSwim.m.mUnderwaterMaxSpeed;
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(temp_r28)))) {
var_r29 = ANM_SWIM_ZORA_START;
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(framectrl_under0)))) {
anm = ANM_SWIM_ZORA_START;
} else {
var_r29 = ANM_SWIM_C;
anm = ANM_SWIM_C;
if (field_0x3198 == ANM_SWIM_ZORA_START) {
var_r26 = 0;
var_r26 = FALSE;
if (mProcVar4.field_0x3010 == 1) {
mProcVar4.field_0x3010 = 0;
}
}
}
} else if (field_0x2f98 == 0) {
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(temp_r28)) {
var_r29 = ANM_SWIM_DASH;
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(framectrl_under0)) {
anm = ANM_SWIM_DASH;
} else if (mNormalSpeed < 3.0f || checkHookshotAnime()) {
var_r29 = ANM_SWIM_WAIT;
anm = ANM_SWIM_WAIT;
field_0x30d0 = 0;
} else {
var_r29 = ANM_SWIM_A;
anm = ANM_SWIM_A;
}
if (checkSwimDashMode()) {
field_0x3478 = mpHIO->mSwim.m.mDashMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mDashMaxAnmSpeed;
field_0x594 = mpHIO->mSwim.m.mDashMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mDashMaxSpeed;
} else {
field_0x3478 = mpHIO->mSwim.m.mForwardMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mForwardMaxAnmSpeed;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
} else if (field_0x2f98 == 1) {
var_r29 = ANM_ATN_SWIM_BACK;
anm = ANM_ATN_SWIM_BACK;
field_0x3478 = mpHIO->mSwim.m.mBackwardMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mBackwardMaxAnmSpeed;
if (checkZoraWearAbility()) {
field_0x594 = 10.0f;
mMaxSpeed = 10.0f;
} else {
field_0x594 = mpHIO->mSwim.m.mBackwardMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mBackwardMaxSpeed;
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
} else {
if (field_0x2f98 == 2) {
var_r29 = ANM_ATN_SWIM_LEFT;
anm = ANM_ATN_SWIM_LEFT;
} else {
var_r29 = ANM_ATN_SWIM_RIGHT;
anm = ANM_ATN_SWIM_RIGHT;
}
field_0x3478 = mpHIO->mSwim.m.mStrafeMinAnmSpeed;
field_0x347c = mpHIO->mSwim.m.mStrafeMaxAnmSpeed;
if (checkZoraWearAbility()) {
field_0x594 = 12.0f;
mMaxSpeed = 12.0f;
} else {
field_0x594 = mpHIO->mSwim.m.mStrafeMaxSpeed;
mMaxSpeed = mpHIO->mSwim.m.mStrafeMaxSpeed;
}
var_f31 = 1.0f / field_0x594;
var_f31 = 1.0f / mMaxSpeed;
}
field_0x347c -= field_0x3478;
@@ -759,55 +759,55 @@ void daAlink_c::setSwimMoveAnime() {
}
if (checkBootsOrArmorHeavy()) {
var_r29 = ANM_SWIM_WAIT;
field_0x594 = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
anm = ANM_SWIM_WAIT;
mMaxSpeed = mpHIO->mSwim.m.mUnderwaterFallMaxSpeed;
if (mEquipItem != fpcNm_ITEM_NONE && !checkHookshotAnime()) {
setDoStatus(4);
setDoStatus(BUTTON_STATUS_PUT_AWAY);
}
}
if (var_r29 != field_0x3198) {
if (anm != field_0x3198) {
if (field_0x3198 == ANM_SWIM_ZORA_START) {
speed.y = 0.0f;
}
field_0x3198 = var_r29;
field_0x3198 = anm;
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
field_0x30d2 = mpHIO->mSwim.m.field_0x5e;
}
if (var_r29 == ANM_SWIM_WAIT) {
if (anm == ANM_SWIM_WAIT) {
setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, mpHIO->mSwim.m.mWaitAnmSpeed, mpHIO->mSwim.m.mWaitInterpolation);
} else {
f32 var_f27;
if (var_r26 != 0) {
var_f27 = mpHIO->mSwim.m.mMoveInterpolation;
f32 morf;
if (var_r26) {
morf = mpHIO->mSwim.m.mMoveInterpolation;
} else {
var_f27 = 0.0f;
morf = 0.0f;
}
setSingleAnimeBaseMorf(var_r29, var_f27);
setSingleAnimeBaseMorf(anm, morf);
}
}
if (var_r29 != ANM_SWIM_WAIT && var_r29 != ANM_SWIM_DASH) {
if (anm != ANM_SWIM_WAIT && anm != ANM_SWIM_DASH) {
f32 temp_f30 = var_f31 * fabsf(mNormalSpeed);
if (temp_f30 > 1.0f && field_0x2f98 == 4) {
temp_r28->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
framectrl_under0->setRate(mpHIO->mSwim.m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * mpHIO->mSwim.m.mUnderwaterAdditionalAnmSpeed));
} else {
temp_r28->setRate(field_0x3478 + (field_0x347c * temp_f30));
framectrl_under0->setRate(field_0x3478 + (field_0x347c * temp_f30));
}
}
if (checkSwimMoveHandAnime()) {
if (temp_r27->checkPass(17.0f)) {
if (framectrl_upper2->checkPass(17.0f)) {
seStartOnlyReverb(Z2SE_AL_WATER_STROKE_L);
}
if (var_r29 == ANM_SWIM_C) {
temp_r27->setRate(temp_r28->getRate());
if (anm == ANM_SWIM_C) {
framectrl_upper2->setRate(framectrl_under0->getRate());
if (var_r25 == 0 && temp_r27->checkPass(0.0f)) {
if (!var_r25 && framectrl_upper2->checkPass(0.0f)) {
if (mProcVar5.field_0x3012 != 0) {
mProcVar5.field_0x3012 = 0;
} else {
@@ -821,7 +821,7 @@ void daAlink_c::setSwimMoveAnime() {
maxFallSpeed = getSwimMaxFallSpeed();
if (var_r29 == ANM_SWIM_C || var_r29 == ANM_SWIM_ZORA_START) {
if (anm == ANM_SWIM_C || anm == ANM_SWIM_ZORA_START) {
if (!checkZoraWearAbility()) {
if (field_0x3080 != -0x3800) {
setOldRootQuaternion(0x4000, 0, 0);
@@ -854,11 +854,11 @@ void daAlink_c::setSwimMoveAnime() {
}
bool daAlink_c::checkSwimButtonAccept() {
return dComIfGp_getDoStatus() == 0x41 || dComIfGp_getDoStatus() == 0x4C;
return dComIfGp_getDoStatus() == BUTTON_STATUS_DIVE || dComIfGp_getDoStatus() == BUTTON_STATUS_SWIM;
}
bool daAlink_c::checkUpSwimButtonAccept() {
return dComIfGp_getDoStatus() == 0x97;
return dComIfGp_getDoStatus() == BUTTON_STATUS_UNK_151;
}
BOOL daAlink_c::checkSwimButtonMove() {
@@ -879,7 +879,7 @@ void daAlink_c::setSwimUpDownOffset() {
f32 var_f1;
if (checkWolf()) {
if (checkHeavyStateOn(1, 1)) {
if (checkHeavyStateOn(TRUE, TRUE)) {
var_f1 = mpHIO->mWolf.mWlSwim.m.mHeavyIdleUpDownSwayAmount;
} else {
var_f1 = mpHIO->mWolf.mWlSwim.m.mIdleUpDownSwayAmount;
@@ -946,10 +946,10 @@ int daAlink_c::procSwimUp() {
int daAlink_c::procSwimWaitInit(int param_0) {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
u32 mode_40000 = checkModeFlg(0x40000);
u32 is_mode40000 = checkModeFlg(0x40000);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
current.pos.y += mpHIO->mSwim.m.mStartHeight;
}
@@ -959,7 +959,7 @@ int daAlink_c::procSwimWaitInit(int param_0) {
seStartMapInfo(Z2SE_AL_INTO_WATER);
mProcVar4.field_0x3010 = 0;
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
} else if (!mode_40000) {
} else if (!is_mode40000) {
mProcVar4.field_0x3010 = 0;
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
}
@@ -991,18 +991,18 @@ int daAlink_c::procSwimWaitInit(int param_0) {
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
return 1;
}
int daAlink_c::procSwimWait() {
if (mDemo.getDemoMode() == 6 || mDemo.getDemoMode() == 8) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_6_e || mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_8_e) {
setShapeAngleToTalkActor();
current.angle.y = shape_angle.y;
}
maxFallSpeed = getSwimMaxFallSpeed();
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
setSpeedAndAngleSwim();
@@ -1015,7 +1015,7 @@ int daAlink_c::procSwimWait() {
setSwimUpDownOffset();
if (checkEquipHeavyBoots() && mEquipItem != fpcNm_ITEM_NONE) {
setDoStatus(0x4);
setDoStatus(BUTTON_STATUS_PUT_AWAY);
}
if (checkSwimUpAction()) {
@@ -1047,25 +1047,25 @@ int daAlink_c::procSwimWait() {
}
int daAlink_c::procSwimMoveInit() {
u32 mode_40000 = checkModeFlg(0x40000);
bool proc_dive_jump = mProcID == PROC_DIVE_JUMP;
bool proc_swim_dive = mProcID == PROC_SWIM_DIVE;
u32 is_mode40000 = checkModeFlg(0x40000);
bool is_prev_dive_jump = mProcID == PROC_DIVE_JUMP;
bool is_prev_swim_dive = mProcID == PROC_SWIM_DIVE;
commonProcInit(PROC_SWIM_MOVE);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
}
if (!mode_40000) {
if (!is_mode40000) {
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
mProcVar4.field_0x3010 = 0;
}
if (proc_swim_dive || proc_dive_jump) {
if (is_prev_swim_dive || is_prev_dive_jump) {
field_0x3198 = 199;
if (proc_dive_jump) {
if (is_prev_dive_jump) {
field_0x3080 = 0x2800;
mProcVar3.field_0x300e = field_0x3080;
mProcVar4.field_0x3010 = 1;
@@ -1092,6 +1092,8 @@ int daAlink_c::procSwimMoveInit() {
int daAlink_c::procSwimMove() {
setSpeedAndAngleSwim();
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
if (checkUpSwimButtonAccept() && doButton()) {
field_0x3000 = 30;
}
@@ -1113,7 +1115,7 @@ int daAlink_c::procSwimMove() {
if (checkSwimButtonAccept() && doTrigger() && !getZoraSwim()) {
procSwimDiveInit();
} else if (dComIfGp_getDoStatus() == 9 && doTrigger()) {
} else if (dComIfGp_getDoStatus() == BUTTON_STATUS_DASH && doTrigger()) {
onNoResetFlg1(FLG1_DASH_MODE);
field_0x30d0 = mpHIO->mSwim.m.field_0x5c;
setSingleAnimeParam(ANM_SWIM_DASH, &mpHIO->mSwim.m.mDashAnm);
@@ -1153,12 +1155,11 @@ int daAlink_c::procSwimDiveInit() {
return 1;
}
int daAlink_c::procSwimDive() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (mProcVar2.field_0x300c == 0) {
setDoStatus(0x4C);
setDoStatus(BUTTON_STATUS_SWIM);
} else if (checkNoResetFlg0(FLG0_SWIM_UP) && frame_ctrl->getFrame() > 20.0f) {
offNoResetFlg0(FLG0_SWIM_UP);
mZ2Link.setInWater(true);
@@ -1178,8 +1179,8 @@ int daAlink_c::procSwimDive() {
fopKyM_createWpillar(&pos, 0.7f, 0);
}
if (mLinkAcch.GetGroundH() > current.pos.y - field_0x598 * 0.5f) {
current.pos.y = field_0x598 * 0.5f + mLinkAcch.GetGroundH();
if (mLinkAcch.GetGroundH() > current.pos.y - mHeight * 0.5f) {
current.pos.y = mHeight * 0.5f + mLinkAcch.GetGroundH();
}
if (checkAnmEnd(frame_ctrl)) {
@@ -1198,7 +1199,6 @@ int daAlink_c::procSwimDive() {
return 1;
}
int daAlink_c::procSwimHookshotSubjectInit() {
if (!commonProcInitNotSameProc(PROC_SWIM_HOOKSHOT_SUBJECT)) {
return 0;
@@ -1226,23 +1226,26 @@ int daAlink_c::procSwimHookshotSubjectInit() {
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
mProcVar4.field_0x3010 = 0;
field_0x30d0 = 0;
#if PLATFORM_GCN
setHookshotReadyMaterial();
#endif
dComIfGp_setPlayerStatus0(0, 0x104000);
return 1;
}
int daAlink_c::procSwimHookshotSubject() {
maxFallSpeed = getSwimMaxFallSpeed();
field_0x594 = getSwimFrontMaxSpeed();
mMaxSpeed = getSwimFrontMaxSpeed();
if (checkHookshotWait()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
setShapeAngleToAtnActor(0);
@@ -1316,7 +1319,7 @@ int daAlink_c::procSwimHookshotMove() {
cancelHookshotMove();
if (checkHookshotWait() && !checkZoraWearAbility()) {
setDoStatus(0x12);
setDoStatus(BUTTON_STATUS_BACK);
}
if (mItemVar0.field_0x3018 == 0) {
@@ -1364,48 +1367,50 @@ int daAlink_c::procSwimHookshotMove() {
return 1;
}
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* i_hitObj) {
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f));
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER2, 31, cXyz(0.0f, 1.0f, 0.0f));
BOOL bvar4 =
checkNoResetFlg0(FLG0_SWIM_UP) || ((param_0 != NULL && param_0->GetTgHitAc() != NULL) &&
fopAcM_GetName(param_0->GetTgHitAc()) == PROC_E_SG);
BOOL bvar4 = checkNoResetFlg0(FLG0_SWIM_UP)
|| ((i_hitObj != NULL && i_hitObj->GetTgHitAc() != NULL)
&& fopAcM_GetName(i_hitObj->GetTgHitAc()) == PROC_E_SG);
if (!getZoraSwim() && bvar4 && mProcID != PROC_SWIM_WAIT) {
return 1;
}
cXyz* temp_r30;
cXyz sp30;
cXyz* dmg_vec;
cXyz work;
if (param_0 != NULL) {
temp_r30 = (cXyz*)getDamageVec(param_0);
if (i_hitObj != NULL) {
dmg_vec = (cXyz*)getDamageVec(i_hitObj);
} else {
sp30.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
temp_r30 = &sp30;
work.set(-cM_ssin(current.angle.y), 0.0f, -cM_scos(current.angle.y));
dmg_vec = &work;
}
f32 scale =
temp_r30->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
f32 scale = dmg_vec->abs() * mpHIO->mDamage.mDamSwim.m.mAttackSpeedRate + mpHIO->mDamage.mDamSwim.m.mInitialSpeed;
if (scale > mpHIO->mDamage.mDamSwim.m.mMaxSpeed) {
scale = mpHIO->mDamage.mDamSwim.m.mMaxSpeed;
}
field_0x3750 = temp_r30->normZP();
field_0x3750 = dmg_vec->normZP();
field_0x3750 *= scale;
if (getZoraSwim()) {
setUpperAnimeParam(0xBF, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
setFacePriBck(0xEA);
setFacePriTexture(FTANM_UNK_27);
setUpperAnimeParam(dRes_ID_ALANM_BCK_DAMSW_e, UPPER_2, &mpHIO->mDamage.mDamSwim.m.mSinkAnm);
setFacePriBck(dRes_ID_ALANM_BCK_FB_e);
setFacePriTexture(FTANM_B_A);
return 1;
}
commonProcInit(PROC_SWIM_DAMAGE);
cXyz sp24(temp_r30->z * -cM_ssin(shape_angle.y) + temp_r30->x * cM_scos(shape_angle.y),
temp_r30->y,
temp_r30->z * cM_scos(shape_angle.y) + temp_r30->x * cM_ssin(shape_angle.y));
f32 var_f30 = cM_ssin(shape_angle.y);
f32 var_f29 = cM_scos(shape_angle.y);
cXyz sp24(dmg_vec->z * -var_f30 + dmg_vec->x * var_f29,
dmg_vec->y,
dmg_vec->z * var_f29 + dmg_vec->x * var_f30);
mProcVar0.field_0x3008 =
cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle,
@@ -1436,7 +1441,9 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
}
mNormalSpeed = 0.0f;
field_0x347c = M_PI / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart());
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
field_0x347c = M_PI / (framectrl->getEnd() - framectrl->getStart());
field_0x3480 = mpHIO->mSwim.m.mStartHeight;
current.angle.y = shape_angle.y;
@@ -1470,13 +1477,12 @@ int daAlink_c::procSwimDamage() {
return 1;
}
int daAlink_c::procOctaIealSpitInit() {
u32 temp_r30 = checkModeFlg(MODE_SWIMMING);
commonProcInit(PROC_OCTAIEAL_SPIT);
if (checkNoResetFlg0(FLG0_UNDERWATER)) {
offNoResetFlg0(FLG0_UNDERWATER);
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
offNoResetFlg0(FLG0_WATER_IN_MOVE);
}
setSingleAnimeBase(ANM_MORPHEEL_SPIT_OUT);
@@ -1519,14 +1525,14 @@ static f32 dummyFloat() {
}
int daAlink_c::procOctaIealSpit() {
if (mDemo.getDemoMode() == 0x2E) {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_CAUGHT_e) {
cancelOriginalDemo();
}
cLib_addCalc(&mNormalSpeed, 0.0f, 0.5f, field_0x3478, 0.1f);
field_0x2f99 = 7;
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(mUnderFrameCtrl)) {
procSwimWaitInit(0);
}
+44 -44
View File
@@ -5,8 +5,9 @@
#include "d/actor/d_a_alink.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1);
static int daAlink_modelCallBack(J3DJoint* i_joint, int param_1);
static int daAlink_headModelCallBack(J3DJoint* i_joint, int param_1);
static int daAlink_wolfModelCallBack(J3DJoint* i_joint, int param_1);
@@ -24,14 +25,6 @@ void daAlink_c::setArcName(BOOL i_isWolf) {
}
}
inline bool checkCarvingWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_WOOD_SHIELD;
}
inline bool checkShopWoodShieldEquip() {
return dComIfGs_getSelectEquipShield() == fpcNm_ITEM_SHIELD;
}
void daAlink_c::setShieldArcName() {
if (checkCarvingWoodShieldEquip() || !checkShieldGet()) {
mShieldArcName = l_cWShdArcName;
@@ -44,8 +37,13 @@ void daAlink_c::setShieldArcName() {
void daAlink_c::setOriginalHeap(JKRExpHeap** i_ppheap, u32 i_size) {
if (*i_ppheap == NULL) {
*i_ppheap =
JKRExpHeap::create(ROUND(i_size, 0x10) + 0xA0, mDoExt_getGameHeap(), true);
u32 var_r29 = 0x90;
u32 var_r28 = 0x10;
u32 size = ROUND(i_size, 16);
JKRHeap* parent = mDoExt_getGameHeap();
JKRExpHeap* heap = JKRExpHeap::create(size + (var_r29 + var_r28), parent, true);
*i_ppheap = heap;
}
}
@@ -91,7 +89,8 @@ int daAlink_c::loadModelDVD() {
mClothesChangeWaitTimer = 0;
changeLink(1);
} else {
if (dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap) == cPhs_COMPLEATE_e) {
int phase_state = dComIfG_resLoad(&mPhaseReq, mArcName, mpArcHeap);
if (phase_state == cPhs_COMPLEATE_e) {
mClothesChangeWaitTimer = 0;
if (mProcID == PROC_METAMORPHOSE || mProcID == PROC_METAMORPHOSE_ONLY) {
@@ -134,8 +133,8 @@ int daAlink_c::loadShieldModelDVD() {
mpShieldArcHeap->freeAll();
setShieldArcName();
} else if (mShieldChangeWaitTimer == 1) {
if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap) == cPhs_COMPLEATE_e)
{
int phase_state = dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, mpShieldArcHeap);
if (phase_state == cPhs_COMPLEATE_e) {
mShieldChangeWaitTimer = 0;
setShieldModel();
} else {
@@ -151,6 +150,7 @@ int daAlink_c::loadShieldModelDVD() {
void daAlink_c::changeModelDataDirect(int param_0) {
u16 i;
J3DModelData* modelData;
field_0x064C = mpLinkModel->getModelData();
field_0x06c0 = mpLinkFaceModel->getModelData();
@@ -164,14 +164,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
field_0x064C->getJointNodePointer(i)->setCallBack(daAlink_modelCallBack);
}
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
for (i = 1; i < head_modelData->getJointNum(); i++) {
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
modelData = mpLinkHatModel->getModelData();
for (i = 1; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
}
if (param_0) {
if (field_0x2154 != NULL) {
field_0x06c0->entryTexNoAnimator(field_0x2154);
if (mpFaceBtp != NULL) {
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
}
if (mpFaceBtk != NULL) {
@@ -188,14 +188,14 @@ void daAlink_c::changeModelDataDirect(int param_0) {
field_0x064C->getJointNodePointer(i)->setCallBack(NULL);
}
J3DModelData* head_modelData = mpLinkHatModel->getModelData();
for (i = 1; i < head_modelData->getJointNum(); i++) {
head_modelData->getJointNodePointer(i)->setCallBack(NULL);
modelData = mpLinkHatModel->getModelData();
for (i = 1; i < modelData->getJointNum(); i++) {
modelData->getJointNodePointer(i)->setCallBack(NULL);
}
if (!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_100000 | FLG2_UNK_80000))) {
for (i = 6; i < 8; i++) {
head_modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
modelData->getJointNodePointer(i)->setCallBack(daAlink_headModelCallBack);
}
}
}
@@ -217,8 +217,8 @@ void daAlink_c::changeModelDataDirectWolf(int param_0) {
}
if (param_0) {
if (field_0x2154 != NULL) {
field_0x06c0->entryTexNoAnimator(field_0x2154);
if (mpFaceBtp != NULL) {
field_0x06c0->entryTexNoAnimator(mpFaceBtp);
}
if (mpFaceBtk != NULL) {
@@ -240,61 +240,61 @@ void daAlink_c::initStatusWindow() {
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
void* tmpBuffer = new (0x20) void*[0x500];
JUT_ASSERT(0x18A, tmpBuffer);
JUT_ASSERT(394, tmpBuffer);
u16 var_r28, var_r31, var_r30;
u16 bckResIdx, btpResIdx, btkResIdx;
if (checkWolf()) {
var_r28 = 0x2FF;
var_r31 = 0x408;
var_r30 = 0x3A7;
bckResIdx = dRes_ID_ALANM_BCK_WL_WAITA_e;
btpResIdx = dRes_ID_ALANM_BTP_WL_FA_e;
btkResIdx = dRes_ID_ALANM_BTK_WL_FA_e;
changeModelDataDirectWolf(0);
} else {
var_r28 = 0x26A;
var_r31 = 0x3AF;
var_r30 = 0x32C;
bckResIdx = dRes_ID_ALANM_BCK_WAITS_e;
btpResIdx = dRes_ID_ALANM_BTP_FA_e;
btkResIdx = dRes_ID_ALANM_BTK_FA_e;
if (checkZoraWearAbility() && !checkZoraWearMaskDraw()) {
field_0x06f0->hide();
}
changeModelDataDirect(0);
}
JKRReadIdxResource(tmpBuffer, 0x1400, var_r28, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x1400, bckResIdx, dComIfGp_getAnmArchive());
m_sWindowBck = new mDoExt_bckAnm();
JUT_ASSERT(0x1AC, m_sWindowBck);
JUT_ASSERT(428, m_sWindowBck);
J3DAnmTransform* bck = (J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
if (!m_sWindowBck->init(bck, 1, 2, 1.0f, 0, -1, false)) {
if (!m_sWindowBck->init((J3DAnmTransform*)J3DAnmLoaderDataBase::load(tmpBuffer), TRUE, 2, 1.0f, 0, -1, false)) {
JUT_ASSERT(433, FALSE);
}
tmpBuffer = new (0x20) void*[0x100];
JUT_ASSERT(0x1B5, tmpBuffer);
JUT_ASSERT(437, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, var_r31, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x400, btpResIdx, dComIfGp_getAnmArchive());
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btp->setFrame(0.0f);
btp->searchUpdateMaterialID(field_0x06c0);
field_0x06c0->entryTexNoAnimator(btp);
tmpBuffer = new (0x20) void*[0x100];
JUT_ASSERT(0x1C1, tmpBuffer);
JUT_ASSERT(449, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, var_r30, dComIfGp_getAnmArchive());
JKRReadIdxResource(tmpBuffer, 0x400, btkResIdx, dComIfGp_getAnmArchive());
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btk->setFrame(0.0f);
btk->searchUpdateMaterialID(field_0x06c0);
field_0x06c0->entryTexMtxAnimator(btk);
}
void daAlink_c::statusWindowExecute(const cXyz* i_pos, s16 i_angle) {
if (loadModelDVD()) {
if (mSwordChangeWaitTimer != 0) {
mSwordChangeWaitTimer--;
}
loadShieldModelDVD();
setSelectEquipItem(1);
setSelectEquipItem(TRUE);
if (mSwordChangeWaitTimer >= 30) {
mSwordChangeWaitTimer = 0;
@@ -367,7 +367,7 @@ void daAlink_c::resetStatusWindow() {
setMatrix();
mpLinkModel->calc();
onNoResetFlg2(FLG2_STATUS_WINDOW_DRAW);
setSelectEquipItem(0);
setSelectEquipItem(FALSE);
if (checkWolf()) {
setWolfItemMatrix();
+24 -22
View File
@@ -11,6 +11,8 @@
#include "d/actor/d_a_obj_yobikusa.h"
static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (daAlink_getAlinkActorClass()->getGrassHowlEventActor() == fopAcM_GetName(i_actor)) {
return i_actor;
}
@@ -19,6 +21,8 @@ static fopAc_ac_c* daAlink_searchWhistle(fopAc_ac_c* i_actor, void* i_data) {
}
static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
UNUSED(i_data);
if (fopAcM_GetName(i_actor) == PROC_NPC_TK) {
return i_actor;
}
@@ -26,7 +30,7 @@ static fopAc_ac_c* daAlink_searchHawk(fopAc_ac_c* i_actor, void* i_data) {
return NULL;
}
void daAlink_c::setGrassWhistleModel(int modelType) {
void daAlink_c::setGrassWhistleModel(int i_modelType) {
static const char* grassWhistleArcName[] = {
"J_Tobi",
"J_Umak",
@@ -38,8 +42,8 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
JKRHeap* prev_heap = setItemHeap();
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[modelType],
grassWhistleIdx[modelType]);
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes(grassWhistleArcName[i_modelType],
grassWhistleIdx[i_modelType]);
mHeldItemModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
mDoExt_setCurrentHeap(prev_heap);
@@ -50,7 +54,7 @@ void daAlink_c::setGrassWhistleModel(int modelType) {
void daAlink_c::setHorseWhistleModel() {
JKRHeap* prev_heap = setItemHeap();
mHeldItemModel = initModel(loadAramBmd(0x31A, 0x3000), 0);
mHeldItemModel = initModel(loadAramBmd(dRes_ID_ALANM_BMD_AL_PEND_e, 0x3000), 0);
mDoExt_setCurrentHeap(prev_heap);
mEquipItem = fpcNm_ITEM_HORSE_FLUTE;
@@ -68,7 +72,7 @@ int daAlink_c::procGrassWhistleGetInit() {
field_0x2f98 = 4;
setSingleAnimeParam(ANM_BOTTLE_SWING_DOWN, &mpHIO->mItem.mBottle.m.mSwingDownAnm);
field_0x2f92 = 0xFE;
mLeftHandIndex = 0xFE;
field_0x280c.setData(field_0x27f4);
daObjYobikusa_c* yobikusa_p = (daObjYobikusa_c*)field_0x27f4;
@@ -83,11 +87,10 @@ int daAlink_c::procGrassWhistleGetInit() {
return 1;
}
int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd()) {
if (checkAnmEnd(frameCtrl_p)) {
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e,
mProcVar4.field_0x3010, mProcVar5.field_0x3012, &field_0x37c8);
} else if (mEquipItem == fpcNm_ITEM_NONE && frameCtrl_p->getFrame() >= 9.0f) {
@@ -104,14 +107,14 @@ int daAlink_c::procGrassWhistleGet() {
int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s16 param_3,
cXyz* param_4) {
u16 var_r6;
u16 hindFlag;
if (param_0 == 3) {
var_r6 = 0xFFFF;
hindFlag = 0xFFFF;
} else {
var_r6 = 0xFFF9;
hindFlag = 0xFFF9;
}
if (!dComIfGp_event_compulsory(this, NULL, var_r6)) {
if (!dComIfGp_event_compulsory(this, NULL, hindFlag)) {
return checkNextAction(0);
}
@@ -167,7 +170,6 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s
return 1;
}
int daAlink_c::procGrassWhistleWait() {
if (mProcVar5.field_0x3012 != 0) {
if (checkEndMessage(field_0x32cc)) {
@@ -216,16 +218,16 @@ int daAlink_c::procGrassWhistleWait() {
return procWaitInit();
}
setFaceBasicTexture(FTANM_UNK_0);
setFaceBasicTexture(FTANM_0);
mProcVar5.field_0x3012 = 1;
return 1;
}
}
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
} else if (checkAnmEnd(&mUpperFrameCtrl[2])) {
setGrassCancelStatus(0x12);
setDoStatus(0x2C);
setGrassCancelStatus(BUTTON_STATUS_BACK);
setDoStatus(BUTTON_STATUS_BLOW);
if (mProcVar2.field_0x300c == 3 || doTrigger()) {
setSingleAnimeBaseMorf(ANM_GRASS_WHISTLE_PLAY, 0.0f);
@@ -256,7 +258,7 @@ int daAlink_c::procGrassWhistleWait() {
}
} else {
#if VERSION != VERSION_SHIELD_DEBUG
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
#endif
}
@@ -280,13 +282,13 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
setSingleAnimeBaseSpeed(ANM_WAIT, mpHIO->mMove.m.mWaitAnmSpeed, 3.0f);
}
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
dComIfGp_setPlayerStatus1(0, 0x4000000);
return 1;
}
int daAlink_c::procCoHorseCallWait() {
setGrassCancelStatus(0);
setGrassCancelStatus(BUTTON_STATUS_NONE);
mProcVar4.field_0x3010--;
if (mProcVar4.field_0x3010 > 2 && dComIfGp_getHorseActor() != NULL) {
@@ -322,7 +324,7 @@ int daAlink_c::procHawkCatchInit() {
}
int daAlink_c::procHawkCatch() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
if (checkAnmEnd(mUnderFrameCtrl)) {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
procHawkSubjectInit();
}
@@ -360,8 +362,8 @@ int daAlink_c::procHawkSubject() {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
} else {
fopAc_ac_c* temp_r29 = field_0x280c.getActor();
setGrassCancelStatus(0x12);
setDoStatus(0x31);
setGrassCancelStatus(BUTTON_STATUS_BACK);
setDoStatus(BUTTON_STATUS_SET_FREE);
if (doTrigger()) {
mProcVar2.field_0x300c = 2;
File diff suppressed because it is too large Load Diff
+4 -3
View File
@@ -16,8 +16,8 @@ daAndsw_HIO_c::daAndsw_HIO_c() {
}
void daAndsw_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel("SW監視", 0, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genCheckBox("SW状態出力", &field_0x6, 0x01, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel("SW監視", 0);
ctx->genCheckBox("SW状態出力", &field_0x6, 0x01);
}
#endif
@@ -99,7 +99,8 @@ static int daAndsw_Delete(daAndsw_c* i_this) {
}
static int daAndsw_Create(fopAc_ac_c* i_this) {
fopAcM_RegisterCreateID(daAndsw_c, i_this, "Andsw");
daAndsw_c* a_this = (daAndsw_c*)i_this;
fopAcM_RegisterCreateID(i_this, "Andsw");
return a_this->create();
}
+6 -6
View File
@@ -55,11 +55,11 @@ daB_BH_HIO_c::daB_BH_HIO_c() {
#if DEBUG
void daB_BH_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" ボスデグババ手", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("本体サイズ", &model_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("攻撃頻度\x87\x40", &attack_freq_a, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("攻撃頻度\x87\x41", &attack_freq_b, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("ダウン→復活時間", &down_revive_time, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel(" ボスデグババ手", 0x80000001);
ctx->genSlider("本体サイズ", &model_size, 0.0f, 5.0f);
ctx->genSlider("攻撃頻度\x87\x40", &attack_freq_a, 0, 1000);
ctx->genSlider("攻撃頻度\x87\x41", &attack_freq_b, 0, 1000);
ctx->genSlider("ダウン→復活時間", &down_revive_time, 0, 1000);
}
#endif
@@ -1409,7 +1409,7 @@ static int daB_BH_IsDelete(b_bh_class* i_this) {
static int daB_BH_Delete(b_bh_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fpc_ProcID id = fopAcM_GetID(a_this);
fopAcM_RegisterDeleteID(a_this, "B_BH");
dComIfG_resDelete(&i_this->mPhase, "B_BH");
if (i_this->mInitHIO) {
+1 -1
View File
@@ -2306,7 +2306,7 @@ static int daB_BQ_Execute(b_bq_class* i_this) {
dComIfG_Ccsp()->Set(&i_this->mCcCoreSph);
sp50 = a_this->eyePos;
if (daPy_getPlayerActorClass()->getCutType() != 0x27 && i_this->mAction >= ACTION_DAMAGE) {
if (daPy_getPlayerActorClass()->getCutType() != daPy_py_c::CUT_TYPE_DOWN && i_this->mAction >= ACTION_DAMAGE) {
sp50.y = player->current.pos.y + 70.0f + KREG_F(7);
} else {
sp50.x -= 20000.0f;
+1 -1
View File
@@ -1813,7 +1813,7 @@ void daB_DR_c::executeWeekHit() {
dComIfGp_particle_set(0x8999, &sp50, NULL, NULL);
dComIfGp_particle_set(0x899A, &sp50, NULL, NULL);
if (health <= 0 || player->getCutType() == 0x20) {
if (health <= 0 || player->getCutType() == daPy_py_c::CUT_TYPE_FINISH_STAB) {
health = 0;
mSound.startCollisionSE(Z2SE_HIT_SWORD, 0x20);
+3 -3
View File
@@ -3300,8 +3300,8 @@ static void demo_camera(b_gnd_class* i_this) {
sp114.y = 0.0f;
sp114.z = 135.0f;
MtxPosition(&sp114, &sp108);
a_this->current.pos.x = sp108.x + player->field_0x5f8.x;
a_this->current.pos.z = sp108.z + player->field_0x5f8.z;
a_this->current.pos.x = sp108.x + player->mViewerCurrentPos.x;
a_this->current.pos.z = sp108.z + player->mViewerCurrentPos.z;
a_this->current.angle.y = player->shape_angle.y + 0x8000;
spF0 = a_this->current.pos + ((*player->getViewerCurrentPosP() - a_this->current.pos) * 0.5f);
@@ -4787,7 +4787,7 @@ static int daB_GND_Create(fopAc_ac_c* a_this) {
l_HIO.no = mDoHIO_CREATE_CHILD("ガノンドロフ", &l_HIO);
}
a_this->attention_info.distances[2] = 36;
a_this->attention_info.distances[fopAc_attn_BATTLE_e] = 36;
fopAcM_SetMtx(a_this, i_this->mpModelMorf->getModel()->getBaseTRMtx());
fopAcM_SetMin(a_this, -400.0f, -200.0f, -400.0f);
+11 -15
View File
@@ -197,14 +197,14 @@ daB_MGN_HIO_c::daB_MGN_HIO_c() {
#if DEBUG
void daB_MGN_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" 豚ガノン", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("ダッシュ速度", &dash_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("旋回速度", &turn_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("ダッシュアニメ", &dash_anim, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("宝石R", &jewel_R, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("宝石G", &jewel_G, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("宝石B", &jewel_B, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" 豚ガノン", 0x80000001);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f);
ctx->genSlider("ダッシュ速度", &dash_speed, 0.0f, 100.0f);
ctx->genSlider("旋回速度", &turn_speed, 0.0f, 100.0f);
ctx->genSlider("ダッシュアニメ", &dash_anim, 0.0f, 10.0f);
ctx->genSlider("宝石R", &jewel_R, 0.0f, 100.0f);
ctx->genSlider("宝石G", &jewel_G, 0.0f, 100.0f);
ctx->genSlider("宝石B", &jewel_B, 0.0f, 100.0f);
}
#endif
@@ -1115,8 +1115,8 @@ void daB_MGN_c::damage_check() {
dComIfGs_onOneZoneSwitch(6, fopAcM_GetRoomNo(this));
}
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != 44 &&
player->getCutType() != 45 && player->onWolfEnemyHangBite(this))
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_WOLF_ATTACK) && player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_LEFT &&
player->getCutType() != daPy_py_c::CUT_TYPE_WOLF_B_RIGHT && player->onWolfEnemyHangBite(this))
{
setActionMode(ACTION_DOWN_BITE_DAMAGE_e, 0);
return;
@@ -3379,14 +3379,10 @@ int daB_MGN_c::_delete() {
}
static int daB_MGN_Delete(daB_MGN_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "B_MGN");
return i_this->_delete();
}
#if DEBUG
char* const unused = "Delete -> B_MGN(id=%d)\n";
#endif
int daB_MGN_c::CreateHeap() {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("B_mgn", BMDR_MGN);
JUT_ASSERT(4010, modelData != NULL);
+6 -6
View File
@@ -1121,7 +1121,7 @@ u32 daB_TN_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return rv | 0x12;
case daPy_py_c::CUT_TYPE_NM_STAB:
@@ -1129,7 +1129,7 @@ u32 daB_TN_c::getCutType() {
return rv | 0x02;
case daPy_py_c::CUT_TYPE_NM_LEFT:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
return rv | 0x21;
case daPy_py_c::CUT_TYPE_COMBO_STAB:
@@ -1344,8 +1344,8 @@ void daB_TN_c::damage_check() {
if (cut_type == daPy_py_c::CUT_TYPE_LARGE_JUMP_FINISH) {
return;
} else if (mActionMode1 < 8) {
if (cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26 ||
if (cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT ||
mAtInfo.mpCollider->ChkAtType(AT_TYPE_UNK))
{
setShieldEffect(&dStack_160);
@@ -1403,8 +1403,8 @@ void daB_TN_c::damage_check() {
if (mTimer10 != 0 ||
abs((s16)(fopAcM_searchPlayerAngleY(this) - shape_angle.y)) < 0x3000 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_25 ||
cut_type == daPy_py_c::CUT_TYPE_DASH_UNK_26)
cut_type == daPy_py_c::CUT_TYPE_DASH_LEFT ||
cut_type == daPy_py_c::CUT_TYPE_DASH_RIGHT)
{
field_0xaa8 = false;
setShieldEffect(&dStack_160);
+58 -106
View File
@@ -589,123 +589,75 @@ static int daBalloon2D_draw(daBalloon2D_c* i_this) {
#if DEBUG
void daBalloon2D_HIO_c::genMessage(JORMContext* ctx) {
ctx->genCheckBox("調整ON", &m.mAdjustmentToggle, 1, 0, NULL, 0xffff,
0xffff, 0x200, 0x18);
ctx->genSlider("スコア", &m.mScore, 0, 99999, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("コンボ数", &m.mComboCount, 0, 99, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->startComboBox("風船のサイズ", &m.mBalloonSize, 0, NULL, 0xffff, 0xffff, 0x100,
0x1a);
ctx->genCheckBox("調整ON", &m.mAdjustmentToggle, 0x1);
ctx->genSlider("スコア", &m.mScore, 0, 99999);
ctx->genSlider("コンボ数", &m.mComboCount, 0, 99);
ctx->startComboBox("風船のサイズ", &m.mBalloonSize);
ctx->genComboBoxItem("", 0); // large
ctx->genComboBoxItem("", 1); // medium
ctx->genComboBoxItem("", 2); // small
ctx->endComboBox();
ctx->genCheckBox("頭上スコアON", &m.mOverheadScoreToggle, 1, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("頭上スコア", &m.mOverheadScore, 0, 99999, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「SCORE」(score_tn*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.mScorePosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mScorePosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mScoreSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genCheckBox("頭上スコアON", &m.mOverheadScoreToggle, 0x1);
ctx->genSlider("頭上スコア", &m.mOverheadScore, 0, 99999);
ctx->genLabel("*****「SCORE」(score_tn*****", 0);
ctx->genSlider("位置X", &m.mScorePosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mScorePosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mScoreSize, 0.0, 3.0);
// 5-digit number
ctx->genLabel("*****5ケタの数字(suji_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.m5DNumberPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.m5DNumberPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズX", &m.m5DNumberSizeX, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズY", &m.m5DNumberSizeY, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("アルファ", &m.m5DNumberAlpha, 0.0, 1.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****5ケタの数字(suji_n*****", 0);
ctx->genSlider("位置X", &m.m5DNumberPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.m5DNumberPosY, -300.0, 300.0);
ctx->genSlider("サイズX", &m.m5DNumberSizeX, 0.0, 3.0);
ctx->genSlider("サイズY", &m.m5DNumberSizeY, 0.0, 3.0);
ctx->genSlider("アルファ", &m.m5DNumberAlpha, 0.0, 1.0);
// "SCORE" & 5-digit number
ctx->genLabel("*****「SCORE」&5ケタの数字(suji_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.m5DNumber2PosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.m5DNumber2PosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.m5DNumber2Size, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「+」(tas_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.mUnkPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mUnkPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mUnkSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「COMBO」\u3000combo_tn*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置", &m.mComboPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mComboPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mComboSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****2ケタの数字(num_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.m2DNumberPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.m2DNumberPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズX", &m.m2DNumberSizeX, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズY", &m.m2DNumberSizeY, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「SCORE」&5ケタの数字(suji_n*****", 0);
ctx->genSlider("位置X", &m.m5DNumber2PosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.m5DNumber2PosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.m5DNumber2Size, 0.0, 3.0);
ctx->genLabel("*****「+」(tas_n*****", 0);
ctx->genSlider("位置X", &m.mUnkPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mUnkPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mUnkSize, 0.0, 3.0);
ctx->genLabel("*****「COMBO」\u3000combo_tn*****", 0);
ctx->genSlider("位置X", &m.mComboPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mComboPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mComboSize, 0.0, 3.0);
ctx->genLabel("*****2ケタの数字(num_n*****", 0);
ctx->genSlider("位置X", &m.m2DNumberPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.m2DNumberPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.m2DNumberSizeX, 0.0, 3.0);
ctx->genSlider("サイズY", &m.m2DNumberSizeY, 0.0, 3.0);
// "+" & 2-digit number & "COMBO"
ctx->genLabel("*****「+」&2ケタの数字&「COMBO」(co_set_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.m2DNumberComboPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.m2DNumberComboPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.m2DNumberComboSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("アルファ", &m.m2DNumberComboAlpha, 0.0, 1.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「+」&2ケタの数字&「COMBO」(co_set_n*****", 0);
ctx->genSlider("位置X", &m.m2DNumberComboPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.m2DNumberComboPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.m2DNumberComboSize, 0.0, 3.0);
ctx->genSlider("アルファ", &m.m2DNumberComboAlpha, 0.0, 1.0);
// balloon "large"
ctx->genLabel("*****風船「大」(bal_1_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.mBalloonLargePosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mBalloonLargePosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mBalloonLargeSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("アルファ", &m.mBalloonLargeAlpha, 0.0, 1.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****風船「大」(bal_1_n*****", 0);
ctx->genSlider("位置X", &m.mBalloonLargePosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mBalloonLargePosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mBalloonLargeSize, 0.0, 3.0);
ctx->genSlider("アルファ", &m.mBalloonLargeAlpha, 0.0, 1.0);
// balloon "medium"
ctx->genLabel("*****風船「中」(bal_2_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.mBalloonMedPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mBalloonMedPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mBalloonMedSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("アルファ", &m.mBalloonMedAlpha, 0.0, 1.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****風船「中」(bal_2_n*****", 0);
ctx->genSlider("位置X", &m.mBalloonMedPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mBalloonMedPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mBalloonMedSize, 0.0, 3.0);
ctx->genSlider("アルファ", &m.mBalloonMedAlpha, 0.0, 1.0);
// balloon "small"
ctx->genLabel("*****風船「小」(bal_3_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("位置X", &m.mBalloonSmallPosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.mBalloonSmallPosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.mBalloonSmallSize, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("アルファ", &m.mBalloonSmallAlpha, 0.0, 1.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****風船「小」(bal_3_n*****", 0);
ctx->genSlider("位置X", &m.mBalloonSmallPosX, -300.0, 300.0);
ctx->genSlider("位置Y", &m.mBalloonSmallPosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.mBalloonSmallSize, 0.0, 3.0);
ctx->genSlider("アルファ", &m.mBalloonSmallAlpha, 0.0, 1.0);
// "Balloon" & "+" & two-digit number & "COMBO"
ctx->genLabel("*****「風船」&「+」&2ケタの数字&「COMBO」(ba_com_n*****", 0, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("位置X", &m.m2DNumberCombo2PosX, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置X(4:3)", &m.m2DNumberCombo2PosX43, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("位置Y", &m.m2DNumberCombo2PosY, -300.0, 300.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("サイズ", &m.m2DNumberCombo2Size, 0.0, 3.0, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel("*****「風船」&「+」&2ケタの数字&「COMBO」(ba_com_n*****", 0);
ctx->genSlider("位置X", &m.m2DNumberCombo2PosX, -300.0, 300.0);
ctx->genSlider("位置X(4:3)", &m.m2DNumberCombo2PosX43, -300.0, 300.0);
ctx->genSlider("位置Y", &m.m2DNumberCombo2PosY, -300.0, 300.0);
ctx->genSlider("サイズ", &m.m2DNumberCombo2Size, 0.0, 3.0);
}
#endif
+7 -9
View File
@@ -71,15 +71,13 @@ daBd_HIO_c::daBd_HIO_c() {
#if DEBUG
/* daBd_HIO_c::genMessage (JORMContext *) */
void daBd_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("小鳥", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("基本大きさ", &mBasicSize, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("飛行速度", &mFlightSpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("地上速度", &mGroundSpeed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("飛行時間(およそ)", &mFlightTime, 0, 30000, 0, NULL, 0xFFFF, 0xFFFF, 0x200,
24);
mctx->genSlider("リンク認識距離", &mLinkDetectRange, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF,
0x200, 24);
mctx->genSlider("羽LevelSE鳴る距離", &mChirpDist, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genLabel("小鳥", 0x80000001);
mctx->genSlider("基本大きさ", &mBasicSize, 0.0f, 5.0f);
mctx->genSlider("飛行速度", &mFlightSpeed, 0.0f, 50.0f);
mctx->genSlider("地上速度", &mGroundSpeed, 0.0f, 20.0f);
mctx->genSlider("飛行時間(およそ)", &mFlightTime, 0, 30000);
mctx->genSlider("リンク認識距離", &mLinkDetectRange, 0.0f, 2000.0f);
mctx->genSlider("羽LevelSE鳴る距離", &mChirpDist, 0, 1000);
}
#endif
+2 -1
View File
@@ -1341,6 +1341,7 @@ daBoomerang_c::~daBoomerang_c() {
}
static int daBoomerang_Delete(daBoomerang_c* i_this) {
fopAcM_RegisterDeleteID(i_this, "Boomerang");
i_this->~daBoomerang_c();
return 1;
}
@@ -1419,7 +1420,7 @@ static dCcD_SrcCyl l_windAtCylSrc = {
};
int daBoomerang_c::create() {
fpc_ProcID id = fopAcM_GetID(this);
fopAcM_RegisterCreateID(this, "Boomerang");
fopAcM_ct(this, daBoomerang_c);
if (!fopAcM_entrySolidHeap(this, daBoomerang_createHeap, 0xC0D0)) {
+2 -2
View File
@@ -168,7 +168,7 @@ int daCanoe_c::create() {
static int daCanoe_Create(fopAc_ac_c* i_this) {
daCanoe_c* a_this = (daCanoe_c*)i_this;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterCreateID(i_this, "Canoe");
return a_this->create();
}
@@ -178,7 +178,7 @@ daCanoe_c::~daCanoe_c() {
}
static int daCanoe_Delete(daCanoe_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "Canoe");
i_this->~daCanoe_c();
return 1;
}
+1 -1
View File
@@ -3265,7 +3265,7 @@ static int daCow_Draw(void* actor) {
}
int daCow_c::Delete() {
fpc_ProcID id = fopAcM_GetID(this);
fopAcM_RegisterDeleteID(this, "COW");
dComIfG_resDelete(&mPhase, "Cow");
if (heap != NULL) {
+2 -2
View File
@@ -321,7 +321,7 @@ int daCstatue_c::create() {
dComIfGs_onTbox(20);
}
}
attention_info.distances[4] = 8;
attention_info.distances[fopAc_attn_CARRY_e] = 8;
fopAcM_SetMtx(this, mModel->getBaseTRMtx());
int acchTblSize;
if (mType == daCstatueType_Normal || mType == daCstatueType_Normal2) {
@@ -376,7 +376,7 @@ int daCstatue_c::create() {
}
mSph->SetTgType(0xd97afddf);
mControlDistanceOffset = JMAFastSqrt(650000.0f);
attention_info.distances[0] = 92;
attention_info.distances[fopAc_attn_LOCK_e] = 92;
cLib_onBit<u32>(attention_info.flags, fopAc_AttnFlag_LOCK_e);
mTargetFrame = 35.0f;
}
+2 -1
View File
@@ -1837,7 +1837,8 @@ static int daDemo00_Delete(daDemo00_c* i_this) {
}
static int daDemo00_Create(fopAc_ac_c* i_this) {
fopAcM_RegisterCreateID(daDemo00_c, i_this, "Demo00");
daDemo00_c* a_this = (daDemo00_c*)i_this;
fopAcM_RegisterCreateID(i_this, "Demo00");
fopAcM_ct(a_this, daDemo00_c);
a_this->field_0x6a2 = 0;
+1 -1
View File
@@ -2342,7 +2342,7 @@ static int daDo_IsDelete(do_class* i_this) {
}
static int daDo_Delete(do_class* i_this) {
u32 actor_id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "Do");
dComIfG_resDelete(&i_this->mPhase, "Do");
if (i_this->mHIOInit) {
hio_set = false;
+2 -1
View File
@@ -1173,7 +1173,8 @@ int daSpiral_Delete(daSpiral_c* i_this) {
}
int daSpiral_Create(fopAc_ac_c* i_this) {
fopAcM_RegisterCreateID(daSpiral_c, i_this, "Door10");
daSpiral_c* a_this = (daSpiral_c*)i_this;
fopAcM_RegisterCreateID(i_this, "Door10");
fopAcM_ct(a_this, daSpiral_c);
return a_this->create();
}
+9 -12
View File
@@ -30,17 +30,14 @@ daE_BG_HIO_c::daE_BG_HIO_c() {
#if DEBUG
void daE_BG_HIO_c::genMessage(JORMContext* ctx) {
// "Bomb fish"
ctx->genLabel("爆弾魚", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("追跡速度", &mTrackingSpeed, 0.0, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("突進速度", &mRushSpeed, 0.0, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("プレイヤーサーチ距離", &mPlayerSearchDistance, 0.0, 2000.0f, 0, NULL, 0xffff,
0xffff, 0x200, 0x18);
ctx->genSlider("攻撃行動範囲", &mAttackRange, 0.0, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("遊泳行動範囲", &mSwimRange, 0.0, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("突進前待機距離", &mWaitDistanceBeforeCharging, 0.0, 1000.0f, 0, NULL, 0xffff,
0xffff, 0x200, 0x18);
ctx->genSlider("湧き出し時間", &mJumpTime, 0.0, 1000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel("爆弾魚", 0x80000001);
ctx->genSlider("追跡速度", &mTrackingSpeed, 0.0, 100.0f);
ctx->genSlider("突進速度", &mRushSpeed, 0.0, 100.0f);
ctx->genSlider("プレイヤーサーチ距離", &mPlayerSearchDistance, 0.0, 2000.0f);
ctx->genSlider("攻撃行動範囲", &mAttackRange, 0.0, 2000.0f);
ctx->genSlider("遊泳行動範囲", &mSwimRange, 0.0, 2000.0f);
ctx->genSlider("突進前待機距離", &mWaitDistanceBeforeCharging, 0.0, 1000.0f);
ctx->genSlider("湧き出し時間", &mJumpTime, 0.0, 1000.0f);
}
#endif
@@ -1283,7 +1280,7 @@ int daE_BG_c::_delete() {
}
static int daE_BG_Delete(daE_BG_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_BG");
return i_this->_delete();
}
+1 -1
View File
@@ -779,7 +779,7 @@ static int daE_BS_IsDelete(e_bs_class* i_this) {
static int daE_BS_Delete(e_bs_class* i_this) {
fopAc_ac_c* actor = &i_this->enemy;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_BS");
dComIfG_resDelete(&i_this->phase, "E_BS");
if (i_this->HIOInit) {
+2 -2
View File
@@ -176,7 +176,7 @@ static void damage_check(e_bu_class* i_this) {
if (i_this->atInfo.mpCollider->ChkAtType(AT_TYPE_HOOKSHOT)) {
actor->speedF = 0.0f;
i_this->head_rot_y = i_this->atInfo.mHitDirection.y;
} else if (player->getCutType() == 10 && player->checkCutJumpCancelTurn()) {
} else if (player->getCutType() == daPy_py_c::CUT_TYPE_JUMP && player->checkCutJumpCancelTurn()) {
i_this->invulnerabilityTimer = NREG_S(7) + 3;
actor->speedF = 0.0f;
} else {
@@ -990,7 +990,7 @@ static int daE_BU_IsDelete(e_bu_class* i_this) {
static int daE_BU_Delete(e_bu_class* i_this) {
fopAc_ac_c* actor = &i_this->enemy;
fpc_ProcID id = fopAcM_GetID(actor);
fopAcM_RegisterDeleteID(actor, "E_BU");
dComIfG_resDelete(&i_this->phase, "E_BU");
if (i_this->HIOInit != 0) {
+1 -1
View File
@@ -443,7 +443,7 @@ static int daE_CR_IsDelete(e_cr_class* a_this) {
static int daE_CR_Delete(e_cr_class* a_this) {
fopEn_enemy_c* actor = &a_this->enemy;
fpc_ProcID id = fopAcM_GetID(a_this);
fopAcM_RegisterDeleteID(a_this, "E_CR");
dComIfG_resDelete(&a_this->phase, "E_CR");
if (a_this->HIOInit) {
+2 -2
View File
@@ -140,7 +140,7 @@ static int daE_CR_EGG_IsDelete(e_cr_egg_class* a_this) {
static int daE_CR_EGG_Delete(e_cr_egg_class* a_this) {
fopAc_ac_c* actor = &a_this->enemy;
fpc_ProcID id = fopAcM_GetID(actor);
fopAcM_RegisterDeleteID(actor, "E_CR_EGG");
dComIfG_resDelete(&a_this->phase, "E_CR");
a_this->sound.stopAnime();
return 1;
@@ -162,7 +162,7 @@ static int useHeapInit(fopAc_ac_c* i_this) {
static int daE_CR_EGG_Create(fopAc_ac_c* i_this) {
e_cr_egg_class* a_this = (e_cr_egg_class*)i_this;
fopAcM_ct(i_this, e_cr_egg_class);
fopAcM_ct(&a_this->enemy, e_cr_egg_class);
int phase_state = dComIfG_resLoad(&a_this->phase, "E_CR");
if (phase_state == cPhs_COMPLEATE_e) {
+1 -1
View File
@@ -2015,7 +2015,7 @@ static int daE_DB_IsDelete(e_db_class* i_this) {
static int daE_DB_Delete(e_db_class* i_this) {
fopAc_ac_c* actor = &i_this->enemy;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_DB");
dComIfG_resDelete(&i_this->phase, "E_db");
if (i_this->HIOInit) {
+5 -5
View File
@@ -25,8 +25,8 @@ STATIC_ASSERT(sizeof(daE_DF_HIO_c) == 0xC);
#if DEBUG
inline void daE_DF_HIO_c::genMessage(JORMContext* i_ctx) {
i_ctx->genLabel("デクレシア", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
i_ctx->genSlider("速度", &field_0x8, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
i_ctx->genLabel("デクレシア", 0x80000001);
i_ctx->genSlider("速度", &field_0x8, 0.0f, 100.0f);
}
#endif
@@ -642,7 +642,7 @@ static int daE_DF_IsDelete(daE_DF_c* i_this) {
}
static int daE_DF_Delete(daE_DF_c* i_this) {
fpc_ProcID proc_id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_DF");
return i_this->Delete();
}
@@ -655,7 +655,7 @@ int daE_DF_c::Create() {
mArg0 = (u8)fopAcM_GetParam(this);
if (mArg0 != 0xff && dComIfGs_isSwitch(mArg0, fopAcM_GetRoomNo(this))) {
OS_REPORT("E_WS やられ後なので再セットしません");
OS_REPORT("E_WS やられ後なので再セットしません\n");
return cPhs_ERROR_e;
}
@@ -706,7 +706,7 @@ int daE_DF_c::Create() {
static int daE_DF_Create(fopAc_ac_c* i_this) {
daE_DF_c* a_this = (daE_DF_c*)i_this;
fpc_ProcID proc_id = fopAcM_GetID(i_this);
fopAcM_RegisterCreateID(i_this, "E_DF");
return a_this->Create();
}
+1 -1
View File
@@ -932,7 +932,7 @@ int daE_DK_c::_delete() {
}
static int daE_DK_Delete(daE_DK_c* i_this) {
fpc_ProcID unusedId = fopAcM_GetID(i_this); // debug match
fopAcM_RegisterDeleteID(i_this, "E_DK");
return i_this->_delete();
}
+12 -12
View File
@@ -146,17 +146,17 @@ daE_DN_HIO_c::daE_DN_HIO_c() {
#if DEBUG
void daE_DN_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" リザードマン", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("基本サイズ", &model_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("突進速度", &dash_speed, 0.0f, 40.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("戦闘開始範囲", &battle_init_range, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻撃開始範囲", &attack_init_range, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("不死身", &invulnerable, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("学習なし", &no_learn, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("魂抜間 弱", &soul_disappear_time_weak, 0, 100, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("魂抜間 強", &soul_disappear_time_strong, 0, 100, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("防御静止間", &defense_pause_time, 0, 20, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" リザードマン", 0x80000001);
ctx->genSlider("基本サイズ", &model_size, 0.0f, 5.0f);
ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f);
ctx->genSlider("突進速度", &dash_speed, 0.0f, 40.0f);
ctx->genSlider("戦闘開始範囲", &battle_init_range, 0.0f, 2000.0f);
ctx->genSlider("攻撃開始範囲", &attack_init_range, 0.0f, 1000.0f);
ctx->genCheckBox("不死身", &invulnerable, 0x1);
ctx->genCheckBox("学習なし", &no_learn, 0x1);
ctx->genSlider("魂抜間 弱", &soul_disappear_time_weak, 0, 100);
ctx->genSlider("魂抜間 強", &soul_disappear_time_strong, 0, 100);
ctx->genSlider("防御静止間", &defense_pause_time, 0, 20);
}
#endif
@@ -3282,7 +3282,7 @@ static int daE_DN_IsDelete(e_dn_class* i_this) {
static int daE_DN_Delete(e_dn_class* i_this) {
fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
fpc_ProcID no = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_DN");
dComIfG_resDelete(&i_this->phase, "E_dn");
+13 -19
View File
@@ -32,29 +32,29 @@ daE_FB_HIO_c::daE_FB_HIO_c() {
#if DEBUG
void daE_FB_HIO_c::genMessage(JORMContext* ctext) {
// "Frizzard (large)"
ctext->genLabel("フリザド(大)", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel("フリザド(大)", 0x80000001);
// "Model size"
ctext->genSlider("モデルサイズ", &model_size, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("モデルサイズ", &model_size, 0.0f, 10.0f);
// "Player detection range"
ctext->genSlider("プレイヤー発見距離", &player_detection_range, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("プレイヤー発見距離", &player_detection_range, 0.0f, 10000.0f);
// "Next attack wait time"
ctext->genSlider("次回攻撃待ち時間", &next_attack_waiting_time, 0, 1000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("次回攻撃待ち時間", &next_attack_waiting_time, 0, 1000);
// "Maximum rotation width"
ctext->genSlider("最大回転幅", &maximum_rotation_width, 0, 10000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("最大回転幅", &maximum_rotation_width, 0, 10000);
// "Minimum turning range"
ctext->genSlider("最小回転幅", &minimum_turning_range, 0, 10000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("最小回転幅", &minimum_turning_range, 0, 10000);
// "Stage rotation amplitude (speed)"
ctext->genSlider("階段用回転幅(速度)", &rotation_width_stairs, 0, 10000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("階段用回転幅(速度)", &rotation_width_stairs, 0, 10000);
// "Color Regi 1R"
ctext->genSlider("カラレジ1R", &color_register_1r, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("カラレジ1R", &color_register_1r, 0, 0xFF);
// "Color Regi 1G"
ctext->genSlider("カラレジ1G", &color_register_1g, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("カラレジ1G", &color_register_1g, 0, 0xFF);
// "Color Regi 1B"
ctext->genSlider("カラレジ1B", &color_register_1b, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("カラレジ1B", &color_register_1b, 0, 0xFF);
// "Color Regi 1α "
ctext->genSlider("カラレジ1α ", &color_register_1a, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("カラレジ1α ", &color_register_1a, 0, 0xFF);
// "Maximum rotation width"
ctext->genSlider("最大回転幅", &maximum_rotation_width_2, 0, 180, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("最大回転幅", &maximum_rotation_width_2, 0, 180);
}
#endif
@@ -817,12 +817,6 @@ void daE_FB_c::dead_eff_set() {
}
}
#if DEBUG
static char* dummy_117771() {
return "Delete -> E_FB(id=%d)\n";
}
#endif
int daE_FB_c::execute() {
if (field_0x69c != 0) {
--field_0x69c;
@@ -869,7 +863,7 @@ int daE_FB_c::_delete() {
}
static int daE_FB_Delete(daE_FB_c* i_this) {
int id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_FB");
return static_cast<daE_FB_c*>(i_this)->_delete();
}
+6 -6
View File
@@ -153,18 +153,18 @@ static int daE_Ga_IsDelete(e_ga_class* a_this) {
static u8 hio_set;
static int daE_Ga_Delete(e_ga_class* a_this) {
fopAc_ac_c* actor = &a_this->actor;
fpc_ProcID id = fopAcM_GetID(actor);
static int daE_Ga_Delete(e_ga_class* i_this) {
fopAc_ac_c* actor = &i_this->actor;
fopAcM_RegisterDeleteID(i_this, "E_Ga");
if (a_this->initialized) {
if (i_this->initialized) {
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_ga", 3);
dComIfGp_removeSimpleModel(modelData, fopAcM_GetRoomNo(actor));
}
dComIfG_resDelete(&a_this->phase, "E_ga");
dComIfG_resDelete(&i_this->phase, "E_ga");
if (a_this->HIOInit) {
if (i_this->HIOInit) {
hio_set = FALSE;
}
+10 -12
View File
@@ -60,15 +60,15 @@ daE_GB_HIO_c::daE_GB_HIO_c() {
#if DEBUG
void daE_GB_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" デカババ  ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel("   大幅なサイズ変更は姿勢生成に影響があるので注意   ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("顔サイズ", &face_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("花サイズ", &flower_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("茎サイズ", &stem_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻撃頻度", &attack_frequency, 0, 30000, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻撃速度", &attack_spd, 0.0f, 200.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻後距離", &attack_range, 0, 30, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻後停間", &post_attack_pause_timer, 0, 200, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" デカババ  ", 0x80000001);
ctx->genLabel("   大幅なサイズ変更は姿勢生成に影響があるので注意   ", 0x80000001);
ctx->genSlider("顔サイズ", &face_size, 0.0f, 5.0f);
ctx->genSlider("花サイズ", &flower_size, 0.0f, 5.0f);
ctx->genSlider("茎サイズ", &stem_size, 0.0f, 5.0f);
ctx->genSlider("攻撃頻度", &attack_frequency, 0, 30000);
ctx->genSlider("攻撃速度", &attack_spd, 0.0f, 200.0f);
ctx->genSlider("攻後距離", &attack_range, 0, 30);
ctx->genSlider("攻後停間", &post_attack_pause_timer, 0, 200);
}
#endif
@@ -1544,10 +1544,8 @@ static int daE_GB_IsDelete(e_gb_class* i_this) {
}
static int daE_GB_Delete(e_gb_class* i_this) {
"Delete -> E_GB(id=%d)\n";
fopEn_enemy_c* actor = &i_this->actor;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_GB");
dComIfG_resDelete(&i_this->phase, "E_gb");
if (i_this->hioInit != 0) {
+1 -1
View File
@@ -1315,7 +1315,7 @@ int daE_GE_c::create() {
l_HIO.id = mDoHIO_CREATE_CHILD("グェー", &l_HIO);
}
attention_info.flags = 4;
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
fopAcM_SetMtx(this, mpMorfSO->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
+1 -1
View File
@@ -1323,7 +1323,7 @@ static int daE_HB_IsDelete(e_hb_class* i_this) {
static int daE_HB_Delete(e_hb_class* i_this) {
fopAc_ac_c* actor = &i_this->enemy;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_HB");
dComIfG_resDelete(&i_this->phase, "E_hb");
if (i_this->HIOInit) {
+9 -9
View File
@@ -43,13 +43,13 @@ daE_HM_HIO_c::daE_HM_HIO_c() {
void daE_HM_HIO_c::genMessage(JORMContext* ctx) {
// "Himekuji"
// appears to be a portmanteau - "ヒメ" = small (prefix), "ナメクジ" = slug)
ctx->genLabel("ヒメクジ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("サーチエリア", &searchArea, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("飛ばし方向スピード", &flyDirSpeed, 0.0f, -100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("飛ばし方向Yスピード", &flyDirYSpeed, 0.0f, 100.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("重力設定", &gravity, 0.0f, -20.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("攻撃範囲", &attackRange, -1.0f, 20.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("疾風受け時間", &galeStunTime, 0.0f, 1000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel("ヒメクジ", 0x80000001);
ctx->genSlider("サーチエリア", &searchArea, 0.0f, 2000.0f);
ctx->genSlider("飛ばし方向スピード", &flyDirSpeed, 0.0f, -100.0f);
ctx->genSlider("飛ばし方向Yスピード", &flyDirYSpeed, 0.0f, 100.0f);
ctx->genSlider("重力設定", &gravity, 0.0f, -20.0f);
ctx->genSlider("攻撃範囲", &attackRange, -1.0f, 20.0f);
ctx->genSlider("疾風受け時間", &galeStunTime, 0.0f, 1000.0f);
}
#endif
@@ -1301,7 +1301,7 @@ int daE_HM_c::Execute() {
cXyz bindEffectSize(1.0f, 1.0f, 1.0f);
u32 cutType = daPy_getPlayerActorClass()->getCutType();
if (cutType == 0x36 && mSph.ChkAtSet() != 0) {
if (cutType == daPy_py_c::CUT_TYPE_WOLF_LOCK && mSph.ChkAtSet() != 0) {
mSph.OffAtSetBit();
field_0x5ac = 1;
} else if (field_0x5ac != 0) {
@@ -1393,7 +1393,7 @@ static int daE_HM_IsDelete(daE_HM_c* i_this) {
}
static int daE_HM_Delete(daE_HM_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_HM");
return i_this->Delete();
}
+15 -18
View File
@@ -85,15 +85,12 @@ daE_HP_HIO_c::daE_HP_HIO_c() {
#if DEBUG
void daE_HP_HIO_c::genMessage(JORMContext* ctx) {
// General-purpose Poe
ctx->genLabel("汎用ポゥ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("モデルサイズ", &modelSize, 0.0, 10.0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("攻撃終了後待ち時間", &waitTimeAfterAttack, 0, 1000, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("復活時間", &resurrectionTime, 0, 1000, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("接近後攻撃しない時間", &attackDelayOnApproach, 0, 0xfe, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genCheckBox("範囲表示(FINALでは不可)", &rangeDisplay, 1, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genLabel("汎用ポゥ", 0x80000001);
ctx->genSlider("モデルサイズ", &modelSize, 0.0, 10.0);
ctx->genSlider("攻撃終了後待ち時間", &waitTimeAfterAttack, 0, 1000);
ctx->genSlider("復活時間", &resurrectionTime, 0, 1000);
ctx->genSlider("接近後攻撃しない時間", &attackDelayOnApproach, 0, 0xfe);
ctx->genCheckBox("範囲表示(FINALでは不可)", &rangeDisplay, 0x1);
}
#endif
@@ -1132,14 +1129,14 @@ int daE_HP_c::_delete() {
}
static int daE_HP_Delete(daE_HP_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_HP");
return i_this->_delete();
}
int daE_HP_c::CreateHeap() {
J3DModelData* modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 19);
JUT_ASSERT(0x764, modeldata != NULL);
mpMorfSO = new mDoExt_McaMorfSO(modeldata, NULL, NULL,
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("E_HP", 19);
JUT_ASSERT(0x764, modelData != NULL);
mpMorfSO = new mDoExt_McaMorfSO(modelData, NULL, NULL,
(J3DAnmTransform*)dComIfG_getObjectRes("E_HP", 13), 2, 1.0f, 0,
-1, &mSound1, 0x80000, 0x11000084);
if (mpMorfSO == NULL || mpMorfSO->getModel() == NULL) {
@@ -1159,10 +1156,10 @@ int daE_HP_c::CreateHeap() {
}
}
modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 20);
JUT_ASSERT(0x78b, modeldata != NULL);
modelData = (J3DModelData*)dComIfG_getObjectRes("E_HP", 20);
JUT_ASSERT(0x78b, modelData != NULL);
mpModel = mDoExt_J3DModel__create(modeldata, 0x80000, 0x11000084);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
if (mpModel == NULL) {
return 0;
}
@@ -1174,9 +1171,9 @@ int daE_HP_c::CreateHeap() {
}
}
modeldata = (J3DModelData*)dComIfG_getObjectRes("E_HP", 18);
modelData = (J3DModelData*)dComIfG_getObjectRes("E_HP", 18);
mpMorf =
new mDoExt_McaMorf(modeldata, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_HP", 4),
new mDoExt_McaMorf(modelData, NULL, NULL, (J3DAnmTransform*)dComIfG_getObjectRes("E_HP", 4),
2, 1.0f, 0, -1, 1, NULL, 0x80000, 0x11000084);
if (mpMorf == NULL || mpMorf->getModel() == 0) {
+17 -17
View File
@@ -69,21 +69,21 @@ daE_HZ_HIO_c::daE_HZ_HIO_c() {
#if DEBUG
void daE_HZ_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" 敵サンプル", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("PL発見半径表示", &pl_detection_radius_display, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("PL発見半径(内)", &pl_detection_radius_in, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("PL発見半径(外)", &pl_detection_radius_outside, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("逃げ速度", &escape_speed, 0.0f, 200.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("ぴより時間", &piyori_time, 0.0f, 500.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("巻き込み回転速度", &reeling_rotation_speed, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("巻き込みY位置", &y_position_wrap, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("伸び溜め時間", &extension_time, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("伸びアニメ速度", &stretch_anim_speed, 0.0f, 1.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("伸び前の溜め時間", &retention_time_before_stretch, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel("カメラ用タイマー", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("オンタイマー", &camera_on_timer, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("オフタイマー", &camera_off_timer, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" 敵サンプル", 0x80000001);
ctx->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f);
ctx->genCheckBox("PL発見半径表示", &pl_detection_radius_display, 0x1);
ctx->genSlider("PL発見半径(内)", &pl_detection_radius_in, 0.0f, 5000.0f);
ctx->genSlider("PL発見半径(外)", &pl_detection_radius_outside, 0.0f, 5000.0f);
ctx->genSlider("逃げ速度", &escape_speed, 0.0f, 200.0f);
ctx->genSlider("ぴより時間", &piyori_time, 0.0f, 500.0f);
ctx->genSlider("巻き込み回転速度", &reeling_rotation_speed, 0.0f, 10000.0f);
ctx->genSlider("巻き込みY位置", &y_position_wrap, 0.0f, 1000.0f);
ctx->genSlider("伸び溜め時間", &extension_time, 0.0f, 100.0f);
ctx->genSlider("伸びアニメ速度", &stretch_anim_speed, 0.0f, 1.0f);
ctx->genSlider("伸び前の溜め時間", &retention_time_before_stretch, 0.0f, 100.0f);
ctx->genLabel("カメラ用タイマー", 0x80000001);
ctx->genSlider("オンタイマー", &camera_on_timer, 0.0f, 100.0f);
ctx->genSlider("オフタイマー", &camera_off_timer, 0.0f, 100.0f);
}
#endif
@@ -1634,7 +1634,7 @@ void daE_HZ_c::action() {
setActionMode(ACTION_WATER_DEATH);
}
attention_info.flags = 4;
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
field_0x566 = 1;
switch (mAction) {
@@ -1870,7 +1870,7 @@ int daE_HZ_c::_delete() {
}
static int daE_HZ_Delete(daE_HZ_c* i_this) {
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_HZ");
return i_this->_delete();
}
+5 -5
View File
@@ -876,7 +876,7 @@ void daE_KK_c::executeDead() {
case 0:
fopAcM_OffStatus(this, 0);
attention_info.flags &= ~fopAc_AttnFlag_BATTLE_e;
attention_info.distances[2] = 0;
attention_info.distances[fopAc_attn_BATTLE_e] = 0;
offHeadLockFlg();
health = 0;
speedF = 0.0f;
@@ -1266,8 +1266,8 @@ int daE_KK_c::execute() {
return 1;
}
if (attention_info.distances[2] == 0) {
attention_info.distances[2] = 0x45;
if (attention_info.distances[fopAc_attn_BATTLE_e] == 0) {
attention_info.distances[fopAc_attn_BATTLE_e] = 0x45;
fopAcM_SetGroup(this, 2);
fopAcM_OnStatus(this, 0);
attention_info.flags |= fopAc_AttnFlag_BATTLE_e;
@@ -1443,7 +1443,7 @@ int daE_KK_c::create() {
field_0x760 = current.pos.y;
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
attention_info.distances[2] = 0x4C;
attention_info.distances[fopAc_attn_BATTLE_e] = 0x4C;
if (field_0x679 != 3) {
setActionMode(0, 0);
@@ -1461,7 +1461,7 @@ int daE_KK_c::create() {
fopAcM_SetMax(this, 600.0f, 600.0f, 600.0f);
if (field_0x679 == 2 && !checkItemGet(fpcNm_ITEM_IRONBALL, 1)) {
attention_info.distances[2] = 0;
attention_info.distances[fopAc_attn_BATTLE_e] = 0;
fopAcM_SetGroup(this, 0);
fopAcM_OffStatus(this, 0);
attention_info.flags &= ~fopAc_AttnFlag_BATTLE_e;
+7 -7
View File
@@ -49,12 +49,12 @@ daE_MB_HIO_c::daE_MB_HIO_c() {
#if DEBUG
void daE_MB_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" ボス戦ブーメラン猿", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("振り子速度", &swing_speed, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("振り子下弦", &swing_descend, 0.5f, 2.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("軌道修正", &swing_correction, -500.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("再出現時間(およそ)", &reappear_time, 0.0f, 300.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel(" ボス戦ブーメラン猿", 0x80000001);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f);
ctx->genSlider("振り子速度", &swing_speed, 0.0f, 1000.0f);
ctx->genSlider("振り子下弦", &swing_descend, 0.5f, 2.0f);
ctx->genSlider("軌道修正", &swing_correction, -500.0f, 2000.0f);
ctx->genSlider("再出現時間(およそ)", &reappear_time, 0.0f, 300.0f);
}
#endif
@@ -619,7 +619,7 @@ static int daE_MB_IsDelete(e_mb_class* i_this) {
static int daE_MB_Delete(e_mb_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fpc_ProcID id = fopAcM_GetID(a_this);
fopAcM_RegisterDeleteID(a_this, "E_MB");
dComIfG_resDelete(&i_this->mPhase, "E_mb");
+1 -1
View File
@@ -102,7 +102,7 @@ static int useHeapInit(fopAc_ac_c* i_this) {
static int daE_MD_Create(fopAc_ac_c* i_this) {
daE_MD_c* a_this = (daE_MD_c*)i_this;
fpc_ProcID id = fopAcM_GetID(a_this);
fpc_ProcID id = fopAcM_GetID(i_this);
return a_this->create();
}
+13 -13
View File
@@ -48,17 +48,17 @@ daE_MK_HIO_c::daE_MK_HIO_c() {
#if DEBUG
void daE_MK_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" ブーメラン猿", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("基本サイズ", &size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("ブーメラン比率", &boomerang_ratio, 0.0f, 2.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("PL投max距離", &pl_throw_dist_max, 0.0f, 4000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("動作停止", &halt_action, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel("王冠位置補正", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider(" X", &crown_pos_adjust.x, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider(" Y", &crown_pos_adjust.y, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider(" Z", &crown_pos_adjust.z, -50.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" ブーメラン猿", 0x80000001);
ctx->genSlider("基本サイズ", &size, 0.0f, 5.0f);
ctx->genSlider("ブーメラン比率", &boomerang_ratio, 0.0f, 2.0f);
ctx->genSlider("PL投max距離", &pl_throw_dist_max, 0.0f, 4000.0f);
ctx->genLabel(" ", 0x80000001);
ctx->genCheckBox("動作停止", &halt_action, 0x1);
ctx->genLabel(" ", 0x80000001);
ctx->genLabel("王冠位置補正", 0x80000001);
ctx->genSlider(" X", &crown_pos_adjust.x, -50.0f, 50.0f);
ctx->genSlider(" Y", &crown_pos_adjust.y, -50.0f, 50.0f);
ctx->genSlider(" Z", &crown_pos_adjust.z, -50.0f, 50.0f);
}
#endif
@@ -2774,7 +2774,7 @@ static int daE_MK_IsDelete(e_mk_class* i_this) {
static int daE_MK_Delete(e_mk_class* i_this) {
fopEn_enemy_c* actor = (fopEn_enemy_c*)&i_this->actor;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_MK");
dComIfG_resDelete(&i_this->phase, "E_mk");
if (i_this->hioInit != 0) {
@@ -2886,7 +2886,7 @@ static int daE_MK_Create(fopAc_ac_c* i_actor) {
mk->sound.init(&i_actor->current.pos, &i_actor->eyePos, 3, 1);
mk->atInfo.mpSound = &mk->sound;
i_actor->attention_info.distances[2] = 4;
i_actor->attention_info.distances[fopAc_attn_BATTLE_e] = 4;
mk->stts.Init(0xFF, 0, i_actor);
mk->tgSph.Set(cc_sph_src);
+6 -6
View File
@@ -134,7 +134,7 @@ static void e_mm_mt_normal(e_mm_mt_class* i_this) {
fopAcM_SetGroup(actor, 3);
fopAcM_OffStatus(actor, 0);
actor->attention_info.flags &= ~fopAc_AttnFlag_BATTLE_e;
actor->attention_info.distances[2] = 0;
actor->attention_info.distances[fopAc_attn_BATTLE_e] = 0;
fopAcM_OnStatus(actor, 0x400);
s16 actor_angle = player->shape_angle.y + 0x4000;
s16 angle = actor->shape_angle.y - actor_angle;
@@ -372,7 +372,7 @@ static void e_mm_mt_drop(e_mm_mt_class* i_this) {
i_this->enemy.attention_info.position = i_this->enemy.current.pos;
cLib_addCalcAngleS2(&i_this->m_rotation.z, (TREG_S(6)+0x10000)-0x8000, 1, 0x1000);
cLib_onBit<u32>(i_this->enemy.attention_info.flags, fopAc_AttnFlag_CARRY_e);
i_this->enemy.attention_info.distances[4] = 7;
i_this->enemy.attention_info.distances[fopAc_attn_CARRY_e] = 7;
i_this->m_rotation.y += i_this->m_spin;
if (i_this->enemy.speedF >= 20.0f) {
i_this->m_sphere.OnAtSetBit();
@@ -595,10 +595,10 @@ static void action(e_mm_mt_class* i_this) {
fopAc_ac_c* local_a4 = at_power_check(&i_this->m_atInfo);
if (i_this->m_atInfo.mHitType == 1) {
if (daPy_getPlayerActorClass()->getCutType() == 8 ||
daPy_getPlayerActorClass()->getCutType() == 9 ||
daPy_getPlayerActorClass()->getCutType() == 23 ||
daPy_getPlayerActorClass()->getCutType() == 24) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_TURN_RIGHT ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_UNK_9 ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_LEFT ||
daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_LARGE_TURN_RIGHT) {
actor->speedF = cM_rndF(10.0f) + 40.0f + TREG_F(16);
i_this->m_spin = (s16)(cM_rndF(2000.0f) + 5500.0f);
i_this->field_0x69C = (s16)(cM_rndF(1000.0f) + 5000.0f);
+7 -9
View File
@@ -71,21 +71,19 @@ daE_NZ_HIO_c::daE_NZ_HIO_c() {
#if DEBUG
void daE_NZ_HIO_c::genMessage(JORMContext* ctx) {
// Ghost Rat
ctx->genLabel(" 幽霊ネズミ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel(" 幽霊ネズミ", 0x80000001);
// Basic Size
ctx->genSlider("基本サイズ", &mBasicSize, 0.0f, 5.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("基本サイズ", &mBasicSize, 0.0f, 5.0f);
// Basic Speed
ctx->genSlider("移動速度", &mSpeed, 0.0f, 30.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("移動速度", &mSpeed, 0.0f, 30.0f);
// Attack Speed
ctx->genSlider("攻撃速度", &mAttackSpeed, 0.0f, 60.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("攻撃速度", &mAttackSpeed, 0.0f, 60.0f);
// Attack Wait Time
ctx->genSlider("出現タイムラグ", &mWaitTime, 0, 0x23, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("出現タイムラグ", &mWaitTime, 0, 0x23);
// Current alpha speed
ctx->genSlider("現α速度", &mCurrentAlphaSpeed, 0.0f, 255.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("現α速度", &mCurrentAlphaSpeed, 0.0f, 255.0f);
// Vanishing alpha speed
ctx->genSlider("消α速度", &mVanishingAlphaSpeed, 0.0f, 255.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("消α速度", &mVanishingAlphaSpeed, 0.0f, 255.0f);
}
#endif
+14 -14
View File
@@ -107,25 +107,25 @@ daE_OC_HIO_c::daE_OC_HIO_c() {
#if DEBUG
void daE_OC_HIO_c::genMessage(JORMContext* ctext) {
// enemy sample
ctext->genLabel("敵サンプル", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel("敵サンプル", 0x80000001);
// basic size
ctext->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f);
// player search max radius S
ctext->genSlider("プレイヤーサーチ最大半径S", &plyr_srch_max_radius_S, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("プレイヤーサーチ最大半径S", &plyr_srch_max_radius_S, 0.0f, 10000.0f);
// player search max radius M
ctext->genSlider("プレイヤーサーチ最大半径M", &plyr_srch_max_radius_M, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("プレイヤーサーチ最大半径M", &plyr_srch_max_radius_M, 0.0f, 10000.0f);
// player search min radius
ctext->genSlider("プレイヤーサーチ最小半径", &plyr_srch_min_radius, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("プレイヤーサーチ最小半径", &plyr_srch_min_radius, 0.0f, 10000.0f);
// battle participation radius
ctext->genSlider("戦闘参加半径", &battle_participation_radius, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("戦闘参加半径", &battle_participation_radius, 0.0f, 3000.0f);
// attention radius of slain teammate
ctext->genSlider("やられ仲間注目半径", &teammate_attention_radius, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("やられ仲間注目半径", &teammate_attention_radius, 0.0f, 3000.0f);
// demo waiting time
ctext->genSlider("デモ待機時間", &demo_waiting_time, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("デモ待機時間", &demo_waiting_time, 0.0f, 3000.0f);
// out of range standby distance
ctext->genSlider("範囲外待機距離", &standby_distance, 0.0f, 10000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("範囲外待機距離", &standby_distance, 0.0f, 10000.0f);
// radius representation
ctext->genCheckBox("半径表示", &radius_representation, 1, 0, NULL, -1, -1, 0x200, 0x18);
ctext->genCheckBox("半径表示", &radius_representation, 0x1);
}
#endif
@@ -613,13 +613,13 @@ int daE_OC_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_STAB:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
return 0;
case daPy_py_c::CUT_TYPE_COMBO_STAB:
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
case daPy_py_c::CUT_TYPE_NM_LEFT:
return 1;
default:
+1 -1
View File
@@ -684,7 +684,7 @@ void daE_OctBg_c::damage_check() {
field_0x9f8.ChkAtHit())
{
if (field_0x9f8.ChkAtShieldHit()) {
if (daPy_getPlayerActorClass()->getCutType() == 41) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_GUARD_ATTACK) {
setAction(&daE_OctBg_c::damage);
return;
}
+4 -4
View File
@@ -265,14 +265,14 @@ u8 daE_PZ_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_FINISH_VERTICAL:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return 1;
case daPy_py_c::CUT_TYPE_NM_LEFT:
case daPy_py_c::CUT_TYPE_FINISH_LEFT:
case daPy_py_c::CUT_TYPE_COMBO_STAB:
case daPy_py_c::CUT_TYPE_HORSE_UNK_22:
case daPy_py_c::CUT_TYPE_HORSE_UNK_23:
case daPy_py_c::CUT_TYPE_DASH_UNK_25:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_A:
case daPy_py_c::CUT_TYPE_HORSE_LEFT_B:
case daPy_py_c::CUT_TYPE_DASH_LEFT:
return 2;
default:
return 3;
+25 -25
View File
@@ -231,52 +231,52 @@ daE_RD_HIO_c::daE_RD_HIO_c() {
#if DEBUG
void daE_RD_HIO_c::genMessage(JORMContext* ctext) {
// Rider (a.k.a. Bulblins)
ctext->genLabel(" ライダー", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" ライダー", 0x80000001);
// basic size
ctext->genSlider("基本サイズ", &model_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("基本サイズ", &model_size, 0.0f, 5.0f);
// leader size ratio
ctext->genSlider("リーダーサイズ比", &leader_size_ratio, 0.0f, 2.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("リーダーサイズ比", &leader_size_ratio, 0.0f, 2.0f);
// movement speed
ctext->genSlider("移動速度", &movement_speed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("移動速度", &movement_speed, 0.0f, 20.0f);
// ~~ In the case of a club-wielding soldier ~~
ctext->genLabel(" ~~ こん棒兵の場合 ~~", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" ~~ こん棒兵の場合 ~~", 0x80000001);
// speed rush
ctext->genSlider("突進速度", &dash_speed, 0.0f, 40.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("突進速度", &dash_speed, 0.0f, 40.0f);
// combat start range
ctext->genSlider("戦闘開始範囲", &battle_init_range, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("戦闘開始範囲", &battle_init_range, 0.0f, 2000.0f);
// attack range
ctext->genSlider("攻撃開始範囲", &attack_init_range, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃開始範囲", &attack_init_range, 0.0f, 1000.0f);
// swing speed
ctext->genSlider("振り速さ", &swing_speed, 0.0f, 3.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("振り速さ", &swing_speed, 0.0f, 3.0f);
ctext->genLabel(" ", 0x80000001);
// ~~ In the case of archers ~~
ctext->genLabel(" ~~ 矢兵の場合 ~~", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" ~~ 矢兵の場合 ~~", 0x80000001);
// Command → Ready stance
ctext->genSlider("号令→構えの間", &command_to_ready_stance, 0, 200, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("号令→構えの間", &command_to_ready_stance, 0, 200);
// attack range
ctext->genSlider("攻撃範囲", &attack_range, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃範囲", &attack_range, 0.0f, 2000.0f);
// riding firing distance
ctext->genSlider("騎乗発射距離", &mounted_launch_distance, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("騎乗発射距離", &mounted_launch_distance, 0.0f, 3000.0f);
// wolf takedown power Y
ctext->genSlider("狼倒れ力Y", &wolf_falling_power_y, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("狼倒れ力Y", &wolf_falling_power_y, 0.0f, 50.0f);
// wolf takedown power Z
ctext->genSlider("狼倒れ力Z", &wolf_falling_power_z, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("狼倒れ力Z", &wolf_falling_power_z, 0.0f, 50.0f);
// flying Z (Rider suspended)
ctext->genSlider("飛びZ(騎乗停止)", &jump_z_suspended, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛びZ(騎乗停止)", &jump_z_suspended, 0.0f, 50.0f);
// flying Z
ctext->genSlider("飛びZ", &jump_z, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛びZ", &jump_z, 0.0f, 50.0f);
// flying y
ctext->genSlider("飛びY", &jump_y, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛びY", &jump_y, 0.0f, 50.0f);
// jump g
ctext->genSlider("飛びG", &jump_g, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛びG", &jump_g, 0.0f, 20.0f);
// invincible
ctext->genCheckBox("不死身", &invulnerable, 1, 0, NULL, -1, -1, 0x200, 0x18);
ctext->genCheckBox("不死身", &invulnerable, 0x1);
// eye polygons
ctext->genCheckBox("目ポリゴン", &eye_polygon, 1, 0, NULL, -1, -1, 0x200, 0x18);
ctext->genCheckBox("目ポリゴン", &eye_polygon, 0x1);
// one-hit kill
ctext->genCheckBox("一撃必殺", &one_hit_kill, 1, 0, NULL, -1, -1, 0x200, 0x18);
ctext->genCheckBox("一撃必殺", &one_hit_kill, 0x1);
// ikki (da) size
ctext->genSlider("一騎(ダ)サイズ", &field_0x3c, 0.0f, 150.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("一騎(ダ)サイズ", &field_0x3c, 0.0f, 150.0f);
}
#endif
@@ -5237,7 +5237,7 @@ static void action(e_rd_class* i_this) {
if (i_this->field_0x9bc == 0) {
a_this->attention_info.distances[2] = 3;
a_this->attention_info.distances[fopAc_attn_BATTLE_e] = 3;
if (i_this->field_0x9ec) {
cMtx_YrotS(*calc_mtx, i_this->field_0xa0c.y);
if (i_this->field_0xaf0 == 0) {
+4 -4
View File
@@ -250,9 +250,9 @@ void daE_RDY_HIO_c::genMessage(JORMContext* context) {
context->genSlider("飛びZ", &field_0x44, 0.0f, 50.0f);
context->genSlider("飛びY", &field_0x4c, 0.0f, 50.0f);
context->genSlider("飛びG", &field_0x40, 0.0f, 20.0f);
context->genCheckBox("不死身", &field_0x39, 1);
context->genCheckBox("目ポリゴン", &mDrawEyeModel, 1);
context->genCheckBox("一撃必殺", &field_0x3b, 1);
context->genCheckBox("不死身", &field_0x39, 0x1);
context->genCheckBox("目ポリゴン", &mDrawEyeModel, 0x1);
context->genCheckBox("一撃必殺", &field_0x3b, 0x1);
context->genSlider("一騎(ダ)サイズ", &field_0x3c, 0.0f, 150.0f);
}
#endif
@@ -4758,7 +4758,7 @@ static int daE_RDY_IsDelete(e_rdy_class* i_this) {
static int daE_RDY_Delete(e_rdy_class* i_this) {
fopAc_ac_c* a_this = &i_this->actor;
fpc_ProcID unused = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_RDY");
dComIfG_resDelete(&i_this->mPhase, i_this->mpArcName);
if (i_this->mHIOInit) {
+16 -16
View File
@@ -35,33 +35,33 @@ daE_SB_HIO_c::daE_SB_HIO_c() {
#if DEBUG
void daE_SB_HIO_c::genMessage(JORMContext* ctext) {
// "Shell Blade"
ctext->genLabel("シェルブレイド", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel("シェルブレイド", 0x80000001);
// "Search Area"
ctext->genSlider("サーチエリア", &search_area, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("サーチエリア", &search_area, 0.0f, 3000.0f);
// "Distance home"
ctext->genSlider("お家に帰る距離", &distance_home, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("お家に帰る距離", &distance_home, 0.0f, 1000.0f);
// "Jump XZ axis speed"
ctext->genSlider("ジャンプXZ軸スピード", &jump_xz_axis_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("ジャンプXZ軸スピード", &jump_xz_axis_speed, 0.0f, 100.0f);
// "Jump Y-axis speed"
ctext->genSlider("ジャンプY軸スピード", &jump_y_axis_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("ジャンプY軸スピード", &jump_y_axis_speed, 0.0f, 100.0f);
// "Attack jump XZ axis speed"
ctext->genSlider("攻撃ジャンプXZ軸スピード", &atk_jump_xz_axis_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃ジャンプXZ軸スピード", &atk_jump_xz_axis_speed, 0.0f, 100.0f);
// "Attack Y-axis speed"
ctext->genSlider("攻撃Y軸スピード", &atk_y_axis_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃Y軸スピード", &atk_y_axis_speed, 0.0f, 100.0f);
// "Magne On Attack Y-axis Speed"
ctext->genSlider("マグネOn攻撃Y軸スピード", &magne_on_atk_y_axis_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("マグネOn攻撃Y軸スピード", &magne_on_atk_y_axis_speed, 0.0f, 100.0f);
// "Gravity reduction rate"
ctext->genSlider("重力の減る比率", &grav_reduct_rate, 0.0f, 1.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("重力の減る比率", &grav_reduct_rate, 0.0f, 1.0f);
// "Other animation speed"
ctext->genSlider("その他アニメーションスピード", &other_anm_speed, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("その他アニメーションスピード", &other_anm_speed, 0.0f, 10.0f);
// "Shield attack animation speed"
ctext->genSlider("盾攻撃アニメーションスピード", &shield_atk_anm_speed, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("盾攻撃アニメーションスピード", &shield_atk_anm_speed, 0.0f, 10.0f);
// "DEATH animation speed"
ctext->genSlider("DEATHアニメーションスピード", &death_anm_speed, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("DEATHアニメーションスピード", &death_anm_speed, 0.0f, 10.0f);
// "Size"
ctext->genSlider("大きさ", &size, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("大きさ", &size, 0.0f, 10.0f);
// "Attack start range"
ctext->genSlider("攻撃開始範囲", &atk_start_range, 0.0f, 3000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃開始範囲", &atk_start_range, 0.0f, 3000.0f);
}
#endif
@@ -607,7 +607,7 @@ void daE_SB_c::ActionCheck() {
if ( (s16) (shape_angle.y - tgt_ang) > -0x3000 && (s16) (shape_angle.y - tgt_ang) < 0x3000) {
if (temp_r27 > 1U) {
Hit();
} else if (temp_r29 == 1 || temp_r29 == 10 || temp_r29 == 0x29 || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
} else if (temp_r29 == daPy_py_c::CUT_TYPE_NM_VERTICAL || temp_r29 == daPy_py_c::CUT_TYPE_JUMP || temp_r29 == daPy_py_c::CUT_TYPE_GUARD_ATTACK || dComIfGp_checkPlayerStatus0(0, 0x4000U)) {
Hanekaeri();
} else {
Hit();
@@ -1115,7 +1115,7 @@ cPhs__Step daE_SB_c::Create() {
}
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
attention_info.distances[2] = 0x24;
attention_info.distances[fopAc_attn_BATTLE_e] = 0x24;
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, 0.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
+11 -11
View File
@@ -46,16 +46,16 @@ daE_SH_HIO_c::daE_SH_HIO_c() {
#if DEBUG
void daE_SH_HIO_c::genMessage(JORMContext* ctx) {
// "Stalhound"
ctx->genLabel(" スタルハウンド", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("基本サイズ", &mBaseSize, 0.0f, 3.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("歩き速度", &mWalkSpeed, 0.0f, 60.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("走り速度", &mRunSpeed, 0.0f, 60.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("チェック1", &mCheck1, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("チェック2", &mCheck2, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("チェック3", &mCheck3, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("チェック4", &mCheck4, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("チェック5", &mCheck5, 0.0f, 2000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genCheckBox("時間無視", &mIgnoreTime, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genLabel(" スタルハウンド", 0x80000001);
ctx->genSlider("基本サイズ", &mBaseSize, 0.0f, 3.0f);
ctx->genSlider("歩き速度", &mWalkSpeed, 0.0f, 60.0f);
ctx->genSlider("走り速度", &mRunSpeed, 0.0f, 60.0f);
ctx->genSlider("チェック1", &mCheck1, 0.0f, 2000.0f);
ctx->genSlider("チェック2", &mCheck2, 0.0f, 2000.0f);
ctx->genSlider("チェック3", &mCheck3, 0.0f, 2000.0f);
ctx->genSlider("チェック4", &mCheck4, 0.0f, 2000.0f);
ctx->genSlider("チェック5", &mCheck5, 0.0f, 2000.0f);
ctx->genCheckBox("時間無視", &mIgnoreTime, 0x1);
}
#endif
@@ -1109,7 +1109,7 @@ static int daE_SH_IsDelete(e_sh_class* i_this) {
static int daE_SH_Delete(e_sh_class* i_this) {
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->enemy;
fpc_ProcID unusedId = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_SH");
dComIfG_resDelete(&i_this->mPhase, "E_sh");
+6 -6
View File
@@ -42,11 +42,11 @@ daE_SM2_HIO_c::daE_SM2_HIO_c() {
#if DEBUG
void daE_SM2_HIO_c::genMessage(JORMContext* ctx) {
ctx->genCheckBox("合体しない", &merge_OFF, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("色調整する", &color_debug_ON, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("色調整R", &color_debug_R, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("色調整G", &color_debug_G, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("色調整B", &color_debug_B, 0, 0xFF, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genCheckBox("合体しない", &merge_OFF, 0x1);
ctx->genCheckBox("色調整する", &color_debug_ON, 0x1);
ctx->genSlider("色調整R", &color_debug_R, 0, 0xFF);
ctx->genSlider("色調整G", &color_debug_G, 0, 0xFF);
ctx->genSlider("色調整B", &color_debug_B, 0, 0xFF);
}
#endif
@@ -1399,7 +1399,7 @@ static int daE_SM2_IsDelete(e_sm2_class* i_this) {
static int daE_SM2_Delete(e_sm2_class* i_this) {
fopAc_ac_c* actor = &i_this->enemy;
fpc_ProcID id = fopAcM_GetID(&i_this->enemy);
fopAcM_RegisterDeleteID(&i_this->enemy, "E_SM2");
#if DEBUG
l_HIO.removeHIO(i_this->enemy);
+6 -6
View File
@@ -244,12 +244,12 @@ daE_ST_HIO_c::daE_ST_HIO_c() {
#if DEBUG
void daE_ST_HIO_c::genMessage(JORMContext* ctext) {
// "stalchura" - a.k.a. skultula
ctext->genLabel(" スタルチュラ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("PL認識距離", &pl_recognize_dist, 0.0f, 5000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("戦闘開始距離", &combat_start_dist, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("攻撃前間", &time_before_attack, 0, 50, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("ダウン時間", &down_time, 0, 300, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" スタルチュラ", 0x80000001);
ctext->genSlider("基本サイズ", &basic_size, 0.0f, 5.0f);
ctext->genSlider("PL認識距離", &pl_recognize_dist, 0.0f, 5000.0f);
ctext->genSlider("戦闘開始距離", &combat_start_dist, 0.0f, 1000.0f);
ctext->genSlider("攻撃前間", &time_before_attack, 0, 50);
ctext->genSlider("ダウン時間", &down_time, 0, 300);
}
#endif
+2 -2
View File
@@ -1755,10 +1755,10 @@ cPhs__Step daE_SW_c::create() {
if (field_0x694 == 0) {
mBgc.OnLineCheck();
field_0x698 = 2;
attention_info.distances[2] = 3;
attention_info.distances[fopAc_attn_BATTLE_e] = 3;
d_setAction(&daE_SW_c::d_wait);
} else {
attention_info.distances[2] = 4;
attention_info.distances[fopAc_attn_BATTLE_e] = 4;
if (field_0x6dc > 1.0f) {
field_0x98c.SetAtSpl((dCcG_At_Spl)1);
+1 -1
View File
@@ -720,7 +720,7 @@ static int daE_TK_Create(fopAc_ac_c* i_this) {
fopAcM_SetMin(a_this, -100.0f, -100.0f, -100.0f);
fopAcM_SetMax(a_this, 100.0f, 100.0f, 100.0f);
a_this->attention_info.distances[2] = 0x04;
a_this->attention_info.distances[fopAc_attn_BATTLE_e] = 0x04;
a_this->health = 10;
a_this->field_0x560 = 10;
+1 -1
View File
@@ -524,7 +524,7 @@ static int daE_TK2_Create(fopAc_ac_c* i_this) {
fopAcM_SetMin(a_this, -100.0f, -100.0f, -100.0f);
fopAcM_SetMax(a_this, 100.0f, 100.0f, 100.0f);
a_this->attention_info.distances[2] = 0x04;
a_this->attention_info.distances[fopAc_attn_BATTLE_e] = 0x04;
a_this->health = 0;
a_this->field_0x560 = 0;
+2 -2
View File
@@ -171,7 +171,7 @@ int daE_TT_c::getCutType() {
case daPy_py_c::CUT_TYPE_NM_VERTICAL:
case daPy_py_c::CUT_TYPE_NM_STAB:
case daPy_py_c::CUT_TYPE_NM_RIGHT:
case daPy_py_c::CUT_TYPE_DASH_UNK_26:
case daPy_py_c::CUT_TYPE_DASH_RIGHT:
return 0;
default:
@@ -1278,7 +1278,7 @@ int daE_TT_c::create() {
l_HIO.id = mDoHIO_CREATE_CHILD("テクタイト", &l_HIO); // Tektite
}
attention_info.flags = 4;
attention_info.flags = fopAc_AttnFlag_BATTLE_e;
fopAcM_SetMtx(this, mpMorfSO->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
+2 -2
View File
@@ -2759,7 +2759,7 @@ void daE_VA_c::executeOpaciDown() {
break;
}
if (player->getCutCount() > 1 || player->getCutType() == 10) {
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
if (mFadeAwayTimer < 30) {
mFadeAwayTimer = 30;
}
@@ -2773,7 +2773,7 @@ void daE_VA_c::executeOpaciDown() {
void daE_VA_c::executeOpaciDownDamage() {
daPy_py_c* player = daPy_getPlayerActorClass();
if (player->getCutCount() > 1 || player->getCutType() == 10) {
if (player->getCutCount() > 1 || player->getCutType() == daPy_py_c::CUT_TYPE_JUMP) {
if (mFadeAwayTimer < 30) {
mFadeAwayTimer = 30;
}
+27 -42
View File
@@ -87,47 +87,32 @@ daE_WB_HIO_c::daE_WB_HIO_c() {
#if DEBUG
void daE_WB_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" イノシシ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("リーダーサイズ比", &leader_size_ratio, 0.0f, 5.0, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("PL認識距離", &player_recognition_dist, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF,
512, 24);
ctx->genSlider("最速度", &max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("騎馬戦最速", &cavalry_battle_max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF,
512, 24);
ctx->genSlider("歩き速(", &leader_walking_speed, 0.0f, 30.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("最速度(", &leader_max_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("騎馬戦最(リ)", &leader_cavalry_battle_max_speed, 0.0f, 100.0f, 0, NULL,
0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("通常速(車)", &normal_speed_vi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("中速度(車)", &medium_speed_vi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("最速度(車)", &mMaxSpeedVi, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("一騎速", &mSingleRiderSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genCheckBox("手綱ナシ", &mNoReins, 1, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel(" プレイヤー騎乗時", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("最大速度", &mPlayerMountedMaxSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 512,
24);
ctx->genSlider("モーション再生速度", &mPlayerMountedMotionPlaybackSpeed, 0.0f, 5.0f, 0, NULL,
0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("ダッシュ時間", &mPlayerMountedDashTime, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF,
512, 24);
ctx->genLabel(" ", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel(" 以下 一騎討ち用", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("サーチ無視距離()", &mSearchIgnoreDistance1, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
ctx->genSlider("サーチ無視距離()", &mSearchIgnoreDistance2, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
ctx->genSlider("案内表示距離()", &mGuidanceDisplayDistance1, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
ctx->genSlider("案内表示距離()", &mGuidanceDisplayDistance2, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
0xFFFF, 512, 24);
ctx->genLabel(" イノシシ", 0x80000001);
ctx->genSlider("基本サイズ", &base_size, 0.0f, 5.0f);
ctx->genSlider("リーダーサイズ比", &leader_size_ratio, 0.0f, 5.0);
ctx->genSlider("移動速度", &movement_speed, 0.0f, 20.0f);
ctx->genSlider("PL認識距離", &player_recognition_dist, 0.0f, 2000.0f);
ctx->genSlider("最速度", &max_speed, 0.0f, 100.0f);
ctx->genSlider("騎馬戦最速", &cavalry_battle_max_speed, 0.0f, 100.0f);
ctx->genSlider("歩き速(リ)", &leader_walking_speed, 0.0f, 30.0f);
ctx->genSlider("最速度(リ)", &leader_max_speed, 0.0f, 100.0f);
ctx->genSlider("騎馬戦最(リ)", &leader_cavalry_battle_max_speed, 0.0f, 100.0f);
ctx->genSlider("通常速(", &normal_speed_vi, 0.0f, 100.0f);
ctx->genSlider("中速度(車)", &medium_speed_vi, 0.0f, 100.0f);
ctx->genSlider("最速度(", &mMaxSpeedVi, 0.0f, 100.0f);
ctx->genSlider("一騎速", &mSingleRiderSpeed, 0.0f, 100.0f);
ctx->genCheckBox("手綱ナシ", &mNoReins, 0x1);
ctx->genLabel(" ", 0x80000001);
ctx->genLabel(" プレイヤー騎乗時", 0x80000001);
ctx->genSlider("最大速度", &mPlayerMountedMaxSpeed, 0.0f, 100.0f);
ctx->genSlider("モーション再生速度", &mPlayerMountedMotionPlaybackSpeed, 0.0f, 5.0f);
ctx->genSlider("ダッシュ時間", &mPlayerMountedDashTime, 0.0f, 2000.0f);
ctx->genLabel(" ", 0x80000001);
ctx->genLabel(" 以下 一騎討ち用", 0x80000001);
ctx->genSlider("サーチ無視距離()", &mSearchIgnoreDistance1, 0.0f, 5000.0f);
ctx->genSlider("サーチ無視距離()", &mSearchIgnoreDistance2, 0.0f, 5000.0f);
ctx->genSlider("案内表示距離()", &mGuidanceDisplayDistance1, 0.0f, 5000.0f);
ctx->genSlider("案内表示距離()", &mGuidanceDisplayDistance2, 0.0f, 5000.0f);
}
#endif
@@ -5470,7 +5455,7 @@ static int daE_WB_IsDelete(e_wb_class* i_this) {
static int daE_WB_Delete(e_wb_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fpc_ProcID unused = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_WB");
dComIfG_resDelete(&i_this->mPhase, i_this->mResName);
if (i_this->field_0x17e0 != 0) {
hio_set = false;
+9 -9
View File
@@ -163,15 +163,15 @@ daE_WW_HIO_c::daE_WW_HIO_c() {
#if DEBUG
void daE_WW_HIO_c::genMessage(JORMContext* mctx) {
mctx->genLabel("ホワイトウルフォス", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("モデルサイズ", &model_size, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("攻撃間隔", &attack_interval, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("走りアニメーション", &run_anm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("歩きアニメーション", &walk_anm, 0.0f, 10.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("走る速度", &run_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("狼から逃亡速度", &wolf_escape_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genSlider("リンクから逃亡速度", &link_escape_speed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genCheckBox("移動範囲デバック表示", &move_range_debug_display, 1, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
mctx->genLabel("ホワイトウルフォス", 0x80000001);
mctx->genSlider("モデルサイズ", &model_size, 0.0f, 10.0f);
mctx->genSlider("攻撃間隔", &attack_interval, 0.0f, 2000.0f);
mctx->genSlider("走りアニメーション", &run_anm, 0.0f, 10.0f);
mctx->genSlider("歩きアニメーション", &walk_anm, 0.0f, 10.0f);
mctx->genSlider("走る速度", &run_speed, 0.0f, 100.0f);
mctx->genSlider("狼から逃亡速度", &wolf_escape_speed, 0.0f, 100.0f);
mctx->genSlider("リンクから逃亡速度", &link_escape_speed, 0.0f, 100.0f);
mctx->genCheckBox("移動範囲デバック表示", &move_range_debug_display, 0x1);
}
#endif
+7 -7
View File
@@ -109,12 +109,12 @@ daE_YG_HIO_c::daE_YG_HIO_c() {
#if DEBUG
void daE_YG_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" グース", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("基本サイズ", &basic_size, 0.0f, 3.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("移動速度", &movement_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("攻撃速度", &attack_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("泳ぎ速度", &swim_spd, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genSlider("PL認識距離", &pl_recognition_dist, 0.0f, 2000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 0x18);
ctx->genLabel(" グース", 0x80000001);
ctx->genSlider("基本サイズ", &basic_size, 0.0f, 3.0f);
ctx->genSlider("移動速度", &movement_spd, 0.0f, 50.0f);
ctx->genSlider("攻撃速度", &attack_spd, 0.0f, 50.0f);
ctx->genSlider("泳ぎ速度", &swim_spd, 0.0f, 50.0f);
ctx->genSlider("PL認識距離", &pl_recognition_dist, 0.0f, 2000.0f);
}
#endif
@@ -1299,7 +1299,7 @@ static int daE_YG_IsDelete(e_yg_class* i_this) {
static int daE_YG_Delete(e_yg_class* i_this) {
fopAc_ac_c* actor = (fopAc_ac_c*)&i_this->actor;
fpc_ProcID id = fopAcM_GetID(i_this);
fopAcM_RegisterDeleteID(i_this, "E_YG");
dComIfG_resDelete(&i_this->mPhase, "E_YG");
+6 -11
View File
@@ -38,17 +38,12 @@ daE_YH_HIO_c::daE_YH_HIO_c() {
#if DEBUG
void daE_YH_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel(" デグババ", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("基本サイズ", &mBasicSize, 0.0f, 5.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("花時サイズ", &mFlowerSeasonSize, 0.0f, 3.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("出現サイズ", &mDisplaySize, 0.0f, 3.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("天井再出現間隔", &mCeilingReappearanceInterval, 0, 300, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("攻撃頻度", &mAttackFreq, 0, 300, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genLabel(" デグババ", 0x80000001);
ctx->genSlider("基本サイズ", &mBasicSize, 0.0f, 5.0f);
ctx->genSlider("花時サイズ", &mFlowerSeasonSize, 0.0f, 3.0f);
ctx->genSlider("出現サイズ", &mDisplaySize, 0.0f, 3.0f);
ctx->genSlider("天井再出現間隔", &mCeilingReappearanceInterval, 0, 300);
ctx->genSlider("攻撃頻度", &mAttackFreq, 0, 300);
}
#endif
+5 -5
View File
@@ -59,12 +59,12 @@ static daE_YK_HIO_c l_HIO;
#if DEBUG
void daE_YK_HIO_c::genMessage(JORMContext* ctx) {
ctx->genLabel("闇キース", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genLabel("闇キース", 0x80000001);
ctx->genSlider("基本サイズ", &mModelScale, 0.0f, 3.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x512, 24);
ctx->genSlider("飛行速度", &mFlySpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("戦闘開始範囲", &mAttackRange, 0.0f, 600.0f,0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("戦闘速度", &mCruiseSpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("突進速度", &mChargeSpeed, 0.0f, 50.0f, 0, NULL, 0xFFFF, 0xFFFF, 512, 24);
ctx->genSlider("飛行速度", &mFlySpeed, 0.0f, 50.0f);
ctx->genSlider("戦闘開始範囲", &mAttackRange, 0.0f, 600.0f);
ctx->genSlider("戦闘速度", &mCruiseSpeed, 0.0f, 50.0f);
ctx->genSlider("突進速度", &mChargeSpeed, 0.0f, 50.0f);
}
#endif
+24 -24
View File
@@ -63,20 +63,20 @@ daE_YM_HIO_c::daE_YM_HIO_c() {
#if DEBUG
void daE_YM_HIO_c::genMessage(JORMContext* ctext) {
// 'yami mushi', a.k.a. dark insect
ctext->genLabel(" 闇虫", 0x80000001, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genLabel(" 闇虫", 0x80000001);
// basic size
ctext->genSlider("基本サイズ", &mModelSize, 0.0f, 5.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("放電無敵延長時間", &mElectricInvincibilityTimeExtension, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("基本サイズ", &mModelSize, 0.0f, 5.0f);
ctext->genSlider("放電無敵延長時間", &mElectricInvincibilityTimeExtension, 0.0f, 100.0f);
// hovering speed
ctext->genSlider("徘徊速度", &mMoveSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("徘徊速度", &mMoveSpeed, 0.0f, 100.0f);
// surprising distance
ctext->genSlider("びっくり距離", &mSurpriseDistance, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("びっくり距離", &mSurpriseDistance, 0.0f, 1000.0f);
// movement radius
ctext->genSlider("移動半径", &mMoveRange, 0.0f, 1000.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("移動半径", &mMoveRange, 0.0f, 1000.0f);
// flight speed
ctext->genSlider("飛行移動速度", &mFlyMoveSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛行移動速度", &mFlyMoveSpeed, 0.0f, 100.0f);
// flight attack speed
ctext->genSlider("飛行攻撃速度", &mFlyAttackSpeed, 0.0f, 100.0f, 0, NULL, 0xFFFF, 0xFFFF, 0x200, 24);
ctext->genSlider("飛行攻撃速度", &mFlyAttackSpeed, 0.0f, 100.0f);
}
#endif
@@ -562,7 +562,7 @@ void daE_YM_c::setAppear() {
mType = 0;
}
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
}
void daE_YM_c::setMoveSound(int param_0) {
@@ -689,7 +689,7 @@ void daE_YM_c::executeWait() {
case 1:
field_0x718 = 1;
if (field_0x6d4) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
} else {
field_0x714 = 0;
}
@@ -727,13 +727,13 @@ void daE_YM_c::executeWait() {
case 4: {
if (field_0x6d4) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
} else {
field_0x714 = 0;
}
if (dComIfGs_isSwitch(field_0x6a3, fopAcM_GetRoomNo(this)) && mType == 1) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
if (mTagPosP != NULL) {
setActionMode(ACT_FLY);
} else {
@@ -2259,7 +2259,7 @@ void daE_YM_c::executeRail() {
case 0: {
mIsHide = 1;
field_0x6a6 = 4;
field_0x714 |= 4;
field_0x714 |= fopAc_AttnFlag_BATTLE_e;
field_0x6dc = -70.0f;
dPnt* point_p = dPath_GetPnt(mpPath, mCurrentPntNo);
current.pos = old.pos = point_p->m_position;
@@ -2361,14 +2361,14 @@ void daE_YM_c::executeBackRail() {
field_0x6a5 = 0;
mSphCc.SetCoSPrm(0x145);
mSphCc.SetTgType(0x10000);
field_0x714 &= ~0x4;
field_0x714 &= ~fopAc_AttnFlag_BATTLE_e;
bckSet(0x10, 2, 3.0f, 0.0f);
} else {
if (field_0x6a5 == 2) {
field_0x6f0 = 0xf;
mSphCc.SetCoSPrm(0x145);
mSphCc.SetTgType(0x10000);
field_0x714 &= ~0x4;
field_0x714 &= ~fopAc_AttnFlag_BATTLE_e;
} else {
field_0x6f0 = 7;
}
@@ -2413,7 +2413,7 @@ void daE_YM_c::executeBackRail() {
// following needed for both (a) dbg stack reg to use r31, and (b) force b instruction in asm:
int _;
if (field_0x6f0 == 0) {
field_0x714 |= 4;
field_0x714 |= fopAc_AttnFlag_BATTLE_e;
setActionMode(ACT_RAIL);
}
@@ -2499,7 +2499,7 @@ void daE_YM_c::executeSwitch() {
mIsHide = 1;
if (mpPath != NULL) {
if (mpPath->field_0x4 == 1) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
} else {
field_0x714 = 0;
field_0x6cf = 0;
@@ -2627,7 +2627,7 @@ void daE_YM_c::executeFire() {
}
}
if (field_0x6d4) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
} else {
field_0x714 = 0;
}
@@ -2655,7 +2655,7 @@ void daE_YM_c::executeFire() {
field_0x6cc = 1;
}
if (mpMorf->checkFrame(14.0f)) {
attention_info.distances[2] = 0x2e;
attention_info.distances[fopAc_attn_BATTLE_e] = 0x2e;
gravity = 0.0f;
fopAcM_SearchByName(0x1f7, &field_0x660);
if (field_0x660 != NULL) {
@@ -2751,7 +2751,7 @@ void daE_YM_c::executeFire() {
void daE_YM_c::setRiverAttention() {
cXyz player_pos = daPy_getPlayerActorClass()->current.pos;
attention_info.distances[2] = 60;
attention_info.distances[fopAc_attn_BATTLE_e] = 60;
field_0x714 = 0;
if (current.pos.abs(mpKago->current.pos) > 2000.0f) {
return;
@@ -2764,7 +2764,7 @@ void daE_YM_c::setRiverAttention() {
mDoMtx_stack_c::multVecZero(&my_vec_0);
my_vec_1.set(my_vec_0.x, my_vec_0.z, my_vec_0.y);
if (abs(cM_atan2s(my_vec_1.y, my_vec_1.absXZ()) - 0x4000) < 0x2000) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
}
}
@@ -2862,7 +2862,7 @@ void daE_YM_c::executeRiver() {
next_path = mpKago->checkNextPath(current.pos);
if (mpKago->isFlying()) {
if (field_0x6f2) {
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
if (next_path < 200.0f) {
cLib_chaseF(&field_0x6ec, 70.0f, 1.0f);
} else if (next_path > 1000.0f) {
@@ -2994,7 +2994,7 @@ void daE_YM_c::checkFrinedSamePos() {
void daE_YM_c::action() {
int reg_r27 = 0; // set but not used
if (daPy_getPlayerActorClass()->getCutType() == 0x36) {
if (daPy_getPlayerActorClass()->getCutType() == daPy_py_c::CUT_TYPE_WOLF_LOCK) {
reg_r27 = 1;
field_0x700 = 0;
}
@@ -3602,7 +3602,7 @@ int daE_YM_c::create() {
l_HIO.field_0x4 = mDoHIO_CREATE_CHILD("闇の虫", &l_HIO);
}
field_0x714 = 4;
field_0x714 = fopAc_AttnFlag_BATTLE_e;
attention_info.distances[fopAc_attn_BATTLE_e] = 58;
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -100.0f, -200.0f);
+2 -2
View File
@@ -2752,9 +2752,9 @@ void daE_YMB_c::action() {
}
if (mAction != 5) {
attention_info.distances[2] = 24;
attention_info.distances[fopAc_attn_BATTLE_e] = 24;
} else {
attention_info.distances[2] = 25;
attention_info.distances[fopAc_attn_BATTLE_e] = 25;
}
field_0x712 = 0;
+27 -44
View File
@@ -93,50 +93,33 @@ public:
#if DEBUG
void e_yrHIO_c::genMessage(JORMContext* ctx) {
// "Kagarok"
ctx->genLabel("\u3000闇カーゴロック", 0x80000001, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genCheckBox("不死身", &mInvulnerable, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genCheckBox("静止", &mStationary, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genCheckBox("いきなり攻撃", &mSuddenAttack, 1, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("旋回半径", &mTurningRadius, 0.0, 10000.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("モデルスケール", &mModelScale, 0.0, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("A攻時間(最短)", &mAttackAMinTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("攻時間(最", &mAttackAMaxTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("B攻時間(最短)", &mAttackBMinTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("B攻時間(最長)", &mAttackBMaxTime, 0, 15000, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("攻撃移動速度", &mAttackMoveSpeed, 0.0, 2.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("攻撃頻度", &mAttackFrequency, 0.0, 10.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("fly再生速度", &mFlyPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("hovering再生速度", &mHoveringPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("atack再生速度", &mAttackPlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("chance再生速度", &mChancePlaybackSpeed, 0.0, 3.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("chance時間", &mChanceTime, 0, 200, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("brake開始距離", &mBrakeStartDist, 0, 3000, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("大ダメージ力", &mLargeDamage, 0.0, 150.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("小ダメージ力", &mSmallDamage, 0.0, 150.0f, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
ctx->genSlider("HIT発生フレーム", &mHitOccurrenceFrame, 0, 5, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("プ認距離(空)", &mDetectDistSky, 0.0f, 10000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("プ認高さ(空)", &mDetectHeightSky, 0.0f, 5000.0f, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("プ認角度(空)", &mDetectAngleSky, 0, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genSlider("プ認距離(地)", &mDetectDistGround, 0.0f, 10000.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("プ認高さ(地)", &mDetectHeightGround, 0.0f, 5000.0f, 0, NULL, 0xffff, 0xffff,
0x200, 0x18);
ctx->genSlider("プ認角度(地)", &mDetectAngleGround, 0, 0x7fff, 0, NULL, 0xffff, 0xffff, 0x200,
0x18);
ctx->genLabel("\u3000闇カーゴロック", 0x80000001);
ctx->genCheckBox("不死身", &mInvulnerable, 0x1);
ctx->genCheckBox("静止", &mStationary, 0x1);
ctx->genCheckBox("いきなり攻撃", &mSuddenAttack, 0x1);
ctx->genSlider("旋回半径", &mTurningRadius, 0.0, 10000.0f);
ctx->genSlider("モデルスケール", &mModelScale, 0.0, 10.0f);
ctx->genSlider("A攻時間(最短)", &mAttackAMinTime, 0, 15000);
ctx->genSlider("A攻時間(最長)", &mAttackAMaxTime, 0, 15000);
ctx->genSlider("攻時間(最", &mAttackBMinTime, 0, 15000);
ctx->genSlider("B攻時間(最長)", &mAttackBMaxTime, 0, 15000);
ctx->genSlider("攻撃移動速度", &mAttackMoveSpeed, 0.0, 2.0f);
ctx->genSlider("攻撃頻度", &mAttackFrequency, 0.0, 10.0f);
ctx->genSlider("fly再生速度", &mFlyPlaybackSpeed, 0.0, 3.0f);
ctx->genSlider("hovering再生速度", &mHoveringPlaybackSpeed, 0.0, 3.0f);
ctx->genSlider("atack再生速度", &mAttackPlaybackSpeed, 0.0, 3.0f);
ctx->genSlider("chance再生速度", &mChancePlaybackSpeed, 0.0, 3.0f);
ctx->genSlider("chance時間", &mChanceTime, 0, 200);
ctx->genSlider("brake開始距離", &mBrakeStartDist, 0, 3000);
ctx->genSlider("大ダメージ力", &mLargeDamage, 0.0, 150.0f);
ctx->genSlider("小ダメージ力", &mSmallDamage, 0.0, 150.0f);
ctx->genSlider("HIT発生フレーム", &mHitOccurrenceFrame, 0, 5);
ctx->genSlider("プ認距離(空)", &mDetectDistSky, 0.0f, 10000.0f);
ctx->genSlider("プ認高さ(空)", &mDetectHeightSky, 0.0f, 5000.0f);
ctx->genSlider("プ認角度(空)", &mDetectAngleSky, 0, 0x7fff);
ctx->genSlider("プ認距離(地)", &mDetectDistGround, 0.0f, 10000.0f);
ctx->genSlider("プ認高さ(地)", &mDetectHeightGround, 0.0f, 5000.0f);
ctx->genSlider("プ認角度(地)", &mDetectAngleGround, 0, 0x7fff);
}
#endif

Some files were not shown because too many files have changed in this diff Show More