mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-25 09:45:02 +00:00
[ntsc-1.0/1.1] Match actor changes introduced in NTSC 1.1 (#2251)
* [ntsc-1.0/1.1] Match actor changes introduced in NTSC 1.1 * SPHERE_DAMAGE -> FLARE_DANCER_BODY_DMG * Fix Actor_SetPlayerKnockbackLargeNoDamage merge
This commit is contained in:
parent
ed77e143b6
commit
37e72d7d95
17 changed files with 189 additions and 31 deletions
|
@ -7,11 +7,16 @@
|
|||
#include "z_bg_dy_yoseizo.h"
|
||||
#include "assets/objects/object_dy_obj/object_dy_obj.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h"
|
||||
#include "assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.h"
|
||||
#include "assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.h"
|
||||
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5)
|
||||
#else
|
||||
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_25)
|
||||
#endif
|
||||
|
||||
typedef enum BgDyYoseizoRewardType {
|
||||
/* 0 */ FAIRY_UPGRADE_MAGIC,
|
||||
|
@ -85,13 +90,30 @@ void BgDyYoseizo_Init(Actor* thisx, PlayState* play2) {
|
|||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 大妖精の泉 ☆☆☆☆☆ %d\n" VT_RST, play->spawn);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gGreatFairySkel, &gGreatFairySittingTransitionAnim,
|
||||
this->jointTable, this->morphTable, 28);
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if (!gSaveContext.save.info.playerData.isMagicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
// "Stone/Jewel Fairy Fountain"
|
||||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 石妖精の泉 ☆☆☆☆☆ %d\n" VT_RST, play->spawn);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gGreatFairySkel, &gGreatFairyLayingDownTransitionAnim,
|
||||
this->jointTable, this->morphTable, 28);
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if (!gSaveContext.save.info.playerData.isMagicAcquired) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
this->actionFunc = BgDyYoseizo_ChooseType;
|
||||
#else
|
||||
this->actionFunc = BgDyYoseizo_CheckMagicAcquired;
|
||||
#endif
|
||||
}
|
||||
|
||||
void BgDyYoseizo_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
@ -177,6 +199,7 @@ void BgDyYoseizo_Bob(BgDyYoseizo* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
|
||||
if (Flags_GetSwitch(play, 0x38)) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
|
@ -195,10 +218,22 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) {
|
|||
this->actionFunc = BgDyYoseizo_ChooseType;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) {
|
||||
s32 givingReward;
|
||||
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if (!Flags_GetSwitch(play, 0x38)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (play->msgCtx.ocarinaMode != OCARINA_MODE_04) {
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
// "Mode"
|
||||
PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ もうど ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode);
|
||||
|
@ -315,12 +350,16 @@ void BgDyYoseizo_SetupSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
|||
}
|
||||
|
||||
Actor_PlaySfx(&this->actor, NA_SE_VO_FR_LAUGH_0);
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
#endif
|
||||
this->actionFunc = BgDyYoseizo_SpinGrow_NoReward;
|
||||
}
|
||||
|
||||
void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
#endif
|
||||
Math_ApproachF(&this->actor.world.pos.y, this->grownHeight, this->heightFraction, 100.0f);
|
||||
Math_ApproachF(&this->scale, 0.035f, this->scaleFraction, 0.005f);
|
||||
Math_ApproachF(&this->heightFraction, 0.8f, 0.1f, 0.02f);
|
||||
|
@ -346,7 +385,9 @@ void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
|||
void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
#endif
|
||||
|
||||
if ((this->frameCount * 1273.0f) <= this->bobTimer) {
|
||||
this->bobTimer = 0.0f;
|
||||
|
@ -360,7 +401,9 @@ void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
#endif
|
||||
|
||||
if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) {
|
||||
this->frameCount = Animation_GetLastFrame(&gGreatFairySittingAnim);
|
||||
|
@ -380,7 +423,9 @@ void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void BgDyYoseizo_GreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) {
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1);
|
||||
#endif
|
||||
this->bobTimer = this->skelAnime.curFrame * 1273.0f;
|
||||
|
||||
if ((this->frameCount * 1273.0f) <= this->bobTimer) {
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "z_door_shutter.h"
|
||||
#include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h"
|
||||
#include "quake.h"
|
||||
#include "versions.h"
|
||||
|
||||
#include "assets/objects/object_gnd/object_gnd.h"
|
||||
#include "assets/objects/object_goma/object_goma.h"
|
||||
|
@ -225,14 +226,22 @@ typedef struct DoorShutterGfxInfo {
|
|||
} DoorShutterGfxInfo;
|
||||
|
||||
static DoorShutterGfxInfo sGfxInfo[] = {
|
||||
{ gDTDungeonDoor1DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_1
|
||||
{ gDTDungeonDoor2DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_2
|
||||
{ gDodongoDoorDL, gDodongoBarsDL, 240, 14, 70, 15 }, // DOORSHUTTER_GFX_DODONGOS_CAVERN
|
||||
{ gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 50, 15 }, // DOORSHUTTER_GFX_JABU_JABU
|
||||
{ gPhantomGanonBarsDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS
|
||||
{ gGohmaDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK
|
||||
{ gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE
|
||||
{ gBossDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR
|
||||
{ gDTDungeonDoor1DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_1
|
||||
{ gDTDungeonDoor2DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_2
|
||||
{ gDodongoDoorDL, gDodongoBarsDL, 240, 14, 70, 15 }, // DOORSHUTTER_GFX_DODONGOS_CAVERN
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
{ gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 70, 15 }, // DOORSHUTTER_GFX_JABU_JABU
|
||||
{ gPhantomGanonBarsDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS
|
||||
{ gGohmaDoorDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK
|
||||
{ gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE
|
||||
{ gBossDoorDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR
|
||||
#else
|
||||
{ gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 50, 15 }, // DOORSHUTTER_GFX_JABU_JABU
|
||||
{ gPhantomGanonBarsDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS
|
||||
{ gGohmaDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK
|
||||
{ gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE
|
||||
{ gBossDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR
|
||||
#endif
|
||||
{ gDungeonDoorDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_GENERIC
|
||||
{ gFireTempleDoorFrontDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_FIRE_TEMPLE_1
|
||||
{ gFireTempleDoorBackDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_FIRE_TEMPLE_2
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_attack_niw.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_niw/object_niw.h"
|
||||
#include "overlays/actors/ovl_En_Niw/z_en_niw.h"
|
||||
|
||||
|
@ -359,7 +360,13 @@ void EnAttackNiw_Update(Actor* thisx, PlayState* play) {
|
|||
if (this->actor.xyzDistToPlayerSq < SQ(tmpf1)) {
|
||||
cucco = (EnNiw*)this->actor.parent;
|
||||
if ((this->actor.parent->update != NULL) && (this->actor.parent != NULL) && (cucco != NULL) &&
|
||||
(cucco->timer9 == 0) && (player->invincibilityTimer == 0)) {
|
||||
(cucco->timer9 == 0) &&
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
!(player->stateFlags1 & PLAYER_STATE1_26)
|
||||
#else
|
||||
(player->invincibilityTimer == 0)
|
||||
#endif
|
||||
) {
|
||||
Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, this->actor.world.rot.y, 0.0f, 0x10);
|
||||
cucco->timer9 = 0x46;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_bili.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_bl/object_bl.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_14)
|
||||
|
@ -536,7 +537,12 @@ void EnBili_Frozen(EnBili* this, PlayState* play) {
|
|||
this->actor.gravity = -1.0f;
|
||||
}
|
||||
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) || (this->actor.floorHeight == BGCHECK_Y_MIN))
|
||||
#else
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN))
|
||||
#endif
|
||||
{
|
||||
this->actor.colorFilterTimer = 0;
|
||||
EnBili_SetupDie(this);
|
||||
} else {
|
||||
|
|
|
@ -243,13 +243,20 @@ void EnDha_Wait(EnDha* this, PlayState* play) {
|
|||
this->handAngle.y -= this->actor.shape.rot.y + this->limbAngleY;
|
||||
this->handAngle.x -= this->actor.shape.rot.x + this->limbAngleX[0] + this->limbAngleX[1];
|
||||
} else {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
// Empty
|
||||
#elif OOT_VERSION < PAL_1_0
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_7) && (&this->actor == player->actor.parent)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_7;
|
||||
player->actor.parent = NULL;
|
||||
#if OOT_VERSION >= PAL_1_0
|
||||
player->av2.actionVar2 = 200;
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_7) && (&this->actor == player->actor.parent)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_7;
|
||||
player->actor.parent = NULL;
|
||||
player->av2.actionVar2 = 200;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (this->actor.home.rot.z != 0) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEADHAND_HAND_AT);
|
||||
|
|
|
@ -339,8 +339,12 @@ s32 EnDoor_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
|||
rot->z += this->actor.world.rot.y;
|
||||
if ((play->roomCtx.prevRoom.num >= 0) || (transitionEntry->sides[0].room == transitionEntry->sides[1].room)) {
|
||||
// Draw the side of the door that is visible to the camera
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
s16 rotDiff = this->actor.shape.rot.y + rot->z - Math_Vec3f_Yaw(&play->view.eye, &this->actor.world.pos);
|
||||
#else
|
||||
s16 rotDiff = this->actor.shape.rot.y + this->skelAnime.jointTable[3].z + rot->z -
|
||||
Math_Vec3f_Yaw(&play->view.eye, &this->actor.world.pos);
|
||||
#endif
|
||||
|
||||
*dList = (ABS(rotDiff) < 0x4000) ? doorDLists[0] : doorDLists[1];
|
||||
} else {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_fd.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/gameplay_keep/gameplay_keep.h"
|
||||
#include "assets/objects/object_fw/object_fw.h"
|
||||
|
||||
|
@ -39,11 +40,17 @@ ActorProfile En_Fd_Profile = {
|
|||
/**/ EnFd_Draw,
|
||||
};
|
||||
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
#define FLARE_DANCER_BODY_DMG 0x00
|
||||
#else
|
||||
#define FLARE_DANCER_BODY_DMG 0x04
|
||||
#endif
|
||||
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
||||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040088, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON | ACELEM_HOOKABLE,
|
||||
|
@ -54,7 +61,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -65,7 +72,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -76,7 +83,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -87,7 +94,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -98,7 +105,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -109,7 +116,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -120,7 +127,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -131,7 +138,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -142,7 +149,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -153,7 +160,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
@ -164,7 +171,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = {
|
|||
{
|
||||
{
|
||||
ELEM_MATERIAL_UNK0,
|
||||
{ 0xFFCFFFFF, 0x01, 0x04 },
|
||||
{ 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG },
|
||||
{ 0x00040008, 0x00, 0x00 },
|
||||
ATELEM_ON | ATELEM_SFX_NORMAL,
|
||||
ACELEM_ON,
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_firefly.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_firefly/object_firefly.h"
|
||||
#include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h"
|
||||
|
||||
|
@ -553,7 +554,12 @@ void EnFirefly_Stunned(EnFirefly* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void EnFirefly_FrozenFall(EnFirefly* this, PlayState* play) {
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) || (this->actor.floorHeight == BGCHECK_Y_MIN))
|
||||
#else
|
||||
if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN))
|
||||
#endif
|
||||
{
|
||||
this->actor.colorFilterTimer = 0;
|
||||
EnFirefly_SetupDie(this);
|
||||
} else {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_hy.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_aob/object_aob.h"
|
||||
#include "assets/objects/object_ahg/object_ahg.h"
|
||||
#include "assets/objects/object_bob/object_bob.h"
|
||||
|
@ -505,7 +506,11 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) {
|
|||
} else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) {
|
||||
return CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) ? 0x507C : 0x507B;
|
||||
} else {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CB) ? 0x7019 : 0x7018);
|
||||
#else
|
||||
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CD) ? 0x7019 : 0x7018);
|
||||
#endif
|
||||
}
|
||||
case ENHY_TYPE_CNE_11:
|
||||
return GET_INFTABLE(INFTABLE_MALON_SPAWNED_AT_HYRULE_CASTLE) ? (GET_INFTABLE(INFTABLE_CC) ? 0x7014 : 0x70A4)
|
||||
|
@ -633,7 +638,11 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) {
|
|||
SET_INFTABLE(INFTABLE_CA);
|
||||
break;
|
||||
case 0x7018:
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
SET_INFTABLE(INFTABLE_CB);
|
||||
#else
|
||||
SET_INFTABLE(INFTABLE_CD);
|
||||
#endif
|
||||
break;
|
||||
case 0x70A4:
|
||||
SET_INFTABLE(INFTABLE_CC);
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "assets/objects/object_km1/object_km1.h"
|
||||
#include "assets/objects/object_kw1/object_kw1.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_4)
|
||||
|
||||
|
@ -585,7 +586,11 @@ s16 EnKo_UpdateTalkState(PlayState* play, Actor* thisx) {
|
|||
Message_ContinueTextbox(play, this->actor.textId);
|
||||
break;
|
||||
case 0x10B7:
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
SET_INFTABLE(INFTABLE_B6);
|
||||
#else
|
||||
SET_INFTABLE(INFTABLE_BC);
|
||||
#endif
|
||||
FALLTHROUGH;
|
||||
case 0x10B8:
|
||||
this->actor.textId = (play->msgCtx.choiceIndex == 0) ? 0x10BA : 0x10B9;
|
||||
|
@ -976,7 +981,11 @@ void func_80A9877C(EnKo* this, PlayState* play) {
|
|||
this->actor.textId = INV_CONTENT(ITEM_TRADE_ADULT) > ITEM_ODD_POTION ? 0x10B9 : 0x10DF;
|
||||
|
||||
if (func_8002F368(play) == EXCH_ITEM_ODD_POTION) {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
this->actor.textId = GET_INFTABLE(INFTABLE_B6) ? 0x10B8 : 0x10B7;
|
||||
#else
|
||||
this->actor.textId = GET_INFTABLE(INFTABLE_BC) ? 0x10B8 : 0x10B7;
|
||||
#endif
|
||||
this->unk_210 = 0;
|
||||
}
|
||||
player->actor.textId = this->actor.textId;
|
||||
|
|
|
@ -1325,19 +1325,30 @@ void EnMb_SetupSpearDead(EnMb* this) {
|
|||
}
|
||||
|
||||
void EnMb_SpearDead(EnMb* this, PlayState* play) {
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
Player* player = GET_PLAYER(play);
|
||||
#endif
|
||||
|
||||
Math_SmoothStepToF(&this->actor.speed, 0.0f, 1.0f, 0.5f, 0.0f);
|
||||
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
// Empty
|
||||
#elif OOT_VERSION < PAL_1_0
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_7) && player->actor.parent == &this->actor) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_7;
|
||||
player->actor.parent = NULL;
|
||||
#if OOT_VERSION >= PAL_1_0
|
||||
player->av2.actionVar2 = 200;
|
||||
#endif
|
||||
Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
|
||||
this->attack = ENMB_ATTACK_NONE;
|
||||
}
|
||||
#else
|
||||
if ((player->stateFlags2 & PLAYER_STATE2_7) && player->actor.parent == &this->actor) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_7;
|
||||
player->actor.parent = NULL;
|
||||
player->av2.actionVar2 = 200;
|
||||
Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f);
|
||||
this->attack = ENMB_ATTACK_NONE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (SkelAnime_Update(&this->skelAnime)) {
|
||||
if (this->timer1 > 0) {
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "assets/objects/object_niw/object_niw.h"
|
||||
#include "overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_23)
|
||||
|
||||
|
@ -1055,7 +1056,12 @@ void EnNiw_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
dist = 20.0f;
|
||||
|
||||
if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && player->invincibilityTimer == 0) {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && !(player->stateFlags1 & PLAYER_STATE1_26))
|
||||
#else
|
||||
if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && player->invincibilityTimer == 0)
|
||||
#endif
|
||||
{
|
||||
Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, thisx->world.rot.y, 0.0f, 0x10);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include "assets/objects/object_os_anime/object_os_anime.h"
|
||||
#include "overlays/actors/ovl_En_Niw/z_en_niw.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_4)
|
||||
|
||||
|
@ -259,6 +260,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
|
|||
PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ this->message_end_code ☆☆ %d\n" VT_RST, this->unk_262);
|
||||
PRINTF("\n\n");
|
||||
if (MaskReaction_GetTextId(play, MASK_REACTION_SET_CUCCO_LADY) == 0) {
|
||||
#if OOT_VERSION >= NTSC_1_1
|
||||
if (this->actor.textId == 0x503C) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_ERROR);
|
||||
this->unk_26C = 2;
|
||||
|
@ -266,6 +268,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
|
|||
this->actionFunc = func_80ABA654;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
this->unk_26E = phi_s1 + 1;
|
||||
if (phi_s1 == 7) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
|
@ -286,6 +289,13 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) {
|
|||
if (this->unk_26A != this->cuccosInPen) {
|
||||
if (this->cuccosInPen < this->unk_26A) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_ERROR);
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
if (phi_s1 == 9) {
|
||||
this->unk_26C = 2;
|
||||
this->unk_262 = TEXT_STATE_EVENT;
|
||||
this->actionFunc = func_80ABA654;
|
||||
}
|
||||
#endif
|
||||
} else if (phi_s1 + 1 < 9) {
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.h"
|
||||
#include "assets/scenes/overworld/spot02/spot02_scene.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_25)
|
||||
|
||||
|
@ -152,10 +153,14 @@ void func_80ABF0CC(EnOkarinaTag* this, PlayState* play) {
|
|||
if (play->sceneId == SCENE_WATER_TEMPLE) {
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
}
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
#else
|
||||
if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) &&
|
||||
(play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS)) {
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_04;
|
||||
}
|
||||
#endif
|
||||
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
|
||||
this->actionFunc = func_80ABEF2C;
|
||||
return;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "z_en_rr.h"
|
||||
#include "assets/objects/object_rr/object_rr.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_10)
|
||||
|
||||
|
@ -480,11 +481,16 @@ void EnRr_CollisionCheck(EnRr* this, PlayState* play) {
|
|||
if (this->actor.colChkInfo.health == 0) {
|
||||
this->dropType = RR_DROP_RANDOM_RUPEE;
|
||||
}
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
this->effectTimer = 20;
|
||||
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU, 80);
|
||||
#else
|
||||
if (this->actor.colorFilterTimer == 0) {
|
||||
this->effectTimer = 20;
|
||||
Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU,
|
||||
80);
|
||||
}
|
||||
#endif
|
||||
EnRr_SetupStunned(this);
|
||||
return;
|
||||
case RR_DMG_LIGHT_MAGIC: // Unused light magic
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#include "z_en_takara_man.h"
|
||||
#include "terminal.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_ts/object_ts.h"
|
||||
|
||||
#define FLAGS \
|
||||
|
@ -161,7 +162,11 @@ void func_80B17A6C(EnTakaraMan* this, PlayState* play) {
|
|||
if (Actor_HasParent(&this->actor, play)) {
|
||||
this->actionFunc = func_80B17AC4;
|
||||
} else {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
Actor_OfferGetItem(&this->actor, play, GI_SMALL_KEY, 2000.0f, 1000.0f);
|
||||
#else
|
||||
Actor_OfferGetItem(&this->actor, play, GI_DOOR_KEY, 2000.0f, 1000.0f);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_en_tp.h"
|
||||
#include "versions.h"
|
||||
#include "assets/objects/object_tp/object_tp.h"
|
||||
|
||||
#define FLAGS 0
|
||||
|
@ -319,7 +320,12 @@ void EnTp_Die(EnTp* this, PlayState* play) {
|
|||
255, 1, 9, 1);
|
||||
Item_DropCollectibleRandom(play, &this->actor, &this->actor.world.pos, 0x50);
|
||||
} else {
|
||||
for (i = 0; i < 1; i++) {
|
||||
#if OOT_VERSION < NTSC_1_1
|
||||
for (i = 0; i < 2; i++)
|
||||
#else
|
||||
for (i = 0; i < 1; i++)
|
||||
#endif
|
||||
{
|
||||
now =
|
||||
(EnTp*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_TP, this->actor.world.pos.x,
|
||||
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, TAILPASARAN_FRAGMENT);
|
||||
|
|
Loading…
Reference in a new issue