mirror of
https://github.com/zeldaret/ss
synced 2026-05-31 17:32:02 -04:00
dAcEKs_c progess 5/6/26
This commit is contained in:
@@ -34,36 +34,35 @@ fn_155_29D0 = .text:0x000029D0; // type:function size:0x1A8
|
||||
fn_155_2B80 = .text:0x00002B80; // type:function size:0x1E0
|
||||
fn_155_2D60 = .text:0x00002D60; // type:function size:0x138
|
||||
fn_155_2EA0 = .text:0x00002EA0; // type:function size:0x118
|
||||
fn_155_2FC0 = .text:0x00002FC0; // type:function size:0x84
|
||||
fn_155_3050 = .text:0x00003050; // type:function size:0xAC
|
||||
fn_155_3100 = .text:0x00003100; // type:function size:0xF4
|
||||
fn_155_3200 = .text:0x00003200; // type:function size:0xA4
|
||||
fn_155_32B0 = .text:0x000032B0; // type:function size:0x94
|
||||
fn_155_3350 = .text:0x00003350; // type:function size:0x94
|
||||
fn_155_33F0 = .text:0x000033F0; // type:function size:0x68
|
||||
fn_155_3460 = .text:0x00003460; // type:function size:0x14
|
||||
fn_155_3480 = .text:0x00003480; // type:function size:0x34
|
||||
fn_155_34C0 = .text:0x000034C0; // type:function size:0x1A8
|
||||
AcEKs__setAnim = .text:0x00003670; // type:function size:0xA8
|
||||
fn_155_3720 = .text:0x00003720; // type:function size:0x30
|
||||
fn_155_3750 = .text:0x00003750; // type:function size:0x44
|
||||
fn_155_37A0 = .text:0x000037A0; // type:function size:0x50
|
||||
fn_155_37F0 = .text:0x000037F0; // type:function size:0x44
|
||||
fn_155_3840 = .text:0x00003840; // type:function size:0x4C
|
||||
fn_155_3890 = .text:0x00003890; // type:function size:0x40
|
||||
fn_155_38D0 = .text:0x000038D0; // type:function size:0x10
|
||||
fn_155_38E0 = .text:0x000038E0; // type:function size:0x10
|
||||
fn_155_38F0 = .text:0x000038F0; // type:function size:0x4
|
||||
fn_155_3900 = .text:0x00003900; // type:function size:0x268
|
||||
AcEKs__setAnglesToPoints = .text:0x00003B70; // type:function size:0x58
|
||||
fn_155_3BD0 = .text:0x00003BD0; // type:function size:0x10
|
||||
fn_155_3BE0 = .text:0x00003BE0; // type:function size:0x178
|
||||
fn_155_3D60 = .text:0x00003D60; // type:function size:0xA8
|
||||
isOutsideRange__8dAcEKs_cFv = .text:0x00002FC0; // type:function size:0x84
|
||||
isNotWaitingNorDamage__8dAcEKs_cFv = .text:0x00003050; // type:function size:0xAC
|
||||
isTargeted__8dAcEKs_cFv = .text:0x00003100; // type:function size:0xF4
|
||||
ChkWall__8dAcEKs_cFv = .text:0x00003200; // type:function size:0xA4
|
||||
ChkGnd__8dAcEKs_cFv = .text:0x000032B0; // type:function size:0x94
|
||||
ChkRoof__8dAcEKs_cFv = .text:0x00003350; // type:function size:0x94
|
||||
ChkHit__8dAcEKs_cFv = .text:0x000033F0; // type:function size:0x68
|
||||
fn_155_3460__8dAcEKs_cFv = .text:0x00003460; // type:function size:0x14
|
||||
fn_155_3480__8dAcEKs_cFv = .text:0x00003480; // type:function size:0x34
|
||||
transitionToNextState__8dAcEKs_cFv = .text:0x000034C0; // type:function size:0x1A8
|
||||
setAnim__8dAcEKs_cFPcfff = .text:0x00003670; // type:function size:0xA8
|
||||
fn_155_3720__8dAcEKs_cFff = .text:0x00003720; // type:function size:0x30
|
||||
fn_155_3750__8dAcEKs_cFUc = .text:0x00003750; // type:function size:0x44
|
||||
fn_155_37A0__8dAcEKs_cFv = .text:0x000037A0; // type:function size:0x50
|
||||
fn_155_37F0__8dAcEKs_cFv = .text:0x000037F0; // type:function size:0x44
|
||||
fn_155_3840__8dAcEKs_cFv = .text:0x00003840; // type:function size:0x4C
|
||||
fn_155_3890__8dAcEKs_cFv = .text:0x00003890; // type:function size:0x40
|
||||
on_lbl_155_bss_389__8dAcEKs_cFv = .text:0x000038D0; // type:function size:0x10
|
||||
setBlinkChecked__8dAcEKs_cFUc = .text:0x000038E0; // type:function size:0x14
|
||||
fn_155_3900__8dAcEKs_cFl = .text:0x00003900; // type:function size:0x268
|
||||
setPitchYawToPoint__8dAcEKs_cFRC7mVec3_c = .text:0x00003B70; // type:function size:0x58
|
||||
fn_155_3BD0__8dAcEKs_cFRC7mVec3_c = .text:0x00003BD0; // type:function size:0x10
|
||||
fn_155_3BE0__8dAcEKs_cFRC7mVec3_c = .text:0x00003BE0; // type:function size:0x178
|
||||
setBlink__8dAcEKs_cFUc = .text:0x00003D60; // type:function size:0xA8
|
||||
fn_155_3E10 = .text:0x00003E10; // type:function size:0x1C
|
||||
fn_155_3E30 = .text:0x00003E30; // type:function size:0x24
|
||||
fn_155_3E60 = .text:0x00003E60; // type:function size:0x2C
|
||||
fn_155_3E90 = .text:0x00003E90; // type:function size:0x24
|
||||
fn_155_3EC0 = .text:0x00003EC0; // type:function size:0x24
|
||||
fn_155_3E90__8dAcEKs_cFv = .text:0x00003E90; // type:function size:0x24
|
||||
fn_155_3EC0__8dAcEKs_cFv = .text:0x00003EC0; // type:function size:0x24
|
||||
fn_155_3EF0 = .text:0x00003EF0; // type:function size:0x5C
|
||||
fn_155_3F50 = .text:0x00003F50; // type:function size:0x10C
|
||||
AcEKs__initModels = .text:0x00004060; // type:function size:0x120
|
||||
|
||||
@@ -1182,7 +1182,7 @@ fn_80030570 = .text:0x80030570; // type:function size:0x144
|
||||
fn_800306C0 = .text:0x800306C0; // type:function size:0x10
|
||||
fn_800306D0 = .text:0x800306D0; // type:function size:0x24
|
||||
fn_80030700 = .text:0x80030700; // type:function size:0x24
|
||||
fn_80030730 = .text:0x80030730; // type:function size:0xB0
|
||||
attackPlayerOrScrapper__11dAcEnBase_cFf = .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
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/e/d_a_en_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/col/cc/d_cc_d.h"
|
||||
#include "m/m3d/m_anmtexpat.h"
|
||||
@@ -51,9 +50,38 @@ public:
|
||||
|
||||
f32 getLineCrossYRange(const mVec3_c &pos, f32 range);
|
||||
|
||||
/* 0 -> blink_1, 1 -> blink_2, 2 -> blink_3*/
|
||||
void setBlink(u8 blink);
|
||||
void setBlinkChecked(u8 blink);
|
||||
bool isOutsideRange();
|
||||
bool isNotWaitingNorDamage();
|
||||
bool isTargeted();
|
||||
bool ChkWall();
|
||||
void ChkGnd();
|
||||
void ChkRoof();
|
||||
bool ChkHit();
|
||||
void fn_155_3460();
|
||||
void fn_155_3480();
|
||||
bool transitionToNextState();
|
||||
void setAnim(char *, f32, f32, f32);
|
||||
void fn_155_3720(f32, f32);
|
||||
void fn_155_3750(u8 state);
|
||||
void fn_155_37A0();
|
||||
void fn_155_37F0();
|
||||
void fn_155_3840();
|
||||
void fn_155_3890();
|
||||
void on_lbl_155_bss_389();
|
||||
/* 0: Checks states to set AC_PROP_0x1 - 1: Unset AC_PROP_0x1*/
|
||||
void fn_155_3900(s32 p0);
|
||||
void setPitchYawToPoint(const mVec3_c &pnt);
|
||||
void fn_155_3BD0(const mVec3_c &);
|
||||
void fn_155_3BE0(const mVec3_c &);
|
||||
void fn_155_3E90();
|
||||
void fn_155_3EC0();
|
||||
|
||||
private:
|
||||
/* 0x378 */ dAcRef_c<dTgKiesuTag_c> mTgRef;
|
||||
/* 0x384 */ nw4r::g3d::ResFile mRres;
|
||||
/* 0x384 */ nw4r::g3d::ResFile mResFile;
|
||||
/* 0x388 */ d3d::AnmMdlWrapper mMdl;
|
||||
/* 0x3F8 */ m3d::anmTexPat_c mAnmTexPat;
|
||||
/* 0x324 */ dShadowCircle_c mShadow;
|
||||
@@ -70,15 +98,32 @@ private:
|
||||
/* 0xAA8 */ u8 field_0xAB0;
|
||||
/* 0xAB1 */ u8 _0xAB1[0xB14 - 0xAB1];
|
||||
/* 0xB14 */ mVec3_c mPnts[10];
|
||||
/* 0xB8C */ u8 _0xB8C[0xD20 - 0xB8C];
|
||||
/* 0xB8C */ u8 _0xB8C[0xBB0 - 0xB8C];
|
||||
/* 0xBB0 */ mVec3_c field_0xBB0;
|
||||
/* 0xBBC */ mVec3_c field_0xBBC;
|
||||
/* 0xBC8 */ u8 _0xBC8[0xC34 - 0xBC8];
|
||||
/* 0xD32 */ mAng mPitch_0xC34;
|
||||
/* 0xD32 */ mAng mYaw_0xC36;
|
||||
/* 0xC38 */ u8 _0xC38[0xD20 - 0xC38];
|
||||
/* 0xD20 */ f32 field_0xD20;
|
||||
/* 0xD24 */ u8 _0xD24[0xD32 - 0xD24];
|
||||
/* 0xD32 */ s16 mTimer;
|
||||
/* 0xD34 */ u8 _0xD34[0xDB1 - 0xD34];
|
||||
/* 0xD34 */ u8 _0xD34[0xD60 - 0xD34];
|
||||
/* 0xD60 */ s16 field_0xD60;
|
||||
/* 0xD62 */ u8 _0xD62[0xDA6 - 0xD62];
|
||||
/* 0xDA6 */ u8 field_0xDA6;
|
||||
/* 0xDA7 */ u8 field_0xDA7;
|
||||
/* 0xDA8 */ u8 field_0xDA8;
|
||||
/* 0xDA9 */ u8 field_0xDA9;
|
||||
/* 0xDAA */ u8 _0xDAA[0xDB1 - 0xDAA];
|
||||
/* 0xDB1 */ u8 field_0xDB1;
|
||||
/* 0xDB2 */ u8 _0xDB2[0xDBC - 0xDB2];
|
||||
/* 0xDB2 */ u8 field_0xDB2;
|
||||
/* 0xDB3 */ u8 _0xDB3[0xDBB - 0xDB3];
|
||||
/* 0xDBB */ u8 field_0xDBB;
|
||||
/* 0xDBC */ u8 mType;
|
||||
/* 0xDBD */ u8 _0xDBD[0xDC2 - 0xDBD];
|
||||
/* 0xDBD */ u8 _0xDBD[0xDC0 - 0xDBD];
|
||||
/* 0xDC2 */ u8 mCurrentAnmTexPat; // blink
|
||||
/* 0xDC1 */ u8 field_0xDC1;
|
||||
/* 0xDC2 */ u8 mCurrentState;
|
||||
/* 0xDC3 */ u8 mNextState;
|
||||
/* 0xDC4 */ u8 _0xDC4[0xDC7 - 0xDC4];
|
||||
@@ -90,6 +135,10 @@ private:
|
||||
/* 0xDE0 */ mColor mColor;
|
||||
/* 0xDE4 */ f32 field_0xDE4;
|
||||
/* 0xDE8 */ u8 _0xDE8[0xDF0 - 0xDE8];
|
||||
|
||||
// Controlled by dTgKiesuTag_c
|
||||
static bool lbl_155_bss_388;
|
||||
static bool lbl_155_bss_389;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
void fn_80030400(m3d::mdl_c &, u8, bool, u8);
|
||||
void fn_800306d0();
|
||||
void fn_80030700();
|
||||
|
||||
dAcObjBase_c *attackPlayerOrScrapper(f32 biasToScrapper);
|
||||
static void fn_80030980(m3d::mdl_c &, s32, bool markDirty);
|
||||
|
||||
void fn_80030c20(u32 flags, f32, f32, f32, f32);
|
||||
|
||||
@@ -680,6 +680,10 @@ public:
|
||||
mSrc.mInfo.field_0x2 |= val;
|
||||
}
|
||||
|
||||
void Set_0x50(u32 val) {
|
||||
field_0x50 = val;
|
||||
}
|
||||
|
||||
public:
|
||||
/* 0x1C */ cCcD_SrcGObjTg mSrc;
|
||||
/* 0x2C */ mVec3_c mAtHitDir;
|
||||
@@ -1082,6 +1086,9 @@ public:
|
||||
void OnTgInfo_0x2(u16 val) {
|
||||
mTg.OnInfo_0x2(val);
|
||||
}
|
||||
void SetTg_0x50(u16 val) {
|
||||
mTg.Set_0x50(val);
|
||||
}
|
||||
void SetTg_0x40000000() {
|
||||
mTg.OnSPrm(0x40000000);
|
||||
}
|
||||
@@ -1108,6 +1115,12 @@ public:
|
||||
void ClrCo_0x400() {
|
||||
mCo.OffSPrm(0x400);
|
||||
}
|
||||
void OnCo_0x8000() {
|
||||
mCo.OnSPrm(0x8000);
|
||||
}
|
||||
void ClrCo_0x8000() {
|
||||
mCo.OffSPrm(0x8000);
|
||||
}
|
||||
void SetCo_0x400() {
|
||||
mCo.OnSPrm(0x400);
|
||||
}
|
||||
|
||||
+252
-1
@@ -1,11 +1,21 @@
|
||||
#include "d/a/e/d_a_e_ks.h"
|
||||
|
||||
#include "c/c_lib.h"
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_s_gnd_chk.h"
|
||||
#include "d/col/bg/d_bg_s_lin_chk.h"
|
||||
#include "d/col/bg/d_bg_s_roof_chk.h"
|
||||
#include "d/t/d_t_ks.h"
|
||||
#include "f/f_profile_name.h"
|
||||
#include "m/m3d/m_fanm.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resanmtexpat.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/time_area_mgr.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(E_KS, dAcEKs_c, fProfile::E_KS, 0xFE, 0, 4099);
|
||||
@@ -134,7 +144,248 @@ f32 dAcEKs_c::getLineCrossYRange(const mVec3_c &pos, f32 range) {
|
||||
}
|
||||
}
|
||||
|
||||
// idk
|
||||
// idk.
|
||||
|
||||
bool dAcEKs_c::isOutsideRange() {
|
||||
return attackPlayerOrScrapper(0.f)->mPosition.squareDistanceToXZ(mPosition) > 360000.f;
|
||||
}
|
||||
|
||||
bool dAcEKs_c::isNotWaitingNorDamage() {
|
||||
if (!(mStateMgr.isState(StateID_Wait) || mStateMgr.isState(StateID_Damage))) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcEKs_c::isTargeted() {
|
||||
dAcObjBase_c *pTarget = AttentionManager::GetInstance()->getTargetedActor();
|
||||
if (!pTarget) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (pTarget->mProfileName == fProfile::E_KS && pTarget == this) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcEKs_c::ChkWall() {
|
||||
field_0xDBB++;
|
||||
if (field_0xDBB > 5) {
|
||||
field_0xDBB = 0;
|
||||
mVec3_c offset(0, 0, 200.f);
|
||||
mVec3_c pos;
|
||||
mWorldMtx.multVec(offset, pos);
|
||||
if (dBgS_ObjLinChk::LineCross(&mPosition, &pos, nullptr) && dBgS_ObjLinChk::ChkWall()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcEKs_c::ChkGnd() {
|
||||
dBgS_ObjGndChk gndChk;
|
||||
mVec3_c pos = field_0xBB0;
|
||||
pos.y += 150.f;
|
||||
gndChk.SetPos(&pos);
|
||||
f32 chk = dBgS::GetInstance()->GroundCross(&gndChk);
|
||||
if (field_0xBB0.y < chk + 120.f) {
|
||||
field_0xBB0.y = chk + 120.f;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::ChkRoof() {
|
||||
dBgS_ObjRoofChk roofChk;
|
||||
mVec3_c pos = field_0xBB0;
|
||||
pos.y -= 150.f;
|
||||
roofChk.SetPos(&pos);
|
||||
f32 chk = dBgS::GetInstance()->RoofChk(&roofChk);
|
||||
if (field_0xBB0.y > chk - 120.f) {
|
||||
field_0xBB0.y = chk - 120.f;
|
||||
}
|
||||
}
|
||||
|
||||
bool dAcEKs_c::ChkHit() {
|
||||
if (mAcch.ChkWallHit(nullptr) || mAcch.ChkGndHit() || mAcch.ChkRoofHit()) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3460() {
|
||||
lbl_155_bss_388 = true;
|
||||
field_0xDA7 = true;
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3480() {
|
||||
if (field_0xDA7) {
|
||||
lbl_155_bss_388 = 0;
|
||||
field_0xDA7 = 0;
|
||||
if (field_0xDA6) {
|
||||
lbl_155_bss_389 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool dAcEKs_c::transitionToNextState() {
|
||||
if (mCurrentState != mNextState) {
|
||||
switch (mNextState) {
|
||||
case 0: mStateMgr.changeState(StateID_Move); break;
|
||||
case 1: mStateMgr.changeState(StateID_Wait); break;
|
||||
case 2: mStateMgr.changeState(StateID_PathMove); break;
|
||||
case 4: mStateMgr.changeState(StateID_WakeUp); break;
|
||||
case 5: mStateMgr.changeState(StateID_ReturnToWait); break;
|
||||
case 6: mStateMgr.changeState(StateID_Chase); break;
|
||||
case 7: mStateMgr.changeState(StateID_ChaseAttack); break;
|
||||
case 8: mStateMgr.changeState(StateID_Fighting); break;
|
||||
case 9: mStateMgr.changeState(StateID_AttackReady); break;
|
||||
case 10: mStateMgr.changeState(StateID_Attack); break;
|
||||
case 11: mStateMgr.changeState(StateID_Damage); break;
|
||||
case 12: mStateMgr.changeState(StateID_Stun); break;
|
||||
case 13: mStateMgr.changeState(StateID_WindBlow); break;
|
||||
}
|
||||
mCurrentState = mNextState;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcEKs_c::setAnim(char *anm, f32 f0, f32 rate, f32 frame) {
|
||||
mMdl.setAnm(anm, m3d::PLAY_MODE_4, f0);
|
||||
mMdl.setRate(rate);
|
||||
if (frame > 0.f) {
|
||||
mMdl.setFrame(frame);
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3720(f32 scale, f32 rate) {
|
||||
f32 a = rate + scale * 0.01f;
|
||||
f32 endFrame = mMdl.getAnm().getEndFrame();
|
||||
if (a > endFrame) {
|
||||
a = endFrame;
|
||||
}
|
||||
mMdl.setRate(a);
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3750(u8 state) {
|
||||
switch (state) {
|
||||
case 0: mNextState = state; break;
|
||||
case 1: mNextState = 5; break;
|
||||
case 2: mNextState = state; break;
|
||||
default: mNextState = 0; break;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_37A0() {
|
||||
mSph.OnAtSet();
|
||||
if (mType == 2) {
|
||||
fn_155_3E90();
|
||||
field_0xDA9 = 0;
|
||||
field_0xD60 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_37F0() {
|
||||
if (mType == 2) {
|
||||
fn_155_3E90();
|
||||
field_0xDA9 = 0;
|
||||
field_0xD60 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3840() {
|
||||
mSph.ClrAtSet();
|
||||
if (mType == 2) {
|
||||
fn_155_3EC0();
|
||||
field_0xDA9 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3890() {
|
||||
if (mType == 2) {
|
||||
fn_155_3EC0();
|
||||
field_0xDA9 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::on_lbl_155_bss_389() {
|
||||
lbl_155_bss_389 = true;
|
||||
}
|
||||
|
||||
void dAcEKs_c::setBlinkChecked(u8 blink) {
|
||||
if (blink == mCurrentAnmTexPat) {
|
||||
return;
|
||||
}
|
||||
setBlink(blink);
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3900(s32 p0) {
|
||||
switch (p0) {
|
||||
case 0: {
|
||||
if (!(mStateMgr.isState(StateID_Stun) || mStateMgr.isState(StateID_Damage) ||
|
||||
mStateMgr.isState(StateID_ReturnToWait) || mStateMgr.isState(StateID_Chase) ||
|
||||
mStateMgr.isState(StateID_ChaseAttack) || mStateMgr.isState(StateID_Fighting) ||
|
||||
mStateMgr.isState(StateID_AttackReady) || mStateMgr.isState(StateID_Attack) ||
|
||||
mStateMgr.isState(StateID_WindBlow))) {
|
||||
setActorProperty(AC_PROP_0x1);
|
||||
} else {
|
||||
field_0xDB2 = 1;
|
||||
}
|
||||
} break;
|
||||
case 1: {
|
||||
unsetActorProperty(AC_PROP_0x1);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::setPitchYawToPoint(const mVec3_c &pnt) {
|
||||
mPitch_0xC34 = -cLib::targetAngleX(mPosition, pnt);
|
||||
mYaw_0xC36 = cLib::targetAngleY(mPosition, pnt);
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3BD0(const mVec3_c &pnt) {
|
||||
mWorldMtx.multVec(pnt, field_0xBB0);
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3BE0(const mVec3_c &pnt) {
|
||||
if (mStateMgr.isState(StateID_AttackReady) || mStateMgr.isState(StateID_Attack)) {
|
||||
dAcObjBase_c *pAttack = attackPlayerOrScrapper(0.f);
|
||||
if (pAttack->isPlayer()) {
|
||||
mVec3_c v = static_cast<dAcPy_c *>(pAttack)->getCenterTranslation();
|
||||
pAttack->mWorldMtx.multVecSR(pnt, field_0xBBC);
|
||||
field_0xBBC += v;
|
||||
} else {
|
||||
pAttack->mWorldMtx.multVec(pnt, field_0xBBC);
|
||||
}
|
||||
} else {
|
||||
dAcObjBase_c *pAttack = attackPlayerOrScrapper(0.f);
|
||||
pAttack->mWorldMtx.multVec(pnt, field_0xBB0);
|
||||
}
|
||||
}
|
||||
|
||||
void dAcEKs_c::setBlink(u8 blink) {
|
||||
nw4r::g3d::ResAnmTexPat pat(nullptr);
|
||||
mCurrentAnmTexPat = blink;
|
||||
switch (mCurrentAnmTexPat) {
|
||||
case 0: pat = mResFile.GetResAnmTexPat("blink_1"); break;
|
||||
case 1: pat = mResFile.GetResAnmTexPat("blink_2"); break;
|
||||
case 2: pat = mResFile.GetResAnmTexPat("blink_3"); break;
|
||||
}
|
||||
mAnmTexPat.setAnm(mMdl.getModel(), pat, 0, m3d::PLAY_MODE_4);
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3E90() {
|
||||
mSph.OnTgElectric();
|
||||
mSph.SetTg_0x50(2);
|
||||
mSph.OnCo_0x8000();
|
||||
}
|
||||
|
||||
void dAcEKs_c::fn_155_3EC0() {
|
||||
mSph.ClrTgElectric();
|
||||
mSph.SetTg_0x50(0);
|
||||
mSph.ClrCo_0x8000();
|
||||
}
|
||||
|
||||
void dAcEKs_c::initializeState_Wait() {}
|
||||
void dAcEKs_c::executeState_Wait() {}
|
||||
|
||||
Reference in New Issue
Block a user