mirror of
https://github.com/zeldaret/ss
synced 2026-07-07 13:33:21 -04:00
dAcEremly_c equivalent
This commit is contained in:
@@ -94,29 +94,29 @@ finalizeState_NightJumpAttack__11dAcEremly_cFv = .text:0x00006860; // type:funct
|
||||
initializeState_BirthWait__11dAcEremly_cFv = .text:0x00006870; // type:function size:0x7C
|
||||
executeState_BirthWait__11dAcEremly_cFv = .text:0x000068F0; // type:function size:0x13C
|
||||
finalizeState_BirthWait__11dAcEremly_cFv = .text:0x00006A30; // type:function size:0x4
|
||||
fn_177_6A40 = .text:0x00006A40; // type:function size:0xCC
|
||||
playWink__11dAcEremly_cFv = .text:0x00006A40; // type:function size:0xCC
|
||||
fn_177_6B10__11dAcEremly_cFbRC4mAng = .text:0x00006B10; // type:function size:0x38C
|
||||
fn_177_6EA0 = .text:0x00006EA0; // type:function size:0x120
|
||||
fn_177_6FC0 = .text:0x00006FC0; // type:function size:0x78
|
||||
fn_177_7040 = .text:0x00007040; // type:function size:0x2EC
|
||||
fn_177_7330 = .text:0x00007330; // type:function size:0x90
|
||||
fn_177_73C0 = .text:0x000073C0; // type:function size:0x144
|
||||
fn_177_7510 = .text:0x00007510; // type:function size:0xC8
|
||||
fn_177_75E0 = .text:0x000075E0; // type:function size:0x6C
|
||||
fn_177_6EA0__11dAcEremly_cFb = .text:0x00006EA0; // type:function size:0x120
|
||||
adjustHeadRotation__11dAcEremly_cFb = .text:0x00006FC0; // type:function size:0x78
|
||||
fn_177_7040__11dAcEremly_cFUlf = .text:0x00007040; // type:function size:0x2EC
|
||||
isScary__11dAcEremly_cFv = .text:0x00007330; // type:function size:0x90
|
||||
shouldBeScared__11dAcEremly_cFv = .text:0x000073C0; // type:function size:0x144
|
||||
fn_177_7510__11dAcEremly_cFf = .text:0x00007510; // type:function size:0xC8
|
||||
fn_177_75E0__11dAcEremly_cFv = .text:0x000075E0; // type:function size:0x6C
|
||||
fn_177_7650__11dAcEremly_cCFb = .text:0x00007650; // type:function size:0x164
|
||||
fn_177_77C0 = .text:0x000077C0; // type:function size:0x108
|
||||
fn_177_78D0 = .text:0x000078D0; // type:function size:0xF4
|
||||
fn_177_79D0 = .text:0x000079D0; // type:function size:0x134
|
||||
fn_177_7B10 = .text:0x00007B10; // type:function size:0x1B4
|
||||
AcERemly__handleRemlitEventsMaybe2 = .text:0x00007CD0; // type:function size:0x844
|
||||
fn_177_8520 = .text:0x00008520; // type:function size:0xD8
|
||||
fn_177_8600 = .text:0x00008600; // type:function size:0xC0
|
||||
fn_177_86C0 = .text:0x000086C0; // type:function size:0x2B4
|
||||
fn_177_8980 = .text:0x00008980; // type:function size:0x13C
|
||||
fn_177_8AC0 = .text:0x00008AC0; // type:function size:0x160
|
||||
fn_177_8C20 = .text:0x00008C20; // type:function size:0x36C
|
||||
fn_177_8F90 = .text:0x00008F90; // type:function size:0x3E0
|
||||
fn_177_9370 = .text:0x00009370; // type:function size:0xE8
|
||||
fn_177_77C0__11dAcEremly_cFv = .text:0x000077C0; // type:function size:0x108
|
||||
fn_177_78D0__11dAcEremly_cFv = .text:0x000078D0; // type:function size:0xF4
|
||||
fn_177_79D0__11dAcEremly_cFb = .text:0x000079D0; // type:function size:0x134
|
||||
fn_177_7B10__11dAcEremly_cFv = .text:0x00007B10; // type:function size:0x1B4
|
||||
nightSleepDemoImpl__11dAcEremly_cFv = .text:0x00007CD0; // type:function size:0x844
|
||||
fn_177_8520__11dAcEremly_cFb = .text:0x00008520; // type:function size:0xD8
|
||||
fn_177_8600__11dAcEremly_cFv = .text:0x00008600; // type:function size:0xC0
|
||||
fn_177_86C0__11dAcEremly_cFv = .text:0x000086C0; // type:function size:0x2B4
|
||||
fn_177_8980__11dAcEremly_cFf = .text:0x00008980; // type:function size:0x13C
|
||||
fn_177_8AC0__11dAcEremly_cFv = .text:0x00008AC0; // type:function size:0x160
|
||||
fn_177_8C20__11dAcEremly_cF4mAng = .text:0x00008C20; // type:function size:0x36C
|
||||
fn_177_8F90__11dAcEremly_cFv = .text:0x00008F90; // type:function size:0x3E0
|
||||
fn_177_9370__11dAcEremly_cFf = .text:0x00009370; // type:function size:0xE8
|
||||
vt_0x88__11dAcEnBase_cFi = .text:0x00009460; // type:function size:0x8
|
||||
vt_0x84__11dAcEnBase_cFv = .text:0x00009470; // type:function size:0x4
|
||||
vt_0x80__11dAcEnBase_cFv = .text:0x00009480; // type:function size:0x4
|
||||
|
||||
+11
-11
@@ -976,7 +976,7 @@ setupEffect__10dEmitter_cFbUsRC7mVec3_cPC7mAng3_cPC7mVec3_cPC8_GXColorPC8_GXColo
|
||||
setupEffect__10dEmitter_cFbUsRC6mMtx_cPC8_GXColorPC8_GXColor = .text:0x8002A230; // type:function size:0x150
|
||||
polyAttrsToGroundEffectIdx__14dJEffManager_cFll = .text:0x8002A380; // type:function size:0xCC
|
||||
spawnGroundEffect__14dJEffManager_cFRC7mVec3_cUcUcRC7mVec3_clff = .text:0x8002A450; // type:function size:0x1C0
|
||||
fn_8002A610 = .text:0x8002A610; // type:function size:0x678
|
||||
spawnHitMarkEffect__14dJEffManager_cFiR8cCcD_ObjPC7mVec3_cb = .text:0x8002A610; // type:function size:0x678
|
||||
fn_8002AC90 = .text:0x8002AC90; // type:function size:0x460
|
||||
vt_0x1C0__17daPlayerActBase_cCFv = .text:0x8002B0F0; // type:function size:0x8
|
||||
init__14dWaterEffect_cFP12dAcObjBase_cfff = .text:0x8002B100; // type:function size:0x14
|
||||
@@ -1153,7 +1153,7 @@ preDraw__11dAcEnBase_cFv = .text:0x8002F540; // type:function size:0x74
|
||||
fn_8002F5C0 = .text:0x8002F5C0; // type:function size:0x110
|
||||
checkBeetleActorReferences__17daPlayerActBase_cFl = .text:0x8002F6D0; // type:function size:0x8
|
||||
getBeetleActorReferencesSize__17daPlayerActBase_cFv = .text:0x8002F6E0; // type:function size:0x8
|
||||
fn_8002F6F0 = .text:0x8002F6F0; // type:function size:0xC
|
||||
getBombWithinRadius__17daPlayerActBase_cFP9dAcBase_cRC7mVec3_cf = .text:0x8002F6F0; // type:function size:0xC
|
||||
fn_8002F700 = .text:0x8002F700; // type:function size:0x8
|
||||
fn_8002F710 = .text:0x8002F710; // type:function size:0x110
|
||||
checkRefArrayAtIndex__17daPlayerActBase_cFv = .text:0x8002F820; // type:function size:0x8
|
||||
@@ -1172,12 +1172,12 @@ fn_8002FBF0 = .text:0x8002FBF0; // type:function size:0x20
|
||||
fn_8002FC10 = .text:0x8002FC10; // type:function size:0xF4
|
||||
someEnemyDamageCollisionStuffMaybe__11dAcEnBase_cFR19dColliderLinkedListPUs = .text:0x8002FD10; // type:function size:0x7C
|
||||
fn_8002FD90 = .text:0x8002FD90; // type:function size:0x4C
|
||||
fn_8002FDE0 = .text:0x8002FDE0; // type:function size:0x170
|
||||
fn_8002FDE0__11dAcEnBase_cFR8cCcD_ObjPUs = .text:0x8002FDE0; // type:function size:0x170
|
||||
fn_8002FF50 = .text:0x8002FF50; // type:function size:0xD4
|
||||
fn_80030030 = .text:0x80030030; // type:function size:0x174
|
||||
fn_800301B0 = .text:0x800301B0; // type:function size:0x1D4
|
||||
fn_80030030__11dAcEnBase_cFRC7mVec3_cRsRsf = .text:0x80030030; // type:function size:0x174
|
||||
fn_800301b0__11dAcEnBase_cFRC7mVec3_c4mAngbf = .text:0x800301B0; // type:function size:0x1D4
|
||||
fn_80030390 = .text:0x80030390; // type:function size:0x64
|
||||
fn_80030400 = .text:0x80030400; // type:function size:0x168
|
||||
fn_80030400__11dAcEnBase_cFRQ23m3d5mdl_cUcbUc = .text:0x80030400; // type:function size:0x168
|
||||
fn_80030570 = .text:0x80030570; // type:function size:0x144
|
||||
fn_800306C0 = .text:0x800306C0; // type:function size:0x10
|
||||
fn_800306D0 = .text:0x800306D0; // type:function size:0x24
|
||||
@@ -1186,7 +1186,7 @@ fn_80030730 = .text:0x80030730; // type:function size:0xB0
|
||||
fn_800307E0 = .text:0x800307E0; // type:function size:0x34
|
||||
fn_80030820 = .text:0x80030820; // type:function size:0x14
|
||||
fn_80030840 = .text:0x80030840; // type:function size:0x13C
|
||||
fn_80030980 = .text:0x80030980; // type:function size:0x188
|
||||
fn_80030980__11dAcEnBase_cFRQ23m3d5mdl_clb = .text:0x80030980; // type:function size:0x188
|
||||
fn_80030B10 = .text:0x80030B10; // type:function size:0x10C
|
||||
fn_80030c20__11dAcEnBase_cFUlffff = .text:0x80030C20; // type:function size:0x28
|
||||
fn_80030C50 = .text:0x80030C50; // type:function size:0x8
|
||||
@@ -3545,7 +3545,7 @@ ActorEventRelated__isInEvent = .text:0x8009D950; // type:function size:0x54
|
||||
isThisActorInEvent__17ActorEventRelatedFv = .text:0x8009D9B0; // type:function size:0x5C
|
||||
fn_8009DA10 = .text:0x8009DA10; // type:function size:0x30
|
||||
fn_8009DA40 = .text:0x8009DA40; // type:function size:0x40
|
||||
getSkipOnlyEvent = .text:0x8009DA80; // type:function size:0xC
|
||||
getSkipOnlyEvent__12EventManagerFv = .text:0x8009DA80; // type:function size:0xC
|
||||
EventManager__ctorCont = .text:0x8009DA90; // type:function size:0x11C
|
||||
fn_8009DBB0 = .text:0x8009DBB0; // type:function size:0x128
|
||||
startEventManager = .text:0x8009DCE0; // type:function size:0x280
|
||||
@@ -3566,7 +3566,7 @@ fn_8009EEA0 = .text:0x8009EEA0; // type:function size:0x53C
|
||||
alsoSetAsCurrentEvent__12EventManagerFP9dAcBase_cP5EventPv = .text:0x8009F3E0; // type:function size:0x470
|
||||
fn_8009F850 = .text:0x8009F850; // type:function size:0x134
|
||||
fn_8009F990__12EventManagerFv = .text:0x8009F990; // type:function size:0x80
|
||||
fn_8009FA10 = .text:0x8009FA10; // type:function size:0x8
|
||||
fn_8009FA10__12EventManagerFP9dAcBase_cP5EventPv = .text:0x8009FA10; // type:function size:0x8
|
||||
attachSkipEvent = .text:0x8009FA20; // type:function size:0x1A0
|
||||
setEvent__12EventManagerFP9dAcBase_cP5EventP9dAcBase_c = .text:0x8009FBC0; // type:function size:0x120
|
||||
changeOwnEvent__12EventManagerFP9dAcBase_cP9dAcBase_cP5Eventi = .text:0x8009FCE0; // type:function size:0x11C
|
||||
@@ -3594,7 +3594,7 @@ getCurrentEventActorBasedOnGroup = .text:0x800A0890; // type:function size:0x58
|
||||
fn_800A08F0__12EventManagerFQ27fBase_c12GROUP_TYPE_e = .text:0x800A08F0; // type:function size:0x58
|
||||
checkButton2HeldForCutscenes = .text:0x800A0950; // type:function size:0x60
|
||||
canSkipCurrentEvent__12EventManagerFv = .text:0x800A09B0; // type:function size:0x1D0
|
||||
fn_800A0B80 = .text:0x800A0B80; // type:function size:0x10
|
||||
fn_800A0B80__12EventManagerFv = .text:0x800A0B80; // type:function size:0x10
|
||||
eventRelatedStateFlags_shift0x11_1__12EventManagerFv = .text:0x800A0B90; // type:function size:0x10
|
||||
fn_800A0BA0 = .text:0x800A0BA0; // type:function size:0x94
|
||||
__ct__5EventFPCcUlUlPvPv = .text:0x800A0C40; // type:function size:0xEC
|
||||
@@ -10411,7 +10411,7 @@ GoddessChestsOpenedCounter__init_vtable = .text:0x801947A0; // type:function siz
|
||||
GoddessChestsOpenedCounter__dtor = .text:0x801947C0; // type:function size:0x58
|
||||
GoddessChestsOpenedCounter__getMaxGoddessChests = .text:0x80194820; // type:function size:0x8
|
||||
GoddessChestsOpenedCounter__init = .text:0x80194830; // type:function size:0x3C
|
||||
angleToRotate = .text:0x80194870; // type:function size:0x194
|
||||
getForce__11dTgStream_cFRC7mVec3_cR7mVec3_cRC9fLiMgBa_c = .text:0x80194870; // type:function size:0x194
|
||||
fn_80194A10 = .text:0x80194A10; // type:function size:0xC
|
||||
getStatueType__10dAcOSave_cCFv = .text:0x80194A20; // type:function size:0xC
|
||||
getStatueNameId__10dAcOSave_cCFv = .text:0x80194A30; // type:function size:0x24
|
||||
|
||||
@@ -100,6 +100,10 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, NightJumpAttack);
|
||||
STATE_FUNC_DECLARE(dAcEremly_c, BirthWait);
|
||||
|
||||
bool isState(State_e state) {
|
||||
return field_0xB60 == (u32)state;
|
||||
}
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcEremly_c);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcEremly_c);
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcEremly_c);
|
||||
@@ -167,9 +171,12 @@ private:
|
||||
/* 0xA5C */ dWaterEffect_c mWaterEffect;
|
||||
|
||||
/* 0xAA4 */ mVec3_c field_0xAA4;
|
||||
|
||||
/* 0xAB0 */ u8 _AB0[0xAF8 - 0xAB0];
|
||||
|
||||
/* 0xAB0 */ mVec3_c field_0xAB0;
|
||||
/* 0xABC */ mVec3_c field_0xABC;
|
||||
/* 0xAC8 */ mVec3_c field_0xAC8;
|
||||
/* 0xAD4 */ mVec3_c field_0xAD4;
|
||||
/* 0xAE0 */ mVec3_c field_0xAE0;
|
||||
/* 0xAEC */ mVec3_c field_0xAEC;
|
||||
/* 0xAF8 */ mVec3_c field_0xAF8;
|
||||
|
||||
/* 0xB04 */ f32 field_0xB04;
|
||||
@@ -207,7 +214,7 @@ private:
|
||||
/* 0xB60 */ u8 field_0xB60; // Some State representation
|
||||
/* 0xB61 */ u8 field_0xB61;
|
||||
/* 0xB62 */ u8 mSleepDemoPlayedSceneflag;
|
||||
/* */ u8 _B63;
|
||||
/* 0xB63 */ u8 field_0xB63;
|
||||
/* 0xB64 */ u8 field_0xB64;
|
||||
/* 0xB65 */ u8 field_0xB65;
|
||||
/* 0xB66 */ u8 field_0xB66;
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
|
||||
// Deals with dealing damage to Enemy
|
||||
// Returns a value 0-13 (similar to mStts rank?)
|
||||
int fn_8002fde0(cCcD_Obj &mCc, u16 *pTgOut);
|
||||
int fn_8002FDE0(cCcD_Obj &mCc, u16 *pTgOut);
|
||||
void fn_80030030(const mVec3_c &pos, s16 &, s16 &, f32);
|
||||
// Returns 0-3 based on collision
|
||||
int fn_800301b0(const mVec3_c &pos, mAng ang, bool, f32);
|
||||
|
||||
@@ -68,6 +68,8 @@ public:
|
||||
s32 absDiff(const mAng &other) const {
|
||||
return sLib::absDiff(mVal, other.mVal);
|
||||
}
|
||||
// NOTE: Try not to use this one...
|
||||
// May need a better home in future.
|
||||
template <typename T>
|
||||
static s32 absDiff2(T a, T b) {
|
||||
return abs(a - b);
|
||||
|
||||
@@ -20,6 +20,9 @@ public:
|
||||
static bool canSkipCurrentEvent();
|
||||
static dAcBase_c *getMainActorInEvent();
|
||||
|
||||
static Event *getSkipOnlyEvent();
|
||||
static bool fn_800A0B80();
|
||||
static void fn_8009FA10(dAcBase_c *actor, Event *event, void *unknown);
|
||||
static void execute();
|
||||
|
||||
static EventManager *sInstance;
|
||||
|
||||
+193
-23
@@ -17,7 +17,10 @@
|
||||
#include "d/d_camera.h"
|
||||
#include "d/d_light_env.h"
|
||||
#include "d/d_linkage.h"
|
||||
#include "d/d_rumble.h"
|
||||
#include "d/d_sc_game.h"
|
||||
#include "d/d_stage_mgr.h"
|
||||
#include "d/d_vec.h"
|
||||
#include "d/flag/sceneflag_manager.h"
|
||||
#include "d/flag/storyflag_manager.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
@@ -42,6 +45,7 @@
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/d_d3d.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/event.h"
|
||||
#include "toBeSorted/event_manager.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(E_REMLY, dAcEremly_c, fProfile::E_REMLY, 0xE1, 0, 3);
|
||||
@@ -348,7 +352,7 @@ int dAcEremly_c::actorExecute() {
|
||||
}
|
||||
|
||||
if (0 == sLib::calcTimer(&field_0xB4E)) {
|
||||
s32 damageTypeMaybe = fn_8002fde0(mSph, nullptr);
|
||||
s32 damageTypeMaybe = fn_8002FDE0(mSph, nullptr);
|
||||
switch (damageTypeMaybe) {
|
||||
case 7: {
|
||||
if (isState(StateID_Fly) && field_0xB60 != 20) {
|
||||
@@ -569,6 +573,11 @@ int dAcEremly_c::actorExecute() {
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
/// Ugh
|
||||
inline f32 getValue0() {
|
||||
s32 _weird_zero = 0;
|
||||
return _weird_zero + 70.f;
|
||||
}
|
||||
int dAcEremly_c::draw() {
|
||||
s32 _weird_zero = 0;
|
||||
|
||||
@@ -588,7 +597,7 @@ int dAcEremly_c::draw() {
|
||||
drawModelType1(&mdl);
|
||||
|
||||
// elp
|
||||
static mQuat_c shadow(0.f, 70.f + _weird_zero, 0.f, 290.f + _weird_zero);
|
||||
static mQuat_c shadow(0.f, getValue0(), 0.f, _weird_zero + 290.f);
|
||||
fn_8002edb0(mShadow, mdl, &shadow, -1, -1, mPosition.y - mAcch.GetGroundH());
|
||||
|
||||
return SUCCEEDED;
|
||||
@@ -911,8 +920,8 @@ void dAcEremly_c::executeState_EscapeDash() {
|
||||
}
|
||||
|
||||
if (field_0xB6B != 0) {
|
||||
mVec3_c v(getPosition());
|
||||
sLib::addCalcScaledDiff(&mSpeed, 30.f, 0.7f, 3.f);
|
||||
mVec3_c v;
|
||||
sLib::addCalcScaledDiff(&mSpeed, (v = mPosition, 30.f), 0.7f, 3.f);
|
||||
|
||||
if (fn_177_8C20(mRotation.y)) {
|
||||
changeState(StateID_Scared);
|
||||
@@ -2233,7 +2242,7 @@ bool dAcEremly_c::fn_177_7650(bool comparePlayer) const {
|
||||
// NONMATCHING
|
||||
void dAcEremly_c::fn_177_77C0() {
|
||||
const dAcPy_c *pPlayer = dAcPy_c::GetLink();
|
||||
mAng a0 = getXZAngleToPlayer() + -0x7800;
|
||||
s32 a0 = getXZAngleToPlayer().mVal + -(s32)(0x7800);
|
||||
mAng a1 = getXZAngleToPlayer() + 0x7800;
|
||||
|
||||
field_0xB32 = getXZAngleToPlayer() + 0x8000;
|
||||
@@ -2304,7 +2313,174 @@ bool dAcEremly_c::fn_177_7B10() {
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcEremly_c::nightSleepDemoImpl() {}
|
||||
void dAcEremly_c::nightSleepDemoImpl() {
|
||||
s32 _weird_zero = 0;
|
||||
|
||||
if (mSleepDemoPlayedSceneflag == 0xFF ||
|
||||
SceneflagManager::sInstance->checkBoolFlag(mRoomID, mSleepDemoPlayedSceneflag)) {
|
||||
return;
|
||||
}
|
||||
|
||||
dAcPy_c *pPlayer = dAcPy_c::GetLinkM();
|
||||
dCamera_c *pCamera = dScGame_c::getCamera();
|
||||
|
||||
f32 x, y, z;
|
||||
mVec3_c v, v2;
|
||||
mMtx_c m, m2;
|
||||
mAng a = mAngle.y - 0x4000;
|
||||
|
||||
switch (field_0xB63) {
|
||||
case 0: {
|
||||
if (!isWithinPlayerRadius(1500.f)) {
|
||||
break;
|
||||
}
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 1: {
|
||||
{
|
||||
Event e("dAcEremly_c_nightRemly", 100, Event::makeEventFlag(1, 0x100001), nullptr, nullptr);
|
||||
EventManager::alsoSetAsCurrentEvent(this, &e, nullptr);
|
||||
}
|
||||
if (!EventManager::isInEvent(this, "dAcEremly_c_nightRemly")) {
|
||||
break;
|
||||
}
|
||||
mStartingRot = mRotation;
|
||||
EventManager::fn_8009FA10(this, EventManager::getSkipOnlyEvent(), nullptr);
|
||||
pPlayer->vt_0x2AC();
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 2: {
|
||||
mMdl.setAnm("RemlyDemo", m3d::PLAY_MODE_4, 0.f);
|
||||
field_0xB60 = 26;
|
||||
|
||||
z = _weird_zero + -160.f;
|
||||
y = _weird_zero + 80.f;
|
||||
x = _weird_zero + 410.f;
|
||||
v.set(x, y, z);
|
||||
m.YrotS(a + 0x8000);
|
||||
m.multVec(v, field_0xAB0);
|
||||
|
||||
field_0xAB0 += mStartingPos;
|
||||
field_0xAC8 = field_0xAB0;
|
||||
field_0xAE0 = field_0xAB0;
|
||||
|
||||
x = _weird_zero + 30.f;
|
||||
y = _weird_zero + 30.f;
|
||||
z = _weird_zero + 30.f;
|
||||
v.set(z, y, x);
|
||||
|
||||
m.YrotS(a);
|
||||
m.multVec(v, field_0xABC);
|
||||
|
||||
field_0xABC += mStartingPos;
|
||||
field_0xAD4 = field_0xABC;
|
||||
field_0xAEC = field_0xABC;
|
||||
|
||||
x = _weird_zero + -370.f;
|
||||
y = 0.f;
|
||||
z = 250.f;
|
||||
v.set(x, y, z);
|
||||
|
||||
m.YrotS(a);
|
||||
m.multVec(v, v2);
|
||||
v2 += mStartingPos;
|
||||
|
||||
mAng3_c rot(0, getXZAngleToPlayer() + 0x8000, 0);
|
||||
dAcPy_c::GetLinkM()->setPosRot(&v2, &rot, true, 0, 0);
|
||||
dAcPy_c::GetLinkM()->triggerMoveEventMaybe(13, 1, 0, 0, 0, 0, 0);
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 3: {
|
||||
if (sLib::calcTimer(&field_0xB48)) {
|
||||
break;
|
||||
}
|
||||
field_0xB48 = 60;
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 4: {
|
||||
if (sLib::calcTimer(&field_0xB48)) {
|
||||
if (field_0xB48 == 58) {
|
||||
z = _weird_zero + 170.f;
|
||||
x = _weird_zero + -120.f;
|
||||
v.set(x, 0.f, z);
|
||||
m.YrotS(a);
|
||||
m.multVec(v, v2);
|
||||
v2 += mStartingPos;
|
||||
dAcPy_c::GetLinkM()->triggerMoveEventMaybe(2, 0, 0, &v2, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
field_0xB48 = 100;
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 5: {
|
||||
a = cLib::targetAngleY(field_0xAD4, field_0xAC8);
|
||||
m.YrotS(a);
|
||||
z = _weird_zero + -330.f;
|
||||
y = _weird_zero;
|
||||
x = _weird_zero;
|
||||
v.set(x, y, z);
|
||||
m.multVec(v, field_0xAE0);
|
||||
field_0xAE0 += field_0xAC8;
|
||||
if (sLib::calcTimer(&field_0xB48)) {
|
||||
break;
|
||||
}
|
||||
field_0xB63++;
|
||||
} // fallthrough
|
||||
case 6: {
|
||||
if (mMdl.getAnm().checkFrame(320.f)) {
|
||||
mMtx_c m3, m4;
|
||||
s32 scale = 95;
|
||||
m2.transS(0.5f, 0.5f, 0.f);
|
||||
y = scale / 100.f;
|
||||
x = scale / 100.f;
|
||||
m3.scaleS(x, y, 0.f);
|
||||
m2 += m3;
|
||||
m4.transS(-0.5f, -0.5f, 0.f);
|
||||
m2 += m4;
|
||||
dStageMgr_c::GetInstance()->procfn_800192F0(150, m2, 100);
|
||||
dRumble_c::start(dRumble_c::sRumblePreset1, 1);
|
||||
}
|
||||
if (mMdl.getAnm().isStop()) {
|
||||
mMdl.setRate(0.f);
|
||||
field_0xB63 = 10;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 10: {
|
||||
mSph.OnTgSet();
|
||||
mSph.OnCoSet();
|
||||
EventManager::finishEvent(this, nullptr);
|
||||
dScGame_c::getCamera()->fn_8019EA70(true);
|
||||
field_0xB48 = 3;
|
||||
field_0xB63 = 11;
|
||||
break;
|
||||
}
|
||||
case 11: {
|
||||
if (0 == sLib::calcTimer(&field_0xB48)) {
|
||||
changeState(StateID_NightWait);
|
||||
mMdl.setAnm("RemlyWaitStandNight", m3d::PLAY_MODE_4, 0.f);
|
||||
mAngle.y = mStartingRot.y + -30000;
|
||||
mRotation.y = mAngle.y;
|
||||
if (mSleepDemoPlayedSceneflag != 0xFF) {
|
||||
SceneflagManager::sInstance->setFlag(mRoomID, mSleepDemoPlayedSceneflag);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (field_0xB63 == 5) {
|
||||
cLib::addCalcPos2(&field_0xAB0, field_0xAE0, 0.3f, 10.f);
|
||||
}
|
||||
if (field_0xB63 == 2 || field_0xB63 == 3 || field_0xB63 == 4 || field_0xB63 == 5 || field_0xB63 == 6 ||
|
||||
field_0xB63 == 7 || field_0xB63 == 8 || field_0xB63 == 9) {
|
||||
pCamera->setEventCamView(field_0xABC, field_0xAB0, 50.f, 0.f);
|
||||
if (EventManager::fn_800A0B80()) {
|
||||
mMdl.setRate(0.f);
|
||||
field_0xB63 = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEremly_c::fn_177_8520(bool b) {
|
||||
s32 _weird_zero = 0;
|
||||
@@ -2371,21 +2547,15 @@ bool dAcEremly_c::fn_177_86C0() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO - Have its own location
|
||||
inline void offsetWithAngle(mVec3_c &v, const mAng &a, f32 f) {
|
||||
v.x += f * a.sin();
|
||||
v.z += f * a.cos();
|
||||
}
|
||||
|
||||
bool dAcEremly_c::fn_177_8980(f32 f) {
|
||||
dBgS_ObjGndChk gndChk;
|
||||
mVec3_c v(mPosition);
|
||||
|
||||
v.y += 100.f;
|
||||
|
||||
offsetWithAngle(v, mRotation.y, f);
|
||||
getXZCirclePoint(v, mRotation.y, f);
|
||||
|
||||
gndChk.SetPos(v);
|
||||
gndChk.SetPos(&v);
|
||||
|
||||
f32 cross = dBgS::GetInstance()->GroundCross(&gndChk);
|
||||
if (cross < mPosition.y - 1000.f || cross == -1e9f || dBgS::GetInstance()->GetGroundCode(gndChk) == 4) {
|
||||
@@ -2396,14 +2566,14 @@ bool dAcEremly_c::fn_177_8980(f32 f) {
|
||||
|
||||
// NONMATCHING
|
||||
bool dAcEremly_c::fn_177_8AC0() {
|
||||
if ((field_0xB60 != STATE_16) && (field_0xB60 != STATE_17) && (field_0xB60 != STATE_13) &&
|
||||
(field_0xB60 != STATE_14) && (field_0xB60 != STATE_15) && (field_0xB60 != STATE_5) &&
|
||||
(field_0xB60 != STATE_21) && (field_0xB60 != STATE_6) && (field_0xB60 != STATE_8) && (field_0xB60 != STATE_7) &&
|
||||
(field_0xB60 != STATE_10) && (field_0xB60 != STATE_22) && (field_0xB60 != STATE_23) &&
|
||||
(field_0xB60 != STATE_24)) {
|
||||
return false;
|
||||
} else {
|
||||
bool b = (isState(STATE_16)) || (isState(STATE_17)) || (isState(STATE_13)) || (isState(STATE_14)) ||
|
||||
(isState(STATE_15)) || (isState(STATE_5)) || (isState(STATE_21)) || (isState(STATE_6)) ||
|
||||
(isState(STATE_8)) || (isState(STATE_7)) || (isState(STATE_10)) || (isState(STATE_22)) ||
|
||||
(isState(STATE_23)) || (isState(STATE_24));
|
||||
if (b) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2420,7 +2590,7 @@ bool dAcEremly_c::fn_177_8C20(mAng a) {
|
||||
if (field_0xB6C || field_0xB6A || isState(StateID_Escape) || isState(StateID_EscapeDash)) {
|
||||
mVec3_c v(mPosition);
|
||||
f32 f = 150.f + _weird_zero;
|
||||
offsetWithAngle(v, mAngle.y, f);
|
||||
getXZCirclePoint(v, mAngle.y, f);
|
||||
if (dBgS_WtrChk::CheckPos(&v, true, 600.f + _weird_zero, -100.f + _weird_zero)) {
|
||||
if (mPosition.y < dBgS_WtrChk::GetWaterHeight() && mAcch.GetGroundH() < dBgS_WtrChk::GetWaterHeight()) {
|
||||
return true;
|
||||
@@ -2510,7 +2680,7 @@ bool dAcEremly_c::fn_177_9370(f32 f) {
|
||||
const dAcPy_c *pPlayer = dAcPy_c::GetLink();
|
||||
|
||||
if (!pPlayer->isRecovering() && pPlayer->mPosition.absXZTo(mStartingPos) < field_0xB08 &&
|
||||
std::abs(mPosition.y - pPlayer->mPosition.y) < f + 2000.f) {
|
||||
std::abs(mPosition.y - pPlayer->mPosition.y) < f + 200.f) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -512,7 +512,7 @@ int dAcEsm_c::actorExecute() {
|
||||
mHitPos.set(0.f, 0.f, 0.f);
|
||||
|
||||
if (0 == sLib::calcTimer(&mDamageTimer)) {
|
||||
field_0xB94 = fn_8002fde0(mSph, nullptr);
|
||||
field_0xB94 = fn_8002FDE0(mSph, nullptr);
|
||||
if (field_0xB94 != 0) {
|
||||
if (mSph.ChkTgHit()) {
|
||||
if (field_0xB94 == 7) {
|
||||
|
||||
Reference in New Issue
Block a user