mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-07-29 15:23:01 -04:00
Merge commit '46da46b152472c668875d67c336f59ded62d3ecc' into compile
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
File diff suppressed because it is too large
Load Diff
+1228
-1994
File diff suppressed because it is too large
Load Diff
@@ -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 {
|
||||
|
||||
@@ -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(¤t.pos, &var_r31->current.pos);
|
||||
if (catchActor != NULL) {
|
||||
shape_angle.y = cLib_targetAngleY(¤t.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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
+291
-275
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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;
|
||||
}
|
||||
|
||||
+536
-425
File diff suppressed because it is too large
Load Diff
+393
-377
File diff suppressed because it is too large
Load Diff
+695
-434
File diff suppressed because it is too large
Load Diff
+609
-509
File diff suppressed because it is too large
Load Diff
+466
-436
File diff suppressed because it is too large
Load Diff
+115
-101
@@ -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(¤t.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, ¶ms->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) {
|
||||
|
||||
+209
-244
File diff suppressed because it is too large
Load Diff
+215
-219
File diff suppressed because it is too large
Load Diff
+558
-526
File diff suppressed because it is too large
Load Diff
@@ -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(¤t.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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
{}
|
||||
|
||||
@@ -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
@@ -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(¤t.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(¤t.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(¤t.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
@@ -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(¤t.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(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
cLib_addCalcAngleS(¤t.angle.y, mMoveAngle, mpHIO->mSwim.m.mTurnRate, mpHIO->mSwim.m.mMaxTurn, mpHIO->mSwim.m.mMinTurn);
|
||||
} else {
|
||||
cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, mpHIO->mSwim.m.mUnderwaterTurnRate, mpHIO->mSwim.m.mUnderwaterMaxTurn, mpHIO->mSwim.m.mUnderwaterMinTurn);
|
||||
cLib_addCalcAngleS(¤t.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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
+1051
-978
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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」\u3000(combo_tn)*****", 0, 0, NULL, 0xffff, 0xffff, 0x200, 0x18);
|
||||
ctx->genSlider("位置X", &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」\u3000(combo_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("サイズX", &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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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
@@ -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");
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
@@ -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("サーチ無視距離(1)", &mSearchIgnoreDistance1, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
|
||||
0xFFFF, 512, 24);
|
||||
ctx->genSlider("サーチ無視距離(2)", &mSearchIgnoreDistance2, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
|
||||
0xFFFF, 512, 24);
|
||||
ctx->genSlider("案内表示距離(1)", &mGuidanceDisplayDistance1, 0.0f, 5000.0f, 0, NULL, 0xFFFF,
|
||||
0xFFFF, 512, 24);
|
||||
ctx->genSlider("案内表示距離(2)", &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("サーチ無視距離(1)", &mSearchIgnoreDistance1, 0.0f, 5000.0f);
|
||||
ctx->genSlider("サーチ無視距離(2)", &mSearchIgnoreDistance2, 0.0f, 5000.0f);
|
||||
ctx->genSlider("案内表示距離(1)", &mGuidanceDisplayDistance1, 0.0f, 5000.0f);
|
||||
ctx->genSlider("案内表示距離(2)", &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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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("A攻時間(最長)", &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("B攻時間(最短)", &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
Reference in New Issue
Block a user