mirror of
https://github.com/blawar/ooot.git
synced 2024-06-30 16:29:55 +00:00
fixed ztarget reticule
This commit is contained in:
parent
0e2eacac8e
commit
2277fb7a1e
|
@ -203,10 +203,5 @@ u16 func_80037C30(GlobalContext* globalCtx, s16 arg1);
|
||||||
s32 func_80037D98(GlobalContext* globalCtx, Actor* actor, s16 arg2, s32* arg3);
|
s32 func_80037D98(GlobalContext* globalCtx, Actor* actor, s16 arg2, s32* arg3);
|
||||||
s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f arg4);
|
s32 func_80038290(GlobalContext* globalCtx, Actor* actor, Vec3s* arg2, Vec3s* arg3, Vec3f arg4);
|
||||||
|
|
||||||
enum PlayerState1
|
|
||||||
{
|
|
||||||
PLAYER_STATE_SWORD_CHARGE = 0x1000,
|
|
||||||
PLAYER_STATE_HORSE_MOUNTED = 0x800000,
|
|
||||||
PLAYER_STATE_SWIMMING = 0x8000000
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ Player* Player_UnsetMask(GlobalContext* globalCtx);
|
||||||
void Player_UpdateBottleHeld(GlobalContext* globalCtx, Player* player, s32 item, s32 actionParam);
|
void Player_UpdateBottleHeld(GlobalContext* globalCtx, Player* player, s32 item, s32 actionParam);
|
||||||
s32 func_8008E9C4(Player* player);
|
s32 func_8008E9C4(Player* player);
|
||||||
void func_8008EC70(Player* player);
|
void func_8008EC70(Player* player);
|
||||||
void func_8008EDF0(Player* player);
|
void Player_ClearZTarget(Player* player);
|
||||||
void func_8008EE08(Player* player);
|
void func_8008EE08(Player* player);
|
||||||
void func_8008EEAC(GlobalContext* globalCtx, Actor* actor);
|
void func_8008EEAC(GlobalContext* globalCtx, Actor* actor);
|
||||||
s32 func_8008EF44(GlobalContext* globalCtx, s32 ammo);
|
s32 func_8008EF44(GlobalContext* globalCtx, s32 ammo);
|
||||||
|
|
|
@ -98,6 +98,8 @@ class Timer
|
||||||
Timer& operator^=(u64 n);
|
Timer& operator^=(u64 n);
|
||||||
s32 operator%(s32 n) const;
|
s32 operator%(s32 n) const;
|
||||||
Timer operator&(long n) const;
|
Timer operator&(long n) const;
|
||||||
|
Timer operator|(long n) const;
|
||||||
|
Timer operator^(long n) const;
|
||||||
s32 operator<<(long n);
|
s32 operator<<(long n);
|
||||||
s32 operator>>(long n);
|
s32 operator>>(long n);
|
||||||
|
|
||||||
|
|
75
include/player_state.h
Normal file
75
include/player_state.h
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
enum PlayerState1
|
||||||
|
{
|
||||||
|
PLAYER_STATE1_0 = 1 << 0, // 0x00000001
|
||||||
|
PLAYER_STATE1_1 = 1 << 1, // 0x00000002
|
||||||
|
PLAYER_STATE1_2 = 1 << 2, // 0x00000004
|
||||||
|
PLAYER_STATE1_3 = 1 << 3, // 0x00000008
|
||||||
|
PLAYER_STATE1_4 = 1 << 4, // 0x00000010
|
||||||
|
PLAYER_STATE1_5 = 1 << 5, // 0x00000020
|
||||||
|
PLAYER_STATE1_6 = 1 << 6, // 0x00000040
|
||||||
|
PLAYER_STATE1_7 = 1 << 7, // 0x00000080
|
||||||
|
PLAYER_STATE1_8 = 1 << 8, // 0x00000100
|
||||||
|
PLAYER_STATE1_9 = 1 << 9, // 0x00000200
|
||||||
|
PLAYER_STATE1_10 = 1 << 10, // 0x00000400
|
||||||
|
PLAYER_STATE1_11 = 1 << 11, // 0x00000800
|
||||||
|
PLAYER_STATE_SWORD_CHARGE = 1 << 12, // 0x00001000
|
||||||
|
PLAYER_STATE1_13 = 1 << 13, // 0x00002000
|
||||||
|
PLAYER_STATE1_14 = 1 << 14, // 0x00004000
|
||||||
|
PLAYER_STATE1_15 = 1 << 15, // 0x00008000
|
||||||
|
PLAYER_STATE1_16 = 1 << 16, // 0x00010000
|
||||||
|
PLAYER_STATE1_17 = 1 << 17, // 0x00020000
|
||||||
|
PLAYER_STATE1_18 = 1 << 18, // 0x00040000
|
||||||
|
PLAYER_STATE1_19 = 1 << 19, // 0x00080000
|
||||||
|
PLAYER_STATE1_20 = 1 << 20, // 0x00100000
|
||||||
|
PLAYER_STATE1_21 = 1 << 21, // 0x00200000
|
||||||
|
PLAYER_STATE1_22 = 1 << 22, // 0x00400000
|
||||||
|
PLAYER_STATE_HORSE_MOUNTED = 1 << 23, // 0x00800000
|
||||||
|
PLAYER_STATE1_24 = 1 << 24, // 0x01000000
|
||||||
|
PLAYER_STATE1_25 = 1 << 25, // 0x02000000
|
||||||
|
PLAYER_STATE1_26 = 1 << 26, // 0x04000000
|
||||||
|
PLAYER_STATE_SWIMMING = 1 << 27, // 0x08000000
|
||||||
|
PLAYER_STATE1_28 = 1 << 28, // 0x10000000
|
||||||
|
PLAYER_STATE1_29 = 1 << 29, // 0x20000000
|
||||||
|
PLAYER_STATE1_30 = 1 << 30, // 0x40000000
|
||||||
|
PLAYER_STATE1_31 = 1 << 31, // 0x80000000
|
||||||
|
};
|
||||||
|
|
||||||
|
enum PlayerState2
|
||||||
|
{
|
||||||
|
PLAYER_STATE2_0 = 1 << 0, // 0x00000001
|
||||||
|
PLAYER_STATE2_1 = 1 << 1, // 0x00000002
|
||||||
|
PLAYER_STATE2_2 = 1 << 2, // 0x00000004
|
||||||
|
PLAYER_STATE2_3 = 1 << 3, // 0x00000008
|
||||||
|
PLAYER_STATE2_4 = 1 << 4, // 0x00000010
|
||||||
|
PLAYER_STATE2_5 = 1 << 5, // 0x00000020
|
||||||
|
PLAYER_STATE2_6 = 1 << 6, // 0x00000040
|
||||||
|
PLAYER_STATE2_7 = 1 << 7, // 0x00000080
|
||||||
|
PLAYER_STATE2_8 = 1 << 8, // 0x00000100
|
||||||
|
PLAYER_STATE2_9 = 1 << 9, // 0x00000200
|
||||||
|
PLAYER_STATE2_10 = 1 << 10, // 0x00000400
|
||||||
|
PLAYER_STATE2_11 = 1 << 11, // 0x00000800
|
||||||
|
PLAYER_STATE2_12 = 1 << 12, // 0x00001000
|
||||||
|
PLAYER_STATE2_ZTARGET_CHANGED = 1 << 13, // 0x00002000
|
||||||
|
PLAYER_STATE2_14 = 1 << 14, // 0x00004000
|
||||||
|
PLAYER_STATE2_15 = 1 << 15, // 0x00008000
|
||||||
|
PLAYER_STATE2_16 = 1 << 16, // 0x00010000
|
||||||
|
PLAYER_STATE2_17 = 1 << 17, // 0x00020000
|
||||||
|
PLAYER_STATE2_18 = 1 << 18, // 0x00040000
|
||||||
|
PLAYER_STATE2_19 = 1 << 19, // 0x00080000
|
||||||
|
PLAYER_STATE2_20 = 1 << 20, // 0x00100000
|
||||||
|
PLAYER_STATE2_21 = 1 << 21, // 0x00200000
|
||||||
|
PLAYER_STATE2_22 = 1 << 22, // 0x00400000
|
||||||
|
PLAYER_STATE2_23 = 1 << 23, // 0x00800000
|
||||||
|
PLAYER_STATE2_24 = 1 << 24, // 0x01000000
|
||||||
|
PLAYER_STATE2_25 = 1 << 25, // 0x02000000
|
||||||
|
PLAYER_STATE2_26 = 1 << 26, // 0x04000000
|
||||||
|
PLAYER_STATE2_27 = 1 << 27, // 0x08000000
|
||||||
|
PLAYER_STATE2_28 = 1 << 28, // 0x10000000
|
||||||
|
PLAYER_STATE2_29 = 1 << 29, // 0x20000000
|
||||||
|
PLAYER_STATE2_30 = 1 << 30, // 0x40000000
|
||||||
|
PLAYER_STATE2_31 = 1 << 31, // 0x80000000
|
||||||
|
};
|
||||||
|
|
||||||
|
static_assert((1 << 13) == 0x2000, "bah");
|
|
@ -408,7 +408,7 @@ struct TargetContext {
|
||||||
/* 0x44 */ f32 unk_44;
|
/* 0x44 */ f32 unk_44;
|
||||||
/* 0x48 */ s16 unk_48;
|
/* 0x48 */ s16 unk_48;
|
||||||
/* 0x4A */ u8 activeCategory;
|
/* 0x4A */ u8 activeCategory;
|
||||||
/* 0x4B */ u8 unk_4B;
|
/* 0x4B */ Counter unk_4B;
|
||||||
/* 0x4C */ s8 unk_4C;
|
/* 0x4C */ s8 unk_4C;
|
||||||
/* 0x4D */ char unk_4D[0x03];
|
/* 0x4D */ char unk_4D[0x03];
|
||||||
/* 0x50 */ TargetContextEntry arr_50[3];
|
/* 0x50 */ TargetContextEntry arr_50[3];
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
#include "z64game.h"
|
#include "z64game.h"
|
||||||
#include "regs.h"
|
#include "regs.h"
|
||||||
|
|
||||||
#define COUNTER_STEP 20.0f / FRAME_RATE
|
#define COUNTER_STEP 20 / FRAME_RATE
|
||||||
#define COUNTER_SCALER FRAME_RATE / 20
|
#define COUNTER_SCALER FRAME_RATE / 20
|
||||||
|
|
||||||
static FramerateProfile g_profile = PROFILE_BOOT;
|
static FramerateProfile g_profile = PROFILE_BOOT;
|
||||||
|
@ -119,7 +119,7 @@ Timer Timer::invalid()
|
||||||
|
|
||||||
void Timer::update()
|
void Timer::update()
|
||||||
{
|
{
|
||||||
m_counter = m_counterInt * COUNTER_STEP;
|
m_counter = (float)m_counterInt * COUNTER_STEP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer& Timer::operator++() // pre
|
Timer& Timer::operator++() // pre
|
||||||
|
@ -233,19 +233,22 @@ Timer& Timer::operator/=(float f)
|
||||||
|
|
||||||
Timer& Timer::operator&=(u64 n)
|
Timer& Timer::operator&=(u64 n)
|
||||||
{
|
{
|
||||||
*this = whole() & n;
|
*this = m_counterInt & (n * COUNTER_SCALER);
|
||||||
|
update();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer& Timer::operator|=(u64 n)
|
Timer& Timer::operator|=(u64 n)
|
||||||
{
|
{
|
||||||
*this = whole() | n;
|
*this = m_counterInt | (n * COUNTER_SCALER);
|
||||||
|
update();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
Timer& Timer::operator^=(u64 n)
|
Timer& Timer::operator^=(u64 n)
|
||||||
{
|
{
|
||||||
*this = whole() ^ n;
|
*this = m_counterInt ^ (n * COUNTER_SCALER);
|
||||||
|
update();
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,7 +259,23 @@ s32 Timer::operator%(s32 n) const
|
||||||
|
|
||||||
Timer Timer::operator&(long n) const
|
Timer Timer::operator&(long n) const
|
||||||
{
|
{
|
||||||
return Timer(whole() & n);
|
Timer t = *this;
|
||||||
|
t &= n;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer Timer::operator|(long n) const
|
||||||
|
{
|
||||||
|
Timer t = *this;
|
||||||
|
t |= n;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer Timer::operator^(long n) const
|
||||||
|
{
|
||||||
|
Timer t = *this;
|
||||||
|
t ^= n;
|
||||||
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 Timer::operator<<(long n)
|
s32 Timer::operator<<(long n)
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "z64actor.h"
|
#include "z64actor.h"
|
||||||
#include "gfx_align.h"
|
#include "gfx_align.h"
|
||||||
#include "port/options.h"
|
#include "port/options.h"
|
||||||
|
#include "player_state.h"
|
||||||
|
|
||||||
#include "overlays/actors/ovl_Arms_Hook/z_arms_hook.h"
|
#include "overlays/actors/ovl_Arms_Hook/z_arms_hook.h"
|
||||||
#include "overlays/actors/ovl_En_Part/z_en_part.h"
|
#include "overlays/actors/ovl_En_Part/z_en_part.h"
|
||||||
|
@ -405,7 +406,7 @@ void func_8002C124(TargetContext* targetCtx, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
func_8002BE64(targetCtx, targetCtx->unk_4C, spBC.x, spBC.y, spBC.z);
|
func_8002BE64(targetCtx, targetCtx->unk_4C, spBC.x, spBC.y, spBC.z);
|
||||||
|
|
||||||
if ((!(player->stateFlags1 & 0x40)) || (actor != player->unk_664)) {
|
if ((!(player->stateFlags1 & PLAYER_STATE1_6)) || (actor != player->targetedActor)) {
|
||||||
OVERLAY_DISP = Gfx_CallSetupDL(OVERLAY_DISP, 0x39);
|
OVERLAY_DISP = Gfx_CallSetupDL(OVERLAY_DISP, 0x39);
|
||||||
|
|
||||||
for (spB0 = 0, spAC = targetCtx->unk_4C; spB0 < spB8; spB0++, spAC = (spAC + 1) % 3) {
|
for (spB0 = 0, spAC = targetCtx->unk_4C; spB0 < spB8; spB0++, spAC = (spAC + 1) % 3) {
|
||||||
|
@ -423,7 +424,7 @@ void func_8002C124(TargetContext* targetCtx, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, entry->color.r, entry->color.g, entry->color.b, (u8)spCE);
|
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, entry->color.r, entry->color.g, entry->color.b, (u8)spCE);
|
||||||
|
|
||||||
Matrix_RotateZ((targetCtx->unk_4B & 0x7F) * (M_PI / 64), MTXMODE_APPLY);
|
Matrix_RotateZ(targetCtx->unk_4B * (M_PI / 64), MTXMODE_APPLY);
|
||||||
|
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
Matrix_RotateZ(M_PI / 2, MTXMODE_APPLY);
|
Matrix_RotateZ(M_PI / 2, MTXMODE_APPLY);
|
||||||
|
@ -480,7 +481,7 @@ void func_8002C7BC(TargetContext* targetCtx, Player* player, Actor* actorArg, Gl
|
||||||
|
|
||||||
unkActor = NULL;
|
unkActor = NULL;
|
||||||
|
|
||||||
if ((player->unk_664 != NULL) && (player->unk_84B[player->unk_846] == 2)) {
|
if ((player->targetedActor != NULL) && (player->unk_84B[player->unk_846] == 2)) {
|
||||||
targetCtx->unk_94 = NULL;
|
targetCtx->unk_94 = NULL;
|
||||||
} else {
|
} else {
|
||||||
func_80032AF0(globalCtx, &globalCtx->actorCtx, &unkActor, player);
|
func_80032AF0(globalCtx, &globalCtx->actorCtx, &unkActor, player);
|
||||||
|
@ -554,7 +555,7 @@ void func_8002C7BC(TargetContext* targetCtx, Player* player, Actor* actorArg, Gl
|
||||||
targetCtx->unk_4B++;
|
targetCtx->unk_4B++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
targetCtx->unk_4B = (targetCtx->unk_4B + 3) | 0x80;
|
targetCtx->unk_4B += 3;
|
||||||
targetCtx->unk_44 = 120.0f;
|
targetCtx->unk_44 = 120.0f;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -1483,7 +1484,7 @@ f32 func_8002EFC0(Actor* actor, Player* player, s16 arg2) {
|
||||||
s16 yawTemp = (s16)(actor->yawTowardsPlayer - 0x8000) - arg2;
|
s16 yawTemp = (s16)(actor->yawTowardsPlayer - 0x8000) - arg2;
|
||||||
s16 yawTempAbs = ABS(yawTemp);
|
s16 yawTempAbs = ABS(yawTemp);
|
||||||
|
|
||||||
if (player->unk_664 != NULL) {
|
if (player->targetedActor != NULL) {
|
||||||
if ((yawTempAbs > 0x4000) || (actor->flags & ACTOR_FLAG_27)) {
|
if ((yawTempAbs > 0x4000) || (actor->flags & ACTOR_FLAG_27)) {
|
||||||
return FLT_MAX;
|
return FLT_MAX;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1529,7 +1530,7 @@ s32 func_8002F0C8(Actor* actor, Player* player, s32 flag) {
|
||||||
s16 abs_var = ABS(var);
|
s16 abs_var = ABS(var);
|
||||||
f32 dist;
|
f32 dist;
|
||||||
|
|
||||||
if ((player->unk_664 == NULL) && (abs_var > 0x2AAA)) {
|
if ((player->targetedActor == NULL) && (abs_var > 0x2AAA)) {
|
||||||
dist = FLT_MAX;
|
dist = FLT_MAX;
|
||||||
} else {
|
} else {
|
||||||
dist = actor->xyzDistToPlayerSq;
|
dist = actor->xyzDistToPlayerSq;
|
||||||
|
@ -2139,13 +2140,13 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
|
||||||
actor->flags &= ~ACTOR_FLAG_24;
|
actor->flags &= ~ACTOR_FLAG_24;
|
||||||
|
|
||||||
if ((DECR(actor->freezeTimer) == 0) && (actor->flags & (ACTOR_FLAG_4 | ACTOR_FLAG_UNCULLED))) {
|
if ((DECR(actor->freezeTimer) == 0) && (actor->flags & (ACTOR_FLAG_4 | ACTOR_FLAG_UNCULLED))) {
|
||||||
if (actor == player->unk_664) {
|
if (actor == player->targetedActor) {
|
||||||
actor->isTargeted = true;
|
actor->isTargeted = true;
|
||||||
} else {
|
} else {
|
||||||
actor->isTargeted = false;
|
actor->isTargeted = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((actor->targetPriority != 0) && (player->unk_664 == NULL)) {
|
if ((actor->targetPriority != 0) && (player->targetedActor == NULL)) {
|
||||||
actor->targetPriority = 0;
|
actor->targetPriority = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2168,11 +2169,11 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actor = player->unk_664;
|
actor = player->targetedActor;
|
||||||
|
|
||||||
if ((actor != NULL) && (actor->update == NULL)) {
|
if ((actor != NULL) && (actor->update == NULL)) {
|
||||||
actor = NULL;
|
actor = NULL;
|
||||||
func_8008EDF0(player);
|
Player_ClearZTarget(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((actor == NULL) || (player->unk_66C < 5)) {
|
if ((actor == NULL) || (player->unk_66C < 5)) {
|
||||||
|
@ -2887,8 +2888,8 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, GlobalContext* globalC
|
||||||
osSyncPrintf("Actor class deleted [%s]\n", name); // "Actor class deleted [%s]"
|
osSyncPrintf("Actor class deleted [%s]\n", name); // "Actor class deleted [%s]"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((player != NULL) && (actor == player->unk_664)) {
|
if ((player != NULL) && (actor == player->targetedActor)) {
|
||||||
func_8008EDF0(player);
|
Player_ClearZTarget(player);
|
||||||
Camera_ChangeMode(Gameplay_GetCamera(globalCtx, Gameplay_GetActiveCamId(globalCtx)), 0);
|
Camera_ChangeMode(Gameplay_GetCamera(globalCtx, Gameplay_GetActiveCamId(globalCtx)), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2950,7 +2951,7 @@ void func_800328D4(GlobalContext* globalCtx, ActorContext* actorCtx, Player* pla
|
||||||
Vec3f sp70;
|
Vec3f sp70;
|
||||||
|
|
||||||
actor = actorCtx->actorLists[actorCategory].head;
|
actor = actorCtx->actorLists[actorCategory].head;
|
||||||
sp84 = player->unk_664;
|
sp84 = player->targetedActor;
|
||||||
|
|
||||||
while (actor != NULL) {
|
while (actor != NULL) {
|
||||||
if ((actor->update != NULL) && ((Player*)actor != player) && CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_0)) {
|
if ((actor->update != NULL) && ((Player*)actor != player) && CHECK_FLAG_ALL(actor->flags, ACTOR_FLAG_0)) {
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include "quake.h"
|
#include "quake.h"
|
||||||
#include "vt.h"
|
#include "vt.h"
|
||||||
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
|
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "port/player/players.h"
|
#include "port/player/players.h"
|
||||||
#include "port/options.h"
|
#include "port/options.h"
|
||||||
#include "def/code_800BB0A0.h"
|
#include "def/code_800BB0A0.h"
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include "z64save.h"
|
#include "z64save.h"
|
||||||
#include "z64object.h"
|
#include "z64object.h"
|
||||||
#include "z64item.h"
|
#include "z64item.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||||
#include "objects/object_link_boy/object_link_boy.h"
|
#include "objects/object_link_boy/object_link_boy.h"
|
||||||
#include "objects/object_link_child/object_link_child.h"
|
#include "objects/object_link_child/object_link_child.h"
|
||||||
|
@ -460,9 +461,9 @@ void Player_UpdateBottleHeld(GlobalContext* globalCtx, Player* pthis, s32 item,
|
||||||
pthis->itemActionParam = actionParam;
|
pthis->itemActionParam = actionParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008EDF0(Player* pthis) {
|
void Player_ClearZTarget(Player* pthis) {
|
||||||
pthis->unk_664 = NULL;
|
pthis->targetedActor = NULL;
|
||||||
pthis->stateFlags2 &= ~0x2000;
|
pthis->stateFlags2 &= ~PLAYER_STATE2_ZTARGET_CHANGED;
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008EE08(Player* pthis) {
|
void func_8008EE08(Player* pthis) {
|
||||||
|
@ -473,14 +474,14 @@ void func_8008EE08(Player* pthis) {
|
||||||
pthis->stateFlags1 |= 0x80000;
|
pthis->stateFlags1 |= 0x80000;
|
||||||
}
|
}
|
||||||
|
|
||||||
func_8008EDF0(pthis);
|
Player_ClearZTarget(pthis);
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_8008EEAC(GlobalContext* globalCtx, Actor* actor) {
|
void func_8008EEAC(GlobalContext* globalCtx, Actor* actor) {
|
||||||
Player* pthis = GET_PLAYER(globalCtx);
|
Player* pthis = GET_PLAYER(globalCtx);
|
||||||
|
|
||||||
func_8008EE08(pthis);
|
func_8008EE08(pthis);
|
||||||
pthis->unk_664 = actor;
|
pthis->targetedActor = actor;
|
||||||
pthis->unk_684 = actor;
|
pthis->unk_684 = actor;
|
||||||
pthis->stateFlags1 |= 0x10000;
|
pthis->stateFlags1 |= 0x10000;
|
||||||
Camera_SetParam(Gameplay_GetCamera(globalCtx, 0), 8, actor);
|
Camera_SetParam(Gameplay_GetCamera(globalCtx, 0), 8, actor);
|
||||||
|
|
|
@ -279,7 +279,7 @@ void EnDekunuts_Wait(EnDekunuts* pthis, GlobalContext* globalCtx) {
|
||||||
if (hasSlowPlaybackSpeed &&
|
if (hasSlowPlaybackSpeed &&
|
||||||
((pthis->actor.xzDistToPlayer > 160.0f) && (fabsf(pthis->actor.yDistToPlayer) < 120.0f)) &&
|
((pthis->actor.xzDistToPlayer > 160.0f) && (fabsf(pthis->actor.yDistToPlayer) < 120.0f)) &&
|
||||||
((pthis->animFlagAndTimer == 0) || (pthis->actor.xzDistToPlayer < 480.0f))) {
|
((pthis->animFlagAndTimer == 0) || (pthis->actor.xzDistToPlayer < 480.0f))) {
|
||||||
pthis->skelAnime.playSpeed = 1.0f;
|
pthis->skelAnime.playSpeed = 1.0f * FRAMERATE_SCALER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,6 +312,12 @@ void EnDekunuts_Stand(EnDekunuts* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if FRAME_RATE == 20
|
||||||
|
#define DEKU_NUT_SPAWN_SCALER 1.0f
|
||||||
|
#else
|
||||||
|
#define DEKU_NUT_SPAWN_SCALER 1.2f
|
||||||
|
#endif
|
||||||
|
|
||||||
void EnDekunuts_ThrowNut(EnDekunuts* pthis, GlobalContext* globalCtx) {
|
void EnDekunuts_ThrowNut(EnDekunuts* pthis, GlobalContext* globalCtx) {
|
||||||
Vec3f spawnPos;
|
Vec3f spawnPos;
|
||||||
|
|
||||||
|
@ -319,9 +325,9 @@ void EnDekunuts_ThrowNut(EnDekunuts* pthis, GlobalContext* globalCtx) {
|
||||||
if (SkelAnime_Update(&pthis->skelAnime)) {
|
if (SkelAnime_Update(&pthis->skelAnime)) {
|
||||||
EnDekunuts_SetupStand(pthis);
|
EnDekunuts_SetupStand(pthis);
|
||||||
} else if (Animation_OnFrame(&pthis->skelAnime, 6.0f)) {
|
} else if (Animation_OnFrame(&pthis->skelAnime, 6.0f)) {
|
||||||
spawnPos.x = pthis->actor.world.pos.x + (Math_SinS(pthis->actor.shape.rot.y) * 23.0f);
|
spawnPos.x = pthis->actor.world.pos.x + (Math_SinS(pthis->actor.shape.rot.y) * 23.0f * DEKU_NUT_SPAWN_SCALER);
|
||||||
spawnPos.y = pthis->actor.world.pos.y + 12.0f;
|
spawnPos.y = pthis->actor.world.pos.y + 12.0f;
|
||||||
spawnPos.z = pthis->actor.world.pos.z + (Math_CosS(pthis->actor.shape.rot.y) * 23.0f);
|
spawnPos.z = pthis->actor.world.pos.z + (Math_CosS(pthis->actor.shape.rot.y) * 23.0f * DEKU_NUT_SPAWN_SCALER);
|
||||||
if (Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_NUTSBALL, spawnPos.x, spawnPos.y, spawnPos.z,
|
if (Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_NUTSBALL, spawnPos.x, spawnPos.y, spawnPos.z,
|
||||||
pthis->actor.shape.rot.x, pthis->actor.shape.rot.y, pthis->actor.shape.rot.z, 0) != NULL) {
|
pthis->actor.shape.rot.x, pthis->actor.shape.rot.y, pthis->actor.shape.rot.z, 0) != NULL) {
|
||||||
Audio_PlayActorSound2(&pthis->actor, NA_SE_EN_NUTS_THROW);
|
Audio_PlayActorSound2(&pthis->actor, NA_SE_EN_NUTS_THROW);
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct EnDekunuts {
|
||||||
/* 0x014C */ SkelAnime skelAnime;
|
/* 0x014C */ SkelAnime skelAnime;
|
||||||
/* 0x0190 */ EnDekunutsActionFunc actionFunc;
|
/* 0x0190 */ EnDekunutsActionFunc actionFunc;
|
||||||
/* 0x0194 */ u8 playWalkSound;
|
/* 0x0194 */ u8 playWalkSound;
|
||||||
/* 0x0195 */ u8 runAwayCount;
|
/* 0x0195 */ Timer runAwayCount;
|
||||||
/* 0x0196 */ Timer animFlagAndTimer;
|
/* 0x0196 */ Timer animFlagAndTimer;
|
||||||
/* 0x0198 */ s16 runDirection;
|
/* 0x0198 */ s16 runDirection;
|
||||||
/* 0x019A */ s16 shotsPerRound;
|
/* 0x019A */ s16 shotsPerRound;
|
||||||
|
|
|
@ -1057,11 +1057,11 @@ void func_80A04414(EnElf* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthis->fairyFlags & 1) {
|
if (pthis->fairyFlags & 1) {
|
||||||
if ((arrowPointedActor == NULL) || (player->unk_664 == NULL)) {
|
if ((arrowPointedActor == NULL) || (player->targetedActor == NULL)) {
|
||||||
pthis->fairyFlags ^= 1;
|
pthis->fairyFlags ^= 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((arrowPointedActor != NULL) && (player->unk_664 != NULL)) {
|
if ((arrowPointedActor != NULL) && (player->targetedActor != NULL)) {
|
||||||
if (arrowPointedActor->category == ACTORCAT_NPC) {
|
if (arrowPointedActor->category == ACTORCAT_NPC) {
|
||||||
targetSound = NA_SE_VO_NAVY_HELLO;
|
targetSound = NA_SE_VO_NAVY_HELLO;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1240,7 +1240,7 @@ void func_80A04DE4(EnElf* pthis, GlobalContext* globalCtx) {
|
||||||
if (pthis->fairyFlags & 0x10) {
|
if (pthis->fairyFlags & 0x10) {
|
||||||
naviRefPos = globalCtx->actorCtx.targetCtx.naviRefPos;
|
naviRefPos = globalCtx->actorCtx.targetCtx.naviRefPos;
|
||||||
|
|
||||||
if ((player->unk_664 == NULL) || (&player->actor == player->unk_664) || (&pthis->actor == player->unk_664)) {
|
if ((player->targetedActor == NULL) || (&player->actor == player->targetedActor) || (&pthis->actor == player->targetedActor)) {
|
||||||
naviRefPos.x = player->bodyPartsPos[7].x + (Math_SinS(player->actor.shape.rot.y) * 20.0f);
|
naviRefPos.x = player->bodyPartsPos[7].x + (Math_SinS(player->actor.shape.rot.y) * 20.0f);
|
||||||
naviRefPos.y = player->bodyPartsPos[7].y + 5.0f;
|
naviRefPos.y = player->bodyPartsPos[7].y + 5.0f;
|
||||||
naviRefPos.z = player->bodyPartsPos[7].z + (Math_CosS(player->actor.shape.rot.y) * 20.0f);
|
naviRefPos.z = player->bodyPartsPos[7].z + (Math_CosS(player->actor.shape.rot.y) * 20.0f);
|
||||||
|
@ -1391,7 +1391,7 @@ void func_80A053F0(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
EnElf* pthis = (EnElf*)thisx;
|
EnElf* pthis = (EnElf*)thisx;
|
||||||
|
|
||||||
if (player->naviTextId == 0) {
|
if (player->naviTextId == 0) {
|
||||||
if (player->unk_664 == NULL) {
|
if (player->targetedActor == NULL) {
|
||||||
if (((gSaveContext.naviTimer >= 600) && (gSaveContext.naviTimer <= 3000)) || (nREG(89) != 0)) {
|
if (((gSaveContext.naviTimer >= 600) && (gSaveContext.naviTimer <= 3000)) || (nREG(89) != 0)) {
|
||||||
player->naviTextId = ElfMessage_GetCUpText(globalCtx);
|
player->naviTextId = ElfMessage_GetCUpText(globalCtx);
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "z_en_ge1.h"
|
#include "z_en_ge1.h"
|
||||||
#include "vt.h"
|
#include "vt.h"
|
||||||
#include "objects/object_ge1/object_ge1.h"
|
#include "objects/object_ge1/object_ge1.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "def/sys_matrix.h"
|
#include "def/sys_matrix.h"
|
||||||
#include "def/z_actor.h"
|
#include "def/z_actor.h"
|
||||||
#include "def/z_collision_check.h"
|
#include "def/z_collision_check.h"
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "z_en_in.h"
|
#include "z_en_in.h"
|
||||||
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
|
#include "overlays/actors/ovl_En_Horse/z_en_horse.h"
|
||||||
#include "objects/object_in/object_in.h"
|
#include "objects/object_in/object_in.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "def/audio.h"
|
#include "def/audio.h"
|
||||||
#include "def/audio_bank.h"
|
#include "def/audio_bank.h"
|
||||||
#include "def/random.h"
|
#include "def/random.h"
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "z_en_ma3.h"
|
#include "z_en_ma3.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "objects/object_ma2/object_ma2.h"
|
#include "objects/object_ma2/object_ma2.h"
|
||||||
#include "def/audio.h"
|
#include "def/audio.h"
|
||||||
#include "def/sys_matrix.h"
|
#include "def/sys_matrix.h"
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "z_en_po_field.h"
|
#include "z_en_po_field.h"
|
||||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||||
#include "objects/object_po_field/object_po_field.h"
|
#include "objects/object_po_field/object_po_field.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "def/audio_bank.h"
|
#include "def/audio_bank.h"
|
||||||
#include "def/random.h"
|
#include "def/random.h"
|
||||||
#include "def/sys_matrix.h"
|
#include "def/sys_matrix.h"
|
||||||
|
|
|
@ -1229,7 +1229,7 @@ void EnWf_Die(EnWf* pthis, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
pthis->actionTimer--;
|
pthis->actionTimer--;
|
||||||
|
|
||||||
for (i = ((s32)pthis->skelAnime.animLength - pthis->actionTimer) >> 1; i >= 0; i--) {
|
for (i = ((s32)(pthis->skelAnime.animLength - pthis->actionTimer)) >> 1; i >= 0; i--) {
|
||||||
pos.x = Rand_CenteredFloat(60.0f) + pthis->actor.world.pos.x;
|
pos.x = Rand_CenteredFloat(60.0f) + pthis->actor.world.pos.x;
|
||||||
pos.z = Rand_CenteredFloat(60.0f) + pthis->actor.world.pos.z;
|
pos.z = Rand_CenteredFloat(60.0f) + pthis->actor.world.pos.z;
|
||||||
pos.y = Rand_CenteredFloat(50.0f) + (pthis->actor.world.pos.y + 20.0f);
|
pos.y = Rand_CenteredFloat(50.0f) + (pthis->actor.world.pos.y + 20.0f);
|
||||||
|
|
|
@ -564,7 +564,7 @@ s32 EnZf_CanAttack(GlobalContext* globalCtx, EnZf* pthis) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (pthis->actor.params == ENZF_TYPE_DINOLFOS) {
|
if (pthis->actor.params == ENZF_TYPE_DINOLFOS) {
|
||||||
targetedActor = player->unk_664;
|
targetedActor = player->targetedActor;
|
||||||
if (targetedActor == NULL) {
|
if (targetedActor == NULL) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "z_player.h"
|
#include "z_player.h"
|
||||||
#include "framerate.h"
|
#include "framerate.h"
|
||||||
#include "z_scene_table.h"
|
#include "z_scene_table.h"
|
||||||
|
#include "player_state.h"
|
||||||
#include "hack.h"
|
#include "hack.h"
|
||||||
#include "port/controller/controller.h"
|
#include "port/controller/controller.h"
|
||||||
#include "port/options.h"
|
#include "port/options.h"
|
||||||
|
@ -1791,7 +1792,7 @@ s32 func_80833B2C(Player* pthis) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_80833B54(Player* pthis) {
|
s32 func_80833B54(Player* pthis) {
|
||||||
if ((pthis->unk_664 != NULL) && CHECK_FLAG_ALL(pthis->unk_664->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
if ((pthis->targetedActor != NULL) && CHECK_FLAG_ALL(pthis->targetedActor->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
||||||
pthis->stateFlags1 |= 0x10;
|
pthis->stateFlags1 |= 0x10;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2542,14 +2543,14 @@ s32 func_808359FC(Player* pthis, GlobalContext* globalCtx) {
|
||||||
} else if (LinkAnimation_OnFrame(&pthis->skelAnime2, 6.0f)) {
|
} else if (LinkAnimation_OnFrame(&pthis->skelAnime2, 6.0f)) {
|
||||||
f32 posX = (Math_SinS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.x;
|
f32 posX = (Math_SinS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.x;
|
||||||
f32 posZ = (Math_CosS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.z;
|
f32 posZ = (Math_CosS(pthis->actor.shape.rot.y) * 10.0f) + pthis->actor.world.pos.z;
|
||||||
s32 yaw = (pthis->unk_664 != NULL) ? pthis->actor.shape.rot.y + 14000 : (float)pthis->actor.shape.rot.y;
|
s32 yaw = (pthis->targetedActor != NULL) ? pthis->actor.shape.rot.y + 14000 : (float)pthis->actor.shape.rot.y;
|
||||||
EnBoom* boomerang =
|
EnBoom* boomerang =
|
||||||
(EnBoom*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_BOOM, posX, pthis->actor.world.pos.y + 30.0f,
|
(EnBoom*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_BOOM, posX, pthis->actor.world.pos.y + 30.0f,
|
||||||
posZ, pthis->actor.focus.rot.x, yaw, 0, 0);
|
posZ, pthis->actor.focus.rot.x, yaw, 0, 0);
|
||||||
|
|
||||||
pthis->boomerangActor = &boomerang->actor;
|
pthis->boomerangActor = &boomerang->actor;
|
||||||
if (boomerang != NULL) {
|
if (boomerang != NULL) {
|
||||||
boomerang->moveTo = pthis->unk_664;
|
boomerang->moveTo = pthis->targetedActor;
|
||||||
boomerang->returnTimer = 20;
|
boomerang->returnTimer = 20;
|
||||||
pthis->stateFlags1 |= 0x2000000;
|
pthis->stateFlags1 |= 0x2000000;
|
||||||
if (!func_8008E9C4(pthis)) {
|
if (!func_8008E9C4(pthis)) {
|
||||||
|
@ -2968,10 +2969,10 @@ void func_808368EC(Player* pthis, GlobalContext* globalCtx) {
|
||||||
s16 previousYaw = pthis->actor.shape.rot.y;
|
s16 previousYaw = pthis->actor.shape.rot.y;
|
||||||
|
|
||||||
if (!(pthis->stateFlags2 & 0x60)) {
|
if (!(pthis->stateFlags2 & 0x60)) {
|
||||||
if ((pthis->unk_664 != NULL) &&
|
if ((pthis->targetedActor != NULL) &&
|
||||||
((globalCtx->actorCtx.targetCtx.unk_4B != 0) || (pthis->actor.category != ACTORCAT_PLAYER))) {
|
((globalCtx->actorCtx.targetCtx.unk_4B != 0) || (pthis->actor.category != ACTORCAT_PLAYER))) {
|
||||||
Math_ScaledStepToS(&pthis->actor.shape.rot.y,
|
Math_ScaledStepToS(&pthis->actor.shape.rot.y,
|
||||||
Math_Vec3f_Yaw(&pthis->actor.world.pos, &pthis->unk_664->focus.pos), 4000);
|
Math_Vec3f_Yaw(&pthis->actor.world.pos, &pthis->targetedActor->focus.pos), 4000);
|
||||||
} else if ((pthis->stateFlags1 & 0x20000) && !(pthis->stateFlags2 & 0x60)) {
|
} else if ((pthis->stateFlags1 & 0x20000) && !(pthis->stateFlags2 & 0x60)) {
|
||||||
Math_ScaledStepToS(&pthis->actor.shape.rot.y, pthis->targetYaw, 4000);
|
Math_ScaledStepToS(&pthis->actor.shape.rot.y, pthis->targetYaw, 4000);
|
||||||
}
|
}
|
||||||
|
@ -3041,7 +3042,7 @@ void func_80836BEC(Player* pthis, GlobalContext* globalCtx) {
|
||||||
if ((globalCtx->csCtx.state != CS_STATE_IDLE) || (pthis->csMode != 0) || (pthis->stateFlags1 & 0x20000080) ||
|
if ((globalCtx->csCtx.state != CS_STATE_IDLE) || (pthis->csMode != 0) || (pthis->stateFlags1 & 0x20000080) ||
|
||||||
(pthis->stateFlags3 & 0x80)) {
|
(pthis->stateFlags3 & 0x80)) {
|
||||||
pthis->unk_66C = 0;
|
pthis->unk_66C = 0;
|
||||||
} else if (zTrigPressed || (pthis->stateFlags2 & 0x2000) || (pthis->unk_684 != NULL)) {
|
} else if (zTrigPressed || (pthis->stateFlags2 & PLAYER_STATE2_ZTARGET_CHANGED) || (pthis->unk_684 != NULL)) {
|
||||||
if (pthis->unk_66C <= 5) {
|
if (pthis->unk_66C <= 5) {
|
||||||
pthis->unk_66C = 5;
|
pthis->unk_66C = 5;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3074,20 +3075,20 @@ void func_80836BEC(Player* pthis, GlobalContext* globalCtx) {
|
||||||
pthis->stateFlags1 |= 0x8000;
|
pthis->stateFlags1 |= 0x8000;
|
||||||
|
|
||||||
if ((actorToTarget != NULL) && !(actorToTarget->flags & ACTOR_FLAG_27)) {
|
if ((actorToTarget != NULL) && !(actorToTarget->flags & ACTOR_FLAG_27)) {
|
||||||
if ((actorToTarget == pthis->unk_664) && (pthis->actor.category == ACTORCAT_PLAYER)) {
|
if ((actorToTarget == pthis->targetedActor) && (pthis->actor.category == ACTORCAT_PLAYER)) {
|
||||||
actorToTarget = globalCtx->actorCtx.targetCtx.unk_94;
|
actorToTarget = globalCtx->actorCtx.targetCtx.unk_94;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (actorToTarget != pthis->unk_664) {
|
if (actorToTarget != pthis->targetedActor) {
|
||||||
if (!holdTarget) {
|
if (!holdTarget) {
|
||||||
pthis->stateFlags2 |= 0x2000;
|
pthis->stateFlags2 |= PLAYER_STATE2_ZTARGET_CHANGED;
|
||||||
}
|
}
|
||||||
pthis->unk_664 = actorToTarget;
|
pthis->targetedActor = actorToTarget;
|
||||||
pthis->unk_66C = 15;
|
pthis->unk_66C = 15;
|
||||||
pthis->stateFlags2 &= ~0x200002;
|
pthis->stateFlags2 &= ~0x200002;
|
||||||
} else {
|
} else {
|
||||||
if (!holdTarget) {
|
if (!holdTarget) {
|
||||||
func_8008EDF0(pthis);
|
Player_ClearZTarget(pthis);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3099,27 +3100,27 @@ void func_80836BEC(Player* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
if ((pthis->actor.category == ACTORCAT_PLAYER) && (pthis->unk_664 != pthis->unk_684) &&
|
if ((pthis->actor.category == ACTORCAT_PLAYER) && (pthis->targetedActor != pthis->unk_684) &&
|
||||||
func_8002F0C8(pthis->unk_664, pthis, sp1C)) {
|
func_8002F0C8(pthis->targetedActor, pthis, sp1C)) {
|
||||||
func_8008EDF0(pthis);
|
Player_ClearZTarget(pthis);
|
||||||
pthis->stateFlags1 |= 0x40000000;
|
pthis->stateFlags1 |= 0x40000000;
|
||||||
} else if (pthis->unk_664 != NULL) {
|
} else if (pthis->targetedActor != NULL) {
|
||||||
pthis->unk_664->targetPriority = 40;
|
pthis->targetedActor->targetPriority = 40;
|
||||||
}
|
}
|
||||||
} else if (pthis->unk_684 != NULL) {
|
} else if (pthis->unk_684 != NULL) {
|
||||||
pthis->unk_664 = pthis->unk_684;
|
pthis->targetedActor = pthis->unk_684;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
pthis->stateFlags1 &= ~0x30000;
|
pthis->stateFlags1 &= ~0x30000;
|
||||||
if ((pthis->stateFlags1 & 0x800) || !CHECK_FLAG_ALL(pthis->unk_664->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
if ((pthis->stateFlags1 & 0x800) || !CHECK_FLAG_ALL(pthis->targetedActor->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
||||||
pthis->stateFlags1 |= 0x10000;
|
pthis->stateFlags1 |= 0x10000;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pthis->stateFlags1 & 0x20000) {
|
if (pthis->stateFlags1 & 0x20000) {
|
||||||
pthis->stateFlags2 &= ~0x2000;
|
pthis->stateFlags2 &= ~PLAYER_STATE2_ZTARGET_CHANGED;
|
||||||
} else {
|
} else {
|
||||||
func_8008EE08(pthis);
|
func_8008EE08(pthis);
|
||||||
}
|
}
|
||||||
|
@ -3184,9 +3185,9 @@ s32 func_80837268(Player* pthis, f32* arg1, s16* arg2, f32 arg3, GlobalContext*
|
||||||
if (!func_80836FAC(globalCtx, pthis, arg1, arg2, arg3)) {
|
if (!func_80836FAC(globalCtx, pthis, arg1, arg2, arg3)) {
|
||||||
*arg2 = pthis->actor.shape.rot.y;
|
*arg2 = pthis->actor.shape.rot.y;
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
if ((globalCtx->actorCtx.targetCtx.unk_4B != 0) && !(pthis->stateFlags2 & 0x40)) {
|
if ((globalCtx->actorCtx.targetCtx.unk_4B != 0) && !(pthis->stateFlags2 & 0x40)) {
|
||||||
*arg2 = Math_Vec3f_Yaw(&pthis->actor.world.pos, &pthis->unk_664->focus.pos);
|
*arg2 = Math_Vec3f_Yaw(&pthis->actor.world.pos, &pthis->targetedActor->focus.pos);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (func_80833B2C(pthis)) {
|
} else if (func_80833B2C(pthis)) {
|
||||||
|
@ -4451,7 +4452,7 @@ void func_8083A2F8(GlobalContext* globalCtx, Player* pthis) {
|
||||||
|
|
||||||
if (pthis->actor.textId != 0) {
|
if (pthis->actor.textId != 0) {
|
||||||
Message_StartTextbox(globalCtx, pthis->actor.textId, pthis->targetActor);
|
Message_StartTextbox(globalCtx, pthis->actor.textId, pthis->targetActor);
|
||||||
pthis->unk_664 = pthis->targetActor;
|
pthis->targetedActor = pthis->targetActor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4824,7 +4825,7 @@ s32 func_8083B040(Player* pthis, GlobalContext* globalCtx) {
|
||||||
pthis->unk_84F = -1;
|
pthis->unk_84F = -1;
|
||||||
}
|
}
|
||||||
targetActor->flags |= ACTOR_FLAG_8;
|
targetActor->flags |= ACTOR_FLAG_8;
|
||||||
pthis->unk_664 = pthis->targetActor;
|
pthis->targetedActor = pthis->targetActor;
|
||||||
} else if (sp2C == EXCH_ITEM_LETTER_RUTO) {
|
} else if (sp2C == EXCH_ITEM_LETTER_RUTO) {
|
||||||
pthis->unk_84F = 1;
|
pthis->unk_84F = 1;
|
||||||
pthis->actor.textId = 0x4005;
|
pthis->actor.textId = 0x4005;
|
||||||
|
@ -4902,7 +4903,7 @@ s32 func_8083B040(Player* pthis, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
s32 func_8083B644(Player* pthis, GlobalContext* globalCtx) {
|
s32 func_8083B644(Player* pthis, GlobalContext* globalCtx) {
|
||||||
Actor* sp34 = pthis->targetActor;
|
Actor* sp34 = pthis->targetActor;
|
||||||
Actor* sp30 = pthis->unk_664;
|
Actor* sp30 = pthis->targetedActor;
|
||||||
Actor* sp2C = NULL;
|
Actor* sp2C = NULL;
|
||||||
s32 sp28 = 0;
|
s32 sp28 = 0;
|
||||||
s32 sp24;
|
s32 sp24;
|
||||||
|
@ -4993,8 +4994,8 @@ s32 func_8083B998(Player* pthis, GlobalContext* globalCtx) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pthis->unk_664 != NULL) &&
|
if ((pthis->targetedActor != NULL) &&
|
||||||
(CHECK_FLAG_ALL(pthis->unk_664->flags, ACTOR_FLAG_0 | ACTOR_FLAG_18) || (pthis->unk_664->naviEnemyId != 0xFF))) {
|
(CHECK_FLAG_ALL(pthis->targetedActor->flags, ACTOR_FLAG_0 | ACTOR_FLAG_18) || (pthis->targetedActor->naviEnemyId != 0xFF))) {
|
||||||
pthis->stateFlags2 |= 0x200000;
|
pthis->stateFlags2 |= 0x200000;
|
||||||
} else if ((pthis->naviTextId == 0) && !func_8008E9C4(pthis) && CHECK_BTN_ALL(sControlInput->press.button, BTN_CUP) &&
|
} else if ((pthis->naviTextId == 0) && !func_8008E9C4(pthis) && CHECK_BTN_ALL(sControlInput->press.button, BTN_CUP) &&
|
||||||
(YREG(15) != 0x10) && (YREG(15) != 0x20) && !func_8083B8F4(pthis, globalCtx)) {
|
(YREG(15) != 0x10) && (YREG(15) != 0x20) && !func_8083B8F4(pthis, globalCtx)) {
|
||||||
|
@ -5184,7 +5185,7 @@ s32 func_8083C2B0(Player* pthis, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
if ((globalCtx->shootingGalleryStatus == 0) && (pthis->currentShield != PLAYER_SHIELD_NONE) &&
|
if ((globalCtx->shootingGalleryStatus == 0) && (pthis->currentShield != PLAYER_SHIELD_NONE) &&
|
||||||
CHECK_BTN_ALL(sControlInput->cur.button, BTN_R) &&
|
CHECK_BTN_ALL(sControlInput->cur.button, BTN_R) &&
|
||||||
(Player_IsChildWithHylianShield(pthis) || (!func_80833B2C(pthis) && (pthis->unk_664 == NULL)))) {
|
(Player_IsChildWithHylianShield(pthis) || (!func_80833B2C(pthis) && (pthis->targetedActor == NULL)))) {
|
||||||
|
|
||||||
func_80832318(pthis);
|
func_80832318(pthis);
|
||||||
func_808323B4(globalCtx, pthis);
|
func_808323B4(globalCtx, pthis);
|
||||||
|
@ -5725,7 +5726,7 @@ void func_8083D6EC(GlobalContext* globalCtx, Player* pthis) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_8083DB98(Player* pthis, s32 arg1) {
|
s32 func_8083DB98(Player* pthis, s32 arg1) {
|
||||||
Actor* unk_664 = pthis->unk_664;
|
Actor* unk_664 = pthis->targetedActor;
|
||||||
Vec3f sp30;
|
Vec3f sp30;
|
||||||
s16 sp2E;
|
s16 sp2E;
|
||||||
s16 sp2C;
|
s16 sp2C;
|
||||||
|
@ -5750,7 +5751,7 @@ void func_8083DC54(Player* pthis, GlobalContext* globalCtx) {
|
||||||
f32 temp1;
|
f32 temp1;
|
||||||
Vec3f sp34;
|
Vec3f sp34;
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
if (func_8002DD78(pthis) || func_808334B4(pthis)) {
|
if (func_8002DD78(pthis) || func_808334B4(pthis)) {
|
||||||
func_8083DB98(pthis, 1);
|
func_8083DB98(pthis, 1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -6462,7 +6463,7 @@ s32 func_8083FC68(Player* pthis, f32 arg1, s16 arg2) {
|
||||||
f32 sp1C = (s16)(arg2 - pthis->actor.shape.rot.y);
|
f32 sp1C = (s16)(arg2 - pthis->actor.shape.rot.y);
|
||||||
f32 temp;
|
f32 temp;
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
func_8083DB98(pthis, func_8002DD78(pthis) || func_808334B4(pthis));
|
func_8083DB98(pthis, func_8002DD78(pthis) || func_808334B4(pthis));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6481,7 +6482,7 @@ s32 func_8083FD78(Player* pthis, f32* arg1, s16* arg2, GlobalContext* globalCtx)
|
||||||
s16 sp2E = *arg2 - pthis->targetYaw;
|
s16 sp2E = *arg2 - pthis->targetYaw;
|
||||||
u16 sp2C = ABS(sp2E);
|
u16 sp2C = ABS(sp2E);
|
||||||
|
|
||||||
if ((func_8002DD78(pthis) || func_808334B4(pthis)) && (pthis->unk_664 == NULL)) {
|
if ((func_8002DD78(pthis) || func_808334B4(pthis)) && (pthis->targetedActor == NULL)) {
|
||||||
*arg1 *= Math_SinS(sp2C);
|
*arg1 *= Math_SinS(sp2C);
|
||||||
|
|
||||||
if (*arg1 != 0.0f) {
|
if (*arg1 != 0.0f) {
|
||||||
|
@ -6490,14 +6491,14 @@ s32 func_8083FD78(Player* pthis, f32* arg1, s16* arg2, GlobalContext* globalCtx)
|
||||||
*arg2 = pthis->actor.shape.rot.y;
|
*arg2 = pthis->actor.shape.rot.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
func_8083DB98(pthis, 1);
|
func_8083DB98(pthis, 1);
|
||||||
} else {
|
} else {
|
||||||
Math_SmoothStepToS(&pthis->actor.focus.rot.x, sControlInput->rel.stick_y * 240.0f, 14, 4000, 30);
|
Math_SmoothStepToS(&pthis->actor.focus.rot.x, sControlInput->rel.stick_y * 240.0f, 14, 4000, 30);
|
||||||
func_80836AB8(pthis, 1);
|
func_80836AB8(pthis, 1);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
return func_8083FC68(pthis, *arg1, *arg2);
|
return func_8083FC68(pthis, *arg1, *arg2);
|
||||||
} else {
|
} else {
|
||||||
func_8083DC54(pthis, globalCtx);
|
func_8083DC54(pthis, globalCtx);
|
||||||
|
@ -6765,7 +6766,7 @@ void func_808409CC(GlobalContext* globalCtx, Player* pthis) {
|
||||||
s32 sp38;
|
s32 sp38;
|
||||||
s32 sp34;
|
s32 sp34;
|
||||||
|
|
||||||
if ((pthis->unk_664 != NULL) ||
|
if ((pthis->targetedActor != NULL) ||
|
||||||
(!(heathIsCritical = HealthMeter_IsCritical()) && ((pthis->unk_6AC = (pthis->unk_6AC + 1) & 1) != 0))) {
|
(!(heathIsCritical = HealthMeter_IsCritical()) && ((pthis->unk_6AC = (pthis->unk_6AC + 1) & 1) != 0))) {
|
||||||
pthis->stateFlags2 &= ~0x10000000;
|
pthis->stateFlags2 &= ~0x10000000;
|
||||||
anim = func_80833338(pthis);
|
anim = func_80833338(pthis);
|
||||||
|
@ -9385,7 +9386,7 @@ void func_808473D4(GlobalContext* globalCtx, Player* pthis) {
|
||||||
Interface_SetDoAction(globalCtx, doAction);
|
Interface_SetDoAction(globalCtx, doAction);
|
||||||
|
|
||||||
if (pthis->stateFlags2 & 0x200000) {
|
if (pthis->stateFlags2 & 0x200000) {
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
Interface_SetNaviCall(globalCtx, 0x1E);
|
Interface_SetNaviCall(globalCtx, 0x1E);
|
||||||
} else {
|
} else {
|
||||||
Interface_SetNaviCall(globalCtx, 0x1D);
|
Interface_SetNaviCall(globalCtx, 0x1D);
|
||||||
|
@ -9707,7 +9708,7 @@ void Player_UpdateCamAndSeqModes(GlobalContext* globalCtx, Player* pthis) {
|
||||||
camMode = CAM_MODE_STILL;
|
camMode = CAM_MODE_STILL;
|
||||||
} else if (pthis->stateFlags2 & 0x100) {
|
} else if (pthis->stateFlags2 & 0x100) {
|
||||||
camMode = CAM_MODE_PUSHPULL;
|
camMode = CAM_MODE_PUSHPULL;
|
||||||
} else if ((unk_664 = pthis->unk_664) != NULL) {
|
} else if ((unk_664 = pthis->targetedActor) != NULL) {
|
||||||
if (CHECK_FLAG_ALL(pthis->actor.flags, ACTOR_FLAG_8)) {
|
if (CHECK_FLAG_ALL(pthis->actor.flags, ACTOR_FLAG_8)) {
|
||||||
camMode = CAM_MODE_TALK;
|
camMode = CAM_MODE_TALK;
|
||||||
} else if (pthis->stateFlags1 & 0x10000) {
|
} else if (pthis->stateFlags1 & 0x10000) {
|
||||||
|
@ -10194,7 +10195,7 @@ void Player_UpdateCommon(Player* pthis, GlobalContext* globalCtx, Input* input)
|
||||||
|
|
||||||
func_8083D6EC(globalCtx, pthis);
|
func_8083D6EC(globalCtx, pthis);
|
||||||
|
|
||||||
if ((pthis->unk_664 == NULL) && (pthis->naviTextId == 0)) {
|
if ((pthis->targetedActor == NULL) && (pthis->naviTextId == 0)) {
|
||||||
pthis->stateFlags2 &= ~0x200002;
|
pthis->stateFlags2 &= ~0x200002;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10706,7 +10707,7 @@ void func_8084B1D8(Player* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pthis->csMode != 0) || (pthis->unk_6AD == 0) || (pthis->unk_6AD >= 4) || func_80833B54(pthis) ||
|
if ((pthis->csMode != 0) || (pthis->unk_6AD == 0) || (pthis->unk_6AD >= 4) || func_80833B54(pthis) ||
|
||||||
(pthis->unk_664 != NULL) || !func_8083AD4C(globalCtx, pthis) ||
|
(pthis->targetedActor != NULL) || !func_8083AD4C(globalCtx, pthis) ||
|
||||||
(((pthis->unk_6AD == 2) && (CHECK_BTN_ANY(sControlInput->press.button, BTN_A | BTN_B | BTN_R) ||
|
(((pthis->unk_6AD == 2) && (CHECK_BTN_ANY(sControlInput->press.button, BTN_A | BTN_B | BTN_R) ||
|
||||||
func_80833B2C(pthis) || (!func_8002DD78(pthis) && !func_808334B4(pthis)))) ||
|
func_80833B2C(pthis) || (!func_8002DD78(pthis) && !func_808334B4(pthis)))) ||
|
||||||
((pthis->unk_6AD == 1) &&
|
((pthis->unk_6AD == 1) &&
|
||||||
|
@ -10770,7 +10771,7 @@ void func_8084B530(Player* pthis, GlobalContext* globalCtx) {
|
||||||
pthis->actor.flags &= ~ACTOR_FLAG_8;
|
pthis->actor.flags &= ~ACTOR_FLAG_8;
|
||||||
|
|
||||||
if (!CHECK_FLAG_ALL(pthis->targetActor->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
if (!CHECK_FLAG_ALL(pthis->targetActor->flags, ACTOR_FLAG_0 | ACTOR_FLAG_2)) {
|
||||||
pthis->stateFlags2 &= ~0x2000;
|
pthis->stateFlags2 &= ~PLAYER_STATE2_ZTARGET_CHANGED;
|
||||||
}
|
}
|
||||||
|
|
||||||
func_8005B1A4(Gameplay_GetCamera(globalCtx, 0));
|
func_8005B1A4(Gameplay_GetCamera(globalCtx, 0));
|
||||||
|
@ -10811,7 +10812,7 @@ void func_8084B530(Player* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
pthis->currentYaw = pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
pthis->currentYaw = pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11547,7 +11548,7 @@ void func_8084CC98(Player* pthis, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pthis->csMode != 0) || (!func_8084C9BC(pthis, globalCtx) && !func_8083B040(pthis, globalCtx))) {
|
if ((pthis->csMode != 0) || (!func_8084C9BC(pthis, globalCtx) && !func_8083B040(pthis, globalCtx))) {
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
if (func_8002DD78(pthis) != 0) {
|
if (func_8002DD78(pthis) != 0) {
|
||||||
pthis->unk_6BE = func_8083DB98(pthis, 1) - pthis->actor.shape.rot.y;
|
pthis->unk_6BE = func_8083DB98(pthis, 1) - pthis->actor.shape.rot.y;
|
||||||
pthis->unk_6BE = CLAMP(pthis->unk_6BE, -0x4AAA, 0x4AAA);
|
pthis->unk_6BE = CLAMP(pthis->unk_6BE, -0x4AAA, 0x4AAA);
|
||||||
|
@ -12361,7 +12362,7 @@ void func_8084F104(Player* pthis, GlobalContext* globalCtx) {
|
||||||
func_80832924(pthis, D_80854A3C);
|
func_80832924(pthis, D_80854A3C);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((pthis->unk_84F == 0) && (pthis->unk_664 != NULL)) {
|
if ((pthis->unk_84F == 0) && (pthis->targetedActor != NULL)) {
|
||||||
pthis->currentYaw = pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
pthis->currentYaw = pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13389,9 +13390,9 @@ void func_80851314(Player* pthis) {
|
||||||
pthis->unk_448 = NULL;
|
pthis->unk_448 = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthis->unk_664 = pthis->unk_448;
|
pthis->targetedActor = pthis->unk_448;
|
||||||
|
|
||||||
if (pthis->unk_664 != NULL) {
|
if (pthis->targetedActor != NULL) {
|
||||||
pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
pthis->actor.shape.rot.y = func_8083DB98(pthis, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,7 +178,7 @@ struct Player {
|
||||||
/* 0x0498 */ ColliderCylinder cylinder;
|
/* 0x0498 */ ColliderCylinder cylinder;
|
||||||
/* 0x04E4 */ ColliderQuad swordQuads[2];
|
/* 0x04E4 */ ColliderQuad swordQuads[2];
|
||||||
/* 0x05E4 */ ColliderQuad shieldQuad;
|
/* 0x05E4 */ ColliderQuad shieldQuad;
|
||||||
/* 0x0664 */ Actor* unk_664;
|
/* 0x0664 */ Actor* targetedActor;
|
||||||
/* 0x0668 */ char unk_668[0x004];
|
/* 0x0668 */ char unk_668[0x004];
|
||||||
/* 0x066C */ s32 unk_66C;
|
/* 0x066C */ s32 unk_66C;
|
||||||
/* 0x0670 */ s32 swordEffectIndex;
|
/* 0x0670 */ s32 swordEffectIndex;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user