void __fastcall AI_AI_PlayerNormal::calc(AI_AI_PlayerNormal *this)
{
// [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]
Player::handleSpawnBomb_2(this->_._.actor.player);
Player::handleSpawnBomb(this->_._.actor.player);
if ( sub_71011DE4BC(&this->_, v2) & 1 )
return;
v3 = Actor::getInfo578_fieldA_60(this->_._.actor.actor);
if ( !v3 )
return;
v4.player = (Player *)this->_._.actor;
v5 = *(_DWORD *)&v4.player->_._.field_C98;
if ( v5 & 0x40 || v5 & 0x80 )
{
Player::x_8(v4.player);
AI_AI_PlayerNormal::changeState(this, "待機", 0LL);
return;
}
if ( LOBYTE(v4.player->_._.field_1348) )
{
LOBYTE(v4.player->_._.field_1348) = 0;
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1 )
{
v6 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
if ( !BaseProcLink::x_1((BaseProcLink *)(v6 + 0x18), *(ActorBase **)(v6 + 8)) )
{
v7 = BaseProcLink::acquireActorEx((BaseProcLink *)(v6 + 0x18), 0LL, *(ActorBase **)(v6 + 8));
v8 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v9 = v7;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( v9 && v9->vtable->checkDerivedRuntimeTypeInfo((Actor *)v9, &Actor::rttiInfo) )
{
v10 = this->_._.actor.actor;
v11 = (__int64)v9[4].vtable;
*(_DWORD *)&acc.fromOtherThread = 0x3000007;
Actor::sendMessageMaybe(v10, v11, (__int64)&acc, 0LL, 1);
}
}
}
v12 = 0LL;
do
{
v13 = &acc.fromOtherThread + v12;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v12));
v12 += 0x50LL;
*((_QWORD *)v13 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v13 + 6) = 0LL;
*((_QWORD *)v13 + 7) = 0LL;
}
while ( v12 != 0xA00 );
v461 = 0;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "IsNoDamage";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 1, (__int64)&a2, 0xFFFFFFFF);
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "IsWhiteFade";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 1, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "奈落", (__int64)&acc);
v14 = 0xA00LL;
do
{
v15 = &acc.fromOtherThread + v14;
*((_QWORD *)v15 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v15 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v15 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v14 - 0x48));
v14 -= 0x50LL;
}
while ( v14 );
return;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"死亡";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v16 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v16 + 0x30LL))() & 1) )
{
v17 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v17 + 0x28LL))() & 1)
&& !((*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v17 + 0x20LL))(v17) & 1) )
{
return;
}
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1 )
{
v18 = 0LL;
do
{
v19 = &acc.fromOtherThread + v18;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v18));
v18 += 0x50LL;
*((_QWORD *)v19 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v19 + 6) = 0LL;
*((_QWORD *)v19 + 7) = 0LL;
}
while ( v18 != 0xA00 );
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v461 = 0;
*(_QWORD *)&a2.idMaybe = "HasToPlayRidingOnAS";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 0, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "騎乗", (__int64)&acc);
v20 = 0xA00LL;
do
{
v21 = &acc.fromOtherThread + v20;
*((_QWORD *)v21 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v21 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v21 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v20 - 0x48));
v20 -= 0x50LL;
}
while ( v20 );
return;
}
goto LABEL_884;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"溺れる";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "奈落",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
v22 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v22 + 0x28LL))() & 1)
&& !((*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v22 + 0x20LL))(v22) & 1) )
{
return;
}
v23 = ActorBase::x_0((ActorBase *)this->_._.actor.player);
v24.player = (Player *)this->_._.actor;
if ( v23 )
{
v25 = ActorBase::x_0((ActorBase *)v24.player);
v26 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v27 = v25;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( !v27 || !v27->vtable->checkDerivedRuntimeTypeInfo((Actor *)v27, &Actor::rttiInfo) )
return;
v29 = v27->_.name.s._.vptr;
v28 = &v27->_;
v29->assureTermination(&v28->name.s._);
v28->name.s._.vptr->assureTermination(&v28->name.s._);
v30 = v28->name.s._.cstr;
if ( v30 != "Npc_Zora030" )
{
v31 = 0LL;
do
{
v32 = (unsigned __int8)v30[v31];
if ( v32 != (unsigned __int8)aNpcZora030[v31] )
break;
if ( v32 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1118;
++v31;
}
while ( v31 < 0x80001 );
return;
}
LABEL_1118:
v45 = "ゾーラに掴まる";
goto changeState;
}
v41 = ASList::x_1(v24.player->_._._.g.a.ASList, 0LL, 0);
((void (*)(void))v41->vptr->assureTermination)();
v41->vptr->assureTermination(v41);
v42 = v41->cstr;
if ( v42 != "Wait" )
{
v43 = 0LL;
do
{
v44 = (unsigned __int8)v42[v43];
if ( v44 != (unsigned __int8)aWait[v43] )
break;
if ( v44 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_884;
++v43;
}
while ( v43 < 0x80001 );
goto LABEL_64;
}
LABEL_884:
v45 = "待機";
goto changeState;
}
v33 = (_DWORD *)((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getLife)();
if ( v33 && *v33 <= 0 && !(sub_7100886BFC((__int64)this->_._.actor.player) & 1) )
{
v45 = "死亡";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"奈落開始待ち";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "イベント開始待ち",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
v34 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v34 + 0x28LL))() & 1)
&& !((*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v34 + 0x20LL))(v34) & 1) )
{
return;
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1 )
{
v35 = PlayerInfo::sInstance;
v36 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
PlayerInfo::__auto2(v35, v36 + 0x18);
v37 = 0LL;
do
{
v38 = &acc.fromOtherThread + v37;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v37));
v37 += 0x50LL;
*((_QWORD *)v38 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v38 + 6) = 0LL;
*((_QWORD *)v38 + 7) = 0LL;
}
while ( v37 != 0xA00 );
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v461 = 0;
*(_QWORD *)&a2.idMaybe = "HasToPlayRidingOnAS";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 0, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "騎乗", (__int64)&acc);
v39 = 0xA00LL;
do
{
v40 = &acc.fromOtherThread + v39;
*((_QWORD *)v40 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v40 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v40 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v39 - 0x48));
v39 -= 0x50LL;
}
while ( v39 );
return;
}
LABEL_112:
if ( !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m199)() & 1) )
goto LABEL_884;
LABEL_113:
v45 = "しゃがみ待機";
goto changeState;
}
if ( !sForceEnableGlidingSurfingRupee && !sIsDungeon )
{
if ( getFlag_IsGet_PlayerStole2(0) )
{
if ( !(getFlag_FirstTouchdown(0) & 1) )
{
if ( (PlacementMgr::x_0(PlacementMgr::sInstance, &this->_._.actor.player->_._.actorPosCopy, (__int64)&acc),
*(_DWORD *)&acc.fromOtherThread != 4)
&& *(_DWORD *)&acc.fromOtherThread != 3
|| (unsigned int)(*((_DWORD *)&acc.fromOtherThread + 1) - 5) >= 2 )
{
setFlag_FirstTouchdown(1LL, 0);
}
}
}
else
{
v52 = this->_._.actor.player;
v53 = v52->_._.actorPosCopy.x;
if ( v53 < -1600.0 || v53 > -350.0 || (v54 = v52->_._.actorPosCopy.z, v54 < 1400.0) || v54 > 2400.0 )
{
v45 = "奈落開始待ち";
*(_QWORD *)&v52->_.respawnPosVec3.x = 0x437D50B6C47F6EA2LL;
v52->_.respawnPosVec3.z = 1792.6;
*(_DWORD *)&this->_._.actor.player->_._.disableFairies |= 0x40000u;
goto changeState;
}
}
}
v46 = this->_._.actor.player;
if ( LODWORD(v46->_.field_1CA4) == 1
|| (v47 = ((__int64 (*)(void))v46->vptr->_.pe.g.a.m127)(),
(*(unsigned int (**)(void))(*(_QWORD *)v47 + 0x38LL))() == 0x15) )
{
if ( AI_AI_PlayerNormal::lifeStuff(this) & 1 )
return;
this->_._.actor.player->_._.isNoStandSquat |= 0x200000000uLL;
}
if ( getFlag_LastBossIncompleteGanonGenerateFlag(0) )
{
v48.player = (Player *)this->_._.actor;
if ( v48.player->_._.actorPosCopy.y < 170.0 )
{
v49 = Actor::getInfo578_fieldA_60(v48.actor);
if ( !v49 )
return;
*(_QWORD *)&acc.fromOtherThread = 0x433F0000C37E0000LL;
LODWORD(acc.actor) = 0xC4804000;
warpActorToPosition(v49, (__int64)&acc);
return;
}
}
if ( aocManager::sInstance->version >= 0x300
&& isBalladOfHeroesStep02AndNot03()
&& !eventMgrHasActiveEvent()
&& !sIsCDungeon )
{
v50 = oneHitObliteratorHasEscaped(1);
v51.player = (Player *)this->_._.actor;
if ( v50 == 1 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"Demo605_0";
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "Demo605_0";
LABEL_120:
evt::callEvent_0(v51.actor, (sead::SafeString *)&acc, (sead::SafeString *)&a2, 0, 0);
return;
}
v55 = v51.player->_._.actorPosCopy.x;
if ( v55 < -1900.0 || v55 > 0.0 || (v56 = v51.player->_._.actorPosCopy.z, v56 < 1100.0) || v56 > 3000.0 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"Demo605_0";
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "Demo605_1";
goto LABEL_120;
}
if ( !(getFlag_HeroSoulProhibition(0) & 1) )
setFlag_HeroSoulProhibition(1LL, 0);
if ( !(sub_71008E6C30(0LL) & 1) )
sub_71008E6CDC(1LL, 0);
}
if ( LODWORD(this->_._.actor.player->_.field_1CA4) == 5 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"坂滑り";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
if ( sub_71008353B8(this) & 1 )
return;
}
}
v57.player = (Player *)this->_._.actor;
if ( v57.player->_._.isOnSurfaceFlag & 0x10 || v57.player->_._.field_C3C & 0x400000 )
{
v60 = v57.player->_._._.g.a.actorParam->_.gParamList;
v61 = v60->res.numObjects;
v62 = v60->res.objects;
if ( v61 > 0x15 )
v62 = (BgparamlistObjects *)((char *)v62 + 0xA8);
v63 = v62->system[0x29]._.obj.field_28;
v57.player->_.field_1EA4 = 0xBF800000;
v57.player->_.field_1EA0 = v63;
HIDWORD(v57.player->_.field_1E98) = v63;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_112;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "着地後攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_112;
state.vptr = &sead::SafeString::vt;
state.cstr = "武器投げ";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_112;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "バク転着地",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( this->_._.actor.player->_._.slowTimeFlagsMaybe & 0x100 )
goto LABEL_884;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_118;
if ( Player::x_35(this->_._.actor.player) )
goto LABEL_106;
}
else if ( Player::x_35(v57.player) )
{
LABEL_106:
v58 = *(_DWORD *)this->equipNoiseValue;
v59.player = (Player *)this->_._.actor;
goto LABEL_135;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "着地後攻撃",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
v59.player = (Player *)this->_._.actor;
if ( v59.player->_._.field_CEB & 0x10 )
goto LABEL_135;
goto LABEL_130;
}
state.vptr = &sead::SafeString::vt;
state.cstr = "ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
{
v59.player = (Player *)this->_._.actor;
goto LABEL_129;
}
v449.vptr = &sead::SafeString::vt;
v449.cstr = "馬上ジャンプ攻撃";
v64 = AI_AIBase::compareState(&this->_, &v449);
v59.player = (Player *)this->_._.actor;
if ( v64 & 1 )
{
LABEL_129:
if ( v59.player->_._.field_CEB & 0x10 )
goto LABEL_135;
LABEL_130:
v65 = this->attackNoiseValue;
LABEL_131:
v66 = *(_DWORD *)v65;
goto LABEL_135;
}
v67 = ((__int64 (*)(void))v59.player->vptr->_.PlayerBase__m179)();
v59.player = (Player *)this->_._.actor;
if ( v67 & 1 && HIDWORD(v59.player->_.field_1F84) )
{
v65 = this->arrowReadyNoiseValue;
goto LABEL_131;
}
LABEL_135:
((void (__fastcall *)(_QWORD))sub_710086DCF8)((ActorPointer)v59.player);
if ( this->_._.actor.player->_._.field_C98 & 2 )
{
v45 = "スイッチぶら下がり";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"凍る";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
if ( this->_._.actor.player->_.gap_2558[0] & 8 )
{
v45 = "凍る";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"痺れる";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1)
&& this->_._.actor.player->_.gap_2558[0] & 0x10 )
{
v45 = "痺れる";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"怯む";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
v72.player = (Player *)this->_._.actor;
if ( v72.player->_.gap_2558[0] & 0x20 )
{
if ( !(*(_DWORD *)&v72.player->_._.field_CE4 & 0x80000000) )
{
if ( Player::isSurfingOnGround(v72.player) )
{
v45 = "怯む";
goto changeState;
}
LABEL_383:
v45 = "大ダメージ";
goto changeState;
}
}
}
}
v68 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.m127)();
v69 = __ldar((unsigned __int8 *)&unk_71025C94E8);
v70 = (float *)v68;
if ( !((unsigned __int64)&unk_71025C94E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025C94E8) )
{
qword_71025C94E0 = (__int64)&off_7102451C90;
_cxa_guard_release_0(&unk_71025C94E8);
}
if ( v70 && (**(__int64 (__fastcall ***)(float *, __int64 *))v70)(v70, &qword_71025C94E0) & 1 )
{
if ( (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70) == 6 )
{
v71 = (BaseProcLink *)(*(__int64 (__fastcall **)(float *))(*(_QWORD *)v70 + 0x120LL))(v70);
acc.fromOtherThread = 0;
acc.actor = 0LL;
LOBYTE(v452) = 0;
BaseProcLink::getActor(v71, &acc);
if ( ActorAccessor::actorHasTag(&acc, Tag_IsPressHellObj) & 1 )
{
this->_._.actor.player->_._.field_D18 = 3;
AI_AI_PlayerNormal::lifeStuff(this);
ActorAccessor::dtor(&acc);
return;
}
ActorAccessor::dtor(&acc);
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m347)() & 1
&& !(*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x20LL))(v70) )
{
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m303)() & 1
|| (v73 = (*(__int64 (__fastcall **)(float *))(*(_QWORD *)v70 + 0x40LL))(v70), sub_7100736BD8(v73))
|| ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.anonymous_43)() & 1
|| ((__int64 (__fastcall *)(_QWORD))sub_710084BDEC)((ActorPointer)this->_._.actor.player) & 1
&& (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x40LL))(v70) != 0xD
|| !(((__int64 (__fastcall *)(_QWORD))sub_710087394C)((ActorPointer)this->_._.actor.player) & 1)
&& v70[0x8B] > 0.0
&& !*((_BYTE *)v70 + 0x230)
&& (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x40LL))(v70) != 0xD
&& (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x40LL))(v70) != 0xFFFFFFFF )
{
sub_7100873ACC((__int64)this->_._.actor.player);
}
}
if ( (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70) == 0xF )
*(float *)&this->_._.actor.player->_.field_20D0 = this->_._.actor.player->_._.actorPosCopy.y;
v74 = (*(__int64 (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70);
ASList::x_2(this->_._.actor.player->_._._.g.a.ASList, 0x42LL, 0x27, v74 == 9);
v75 = (*(__int64 (__fastcall **)(float *))(*(_QWORD *)v70 + 0x40LL))(v70);
if ( !*((_BYTE *)v70 + 0x232) )
{
switch ( v75 + 1 )
{
case 0:
case 4:
case 5:
case 7:
case 8:
case 9:
case 0x22:
goto LABEL_202;
case 1:
case 3:
goto LABEL_167;
case 2:
if ( ASList::x_7(this->_._.actor.player->_._._.g.a.ASList, 3LL, 2LL, sub_710002E82C, 0LL) & 1 )
goto LABEL_200;
goto LABEL_199;
case 6:
Player::x_16(this->_._.actor.player);
((void (__fastcall *)(_QWORD))sub_7100882478)((ActorPointer)this->_._.actor.player);
v111 = (PlayerBase *)this->_._.actor.player;
v112 = PlayerBase::getEquipmentTypeName(v111, 6u);
v111->_.equipmentTypeName._.vptr->assureTermination(&v111->_.equipmentTypeName._);
v111->_.equipmentTypeName._.vptr->assureTermination(&v111->_.equipmentTypeName._);
v113 = v111->_.equipmentTypeName._.cstr;
v112->vptr->assureTermination(v112);
v114 = v112->cstr;
if ( v113 == v114 )
goto LABEL_270;
v115 = v111->_.equipmentTypeName._.cstr;
v116 = 1LL;
while ( 2 )
{
v117 = (unsigned __int8)v115[v116 - 1];
if ( v117 != (unsigned __int8)v114[v116 - 1] )
goto LABEL_446;
if ( v117 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
break;
if ( v116 >= 0x80001 )
goto LABEL_446;
v118 = (unsigned __int8)v115[v116];
if ( v118 != (unsigned __int8)v114[v116] )
goto LABEL_446;
if ( v118 != (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
{
v116 += 2LL;
continue;
}
break;
}
LABEL_270:
RuneMgr::setHandled(RuneMgr::sInstance);
v119 = PlayerBase::getEquipmentTypeName((PlayerBase *)this->_._.actor.player, 0);
v120.player = (Player *)this->_._.actor;
v121 = v120.player->_._.equipmentTypeName._.cstr;
((void (*)(void))v119->vptr->assureTermination)();
v122 = v119->cstr;
if ( v121 == v122 )
goto LABEL_446;
v119->vptr->assureTermination(v119);
v123 = 0LL;
v124 = (signed __int64)(v119->cstr + 1);
break;
case 0xA:
case 0xF:
v45 = "ガード崩れ";
goto changeState;
case 0xB:
case 0x17:
case 0x18:
case 0x1C:
case 0x1F:
case 0x20:
goto LABEL_383;
case 0xC:
case 0xD:
v45 = "ガードスリップ";
goto changeState;
case 0xE:
v128 = this->_._.actor.player;
if ( v128[0xC40] & 0x20
|| !((*(__int64 (**)(void))(*(_QWORD *)v128 + 0xAD8LL))() & 1)
|| (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x20LL))(v70) )
{
sub_71008883B8((__int64)this->_._.actor.player);
}
else
{
sub_7100873ACC((__int64)this->_._.actor.player);
}
return;
case 0x11:
goto LABEL_469;
case 0x13:
if ( ((__int64 (__fastcall *)(_QWORD))sub_71007A2604)((ActorPointer)this->_._.actor.player) & 1 )
goto def_710082F8CC;
goto LABEL_469;
case 0x14:
v109 = Rumble::sInstance;
v110 = 2;
goto LABEL_470;
case 0x19:
v45 = "水の遺物咆哮吹き飛び";
goto changeState;
case 0x1A:
case 0x1B:
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"滑落";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_202;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "ステップ攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_202;
state.vptr = &sead::SafeString::vt;
state.cstr = "盾サーフィン";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_202;
v449.vptr = &sead::SafeString::vt;
v449.cstr = "ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, &v449) & 1 )
goto LABEL_202;
*(_QWORD *)a6 = &sead::SafeString::vt;
v448 = "馬上ジャンプ攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)a6) & 1 )
goto LABEL_202;
v45 = "着地ダメージ";
goto changeState;
default:
def_710082F8CC:
((void (__fastcall *)(_QWORD))sub_7100888278)((ActorPointer)this->_._.actor.player);
if ( ((__int64 (__fastcall *)(_QWORD))sub_71008738BC)((ActorPointer)this->_._.actor.player) & 1 )
goto LABEL_383;
if ( ((__int64 (__fastcall *)(_QWORD))sub_710087391C)((ActorPointer)this->_._.actor.player) & 1 )
goto LABEL_383;
v126 = this->_._.actor.player;
if ( v126[0xCEC] & 2 )
goto LABEL_383;
if ( !((*(__int64 (**)(void))(*(_QWORD *)v126 + 0x588LL))() & 1)
&& !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m193_isShieldRide_Maybe)() & 1) )
{
v127 = this->_._.actor.player;
if ( !(v127[0xC41] & 4) )
{
if ( (*(__int64 (**)(void))(*(_QWORD *)v127 + 0x5E0LL))() & 1 )
{
v45 = "泳ぎダメージ";
}
else if ( ((__int64 (__fastcall *)(_QWORD))sub_71008738EC)((ActorPointer)this->_._.actor.player) & 1 )
{
v45 = "中ダメージ";
}
else
{
v45 = "小ダメージ";
}
goto changeState;
}
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1
|| ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m193_isShieldRide_Maybe)() & 1 )
{
Player::x_23(this->_._.actor.player, "DamageS", 0, -1.0);
}
else
{
Player::switchToAnimSequenceMaybe(this->_._.actor.player, "DamageS", 1, -1.0);
}
LABEL_469:
v109 = Rumble::sInstance;
v110 = 0;
LABEL_470:
Rumble::__auto0(v109, v110, 1);
goto LABEL_202;
}
while ( v119->cstr[v123] != sead::SafeStringBase<char>::cNullChar )
{
if ( *(unsigned __int8 *)(v124 + v123) == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
{
LODWORD(v123) = v123 + 1;
break;
}
if ( *(unsigned __int8 *)(v124 + v123 + 1) == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
{
LODWORD(v123) = v123 + 2;
break;
}
v125 = v123 + 2;
v123 += 3LL;
if ( v125 >= 0x80000 )
{
LODWORD(v123) = 0;
break;
}
}
v176 = v120.player->_._.equipmentTypeName.length;
if ( (signed int)v123 >= v176 )
LODWORD(v123) = v176 - 1;
v177 = (signed int)v123;
memcpy_0(v121, v122, (signed int)v123);
v121[v177] = sead::SafeStringBase<char>::cNullChar;
LABEL_446:
v178 = ASList::x_1(this->_._.actor.player->_._._.g.a.ASList, 1LL, 1u);
((void (*)(void))v178->vptr->assureTermination)();
v178->vptr->assureTermination(v178);
v179 = v178->cstr;
if ( v179 == "DamageSUpper" )
{
LABEL_452:
if ( !(ASList::x(this->_._.actor.player->_._._.g.a.ASList, 0, 0LL, 1u, 1u, (char *)sub_71011638DC, 0LL, 1) & 1) )
goto LABEL_202;
Player::x_18(this->_._.actor.player, 1LL);
}
else
{
v180 = 0LL;
do
{
v181 = (unsigned __int8)v179[v180];
if ( v181 != (unsigned __int8)aDamagesupper[v180] )
break;
if ( v181 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_452;
++v180;
}
while ( v180 < 0x80001 );
}
Player::x_23(this->_._.actor.player, "DamageSUpper", 0, -1.0);
goto LABEL_202;
}
*((_BYTE *)v70 + 0x232) = 0;
LABEL_167:
v76.player = (Player *)this->_._.actor;
if ( *(_WORD *)v76.player->_.gap_2558 & 0x300 )
{
if ( !(*(_WORD *)v76.player->_.gap_2558 & 0x100) )
goto LABEL_170;
}
else
{
if ( (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70) == 0x13
|| (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70) == 0x14
|| (*(unsigned int (__fastcall **)(float *))(*(_QWORD *)v70 + 0x38LL))(v70) == 0xA )
{
goto LABEL_189;
}
v76.player = (Player *)this->_._.actor;
if ( !(*(_WORD *)v76.player->_.gap_2558 & 0x100) )
goto LABEL_170;
}
v77 = *(_DWORD *)&v76.player->_._.field_C44;
if ( v77 & 0x800 )
{
v84 = v77 & 0xFFFFF7FF;
v83 = 1;
goto LABEL_192;
}
LABEL_170:
v78 = ASList::x_1(v76.player->_._._.g.a.ASList, 1LL, 1u);
((void (*)(void))v78->vptr->assureTermination)();
v78->vptr->assureTermination(v78);
v79 = v78->cstr;
if ( v79 == "DamageSUpper" )
{
LABEL_186:
v83 = 0;
if ( !(ASList::x(this->_._.actor.player->_._._.g.a.ASList, 0, 0LL, 1u, 1u, (char *)sub_71011638DC, 0LL, 1) & 1) )
{
LABEL_193:
v85 = ASList::x_1(this->_._.actor.player->_._._.g.a.ASList, 1LL, 1u);
((void (*)(void))v85->vptr->assureTermination)();
v85->vptr->assureTermination(v85);
v86 = v85->cstr;
if ( v86 != "DamageSUpper" )
{
v87 = 0LL;
do
{
v88 = (unsigned __int8)v86[v87];
if ( v88 != (unsigned __int8)aDamagesupper[v87] )
break;
if ( v88 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_200;
++v87;
}
while ( v87 < 0x80001 );
if ( !((v83 | (unsigned int)ASList::x_7(
this->_._.actor.player->_._._.g.a.ASList,
3LL,
2LL,
sub_710002E82C,
0LL)) & 1) )
LABEL_199:
((void (__fastcall *)(_QWORD, _QWORD))sub_71008563F0)((ActorPointer)this->_._.actor.player, "FaceDamageS");
}
LABEL_200:
if ( ((__int64 (__fastcall *)(_QWORD))sub_71007D86B4)((ActorPointer)this->_._.actor.player) & 1 )
Player::x_18(this->_._.actor.player, 1LL);
goto LABEL_202;
}
Player::x_18(this->_._.actor.player, 1LL);
}
else
{
v80 = 0LL;
do
{
v81 = (unsigned __int8)v79[v80];
if ( v81 != (unsigned __int8)aDamagesupper[v80] )
break;
if ( v81 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_186;
++v80;
}
while ( v80 < 0x80001 );
v82.player = (Player *)this->_._.actor;
if ( !(v82.player->_._.field_CED & 0x20)
|| v82.player->_._.slowTimeFlagsMaybe & 0x10
|| ((__int64 (__fastcall *)(_QWORD))sub_7100890394)((ActorPointer)v82.player) & 1 )
{
goto LABEL_189;
}
}
Player::x_23(this->_._.actor.player, "DamageSUpper", 0, -1.0);
v76.player = (Player *)this->_._.actor;
if ( !(v76.player->_.gap_2558[1] & 1) )
{
LABEL_189:
v83 = 0;
goto LABEL_193;
}
v84 = *(_DWORD *)&v76.player->_._.field_C44 | 0x800;
v83 = 0;
LABEL_192:
*(_DWORD *)&v76.player->_._.field_C44 = v84;
goto LABEL_193;
}
LABEL_202:
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"掴まれる";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) && this->field_140 )
{
if ( ((__int64 (__fastcall *)(_QWORD))sub_71005DC444)((ActorPointer)this->_._.actor.player) & 1 )
{
this->field_140 = 0;
BaseProcLink::reset(&this->field_118);
this->vtable_110[1].sub_7100012538(&this->vtable_110);
v45 = "掴まれる";
goto changeState;
}
if ( !ActorBase::x_0((ActorBase *)this->_._.actor.player) )
{
this->field_140 = 0;
BaseProcLink::reset(&this->field_118);
this->vtable_110[1].sub_7100012538(&this->vtable_110);
}
}
v89.player = (Player *)this->_._.actor;
v90 = *(_DWORD *)&v89.player->_._.field_CE4;
if ( v90 & 0x400
|| *(_DWORD *)&v89.player->_._.field_CF0 & 0x18000 | *(_DWORD *)&v89.player->_._.field_CE4 & 0x40
|| v89.player->_.gap_2558[0] & 8
|| *(_BYTE *)(*(_QWORD *)(((__int64 (*)(void))v89.player->vptr->_.getAttachedTargetActor2)() + 0xB0) + 0x49LL) & 2 )
{
goto LABEL_316;
}
v91.player = (Player *)this->_._.actor;
v92 = (~*(unsigned __int16 *)(v3 + 0x116) & 0x104) == 0;
if ( v91.player->_._.isShieldRide & 0x80 )
{
if ( v91.player->_._._.g.a.field_68F[0] )
v93 = *(float *)&v91.player->_._._.g.a.field_6F0 - v91.player->_._._.g.a.position.y;
else
v93 = 0.0;
v92 = v93 > 1.4;
}
v94 = ((__int64 (*)(void))v91.player->vptr->_.PlayerBase__m186)();
v95 = (__int64)this->_._.actor.player;
if ( v94 & 1 )
{
if ( *(float *)(v95 + 0x1EB4) <= 0.00000011921 )
{
if ( *(float *)(v95 + 0x20D4) > (float)(*(float *)(v95 + 0x1774) + (float)((float)(1.4 + 0.05) + -0.2)) )
{
v96 = ASList::x_1(*(_QWORD *)(v95 + 0x560), 0LL, 0);
((void (*)(void))v96->vptr->assureTermination)();
v96->vptr->assureTermination(v96);
v97 = v96->cstr;
if ( v97 != "GroundDownToWall" )
{
v98 = 0LL;
do
{
v99 = (unsigned __int8)v97[v98];
if ( v99 != (unsigned __int8)aGrounddowntowa[v98] )
break;
if ( v99 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_236;
++v98;
}
while ( v98 < 0x80001 );
v95 = (__int64)this->_._.actor.player;
LABEL_233:
v102 = sub_710086CAB8(v95);
v103 = this->_._.actor.player;
if ( v102 & 1 && !(v103[0xCFC] & 8) )
goto LABEL_235;
if ( (*(__int64 (**)(void))(*(_QWORD *)v103 + 0x888LL))() )
{
v105 = (ActorBase *)((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m273)();
v106 = oneHitObliteratorCheckIsActor(v105, 0);
}
else
{
v106 = 0;
}
if ( *(_BYTE *)(v3 + 0x18C) == 1 )
goto LABEL_316;
v129 = (_DWORD *)((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getLife)();
if ( v129 && *v129 > 4
|| Player::x_54(this->_._.actor.player)
|| ((__int64 (*)(void))this->_._.actor.player->vptr->hasFairy)() & 1 )
{
if ( !v106 )
{
LABEL_300:
if ( !(sub_71008E6D90(0LL) & 1) )
{
v130.player = (Player *)this->_._.actor;
if ( !v130.player->_._._.g.a.field_1A0 )
{
v131 = v130.player->_._._.g.a.placementObj;
if ( !v131 || !(v131->flags0 & 0x20000) )
{
*(_DWORD *)&v130.player->_._.field_CE4 |= 0x400u;
v132.player = (Player *)this->_._.actor;
if ( !(v132.player->_._.isBgCrossFoot & 8) )
{
LABEL_429:
callPlayerRespawnEvent(v132.actor);
*(_DWORD *)&this->_._.actor.player->_._.field_C44 |= 0x10u;
return;
}
*(_DWORD *)&v132.player->_._.field_CEC |= 0x100u;
LABEL_428:
v132.player = (Player *)this->_._.actor;
goto LABEL_429;
}
}
}
goto LABEL_316;
}
}
else if ( !((v106 | ~((unsigned int (*)(void))this->_._.actor.player->vptr->_.canUseMiphaGrace)()) & 1) )
{
goto LABEL_300;
}
LABEL_312:
v45 = "泳ぎ";
this->_._.actor.player->_._.isNoStandSquat |= 0x200000000uLL;
goto changeState;
}
}
LABEL_236:
v95 = (__int64)this->_._.actor.player;
}
}
else
{
v100 = Player::x_2(v95);
v95 = (__int64)this->_._.actor.player;
if ( !(v100 & 1) || *(_BYTE *)(v95 + 0xCFC) & 8 )
{
if ( v92 )
goto LABEL_233;
}
else if ( *(_BYTE *)(v95 + 0x68F) )
{
if ( *(float *)(v95 + 0x1EA8) > *this->inWaterTimeForRagdoll )
{
LODWORD(acc.actor) = *(_DWORD *)(v95 + 0x1778);
*(_QWORD *)&acc.fromOtherThread = *(_QWORD *)(v95 + 0x1770);
*((_DWORD *)&acc.fromOtherThread + 1) = *(_DWORD *)(v95 + 0x20D4);
a2.idMaybe = (int)acc.actor;
a2.baseProcLinkData = *(BaseProcLinkData **)&acc.fromOtherThread;
*((float *)&a2.baseProcLinkData + 1) = *((float *)&acc.fromOtherThread + 1) - 1.4;
v101 = sub_710087F360(v95, (Vec3 *)&acc, (Vec3 *)&a2, 0LL, 0LL);
v95 = (__int64)this->_._.actor.player;
if ( !(v101 & 1) )
goto LABEL_233;
}
}
}
if ( !(*(_BYTE *)(v95 + 0xCFC) & 8) )
goto LABEL_316;
v104 = *(_BYTE *)(v95 + 0x68F) ? *(float *)(v95 + 0x6F0) - *(float *)(v95 + 0x3B4) : 0.0;
if ( v104 <= 1.4 )
goto LABEL_316;
if ( (*(__int64 (**)(void))(*(_QWORD *)v95 + 0x888LL))() )
{
v107 = (ActorBase *)((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m273)();
v108 = oneHitObliteratorCheckIsActor(v107, 0);
}
else
{
v108 = 0;
}
v133 = (_DWORD *)((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getLife)();
if ( v133 && *v133 > 4
|| Player::x_54(this->_._.actor.player)
|| ((__int64 (*)(void))this->_._.actor.player->vptr->hasFairy)() & 1 )
{
if ( v108 )
goto LABEL_312;
}
else if ( (v108 | ~((unsigned int (*)(void))this->_._.actor.player->vptr->_.canUseMiphaGrace)()) & 1 )
{
goto LABEL_312;
}
if ( !(sub_71008E6D90(0LL) & 1) )
{
v134.player = (Player *)this->_._.actor;
if ( !v134.player->_._._.g.a.field_1A0 )
{
v174 = v134.player->_._._.g.a.placementObj;
if ( !v174 || !(v174->flags0 & 0x20000) )
{
*(_DWORD *)&v134.player->_._.field_CE4 |= 0x400u;
*(_DWORD *)&this->_._.actor.player->_._.field_CEC |= 0x100u;
goto LABEL_428;
}
}
}
LABEL_316:
if ( sub_7100835578(this) & 1 )
return;
v135 = this->_._.actor.player;
v136 = v135[0x33B];
if ( !(v136 & 0xC2)
&& !(v135[0x33C] & 0x200000 | v136 & 0x4080400 | v135[0x33C] & 0x10000 | v135[0x33C] & 0x800000)
&& !((*(__int64 (**)(void))(*(_QWORD *)v135 + 0x588LL))() & 1) )
{
v137 = (__int64)this->_._.actor.player;
if ( !(*(_BYTE *)(v137 + 0x2558) & 0x18)
&& !(*(_BYTE *)(v137 + 0xCFC) & 1)
&& !(*(_BYTE *)(v137 + 0xC9A) & 1)
&& !(*(_BYTE *)(v137 + 0xC4A) & 0x10) )
{
LODWORD(state.cstr) = *(_DWORD *)(v137 + 0x1778);
state.vptr = *(sead::SafeStringBase::vtable **)(v137 + 0x1770);
v138 = 0.5;
*((float *)&state.vptr + 1) = *((float *)&state.vptr + 1) + 0.5;
LODWORD(v449.cstr) = *(_DWORD *)(v137 + 0x1778);
v449.vptr = *(sead::SafeStringBase::vtable **)(v137 + 0x1770);
if ( *(_BYTE *)(v137 + 0xCF3) & 8 )
v138 = *this->toFallHeightForJustRush;
*((float *)&v449.vptr + 1) = *((float *)&v449.vptr + 1) - v138;
if ( !(sub_710087F360(v137, (Vec3 *)&state, (Vec3 *)&v449, 0LL, 0LL) & 1) )
{
v168 = (__int64)this->_._.actor.player;
if ( *(_BYTE *)(v168 + 0xCF2) & 2 )
{
*((float *)&v449.vptr + 1) = *((float *)&v449.vptr + 1) + -5.0;
if ( !(sub_710087F360(v168, (Vec3 *)&state, (Vec3 *)&v449, 0LL, &a2) & 1) )
goto LABEL_118;
v175.player = (Player *)this->_._.actor;
sead::CriticalSection::lock(&v175.player->_._.field_C58);
*(_DWORD *)&v175.player->_._.field_C98 |= 0x40000u;
sead::CriticalSection::unlock(&v175.player->_._.field_C58);
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"坂滑り";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
sub_71008353B8(this);
return;
}
}
else
{
if ( *(_BYTE *)(v168 + 0xD11)
|| *(float *)(v168 + 0x209C) <= 0.05
|| !(sub_7100F631EC(v3) & 1) && !(sub_7100F5F128(v3) & 1) )
{
goto LABEL_118;
}
v169 = j_getCurrentMapName();
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
v170 = v169;
acc.actor = (ActorBase *)"Dungeon124";
((void (*)(void))v169->vptr->assureTermination)();
v170->vptr->assureTermination(v170);
v171 = (ActorBase *)v170->cstr;
(*(void (__fastcall **)(ActorAccessor *))(*(_QWORD *)&acc.fromOtherThread + 0x18LL))(&acc);
if ( v171 == acc.actor )
{
LABEL_466:
sub_7100F5F598(v3, &a2);
if ( *((float *)&a2.baseProcLinkData + 1) > 45.0 )
goto LABEL_118;
}
else
{
v172 = v170->cstr;
for ( i = 1LL; ; i += 2LL )
{
v182 = (unsigned __int8)v172[i - 1];
if ( v182 != *((unsigned __int8 *)acc.actor + i - 1) )
break;
if ( v182 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_466;
if ( i >= 0x80001 )
break;
v183 = (unsigned __int8)v172[i];
if ( v183 != *((unsigned __int8 *)&acc.actor->vtable + i) )
break;
if ( v183 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_466;
}
}
}
}
}
}
v139 = RuneMgr::sInstance;
if ( !(RuneMgr::sInstance->flags & 0x20) )
{
*(_DWORD *)&this->_._.actor.player->_._.disableFairies &= 0xFF7FFFFF;
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100848F5C)((ActorPointer)this->_._.actor.player) & 1 )
{
if ( sub_71006771D8((__int64)v139, this->_._.actor.player) )
{
sub_710067587C(v139);
this->_._.actor.player->_._.slowTimeFlagsMaybe &= 0xFFFFFFFD;
this->_._.actor.player->_._.field_C3C |= 0x1000u;
this->_._.actor.player->_._.field_C3C |= 0x400u;
this->_._.actor.player->_.field_1FA8 = 0x3F800000;
if ( getFlag_IsGet_PlayerStole2(0)
|| getFlag_IsPlayed_Demo010_0(0) & 1
|| ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m199)() & 1
|| (v140 = this->_._.actor.player, v140[0xCF4] & 2)
|| (*(__int64 (**)(void))(*(_QWORD *)v140 + 0x588LL))() & 1 )
{
Player::x_38((PlayerBase *)this->_._.actor.player, 0);
v141 = this->_._.actor.player;
if ( !(v141->_._.field_CEC & 2) )
Player::x_23(v141, "ItemScopeReady", 0, -1.0);
return;
}
LABEL_1068:
v45 = "イベント開始待ち";
goto changeState;
}
}
}
if ( !(v139->flags & 0x10) || !RuneMgr::isSelectedRune(v139, RuneType_Camera) )
{
v142.player = (Player *)this->_._.actor;
if ( sub_71008BD430((__int64)v142.player->_._.controllerMaybe, 0x21u) )
{
if ( !(v142.player->_._.controllerMaybe->_.field_118 & 0xD000000000000LL)
&& Player::runeMgrCheckCanUseCamera(this->_._.actor.player) & 1
&& !(this->_._.actor.player->_._.field_CEC & 2) )
{
RuneMgr::setFieldD8(v139);
this->_._.actor.player->_._.slowTimeFlagsMaybe &= 0xFFFFFFFD;
AI_AI_PlayerNormal::equipmentRelatedChangeState(this, "カメラ");
return;
}
}
}
if ( Player::isSurfingOnGround(this->_._.actor.player) )
{
if ( !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m226)() & 1) )
{
v143 = this->_._.actor.player;
v144 = v143[0x33C];
if ( !(v144 & 0x2000000)
&& !(v144 & 0x60000)
&& !(v143[0x33B] & 0x80000000)
&& !((*(__int64 (**)(void))(*(_QWORD *)v143 + 0x638LL))() & 1)
&& !(((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1) )
{
v145 = this->_._.actor.player;
if ( !(v145[0xCF2] & 0x80)
&& !(v145[0xCF4] & 2)
&& !((*(__int64 (**)(void))(*(_QWORD *)v145 + 0x4B8LL))() & 1)
&& !(((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.field_4B8)() & 1)
&& !(((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.field_4B8)() & 1) )
{
v146.player = (Player *)this->_._.actor;
if ( !(v146.player->_._.slowTimeFlagsMaybe & 2) )
{
if ( v146.player->_._.field_CE9 & 0x10 )
{
if ( ((__int64 (*)(void))v146.player->vptr->_.PlayerBase__m200)() & 1 )
goto LABEL_368;
v146.player = (Player *)this->_._.actor;
}
v147 = v146.player->_._._.g.a.actorParam->_.gParamList;
v148 = v147->res.numObjects;
v149 = v147->res.objects;
if ( v148 > 0x15 )
v149 = (BgparamlistObjects *)((char *)v149 + 0xA8);
if ( *((float *)&v146.player->_.field_20D0 + 1) < (float)(v146.player->_._.actorPosCopy.y
+ *(float *)&v149->system[0xF].sameGroupActorName.value.vptr)
&& sub_71008BD430((__int64)v146.player->_._.controllerMaybe, 0x11u) )
{
if ( AI_AI_PlayerNormal::x_6b(this) & 1 )
return;
v150 = this->_._.actor.player;
if ( v150[0xD11] )
{
if ( Player::x_21(v150) & 1 )
{
Player::x_33(this->_._.actor.player);
LABEL_650:
v219 = "しゃがみ待機";
goto LABEL_651;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"持上げ";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
v219 = "持上げ";
LABEL_651:
AI_AI_PlayerNormal::changeState(this, v219, 0LL);
goto LABEL_652;
}
}
else
{
if ( (*(__int64 (**)(void))(*(_QWORD *)v150 + 0x598LL))() & 1 )
goto LABEL_650;
v211 = (PlayerBase *)this->_._.actor.player;
v212 = PlayerBase::getEquipmentTypeName(v211, 1u);
v211->_.equipmentTypeName._.vptr->assureTermination(&v211->_.equipmentTypeName._);
v211->_.equipmentTypeName._.vptr->assureTermination(&v211->_.equipmentTypeName._);
v213 = v211->_.equipmentTypeName._.cstr;
v212->vptr->assureTermination(v212);
v214 = v212->cstr;
if ( v213 == v214 )
goto LABEL_650;
v215 = v211->_.equipmentTypeName._.cstr;
for ( j = 1LL; ; j += 2LL )
{
v217 = (unsigned __int8)v215[j - 1];
if ( v217 != (unsigned __int8)v214[j - 1] )
break;
if ( v217 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_650;
if ( j >= 0x80001 )
break;
v218 = (unsigned __int8)v215[j];
if ( v218 != (unsigned __int8)v214[j] )
break;
if ( v218 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_650;
}
if ( this->_._.actor.player->_._.slowTimeFlagsMaybe & 8 )
goto LABEL_650;
AI_AI_PlayerNormal::equipmentRelatedChangeState(this, "しゃがみ待機");
}
LABEL_652:
((void (__fastcall *)(_QWORD))sub_710087CFD8)((ActorPointer)this->_._.actor.player);
Player::x_22(this->_._.actor.player);
AI_AI_PlayerNormal::x_6b(this);
return;
}
}
}
}
}
}
LABEL_368:
v151 = (PlayerBase *)this->_._.actor.player;
v152 = PlayerBase::getEquipmentTypeName(v151, 1u);
v151->_.equipmentTypeName._.vptr->assureTermination(&v151->_.equipmentTypeName._);
v151->_.equipmentTypeName._.vptr->assureTermination(&v151->_.equipmentTypeName._);
v153 = v151->_.equipmentTypeName._.cstr;
v152->vptr->assureTermination(v152);
v154 = v152->cstr;
if ( v153 == v154 )
{
LABEL_376:
if ( ((__int64 (__fastcall *)(_QWORD))sub_71008923D0)((ActorPointer)this->_._.actor.player) & 1
&& AI_AI_PlayerNormal::x_6f_a(this) & 1 )
{
return;
}
}
else
{
v155 = v151->_.equipmentTypeName._.cstr;
for ( k = 1LL; ; k += 2LL )
{
v157 = (unsigned __int8)v155[k - 1];
if ( v157 != (unsigned __int8)v154[k - 1] )
break;
if ( v157 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_376;
if ( k >= 0x80001 )
break;
v158 = (unsigned __int8)v155[k];
if ( v158 != (unsigned __int8)v154[k] )
break;
if ( v158 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_376;
}
}
if ( ((__int64 (__fastcall *)(_QWORD))sub_710084BD44)((ActorPointer)this->_._.actor.player) & 1
&& ((__int64 (__fastcall *)(_QWORD))sub_71008739A0)((ActorPointer)this->_._.actor.player) & 1 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_383;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_383;
state.vptr = &sead::SafeString::vt;
state.cstr = "落下攻撃";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_383;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地後攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v45 = "跳ね返り";
goto changeState;
}
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "着地後攻撃",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| ((state.vptr = &sead::SafeString::vt,
state.cstr = "ジャンプ斬り",
AI_AIBase::compareState(&this->_, &state) & 1)
|| (v449.vptr = &sead::SafeString::vt,
v449.cstr = "馬上ジャンプ攻撃",
AI_AIBase::compareState(&this->_, &v449) & 1))
&& Player::isSurfingOnGround(this->_._.actor.player) )
{
if ( AI_AI_PlayerNormal::x_7(this) & 1
|| ASList::x(this->_._.actor.player->_._._.g.a.ASList, 0x11u, 0LL, 0, 0, (char *)sub_71011638DC, 0LL, 1) & 1
&& (AI_AI_PlayerNormal::x_6c(this, 0LL) & 1 || AI_AI_PlayerNormal::x_6d(this, 0LL) & 1) )
{
return;
}
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"落下";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"落下中の弓";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_408;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_1203;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_1203;
state.vptr = &sead::SafeString::vt;
state.cstr = "壁ジャンプ";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_1203;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"パラショール滑空";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_1204;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"スイッチぶら下がり";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( sub_71008376E8(this) & 1 )
return;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"アイテム";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( this->_._.actor.player->_._.field_CE4 & 1 && AI_AI_PlayerNormal::x_8(this, 0) & 1 )
return;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ガードスリップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( ASList::x(this->_._.actor.player->_._._.g.a.ASList, 0x2Du, 0LL, 0, 0, (char *)sub_71011638DC, 0LL, 1) & 1 )
{
v184 = this->_._.actor.player;
if ( v184[0xC40] & 8
&& !((*(__int64 (**)(void))(*(_QWORD *)v184 + 0x708LL))() & 1)
&& sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 5u) )
{
v185 = "攻撃";
goto LABEL_477;
}
if ( AI_AI_PlayerNormal::x_6c(this, 0LL) & 1 )
return;
}
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみ待機";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "しゃがみ移動",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( AI_AI_PlayerNormal::x_6e(this) & 1 )
return;
((void (__fastcall *)(_QWORD))sub_710087CFD8)((ActorPointer)this->_._.actor.player);
Player::x_22(this->_._.actor.player);
if ( AI_AI_PlayerNormal::x_6b(this) & 1 )
return;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
LABEL_1204:
sub_710086B834((__int64)this->_._.actor.player);
if ( sub_71008372BC(this) & 1 )
return;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "バク転",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
LABEL_1203:
v167 = (__int64)this->_._.actor.player;
if ( *(_BYTE *)(v167 + 0xC46) & 0x20 )
goto LABEL_486;
sub_710086B834(v167);
if ( sub_71008372BC(this) & 1 )
return;
LABEL_408:
sub_7100836EB0(this);
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"滑落";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v202 = Player::isSurfingOnGround(this->_._.actor.player);
v203.player = (Player *)this->_._.actor;
v204 = *(_DWORD *)&v203.player->_._.field_CE4;
if ( v202 )
v205 = v204 & 0xFFFFFFFD;
else
v205 = v204 | 2;
*(_DWORD *)&v203.player->_._.field_CE4 = v205;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v220 = (PlayerBase *)this->_._.actor.player;
v221 = PlayerBase::getEquipmentTypeName(v220, 0);
v220->_.field_D60.vptr->assureTermination(&v220->_.field_D60);
v220->_.field_D60.vptr->assureTermination(&v220->_.field_D60);
v222 = v220->_.field_D60.cstr;
v221->vptr->assureTermination(v221);
v223 = v221->cstr;
if ( v222 == v223 )
{
LABEL_642:
if ( AI_AI_PlayerNormal::handleMagnesisRuneStep2(this) & 1 || AI_AI_PlayerNormal::handleRuneStep2(this) )
return;
}
else
{
v224 = v220->_.field_D60.cstr;
for ( l = 1LL; ; l += 2LL )
{
v226 = (unsigned __int8)v224[l - 1];
if ( v226 != (unsigned __int8)v223[l - 1] )
break;
if ( v226 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_642;
if ( l >= 0x80001 )
break;
v227 = (unsigned __int8)v224[l];
if ( v227 != (unsigned __int8)v223[l] )
break;
if ( v227 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_642;
}
}
if ( AI_AI_PlayerNormal::x_0(this) & 1 )
return;
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "バク転着地",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
v228 = (PlayerBase *)this->_._.actor.player;
v229 = PlayerBase::getEquipmentTypeName(v228, 0);
v228->_.field_D60.vptr->assureTermination(&v228->_.field_D60);
v228->_.field_D60.vptr->assureTermination(&v228->_.field_D60);
v230 = v228->_.field_D60.cstr;
v229->vptr->assureTermination(v229);
v231 = v229->cstr;
if ( v230 == v231 )
{
LABEL_664:
if ( AI_AI_PlayerNormal::handleMagnesisRuneStep2(this) & 1 || AI_AI_PlayerNormal::handleRuneStep2(this) )
return;
}
else
{
v232 = v228->_.field_D60.cstr;
for ( m = 1LL; ; m += 2LL )
{
v234 = (unsigned __int8)v232[m - 1];
if ( v234 != (unsigned __int8)v231[m - 1] )
break;
if ( v234 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_664;
if ( m >= 0x80001 )
break;
v235 = (unsigned __int8)v232[m];
if ( v235 != (unsigned __int8)v231[m] )
break;
if ( v235 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_664;
}
}
goto LABEL_486;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"泳ぎ";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ウェイクボード";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
&& this->_._.actor.player->_._.field_C92 & 0x40 )
{
goto LABEL_383;
}
goto LABEL_486;
}
if ( !Player::x_44(this->_._.actor.player)
|| ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m189)() & 1 )
{
goto LABEL_486;
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m273)() )
{
v236 = (ActorBase *)((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m273)();
v237 = oneHitObliteratorCheckIsActor(v236, 0);
}
else
{
v237 = 0;
}
v239 = (_DWORD *)((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getLife)();
if ( v239 && *v239 > 4
|| Player::x_54(this->_._.actor.player)
|| ((__int64 (*)(void))this->_._.actor.player->vptr->hasFairy)() & 1 )
{
if ( v237 )
{
LABEL_710:
this->_._.actor.player->_._.isNoStandSquat |= 0x200000000uLL;
goto LABEL_486;
}
}
else if ( (v237 | ~((unsigned int (*)(void))this->_._.actor.player->vptr->_.canUseMiphaGrace)()) & 1 )
{
goto LABEL_710;
}
if ( sub_71008E6D90(0LL) & 1 )
{
LABEL_235:
v45 = "泳ぎ";
goto changeState;
}
goto LABEL_428;
}
if ( !(this->_._.actor.player->_._.field_C3C & 0x200000) )
{
sub_7100836EB0(this);
v159 = (PlayerBase *)this->_._.actor.player;
v160 = PlayerBase::getEquipmentTypeName(v159, 3u);
v159->_.equipmentTypeName._.vptr->assureTermination(&v159->_.equipmentTypeName._);
v159->_.equipmentTypeName._.vptr->assureTermination(&v159->_.equipmentTypeName._);
v161 = v159->_.equipmentTypeName._.cstr;
v160->vptr->assureTermination(v160);
v162 = v160->cstr;
if ( v161 == v162 )
goto LABEL_406;
v163 = v159->_.equipmentTypeName._.cstr;
for ( n = 1LL; ; n += 2LL )
{
v165 = (unsigned __int8)v163[n - 1];
if ( v165 != (unsigned __int8)v162[n - 1] )
break;
if ( v165 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_406;
if ( n >= 0x80001 )
break;
v166 = (unsigned __int8)v163[n];
if ( v166 != (unsigned __int8)v162[n] )
break;
if ( v166 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_406;
}
}
LABEL_486:
v186 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v186 + 0x30LL))() & 1) )
goto LABEL_494;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"待機";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "移動",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
LABEL_492:
if ( AI_AI_PlayerNormal::x_0(this) & 1 )
return;
LABEL_493:
if ( AI_AI_PlayerNormal::x_8(this, 0) & 1 )
return;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"注目待機";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "注目移動",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( this->_._.actor.player->_._.gap_D08 )
goto LABEL_493;
goto LABEL_492;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"梯子";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_530;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_530;
state.vptr = &sead::SafeString::vt;
state.cstr = "着地後攻撃";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_530;
v449.vptr = &sead::SafeString::vt;
v449.cstr = "ガードスリップ";
if ( AI_AIBase::compareState(&this->_, &v449) & 1 )
goto LABEL_530;
*(_QWORD *)a6 = &sead::SafeString::vt;
v448 = "ガード崩れ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)a6) & 1 )
goto LABEL_530;
v446.vptr = &sead::SafeString::vt;
v446.cstr = "持上げ";
if ( AI_AIBase::compareState(&this->_, &v446) & 1 )
goto LABEL_530;
v445.vptr = &sead::SafeString::vt;
v445.cstr = "小ダメージ";
if ( AI_AIBase::compareState(&this->_, &v445) & 1 )
goto LABEL_530;
v444.vptr = &sead::SafeString::vt;
v444.cstr = "中ダメージ";
if ( AI_AIBase::compareState(&this->_, &v444) & 1 )
goto LABEL_530;
v443.vptr = &sead::SafeString::vt;
v443.cstr = "ステップ攻撃";
if ( AI_AIBase::compareState(&this->_, &v443) & 1 )
goto LABEL_530;
v442.vptr = &sead::SafeString::vt;
v442.cstr = "馬上ジャンプ攻撃着地";
if ( AI_AIBase::compareState(&this->_, &v442) & 1 )
goto LABEL_530;
v441.vptr = &sead::SafeString::vt;
v441.cstr = "飛び込み着地";
if ( AI_AIBase::compareState(&this->_, &v441) & 1 )
goto LABEL_530;
v440.vptr = &sead::SafeString::vt;
v440.cstr = "素材をとる";
if ( AI_AIBase::compareState(&this->_, &v440) & 1 )
goto LABEL_530;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"凍り解除";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "大ダメージ起き上がり",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m199)() & 1 )
{
v210.player = (Player *)this->_._.actor;
goto LABEL_628;
}
goto LABEL_530;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ攻撃",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( !Player::isSurfingOnGround(this->_._.actor.player)
|| !(ASList::x(this->_._.actor.player->_._._.g.a.ASList, 2u, 0LL, 0, 0, (char *)sub_71011638DC, 0LL, 1) & 1) )
{
LABEL_671:
if ( AI_AI_PlayerNormal::x(this) & 1 )
return;
goto LABEL_494;
}
LABEL_530:
if ( AI_AI_PlayerNormal::x_8(this, 1) & 1 )
return;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"武器投げ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( Player::isSurfingOnGround(this->_._.actor.player) )
{
if ( !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m199)() & 1) )
goto LABEL_530;
LABEL_681:
if ( *(float *)&this->_._.actor.player->_.field_209C > 0.05 )
goto LABEL_630;
goto LABEL_494;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "サイドステップ着地",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| (state.vptr = &sead::SafeString::vt, state.cstr = "バク転着地",
AI_AIBase::compareState(&this->_, &state) & 1) )
{
if ( sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 2u)
|| (v238 = this->_._.actor.player, v238[0x17F0]) )
{
if ( AI_AI_PlayerNormal::x_6c(this, 1LL) & 1 || AI_AI_PlayerNormal::x_6d(this, 1LL) & 1 )
return;
v238 = this->_._.actor.player;
}
if ( v238[0xC45] & 1 && !v238[0xD11] || !(AI_AI_PlayerNormal::x_1(this) & 1) )
goto LABEL_530;
return;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地ダメージ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100892098)((ActorPointer)this->_._.actor.player) & 1
&& sub_7100834EE4((__int64)this) & 1 )
{
return;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"段差登り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_530;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"坂滑り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_6d(this, 0LL) & 1 )
return;
v246.player = (Player *)this->_._.actor;
if ( v246.player->_.field_1850 <= 0.00000011921
&& *(float *)&v246.player->_.field_209C > 0.05
&& LODWORD(v246.player->_.field_1CA4) != 5
&& v246.player->_._._.g.a.velocity.y > 0.0 )
{
if ( !(sub_71008BD3BC(v246.player->_._.controllerMaybe, 0xDLL) & 1)
|| ((__int64 (__fastcall *)(ActorPointer))v246.player->vptr->_.PlayerBase__m202)(v246) & 1
|| v246.player->_._.field_C3C & 0x2000
|| ((__int64 (__fastcall *)(ActorPointer))v246.player->vptr->_.PlayerBase__m178)(v246) & 1 )
{
v247.player = (Player *)this->_._.actor;
if ( *(float *)&v247.player->_.field_209C > 0.05 )
{
Player::x_5(this->_._.actor.player, (int *)&state);
*(_DWORD *)&acc.fromOtherThread = *(_DWORD *)&v247.player->_.field_1C58[0x1C] - LODWORD(state.vptr);
LODWORD(a2.baseProcLinkData) = 0x20000000;
if ( (unsigned __int8)((__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD))sub_7100869814)(
(ActorPointer)v247.player,
&acc,
&a2) == 1 )
Player::switchToAnimSequenceMaybe(this->_._.actor.player, "Brake", 1, -1.0);
}
}
goto changeStateToMove;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみ待機";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_7(this) & 1 )
return;
v250.player = (Player *)this->_._.actor;
if ( v250.player->_._.isNoStandSquat & 0x200LL )
{
if ( sub_71008397E4(this) & 1 )
return;
LABEL_799:
if ( sub_7100839AC8(this) & 1 )
return;
goto LABEL_681;
}
if ( *(float *)&v250.player->_.field_209C <= 0.05 )
{
if ( AI_AI_PlayerNormal::x_6d(this, 0LL) & 1 )
return;
v250.player = (Player *)this->_._.actor;
}
if ( !(v250.player->_._.slowTimeFlagsMaybe & 0x80000)
|| ((__int64 (__fastcall *)(_QWORD))sub_71008840D4)((ActorPointer)v250.player) & 1 )
{
if ( AI_AI_PlayerNormal::x_6f_a(this) & 1 || AI_AI_PlayerNormal::x_6g(this) & 1 )
return;
goto LABEL_799;
}
LABEL_844:
v45 = "待機";
this->_._.actor.player->_._.slowTimeFlagsMaybe &= 0xFFF7FFFF;
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみ移動";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_7(this) & 1 )
return;
v263.player = (Player *)this->_._.actor;
if ( v263.player->_._.isNoStandSquat & 0x200LL )
{
if ( sub_71008397E4(this) & 1 )
return;
}
else
{
v264 = sub_71008BD430((__int64)v263.player->_._.controllerMaybe, 0xAu);
v265.player = (Player *)this->_._.actor;
if ( v264 && *(float *)&v265.player->_.field_209C > 0.05 )
{
v45 = "しゃがみステップ";
goto changeState;
}
if ( v265.player->_._.slowTimeFlagsMaybe & 0x80000
&& !(((__int64 (__fastcall *)(_QWORD))sub_71008840D4)((ActorPointer)v265.player) & 1) )
{
goto LABEL_844;
}
if ( AI_AI_PlayerNormal::x_6f_a(this) & 1 || AI_AI_PlayerNormal::x_6g(this) & 1 )
return;
}
if ( sub_7100839AC8(this) & 1 )
return;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみダメージ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( *(float *)&this->_._.actor.player->_.field_209C > 0.05 )
{
v185 = "しゃがみ移動";
goto LABEL_477;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"カメラ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_7(this) & 1 )
return;
v269 = (PlayerBase *)this->_._.actor.player;
v462 = PlayerBase::getEquipmentTypeName(v269, 1u);
v269->_.equipmentTypeName._.vptr->assureTermination(&v269->_.equipmentTypeName._);
v269->_.equipmentTypeName._.vptr->assureTermination(&v269->_.equipmentTypeName._);
v270 = v269->_.equipmentTypeName._.cstr;
v271 = v462;
((void (*)(void))v462->vptr->assureTermination)();
v272 = v271->cstr;
if ( v270 == v272 )
{
LABEL_811:
if ( AI_AI_PlayerNormal::x_10(this) & 1 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"カメラ";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
return;
goto LABEL_884;
}
}
else
{
v273 = v269->_.equipmentTypeName._.cstr;
for ( ii = 1LL; ; ii += 2LL )
{
v275 = (unsigned __int8)v273[ii - 1];
if ( v275 != (unsigned __int8)v272[ii - 1] )
break;
if ( v275 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_811;
if ( ii >= 0x80001 )
break;
v276 = (unsigned __int8)v273[ii];
if ( v276 != (unsigned __int8)v272[ii] )
break;
if ( v276 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_811;
}
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"弓主観";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_7(this) & 1 || AI_AI_PlayerNormal::x_6(this) & 1 )
return;
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100848F5C)((ActorPointer)this->_._.actor.player) & 1
|| !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m179)() & 1) )
{
goto LABEL_884;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"盾サーフィン";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
sub_7100F5F598(v3, &acc);
if ( *((float *)&acc.fromOtherThread + 1) < 0.0 )
goto LABEL_671;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"水中へ飛び込みジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
sub_7100F5F598(v3, &acc);
if ( *((float *)&acc.fromOtherThread + 1) < 1.75 )
goto LABEL_671;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| (state.vptr = &sead::SafeString::vt, state.cstr = "壁ジャンプ",
AI_AIBase::compareState(&this->_, &state) & 1) )
{
if ( AI_AI_PlayerNormal::x_0(this) & 1 )
return;
if ( sub_710083AF00(this) & 1 )
return;
sub_7100F5F598(v3, &acc);
if ( *((float *)&acc.fromOtherThread + 1) < 0.0 && (sub_710083AFF4(this) & 1 || AI_AI_PlayerNormal::x(this) & 1) )
return;
v297 = (PlayerBase *)this->_._.actor.player;
v462 = PlayerBase::getEquipmentTypeName(v297, 3u);
v297->_.equipmentTypeName._.vptr->assureTermination(&v297->_.equipmentTypeName._);
v297->_.equipmentTypeName._.vptr->assureTermination(&v297->_.equipmentTypeName._);
v298 = v297->_.equipmentTypeName._.cstr;
v299 = v462;
((void (*)(void))v462->vptr->assureTermination)();
v300 = v299->cstr;
if ( v298 == v300 )
{
LABEL_904:
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"壁ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_118;
}
else
{
v301 = v297->_.equipmentTypeName._.cstr;
for ( jj = 1LL; ; jj += 2LL )
{
v303 = (unsigned __int8)v301[jj - 1];
if ( v303 != (unsigned __int8)v300[jj - 1] )
break;
if ( v303 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_904;
if ( jj >= 0x80001 )
break;
v304 = (unsigned __int8)v301[jj];
if ( v304 != (unsigned __int8)v300[jj] )
break;
if ( v304 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_904;
}
}
if ( Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_494;
if ( !(PlayerBase::x_0((PlayerBase *)this->_._.actor.player) & 1) )
goto LABEL_494;
v305 = this->_._.actor.player;
if ( !(Player::x_51(this->_._.actor.player) & 1) && !(Player::x_50(v305) & 1) )
goto LABEL_494;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"馬上ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v45 = "馬上ジャンプ攻撃";
goto changeState;
}
goto LABEL_924;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"落下";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "落下中の弓",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| (state.vptr = &sead::SafeString::vt,
state.cstr = "2段ジャンプ",
AI_AIBase::compareState(&this->_, &state) & 1) )
{
if ( AI_AI_PlayerNormal::x_0(this) & 1 )
return;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"2段ジャンプ";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1)
|| (v306.player = (Player *)this->_._.actor,
Player::x_5(this->_._.actor.player, (int *)&v449),
LODWORD(a2.baseProcLinkData) = *(_DWORD *)&v306.player->_.field_1C58[0x1C] - LODWORD(v449.vptr),
LODWORD(state.vptr) = 0x20000000,
!(unsigned __int8)((__int64 (__fastcall *)(_QWORD, _QWORD, _QWORD))sub_7100869814)(
(ActorPointer)v306.player,
&a2,
&state)) )
{
if ( sub_710083AF00(this) & 1 )
return;
}
if ( sub_710083AFF4(this) & 1 || AI_AI_PlayerNormal::x(this) & 1 )
return;
if ( Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_494;
if ( !(PlayerBase::x_0((PlayerBase *)this->_._.actor.player) & 1) )
goto LABEL_494;
v307 = this->_._.actor.player;
if ( !(Player::x_51(this->_._.actor.player) & 1) && !(Player::x_50(v307) & 1) )
goto LABEL_494;
LABEL_924:
v308.player = (Player *)this->_._.actor;
if ( !(v308.player->_._.field_C3C & 0x200000) && *((float *)&v308.player->_.field_1E98 + 1) <= 0.00000011921 )
goto LABEL_829;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "バク転",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
{
if ( !LOBYTE(this->_._.actor.player->_._.field_D1C)
&& (sub_710083AF00(this) & 1 || AI_AI_PlayerNormal::x_0(this) & 1) )
{
return;
}
sub_7100F5F598(v3, &acc);
if ( *((float *)&acc.fromOtherThread + 1) < 0.0 )
{
if ( AI_AI_PlayerNormal::x(this) & 1 )
return;
}
if ( PlayerBase::x_0((PlayerBase *)this->_._.actor.player) & 1 )
{
v311 = this->_._.actor.player;
if ( v311->_.field_1D70.x <= 0.00000011921
&& (Player::x_51(this->_._.actor.player) & 1 || Player::x_50(v311) & 1) )
{
v312.player = (Player *)this->_._.actor;
if ( !LOBYTE(v312.player->_._.field_D1C)
&& !(v312.player->_._.field_C3C & 0x200000)
&& *((float *)&v312.player->_.field_1E98 + 1) <= 0.00000011921 )
{
goto LABEL_829;
}
}
}
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"壁駆け上がり";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
((void (__fastcall *)(_QWORD))sub_710087CFD8)((ActorPointer)this->_._.actor.player);
v313.player = (Player *)this->_._.actor;
if ( LOBYTE(v313.player->_.field_1CBC) == 9 )
{
v45 = "段差登り";
goto changeState;
}
*(float *)&acc.actor = v313.player->_._.actorPosCopy.z;
*(_QWORD *)&acc.fromOtherThread = *(_QWORD *)&v313.player->_._.actorPosCopy.x;
a2.idMaybe = LODWORD(v313.player->_._.actorPosCopy.z);
a2.baseProcLinkData = *(BaseProcLinkData **)&v313.player->_._.actorPosCopy.x;
Player::x_5(v313.player, (int *)&state);
sub_71011EEEE0((float *)&a2, &state, 0.35 * 3.0);
if ( !(sub_710087F360((__int64)this->_._.actor.player, (Vec3 *)&acc, (Vec3 *)&a2, 0LL, 0LL) & 1) )
{
Player::x_5(this->_._.actor.player, (int *)&state);
sub_71011EEEE0((float *)&a2, &state, -0.35);
*(_DWORD *)&acc.fromOtherThread = a2.baseProcLinkData;
LODWORD(acc.actor) = a2.idMaybe;
*((float *)&acc.fromOtherThread + 1) = *((float *)&a2.baseProcLinkData + 1) + 1.8;
v339 = (__int64)this->_._.actor.player;
HIDWORD(a2.baseProcLinkData) = *(_DWORD *)(v339 + 0x1814);
if ( sub_710087F360(v339, (Vec3 *)&acc, (Vec3 *)&a2, (Vec3 *)&state, 0LL) & 1 )
{
v340.player = (Player *)this->_._.actor;
if ( (float)(*(float *)&v340.player->_.field_17F0[0x24] + 0.49) < *((float *)&state.vptr + 1)
&& v340.player->_._.actorPosCopy.y > *((float *)&state.vptr + 1) )
{
sub_7100F5F598(v3, &v449);
HIDWORD(v449.vptr) = 0;
sub_7100F5F6FC(v3, (float *)&v449);
goto changeStateToMove;
}
}
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"パラショール滑空";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
sub_7100836EB0(this);
v328 = (PlayerBase *)this->_._.actor.player;
v462 = PlayerBase::getEquipmentTypeName(v328, 3u);
v328->_.equipmentTypeName._.vptr->assureTermination(&v328->_.equipmentTypeName._);
v328->_.equipmentTypeName._.vptr->assureTermination(&v328->_.equipmentTypeName._);
v329 = v328->_.equipmentTypeName._.cstr;
v330 = v462;
((void (*)(void))v462->vptr->assureTermination)();
v331 = v330->cstr;
if ( v329 != v331 )
{
v332 = v328->_.equipmentTypeName._.cstr;
for ( kk = 1LL; ; kk += 2LL )
{
v334 = (unsigned __int8)v332[kk - 1];
if ( v334 != (unsigned __int8)v331[kk - 1] )
break;
if ( v334 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_406;
if ( kk >= 0x80001 )
break;
v335 = (unsigned __int8)v332[kk];
if ( v335 != (unsigned __int8)v331[kk] )
break;
if ( v335 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_406;
}
if ( sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu) || *(_BYTE *)(v3 + 0x116) & 0x14 )
{
if ( this->_._.actor.player->_._.isShieldRide & 0x80 )
{
v45 = "盾サーフィン";
goto changeState;
}
goto LABEL_118;
}
if ( PlayerBase::x_0((PlayerBase *)this->_._.actor.player) & 1 )
{
if ( Player::x_51(this->_._.actor.player) & 1 )
{
v377.player = (Player *)this->_._.actor;
if ( !(v377.player->_._.field_C3C & 0x200000) && *((float *)&v377.player->_.field_1E98 + 1) <= 0.00000011921 )
goto LABEL_829;
}
}
if ( AI_AI_PlayerNormal::x_0(this) & 1 || sub_710083AF00(this) & 1 )
return;
goto LABEL_494;
}
LABEL_406:
v45 = "落下中の弓";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"コッコ滑空";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v371 = sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu);
v372 = this->_._.actor.player;
if ( v371 )
{
((void (*)(void))v372->vptr->_.nullsub_2562)();
goto LABEL_118;
}
if ( Player::x_51(v372) & 1 )
{
v376.player = (Player *)this->_._.actor;
if ( !(v376.player->_._.field_C3C & 0x200000) && *((float *)&v376.player->_.field_1E98 + 1) <= 0.00000011921 )
{
AI_AI_PlayerNormal::changeState(this, "ジャンプ斬り", 0LL);
((void (*)(void))this->_._.actor.player->vptr->_.nullsub_2562)();
return;
}
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"スーパージャンプ溜め";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
v375 = sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu);
v188.player = (Player *)this->_._.actor;
if ( v375 )
goto LABEL_514;
if ( !(sub_71008BD3BC(v188.player->_._.controllerMaybe, 2LL) & 1) )
{
v188.player = (Player *)this->_._.actor;
if ( BYTE2(v188.player->_.field_1CBC) )
{
v45 = "スーパージャンプ";
goto changeState;
}
goto LABEL_514;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"泳ぎ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
((void (__fastcall *)(_QWORD))sub_710086BC30)((ActorPointer)this->_._.actor.player);
if ( !sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0) )
goto LABEL_494;
ui::sub_7100A95F5C((unsigned int)this->_._.actor.player->_.doCommandIdx);
v380.player = (Player *)this->_._.actor;
v381 = v380.player->_.doCommandIdx;
if ( v381 != 0x3C )
{
if ( v381 == 0x3B )
{
Attention::__auto1(Attention::sInstance, 0LL);
goto LABEL_1118;
}
if ( v381 == 0x12 )
{
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100881078)((ActorPointer)v380.player) & 1 )
*(_DWORD *)&this->_._.actor.player->_._.isBgCrossFoot |= 1u;
Attention::__auto1(Attention::sInstance, 0LL);
AI_AIBase::x_0(&this->_._.actor.player->_._._.g.a.actorAi->_, 5LL);
goto LABEL_1068;
}
goto LABEL_494;
}
Attention::__auto1(Attention::sInstance, 0LL);
LABEL_1116:
v45 = "滝登り";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ゾーラに掴まる";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v387 = (PlayerBase *)this->_._.actor.player;
v462 = PlayerBase::getEquipmentTypeName(v387, 0);
v387->_.equipmentTypeName._.vptr->assureTermination(&v387->_.equipmentTypeName._);
v387->_.equipmentTypeName._.vptr->assureTermination(&v387->_.equipmentTypeName._);
v388 = v387->_.equipmentTypeName._.cstr;
v389 = v387;
v390 = v462;
((void (*)(void))v462->vptr->assureTermination)();
v391 = v390->cstr;
if ( v388 == v391 )
{
LABEL_1092:
if ( !(v389->_.slowTimeFlagsMaybe & 8)
&& sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu) )
{
goto LABEL_118;
}
}
else
{
v392 = v389->_.equipmentTypeName._.cstr;
for ( ll = 1LL; ; ll += 2LL )
{
v394 = (unsigned __int8)v392[ll - 1];
if ( v394 != (unsigned __int8)v391[ll - 1] )
break;
if ( v394 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1092;
if ( ll >= 0x80001 )
break;
v395 = (unsigned __int8)v392[ll];
if ( v395 != (unsigned __int8)v391[ll] )
break;
if ( v395 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1092;
}
}
v396 = (PlayerBase *)this->_._.actor.player;
v462 = PlayerBase::getEquipmentTypeName(v396, 0);
v396->_.field_D60.vptr->assureTermination(&v396->_.field_D60);
v396->_.field_D60.vptr->assureTermination(&v396->_.field_D60);
v397 = v396->_.field_D60.cstr;
v398 = v462;
((void (*)(void))v462->vptr->assureTermination)();
v399 = v398->cstr;
if ( v397 == v399 )
{
LABEL_1102:
if ( AI_AI_PlayerNormal::handleMagnesisRuneStep2(this) & 1 || AI_AI_PlayerNormal::handleRuneStep2(this) )
return;
}
else
{
v400 = v396->_.field_D60.cstr;
for ( mm = 1LL; ; mm += 2LL )
{
v402 = (unsigned __int8)v400[mm - 1];
if ( v402 != (unsigned __int8)v399[mm - 1] )
break;
if ( v402 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1102;
if ( mm >= 0x80001 )
break;
v403 = (unsigned __int8)v400[mm];
if ( v403 != (unsigned __int8)v399[mm] )
break;
if ( v403 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1102;
}
}
if ( !HIBYTE(this->_._.actor.player->_.field_2078) )
goto LABEL_494;
if ( (unsigned int)sub_710086B194() != 0x1800023 )
goto LABEL_494;
this->_._.actor.player->_.doCommandIdx = 0x3C;
if ( !sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0) )
goto LABEL_494;
ui::sub_7100A95F5C((unsigned int)this->_._.actor.player->_.doCommandIdx);
v404 = ActorBase::x_0((ActorBase *)this->_._.actor.player);
v405 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v406 = v404;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( v406 && !v406->vtable->checkDerivedRuntimeTypeInfo((Actor *)v406, &Actor::rttiInfo) )
v406 = 0LL;
if ( !ActorBase::x_0((ActorBase *)this->_._.actor.player) )
goto LABEL_494;
v407 = (__int64)v406[4].vtable;
*(_DWORD *)&acc.fromOtherThread = 0x800006A;
AI_AIOrActionBase::sendMessageMaybe(&this->_._, v407, (__int64)&acc, 0LL);
goto LABEL_1116;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"騎乗";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( sub_710084CBE4((__int64)this->_._.actor.player) & 1
&& sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 2u) )
{
Player::x_8(this->_._.actor.player);
v415 = 0LL;
do
{
v416 = &acc.fromOtherThread + v415;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v415));
v415 += 0x50LL;
*((_QWORD *)v416 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v416 + 6) = 0LL;
*((_QWORD *)v416 + 7) = 0LL;
}
while ( v415 != 0xA00 );
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v461 = 0;
*(_QWORD *)&a2.idMaybe = "EnableSwordInput";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 0, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "バク転", (__int64)&acc);
v417 = 0xA00LL;
do
{
v418 = &acc.fromOtherThread + v417;
*((_QWORD *)v418 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v418 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v418 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v417 - 0x48));
v417 -= 0x50LL;
}
while ( v417 );
return;
}
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m292)() & 1
&& !(sub_71008BD3BC(this->_._.actor.player->_._.controllerMaybe, 2LL) & 1)
&& !(((__int64 (__fastcall *)(_QWORD))sub_71008744D4)((ActorPointer)this->_._.actor.player) & 1) )
{
v420 = 0LL;
do
{
v421 = &acc.fromOtherThread + v420;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v420));
v420 += 0x50LL;
*((_QWORD *)v421 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v421 + 6) = 0LL;
*((_QWORD *)v421 + 7) = 0LL;
}
while ( v420 != 0xA00 );
v461 = 0;
v422 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m288)();
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "JumpGear";
sub_7100D17C0C((__int64)&acc, v422, (__int64)&a2, 0xFFFFFFFF);
v423 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
if ( BaseProcLink::x_1((BaseProcLink *)(v423 + 0x18), *(ActorBase **)(v423 + 8)) )
{
v424 = 0LL;
}
else
{
v426 = BaseProcLink::acquireActorEx((BaseProcLink *)(v423 + 0x18), 0LL, *(ActorBase **)(v423 + 8));
v427 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v424 = (HorseBase *)v426;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( v424 && !v424->_.vptr->b.checkDerivedRuntimeTypeInfo(&v424->_, &Actor::rttiInfo) )
v424 = 0LL;
}
v428 = __ldar((unsigned __int8 *)&unk_71025AEEC0);
if ( !((unsigned __int64)&unk_71025AEEC0 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AEEC0) )
{
HorseBase::rttiInfo = (__int64)&off_71023545A8;
_cxa_guard_release_0(&unk_71025AEEC0);
}
if ( v424
&& v424->_.vptr->b.checkDerivedRuntimeTypeInfo(&v424->_, &HorseBase::rttiInfo)
&& (unsigned int)HorseBase::x(v424) == 6 )
{
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "IsLargeHorse";
v429 = 1;
}
else
{
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v429 = 0;
*(_QWORD *)&a2.idMaybe = "IsLargeHorse";
}
sub_7100D17D84((evt::ActionContext::Entry *)&acc, v429, (__int64)&a2, 0xFFFFFFFF);
HIBYTE(this->field_1A8) = 0;
v431 = __ldar((unsigned __int8 *)&unk_71025AF460);
if ( !((unsigned __int64)&unk_71025AF460 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AF460) )
{
Motorcycle::rttiInfo = (__int64)&off_7102354590;
_cxa_guard_release_0(&unk_71025AF460);
}
if ( v424
&& v424->_.vptr->b.checkDerivedRuntimeTypeInfo(&v424->_, &Motorcycle::rttiInfo)
&& sub_71008BD3BC(this->_._.actor.player->_._.controllerMaybe, 0xDLL) & 1
&& sub_71008BD3BC(this->_._.actor.player->_._.controllerMaybe, 5LL) & 1 )
{
HIBYTE(this->field_1A8) = 1;
}
AI_AI_PlayerNormal::changeState(this, "馬上ジャンプ", (__int64)&acc);
v432 = 0xA00LL;
do
{
v433 = &acc.fromOtherThread + v432;
*((_QWORD *)v433 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v433 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v433 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v432 - 0x48));
v432 -= 0x50LL;
}
while ( v432 );
return;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"操作";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu) )
goto LABEL_884;
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"滑落";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !(sub_7100FBB4B4(this->_._.actor.player->_._._.g.a.info578) & 1) )
goto LABEL_671;
if ( *(float *)&this->_._.actor.player->_.field_209C > 0.05 )
{
sub_7100F626CC(v3, (__int64)&acc);
v425.player = (Player *)this->_._.actor;
*(ActorAccessor *)&v425.player->_.field_1B18_x = acc;
*(_OWORD *)&v425.player->_.field_1B28_y = *(_OWORD *)&v452;
*(_OWORD *)&v425.player->_.field_1B38_z = *(_OWORD *)&v455;
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100892098)((ActorPointer)this->_._.actor.player) & 1 )
goto LABEL_790;
goto LABEL_64;
}
goto LABEL_494;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_681;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"木登り";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
LABEL_494:
v187 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v187 + 0x28LL))() & 1)
&& !((*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v187 + 0x20LL))(v187) & 1) )
{
goto LABEL_1122;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"梯子";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_1205;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "攻撃";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_1205;
state.vptr = &sead::SafeString::vt;
state.cstr = "着地後攻撃";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_1205;
v449.vptr = &sead::SafeString::vt;
v449.cstr = "ガードスリップ";
if ( AI_AIBase::compareState(&this->_, &v449) & 1 )
goto LABEL_1205;
*(_QWORD *)a6 = &sead::SafeString::vt;
v448 = "ガード崩れ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)a6) & 1 )
goto LABEL_1205;
v446.vptr = &sead::SafeString::vt;
v446.cstr = "持上げ";
if ( AI_AIBase::compareState(&this->_, &v446) & 1 )
goto LABEL_1205;
v445.vptr = &sead::SafeString::vt;
v445.cstr = "小ダメージ";
if ( AI_AIBase::compareState(&this->_, &v445) & 1 )
goto LABEL_1205;
v444.vptr = &sead::SafeString::vt;
v444.cstr = "中ダメージ";
if ( AI_AIBase::compareState(&this->_, &v444) & 1 )
goto LABEL_1205;
v443.vptr = &sead::SafeString::vt;
v443.cstr = "坂滑り着地";
if ( AI_AIBase::compareState(&this->_, &v443) & 1 )
goto LABEL_1205;
v442.vptr = &sead::SafeString::vt;
v442.cstr = "段差登り";
if ( AI_AIBase::compareState(&this->_, &v442) & 1 )
goto LABEL_1205;
v441.vptr = &sead::SafeString::vt;
v441.cstr = "ステップ攻撃";
if ( AI_AIBase::compareState(&this->_, &v441) & 1 )
goto LABEL_1205;
v440.vptr = &sead::SafeString::vt;
v440.cstr = "飛び込み着地";
if ( AI_AIBase::compareState(&this->_, &v440) & 1 )
goto LABEL_1205;
v439.vptr = &sead::SafeString::vt;
v439.cstr = "素材をとる";
if ( AI_AIBase::compareState(&this->_, &v439) & 1 )
goto LABEL_1205;
v438.vptr = &sead::SafeString::vt;
v438.cstr = "怯む";
if ( AI_AIBase::compareState(&this->_, &v438) & 1
|| (v437.vptr = &sead::SafeString::vt, v437.cstr = "拾う", AI_AIBase::compareState(&this->_, &v437) & 1)
|| (v436.vptr = &sead::SafeString::vt,
v436.cstr = "ドアを押して開ける",
AI_AIBase::compareState(&this->_, &v436) & 1)
|| (v435.vptr = &sead::SafeString::vt,
v435.cstr = "ドアを引いて開ける",
AI_AIBase::compareState(&this->_, &v435) & 1) )
{
LABEL_1205:
if ( AI_AI_PlayerNormal::x_8(this, 0) & 1 )
return;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ斬り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ攻撃",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
if ( AI_AI_PlayerNormal::x_8(this, 0) & 1 )
return;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"泳ぎ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( Player::isSurfingOnGround(this->_._.actor.player) )
{
LABEL_513:
v188.player = (Player *)this->_._.actor;
LABEL_514:
v189 = *(float *)&v188.player->_.field_209C;
goto LABEL_515;
}
LABEL_118:
v45 = "落下";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地ダメージ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( LODWORD(this->_._.actor.player->_.field_1CA4) == 8 )
{
LABEL_519:
v45 = "木登り";
goto changeState;
}
goto LABEL_546;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"武器投げ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
goto LABEL_545;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"凍り解除";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "大ダメージ起き上がり",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| (state.vptr = &sead::SafeString::vt, state.cstr = "痺れる", AI_AIBase::compareState(&this->_, &state) & 1) )
{
v190 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v190 + 0x20LL))() & 1 )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"痺れる";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_383;
}
v191 = ASList::x_1(this->_._.actor.player->_._._.g.a.ASList, 0LL, 0);
((void (*)(void))v191->vptr->assureTermination)();
v191->vptr->assureTermination(v191);
v192 = v191->cstr;
if ( v192 != "DamageL" )
{
v193 = 0LL;
do
{
v194 = (unsigned __int8)v192[v193];
if ( v194 != (unsigned __int8)aDamagel[v193] )
break;
if ( v194 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_1121;
++v193;
}
while ( v193 < 0x80001 );
LABEL_545:
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m199)() & 1 )
goto LABEL_113;
goto LABEL_546;
}
LABEL_1121:
if ( sub_7100834EE4((__int64)this) & 1 )
return;
goto LABEL_1122;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 2u) )
{
v195 = this->_._.actor.player;
if ( !v195[0x17F0] )
goto LABEL_554;
}
if ( AI_AI_PlayerNormal::x_6c(this, 1LL) & 1 || AI_AI_PlayerNormal::x_6d(this, 1LL) & 1 )
return;
LABEL_553:
v195 = this->_._.actor.player;
LABEL_554:
if ( (!(v195[0xC45] & 1) || v195[0xD11]) && AI_AI_PlayerNormal::x_1(this) & 1 )
return;
LABEL_546:
if ( AI_AI_PlayerNormal::x_8(this, 0) & 1 )
return;
goto LABEL_1122;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"壁登り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v196 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
v197 = (*(__int64 (**)(void))(*(_QWORD *)v196 + 0x20LL))();
v198 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.getAttachedTargetActor2)();
v199 = *(_QWORD *)(v198 + 0xB0);
if ( !(v197 & 1) )
{
if ( v199 )
{
v200 = *(_DWORD *)(v199 + 0x48);
if ( v200 & 0x10000 )
goto LABEL_519;
if ( v200 & 0x8000 )
{
v45 = "待機";
*(_DWORD *)&this->_._.actor.player->_._.disableFairies |= 0x80u;
goto changeState;
}
}
v201.player = (Player *)this->_._.actor;
v189 = *(float *)&v201.player->_.field_209C;
if ( *(_DWORD *)(v3 + 0x224) != HIDWORD(v201.player->_.field_1CD4) )
{
LABEL_515:
if ( v189 <= 0.05 )
goto LABEL_884;
changeStateToMove:
v45 = "移動";
goto changeState;
}
goto LABEL_629;
}
if ( v199 )
{
if ( sub_7100EB166C(*(_QWORD *)(v198 + 0xB0)) & 1 )
{
if ( *(float *)(v199 + 0x170) > -135.0 )
{
v45 = "壁ジャンプ";
goto changeState;
}
goto LABEL_118;
}
if ( *(_BYTE *)(v199 + 0x174) )
{
sub_7100F5F598(v3, &acc);
v206.player = (Player *)this->_._.actor;
v207 = sqrtf(
(float)(*(float *)&acc.fromOtherThread * *(float *)&acc.fromOtherThread)
+ (float)(*(float *)&acc.actor * *(float *)&acc.actor))
/ 30.0;
v206.player->_.field_20BC.x = v207;
v206.player->_.field_20BC.y = v207;
if ( this->_._.actor.player->_.field_20BC.x > 0.0 )
{
v208 = sead::MathCalcCommon<float>::atan2Idx(*(float *)&acc.fromOtherThread, *(float *)&acc.actor);
v45 = "落下";
*(_DWORD *)&this->_._.actor.player->_.field_1C58[0x10] = v208;
goto changeState;
}
goto LABEL_118;
}
}
v209.player = (Player *)this->_._.actor;
if ( *(_DWORD *)(v3 + 0x224) != HIDWORD(v209.player->_.field_1CD4) )
goto LABEL_603;
((void (__fastcall *)(_QWORD))sub_71008840E0)((ActorPointer)v209.player);
v210.player = (Player *)this->_._.actor;
if ( !(v210.player->_._.isNoStandSquat & 0x200LL) )
{
sub_7100F5F270(v3, LODWORD(v210.player->_.field_1CD4));
v209.player = (Player *)this->_._.actor;
LABEL_603:
v189 = *(float *)&v209.player->_.field_209C;
goto LABEL_515;
}
LABEL_628:
v189 = *(float *)&v210.player->_.field_209C;
LABEL_629:
if ( v189 <= 0.05 )
goto LABEL_113;
LABEL_630:
v45 = "しゃがみ移動";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"装備解除";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v45 = (char *)this->field_60;
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"坂滑り";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v45 = "坂滑り着地";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"しゃがみ移動";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_113;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "しゃがみステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_113;
state.vptr = &sead::SafeString::vt;
state.cstr = "しゃがみダメージ";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_113;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"2段ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_595;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "落下";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_595;
state.vptr = &sead::SafeString::vt;
state.cstr = "パラショール滑空";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_595;
v449.vptr = &sead::SafeString::vt;
v449.cstr = "コッコ滑空";
if ( AI_AIBase::compareState(&this->_, &v449) & 1 )
goto LABEL_595;
*(_QWORD *)a6 = &sead::SafeString::vt;
v448 = "水中へ飛び込みジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)a6) & 1 )
goto LABEL_595;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "馬上ジャンプ",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1)
|| (state.vptr = &sead::SafeString::vt,
state.cstr = "壁ジャンプ",
AI_AIBase::compareState(&this->_, &state) & 1) )
{
if ( Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_596;
if ( !(sub_7100882178((__int64)this->_._.actor.player) & 1) )
goto LABEL_118;
LABEL_1122:
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"騎乗";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| Attention::__auto10(Attention::sInstance, 5LL) & 1 )
{
return;
}
BaseProcLink::ctor(&a2);
if ( Attention::__auto3(Attention::sInstance, 5LL, 0LL, &a2) & 1 )
{
if ( ((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m200)() & 1 )
{
if ( !(((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1) )
{
v408.player = (Player *)this->_._.actor;
if ( !(*(_DWORD *)&v408.player->_._.field_CE4 & 0x80000000)
&& !(v408.player->_._.field_CEB & 2)
&& !(((__int64 (*)(void))v408.player->vptr->_.PlayerBase__m186)() & 1)
&& !(((__int64 (*)(void))this->_._.actor.player->vptr->_.PlayerBase__m187)() & 1) )
{
v409.player = (Player *)this->_._.actor;
if ( !(v409.player->_._.field_CEF & 4)
&& !(v409.player->_._.field_C3C & 2)
&& Player::RideInfo::assignRideActor(&v409.player->_.rideInfo, &a2) & 1 )
{
v410.player = (Player *)this->_._.actor;
v410.player->_.field_20BC.x = 0.0;
v410.player->_.field_20BC.y = 0.0;
PlayerInfo::__auto2(PlayerInfo::sInstance, &a2);
v411 = 0LL;
do
{
v412 = &acc.fromOtherThread + v411;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v411));
v411 += 0x50LL;
*((_QWORD *)v412 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v412 + 6) = 0LL;
*((_QWORD *)v412 + 7) = 0LL;
}
while ( v411 != 0xA00 );
state.vptr = &sead::SafeString::vt;
v461 = 0;
state.cstr = "HasToPlayRidingOnAS";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 1, (__int64)&state, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "騎乗", (__int64)&acc);
v413 = 0xA00LL;
do
{
v414 = &acc.fromOtherThread + v413;
*((_QWORD *)v414 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v414 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v414 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v413 - 0x48));
v413 -= 0x50LL;
}
while ( v413 );
}
}
}
}
}
BaseProcLink::reset(&a2);
return;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"落下ガードジャスト";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "壁滑り",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
LABEL_595:
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
goto LABEL_596;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"落下中の弓";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v240.player = (Player *)this->_._.actor;
v241 = PlayerBase::getEquipmentTypeName((PlayerBase *)v240.player, 0);
v240.player->_._.equipmentTypeName._.vptr->assureTermination(&v240.player->_._.equipmentTypeName._);
v240.player->_._.equipmentTypeName._.vptr->assureTermination(&v240.player->_._.equipmentTypeName._);
v242 = v240.player->_._.equipmentTypeName._.cstr;
v241->vptr->assureTermination(v241);
v243 = v241->cstr;
if ( v242 != v243 )
{
v244 = v240.player->_._.equipmentTypeName._.cstr;
for ( nn = 1LL; ; nn += 2LL )
{
v248 = (unsigned __int8)v244[nn - 1];
if ( v248 != (unsigned __int8)v243[nn - 1] )
break;
if ( v248 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_743;
if ( nn >= 0x80001 )
break;
v249 = (unsigned __int8)v244[nn];
if ( v249 != (unsigned __int8)v243[nn] )
break;
if ( v249 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_743;
}
goto LABEL_596;
}
LABEL_743:
if ( v240.player->_._.slowTimeFlagsMaybe & 8 )
{
LABEL_596:
sub_710083B0BC((__int64)this, 0);
return;
}
goto LABEL_595;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v251 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v251 + 0x20LL))() & 1 )
goto LABEL_118;
v252.player = (Player *)this->_._.actor;
if ( !(v252.player->_._.field_C3C & 0x1000000) )
goto LABEL_761;
if ( !(((__int64 (__fastcall *)(_QWORD))sub_7100892098)((ActorPointer)this->_._.actor.player) & 1) )
{
v252.player = (Player *)this->_._.actor;
LABEL_761:
v253 = PlayerBase::getEquipmentTypeName((PlayerBase *)v252.player, 1u);
v252.player->_._.equipmentTypeName._.vptr->assureTermination(&v252.player->_._.equipmentTypeName._);
v252.player->_._.equipmentTypeName._.vptr->assureTermination(&v252.player->_._.equipmentTypeName._);
v254 = v252.player->_._.equipmentTypeName._.cstr;
v253->vptr->assureTermination(v253);
v255 = v253->cstr;
if ( v254 != v255 )
{
v256 = v252.player->_._.equipmentTypeName._.cstr;
for ( i1 = 1LL; ; i1 += 2LL )
{
v258 = (unsigned __int8)v256[i1 - 1];
if ( v258 != (unsigned __int8)v255[i1 - 1] )
break;
if ( v258 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_769;
if ( i1 >= 0x80001 )
break;
v259 = (unsigned __int8)v256[i1];
if ( v259 != (unsigned __int8)v255[i1] )
break;
if ( v259 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_769;
}
LABEL_772:
v261 = this->_._.actor.player;
if ( (!(v261[0xC45] & 1) || v261[0xD11]) && !(v261[0xC41] & 1) )
{
if ( AI_AI_PlayerNormal::x_1(this) & 1 )
return;
v261 = this->_._.actor.player;
}
if ( !(v261[0xC41] & 2) || !v261[0xD10] )
{
v262 = "サイドステップ着地";
LABEL_869:
AI_AI_PlayerNormal::changeState(this, v262, 0LL);
goto LABEL_1122;
}
LABEL_867:
v262 = "攻撃";
goto LABEL_869;
}
LABEL_769:
v260.player = (Player *)this->_._.actor;
if ( !v260.player->_._.weaponType
|| !(v260.player->_._.slowTimeFlagsMaybe & 0x100)
|| ((__int64 (__fastcall *)(_QWORD))sub_71008744D4)((ActorPointer)v260.player) & 1 )
{
goto LABEL_772;
}
LABEL_874:
v45 = "着地後攻撃";
goto changeState;
}
LABEL_790:
v45 = "坂滑り";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"バク転";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v266 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v266 + 0x20LL))() & 1 )
goto LABEL_118;
v267.player = (Player *)this->_._.actor;
if ( v267.player->_._.field_C3C & 0x1000000 )
{
if ( ((__int64 (__fastcall *)(_QWORD))sub_7100892098)((ActorPointer)this->_._.actor.player) & 1 )
goto LABEL_790;
v267.player = (Player *)this->_._.actor;
}
v288 = PlayerBase::getEquipmentTypeName((PlayerBase *)v267.player, 1u);
v267.player->_._.equipmentTypeName._.vptr->assureTermination(&v267.player->_._.equipmentTypeName._);
v267.player->_._.equipmentTypeName._.vptr->assureTermination(&v267.player->_._.equipmentTypeName._);
v289 = v267.player->_._.equipmentTypeName._.cstr;
v288->vptr->assureTermination(v288);
v290 = v288->cstr;
if ( v289 == v290 )
{
LABEL_857:
v295.player = (Player *)this->_._.actor;
if ( v295.player->_._.weaponType
&& v295.player->_._.slowTimeFlagsMaybe & 0x100
&& !(((__int64 (__fastcall *)(_QWORD))sub_71008744D4)((ActorPointer)v295.player) & 1) )
{
goto LABEL_874;
}
}
else
{
v291 = v267.player->_._.equipmentTypeName._.cstr;
for ( i2 = 1LL; ; i2 += 2LL )
{
v293 = (unsigned __int8)v291[i2 - 1];
if ( v293 != (unsigned __int8)v290[i2 - 1] )
break;
if ( v293 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_857;
if ( i2 >= 0x80001 )
break;
v294 = (unsigned __int8)v291[i2];
if ( v294 != (unsigned __int8)v290[i2] )
break;
if ( v294 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_857;
}
}
v296 = this->_._.actor.player;
if ( (!(v296[0xC45] & 1) || v296[0xD11]) && !(v296[0xC41] & 1) )
{
if ( AI_AI_PlayerNormal::x_1(this) & 1 )
return;
v296 = this->_._.actor.player;
}
if ( !(v296[0xC41] & 2) || !v296[0xD10] )
{
v262 = "バク転着地";
goto LABEL_869;
}
goto LABEL_867;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ステップガードジャスト";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v268 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v268 + 0x20LL))() & 1) )
{
if ( LOBYTE(this->_._.actor.player->_._.field_D1C) == 1 )
v45 = "バク転着地";
else
v45 = "サイドステップ着地";
goto changeState;
}
goto LABEL_118;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"サイドステップ着地";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1
|| (a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt,
*(_QWORD *)&a2.idMaybe = "バク転着地",
AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1) )
{
v277 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( !((*(__int64 (**)(void))(*(_QWORD *)v277 + 0x20LL))() & 1) )
goto LABEL_553;
v278 = (PlayerBase *)this->_._.actor.player;
v279 = PlayerBase::getEquipmentTypeName(v278, 1u);
v278->_.equipmentTypeName._.vptr->assureTermination(&v278->_.equipmentTypeName._);
v278->_.equipmentTypeName._.vptr->assureTermination(&v278->_.equipmentTypeName._);
v280 = v278->_.equipmentTypeName._.cstr;
v279->vptr->assureTermination(v279);
v281 = v279->cstr;
if ( v280 != v281 )
{
v282 = v278->_.equipmentTypeName._.cstr;
for ( i3 = 1LL; ; i3 += 2LL )
{
v284 = (unsigned __int8)v282[i3 - 1];
if ( v284 != (unsigned __int8)v281[i3 - 1] )
break;
if ( v284 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_825;
if ( i3 >= 0x80001 )
break;
v285 = (unsigned __int8)v282[i3];
if ( v285 != (unsigned __int8)v281[i3] )
break;
if ( v285 == (unsigned __int8)sead::SafeStringBase<char>::cNullChar )
goto LABEL_825;
}
goto LABEL_553;
}
LABEL_825:
v286.player = (Player *)this->_._.actor;
if ( v286.player->_._.slowTimeFlagsMaybe & 0x200 )
{
if ( !v286.player->_._.gap_D08 )
return;
v45 = "攻撃";
changeState:
AI_AI_PlayerNormal::changeState(this, v45, 0LL);
return;
}
if ( ((__int64 (__fastcall *)(_QWORD))sub_71008744D4)((ActorPointer)v286.player) & 1 )
return;
v287.player = (Player *)this->_._.actor;
if ( v287.player->_._.field_C3C & 0x200000 || *((float *)&v287.player->_.field_1E98 + 1) > 0.00000011921 )
return;
LABEL_829:
v45 = "ジャンプ斬り";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"壁駆け上がり";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( AI_AI_PlayerNormal::x_0(this) & 1 )
return;
goto LABEL_118;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"カメラ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_884;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "小段差よじ登り壁つかみ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_884;
state.vptr = &sead::SafeString::vt;
state.cstr = "弓主観";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_884;
v449.vptr = &sead::SafeString::vt;
v449.cstr = "座る";
if ( AI_AIBase::compareState(&this->_, &v449) & 1 )
goto LABEL_884;
*(_QWORD *)a6 = &sead::SafeString::vt;
v448 = "寝る";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)a6) & 1 )
goto LABEL_884;
v446.vptr = &sead::SafeString::vt;
v446.cstr = "飾る待機";
if ( AI_AIBase::compareState(&this->_, &v446) & 1 )
goto LABEL_884;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"アイテム";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_513;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "スーパージャンプ溜め";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_513;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"騎乗";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v309 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v309 + 0x20LL))() & 1 )
{
if ( !MotorcycleMgr::sInstance || !MotorcycleMgr::sInstance->field_17B )
{
v319 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
if ( !BaseProcLink::x_1((BaseProcLink *)(v319 + 0x18), *(ActorBase **)(v319 + 8)) )
{
v320 = BaseProcLink::acquireActorEx((BaseProcLink *)(v319 + 0x18), 0LL, *(ActorBase **)(v319 + 8));
v321 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v322 = v320;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( v322 && v322->vtable->checkDerivedRuntimeTypeInfo((Actor *)v322, &Actor::rttiInfo) )
{
v323 = Actor::getInfo578_fieldA_60((Actor *)v322);
v324 = v323;
if ( v323 )
{
sub_7100E8160C(v323, 0LL, 0LL, &a2);
sub_7100F626E8(v324, &acc);
v325 = a2.baseProcLinkData;
v326 = (float)((float)(*(float *)&a2.baseProcLinkData * *(float *)&v452)
+ (float)(*((float *)&a2.baseProcLinkData + 1) * *((float *)&v452 + 1)))
+ (float)(*(float *)&a2.idMaybe * v453);
*(float *)&a2.baseProcLinkData = *((float *)&acc.actor + 1)
+ (float)((float)((float)(*(float *)&a2.baseProcLinkData
* *(float *)&acc.fromOtherThread)
+ (float)(*((float *)&a2.baseProcLinkData + 1)
* *((float *)&acc.fromOtherThread + 1)))
+ (float)(*(float *)&a2.idMaybe * *(float *)&acc.actor));
*((float *)&a2.baseProcLinkData + 1) = v454 + v326;
*(float *)&a2.idMaybe = v458
+ (float)((float)((float)(*(float *)&v325 * v455)
+ (float)(*((float *)&v325 + 1) * v456))
+ (float)(*(float *)&a2.idMaybe * v457));
v327 = Actor::getInfo578_fieldA_60(this->_._.actor.actor);
if ( v327 )
warpActorToPosition(v327, (__int64)&a2);
}
else
{
v345 = __ldar((unsigned __int8 *)&unk_71025AF460);
if ( !((unsigned __int64)&unk_71025AF460 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AF460) )
{
Motorcycle::rttiInfo = (__int64)&off_7102354590;
_cxa_guard_release_0(&unk_71025AF460);
}
if ( v322->vtable->checkDerivedRuntimeTypeInfo((Actor *)v322, &Motorcycle::rttiInfo) )
{
v346 = Actor::getInfo578_fieldA_60(this->_._.actor.actor);
if ( v346 )
{
LODWORD(state.vptr) = HIDWORD(v322[2]._.field_A8);
HIDWORD(state.vptr) = HIDWORD(v322[2]._.field_B8);
LODWORD(state.cstr) = HIDWORD(v322[2]._.field_C8);
a6[0] = 0.35;
sub_7100F62E74();
sub_7100FC95C0(
(__int64)&acc,
3u,
0,
*(_QWORD *)(*(_QWORD *)((char *)&v322[3]._.field_100 + 4) + 0x188LL),
0x80u,
a6[0],
0LL,
(__int64)&nullPosition,
&sead::SafeStringBase<char>::cEmptyString,
0);
sub_710007F868(v322);
a2.baseProcLinkData = (BaseProcLinkData *)__PAIR__(v348, v347);
a2.idMaybe = v349;
sub_7100FC8884(&acc, &a2, &state);
v350 = v452;
v460 = 0;
v351 = sub_7100E94134(8);
v352 = sub_7100E94118(8);
v353 = v352;
if ( (unsigned int)v352 >= 2 )
v353 = 0LL;
v354 = 4 * v353;
v355 = v350 + 0x1C;
v356 = v350 + 0x24;
*(_DWORD *)(v350 + 0x1C + v354) |= v351;
*(_DWORD *)(v350 + 0x24 + v354) &= ~v351;
v357 = sub_7100E94134(9);
v358 = sub_7100E94118(9);
v359 = v358;
if ( (unsigned int)v358 >= 2 )
v359 = 0LL;
v360 = 4 * v359;
*(_DWORD *)(v355 + v360) |= v357;
*(_DWORD *)(v356 + v360) &= ~v357;
v361 = sub_7100E94134(2);
v362 = sub_7100E94118(2);
v363 = v362;
if ( (unsigned int)v362 >= 2 )
v363 = 0LL;
v364 = 4 * v363;
*(_DWORD *)(v355 + v364) |= v361;
*(_DWORD *)(v356 + v364) &= ~v361;
v365 = sub_7100E94134(0xC);
v366 = sub_7100E94118(0xC);
v367 = v366;
if ( (unsigned int)v366 >= 2 )
v367 = 0LL;
v368 = 4 * v367;
*(_DWORD *)(v355 + v368) |= v365;
*(_DWORD *)(v356 + v368) &= ~v365;
(*(void (__fastcall **)(ActorAccessor *, signed __int64))(*(_QWORD *)&acc.fromOtherThread + 0x10LL))(
&acc,
1LL);
LODWORD(v449.cstr) = state.cstr;
v449.vptr = state.vptr;
if ( v459 )
{
sub_7100FC7774((__int64)&a2, v350 + 0x48, *(_DWORD *)(v350 + 0x18));
a2.baseProcLinkData = (BaseProcLinkData *)off_71024F8BB0;
sub_7100FC339C(&a2, &v449, &acc);
}
warpActorToPosition(v346, (__int64)&v449);
sub_7100FC97D8((__int64)&acc);
}
}
}
v369 = (__int64)v322[4].vtable;
*(_DWORD *)&acc.fromOtherThread = 0x3800029;
AI_AIOrActionBase::sendMessageMaybe(&this->_._, v369, (__int64)&acc, 0LL);
}
}
v370 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
v45 = "落下";
*(_WORD *)(v370 + 0x30) |= 0x10u;
goto changeState;
}
v310 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
if ( v310 )
*(_WORD *)(v310 + 0x30) |= 0x10u;
v185 = "イベント開始待ち";
LABEL_477:
AI_AIBase::changeState(&this->_, v185, 0LL);
return;
}
v314 = ((__int64 (*)(void))this->_._.actor.player->vptr->_.pe.g.a.getPlayerRideInfo)();
v315 = BaseProcLink::acquireActorEx((BaseProcLink *)(v314 + 0x18), 0LL, *(ActorBase **)(v314 + 8));
v316 = __ldar((unsigned __int8 *)&unk_71025AE4E8);
v317 = v315;
if ( !((unsigned __int64)&unk_71025AE4E8 & 1) && (unsigned int)_cxa_guard_acquire_0(&unk_71025AE4E8) )
{
Actor::rttiInfo = (__int64)&off_71023545C0;
_cxa_guard_release_0(&unk_71025AE4E8);
}
if ( v317 )
{
if ( v317->vtable->checkDerivedRuntimeTypeInfo((Actor *)v317, &Actor::rttiInfo) )
{
v318 = ((__int64 (__fastcall *)(ActorBase *))v317->vtable[4].ActorBase__m11)(v317);
if ( v318 )
{
if ( *(_DWORD *)(v318 + 0x188) & 0x400 )
{
Player::x_8(this->_._.actor.player);
v341 = 0LL;
do
{
v342 = &acc.fromOtherThread + v341;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v341));
v341 += 0x50LL;
*((_QWORD *)v342 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v342 + 6) = 0LL;
*((_QWORD *)v342 + 7) = 0LL;
}
while ( v341 != 0xA00 );
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v461 = 0;
*(_QWORD *)&a2.idMaybe = "EnableSwordInput";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 0, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "バク転", (__int64)&acc);
v343 = 0xA00LL;
do
{
v344 = &acc.fromOtherThread + v343;
*((_QWORD *)v344 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v344 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v344 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v343 - 0x48));
v343 -= 0x50LL;
}
while ( v343 );
return;
}
}
}
}
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
if ( !(this->_._.actor.player->_._.horseFlagsMaybe & 0x20) )
goto LABEL_884;
LABEL_1036:
v45 = "着地";
goto changeState;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"掴まれる";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_884;
goto LABEL_118;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"盾サーフィン";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v336 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
v337 = (*(__int64 (**)(void))(*(_QWORD *)v336 + 0x20LL))();
v338 = (PlayerOrEnemy *)this->_._.actor.player;
if ( v337 & 1 )
{
if ( !sub_710000759C(v338) && !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
goto LABEL_1121;
}
if ( !Player::isSurfingOnGround((Player *)v338) )
goto LABEL_118;
v374.player = (Player *)this->_._.actor;
if ( !(v374.player->_._.field_CE4 & 2) )
goto LABEL_884;
if ( v374.player->_._.field_C3C & 0x1000000
&& ((__int64 (__fastcall *)(_QWORD))sub_7100892098)((ActorPointer)v374.player) & 1 )
{
goto LABEL_790;
}
goto LABEL_1036;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"ウェイクボード";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
v373 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v373 + 0x20LL))() & 1 )
goto LABEL_1121;
if ( !Player::isSurfingOnGround(this->_._.actor.player) )
goto LABEL_118;
if ( !(this->_._.actor.player->_._.field_CE4 & 2) )
goto LABEL_884;
goto LABEL_1036;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"滑落";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"大ダメージ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_1121;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "打ち上げ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_1121;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"バリア吹き飛び";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
goto LABEL_118;
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
*(_QWORD *)&a2.idMaybe = "水の遺物咆哮吹き飛び";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&a2) & 1 )
goto LABEL_118;
state.vptr = &sead::SafeString::vt;
state.cstr = "ゾーラに掴まる";
if ( AI_AIBase::compareState(&this->_, &state) & 1 )
goto LABEL_118;
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"スーパージャンプ";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
{
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"馬乗りジャンプ";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !(((__int64 (*)(void))this->_._.actor.player->vptr->_.isRiding)() & 1)
&& Player::RideInfo::assignRideActor(
&this->_._.actor.player->_.rideInfo,
&PlayerInfo::sInstance->horseBaseProcLinkMaybe) & 1 )
{
v382.player = (Player *)this->_._.actor;
v383 = 0LL;
v382.player->_.field_20BC.x = 0.0;
v382.player->_.field_20BC.y = 0.0;
do
{
v384 = &acc.fromOtherThread + v383;
BaseProcLink::ctor((BaseProcLink *)((char *)&acc.actor + v383));
v383 += 0x50LL;
*((_QWORD *)v384 + 5) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v384 + 6) = 0LL;
*((_QWORD *)v384 + 7) = 0LL;
}
while ( v383 != 0xA00 );
a2.baseProcLinkData = (BaseProcLinkData *)&sead::SafeString::vt;
v461 = 0;
*(_QWORD *)&a2.idMaybe = "HasToPlayRidingOnAS";
sub_7100D17D84((evt::ActionContext::Entry *)&acc, 1, (__int64)&a2, 0xFFFFFFFF);
AI_AI_PlayerNormal::changeState(this, "騎乗", (__int64)&acc);
v385 = 0xA00LL;
do
{
v386 = &acc.fromOtherThread + v385;
*((_QWORD *)v386 + 0xFFFFFFFB) = 0xFFFFFFFFFFFFFFFFLL;
*((_QWORD *)v386 + 0xFFFFFFFC) = 0LL;
*((_QWORD *)v386 + 0xFFFFFFFD) = 0LL;
BaseProcLink::reset((BaseProcLink *)((char *)&acc + v385 - 0x48));
v385 -= 0x50LL;
}
while ( v385 );
return;
}
goto LABEL_118;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"凍る";
if ( AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1 )
{
if ( !this->_._.actor.player->_.field_17F0[2] )
{
v45 = "凍り解除";
goto changeState;
}
goto LABEL_1121;
}
*(_QWORD *)&acc.fromOtherThread = &sead::SafeString::vt;
acc.actor = (ActorBase *)"滝登り";
if ( !(AI_AIBase::compareState(&this->_, (sead::SafeString *)&acc) & 1) )
goto LABEL_1122;
v419 = this->_._.vptr.base->AI_AIOrActionBase__m26((AI_AIOrActionBase *)this);
if ( (*(__int64 (**)(void))(*(_QWORD *)v419 + 0x20LL))() & 1 )
goto LABEL_118;
}
v45 = "パラショール滑空";
goto changeState;
}
v378.player = (Player *)this->_._.actor;
if ( *(_BYTE *)(v3 + 0x116) & 4 && *(float *)&v378.player->_.field_1EA8 <= *this->inWaterTimeForRagdoll )
goto LABEL_1122;
if ( v378.player->_._.isBgCrossFoot & 8 )
{
sub_7100F5F598(v3, &acc);
if ( *((float *)&acc.fromOtherThread + 1) <= -0.2 )
goto LABEL_1122;
}
sub_7100F626CC(v3, (__int64)&acc);
v379.player = (Player *)this->_._.actor;
*(ActorAccessor *)&v379.player->_.field_1B18_x = acc;
*(_OWORD *)&v379.player->_.field_1B28_y = *(_OWORD *)&v452;
*(_OWORD *)&v379.player->_.field_1B38_z = *(_OWORD *)&v455;
LABEL_64:
v45 = "大ダメージ起き上がり";
goto changeState;
}
sub_710086BB68((__int64)this->_._.actor.player);
if ( sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0) )
{
ui::sub_7100A95F5C((unsigned int)this->_._.actor.player->_.doCommandIdx);
v430 = this->_._.actor.player->_.doCommandIdx;
if ( v430 == 0x27 || v430 == 0x12 )
{
Attention::__auto1(Attention::sInstance, 0LL);
return;
}
}
if ( !(AI_AI_PlayerNormal::x_6c(this, 0LL) & 1) )
{
if ( sub_71008BD430((__int64)this->_._.actor.player->_._.controllerMaybe, 0xEu) )
{
((void (__fastcall *)(_QWORD))sub_710087CF54)((ActorPointer)this->_._.actor.player);
if ( LOBYTE(this->_._.actor.player->_.field_1CBC) == 0xA )
{
v45 = "壁登り";
goto changeState;
}
}
goto LABEL_494;
}
}