mirror of
https://github.com/pret/pmd-red.git
synced 2026-04-25 07:28:17 -05:00
more decomp work
This commit is contained in:
parent
9b173ac970
commit
b3c617dd7e
|
|
@ -5,123 +5,6 @@
|
|||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80819F0
|
||||
sub_80819F0:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_80830B4
|
||||
ldrb r1, [r4, 0x2]
|
||||
adds r0, r5, 0
|
||||
bl sub_80830B4
|
||||
ldrb r1, [r4, 0x3]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80819F0
|
||||
|
||||
thumb_func_start sub_8081A24
|
||||
sub_8081A24:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldr r1, [r4, 0x4]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083078
|
||||
ldrb r1, [r4, 0x8]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0x9]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
ldrb r1, [r4, 0xA]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081A24
|
||||
|
||||
thumb_func_start sub_8081A58
|
||||
sub_8081A58:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081A58
|
||||
|
||||
thumb_func_start sub_8081A74
|
||||
sub_8081A74:
|
||||
push {lr}
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081A74
|
||||
|
||||
thumb_func_start sub_8081A80
|
||||
sub_8081A80:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081A80
|
||||
|
||||
thumb_func_start sub_8081A9C
|
||||
sub_8081A9C:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081A9C
|
||||
|
||||
thumb_func_start sub_8081AB8
|
||||
sub_8081AB8:
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
movs r2, 0x1
|
||||
bl sub_8082FA8
|
||||
ldrb r1, [r4, 0x1]
|
||||
adds r0, r5, 0
|
||||
bl sub_8083060
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8081AB8
|
||||
|
||||
thumb_func_start sub_8081AD4
|
||||
sub_8081AD4:
|
||||
push {r4,r5,lr}
|
||||
|
|
|
|||
|
|
@ -107,6 +107,55 @@ typedef struct Protection
|
|||
/* 0x1 */ u8 protectionStatusTurns;
|
||||
} Protection;
|
||||
|
||||
typedef struct Waiting
|
||||
{
|
||||
/* 0xC8 */ u8 waitingStatus;
|
||||
/* 0xC9 */ bool8 enemyDecoy; // True if the Pokémon is a decoy and a wild Pokémon (i.e., not an allied Pokémon).
|
||||
u8 unkCA;
|
||||
/* 0xCB */ u8 waitingStatusTurns;
|
||||
/* 0xCC */ u8 curseDamageCountdown;
|
||||
} Waiting;
|
||||
|
||||
typedef struct Linked
|
||||
{
|
||||
/* 0xD0 */ u8 linkedStatus;
|
||||
/* 0xD4 */ u32 unkD4;
|
||||
/* 0xD8 */ u8 unkD8;
|
||||
/* 0xD9 */ u8 linkedStatusTurns;
|
||||
/* 0xDA */ u8 linkedStatusDamageCountdown;
|
||||
} Linked;
|
||||
|
||||
|
||||
typedef struct MoveStatus
|
||||
{
|
||||
/* 0xDC */ u8 moveStatus;
|
||||
/* 0xDD */ u8 moveStatusTurns;
|
||||
} MoveStatus;
|
||||
|
||||
typedef struct ItemStatus
|
||||
{
|
||||
/* 0xE0 */ u8 itemStatus;
|
||||
} ItemStatus;
|
||||
|
||||
typedef struct TransformStatus
|
||||
{
|
||||
/* 0xE4 */ u8 transformStatus;
|
||||
/* 0xE5 */ u8 transformStatusTurns;
|
||||
} TransformStatus;
|
||||
|
||||
typedef struct EyesightStatus
|
||||
{
|
||||
/* 0xE8 */ u8 eyesightStatus;
|
||||
/* 0xE9 */ u8 eyesightStatusTurns;
|
||||
} EyesightStatus;
|
||||
|
||||
typedef struct Muzzled
|
||||
{
|
||||
/* 0xEC */ bool8 muzzled;
|
||||
/* 0xED */ u8 muzzledTurns;
|
||||
} Muzzled;
|
||||
|
||||
|
||||
// size: 0x208
|
||||
typedef struct EntityInfo
|
||||
{
|
||||
|
|
@ -175,34 +224,13 @@ typedef struct EntityInfo
|
|||
/* 0xBC */ Volatile Volatile;
|
||||
/* 0xC0 */ Charging charging;
|
||||
/* 0xC4 */ Protection protection;
|
||||
/* 0xC8 */ u8 waitingStatus;
|
||||
/* 0xC9 */ bool8 enemyDecoy; // True if the Pokémon is a decoy and a wild Pokémon (i.e., not an allied Pokémon).
|
||||
u8 unkCA;
|
||||
/* 0xCB */ u8 waitingStatusTurns;
|
||||
/* 0xCC */ u8 curseDamageCountdown;
|
||||
u8 fillCD[0xD0 - 0xCD];
|
||||
/* 0xD0 */ u8 linkedStatus;
|
||||
u8 fillD1[0xD4 - 0xD1];
|
||||
/* 0xD4 */ u32 unkD4;
|
||||
/* 0xD8 */ u8 unkD8;
|
||||
/* 0xD9 */ u8 linkedStatusTurns;
|
||||
/* 0xDA */ u8 linkedStatusDamageCountdown;
|
||||
u8 fillDB;
|
||||
/* 0xDC */ u8 moveStatus;
|
||||
/* 0xDD */ u8 moveStatusTurns;
|
||||
u8 fillDE[0xE0 - 0xDE];
|
||||
/* 0xE0 */ u8 itemStatus;
|
||||
u8 fillE1[0xE4 - 0xE1];
|
||||
/* 0xE4 */ u8 transformStatus;
|
||||
/* 0xE5 */ u8 transformStatusTurns;
|
||||
u8 fillE6[0xE8 - 0xE6];
|
||||
/* 0xE8 */ u8 eyesightStatus;
|
||||
/* 0xE9 */ u8 eyesightStatusTurns;
|
||||
/* 0xEA */ u8 unkEA;
|
||||
u8 fillEB;
|
||||
/* 0xEC */ bool8 muzzled;
|
||||
/* 0xED */ u8 muzzledTurns;
|
||||
u8 fillEE[0xF0 - 0xEE];
|
||||
/* 0xC8 */ Waiting waitingStruct;
|
||||
/* 0xD0 */ Linked linked;
|
||||
/* 0xDC */ MoveStatus moveStatus;
|
||||
/* 0xE0 */ ItemStatus itemStatus;
|
||||
/* 0xE4 */ TransformStatus transformStatus;
|
||||
/* 0xE8 */ EyesightStatus eyesightStatus;
|
||||
/* 0xEC */ Muzzled muzzled;
|
||||
/* 0xF0 */ bool8 powerEars;
|
||||
/* 0xF1 */ bool8 scanning;
|
||||
/* 0xF2 */ bool8 stairSpotter;
|
||||
|
|
|
|||
|
|
@ -218,13 +218,13 @@ void EntityUpdateStatusSprites(Entity *entity)
|
|||
gStatusSpriteMasks_VolatileStatus[entityInfo->Volatile.volatileStatus] |
|
||||
gStatusSpriteMasks_ChargingStatus[entityInfo->charging.chargingStatus] |
|
||||
gStatusSpriteMasks_ProtectionStatus[entityInfo->protection.protectionStatus] |
|
||||
gStatusSpriteMasks_WaitingStatus[entityInfo->waitingStatus] |
|
||||
gStatusSpriteMasks_LinkedStatus[entityInfo->linkedStatus] |
|
||||
gStatusSpriteMasks_MoveStatus[entityInfo->moveStatus] |
|
||||
gStatusSpriteMasks_ItemStatus[entityInfo->itemStatus] |
|
||||
gStatusSpriteMasks_TransformStatus[entityInfo->transformStatus] |
|
||||
gStatusSpriteMasks_EyesightStatus[entityInfo->eyesightStatus] |
|
||||
gStatusSpriteMasks_MuzzledStatus[entityInfo->muzzled];
|
||||
gStatusSpriteMasks_WaitingStatus[entityInfo->waitingStruct.waitingStatus] |
|
||||
gStatusSpriteMasks_LinkedStatus[entityInfo->linked.linkedStatus] |
|
||||
gStatusSpriteMasks_MoveStatus[entityInfo->moveStatus.moveStatus] |
|
||||
gStatusSpriteMasks_ItemStatus[entityInfo->itemStatus.itemStatus] |
|
||||
gStatusSpriteMasks_TransformStatus[entityInfo->transformStatus.transformStatus] |
|
||||
gStatusSpriteMasks_EyesightStatus[entityInfo->eyesightStatus.eyesightStatus] |
|
||||
gStatusSpriteMasks_MuzzledStatus[entityInfo->muzzled.muzzled];
|
||||
|
||||
if (entityInfo->grudge) {
|
||||
spriteStatus = spriteStatus | STATUS_SPRITE_GRUDGE;
|
||||
|
|
|
|||
|
|
@ -1103,7 +1103,7 @@ bool8 sub_8048D50(Entity * pokemon, Item *item)
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((entityInfo->muzzled == TRUE) && (IsEdibleItem(item->id))) {
|
||||
if ((entityInfo->muzzled.muzzled == TRUE) && (IsEdibleItem(item->id))) {
|
||||
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
|
||||
SendMessage(pokemon,*gUnknown_80FDCA4);
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ void sub_806CCB4(Entity *entity, u8 a1)
|
|||
entity->unk6F = 0;
|
||||
sVar1 = entity->unk68;
|
||||
|
||||
if (info->waitingStatus != STATUS_DECOY && !flag)
|
||||
if (info->waitingStruct.waitingStatus != STATUS_DECOY && !flag)
|
||||
sub_80053AC(&entity->spriteInfo, entity->sprite, entity->unk6A, entity->direction, sVar1, Rand32Bit() & 3, FALSE);
|
||||
else
|
||||
sub_80053AC(&entity->spriteInfo, sub_80687D0(MONSTER_DECOY), entity->unk6A, entity->direction, sVar1, Rand32Bit() & 3, FALSE);
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ void sub_8075708(Entity *entity)
|
|||
return;
|
||||
}
|
||||
tile = GetTileAtEntitySafe(entity);
|
||||
if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus != STATUS_MOBILE)) &&
|
||||
if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus.transformStatus != STATUS_MOBILE)) &&
|
||||
(!HasHeldItem(entity, ITEM_MOBILE_SCARF))) {
|
||||
sub_804AE84(&entity->pos);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -220,9 +220,9 @@ void MuzzleTarget(Entity *pokemon, Entity *target)
|
|||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->muzzled != TRUE) {
|
||||
entityInfo->muzzled = TRUE;
|
||||
entityInfo->muzzledTurns = CalculateStatusTurns(target,gUnknown_80F4F1C, TRUE) + 1;
|
||||
if (entityInfo->muzzled.muzzled != TRUE) {
|
||||
entityInfo->muzzled.muzzled = TRUE;
|
||||
entityInfo->muzzled.muzzledTurns = CalculateStatusTurns(target,gUnknown_80F4F1C, TRUE) + 1;
|
||||
nullsub_86(target);
|
||||
sub_80522F4(pokemon, target, *gUnknown_80FBF68);
|
||||
}
|
||||
|
|
@ -250,7 +250,7 @@ void TransformStatusTarget(Entity * pokemon, Entity * target)
|
|||
|
||||
entityInfo = target->info;
|
||||
|
||||
if (entityInfo->transformStatus == STATUS_TRANSFORMED)
|
||||
if (entityInfo->transformStatus.transformStatus == STATUS_TRANSFORMED)
|
||||
sub_80522F4(pokemon, target, *gUnknown_80FBF04);
|
||||
else {
|
||||
SetMessageArgument(gAvailablePokemonNames, target, 0);
|
||||
|
|
@ -278,8 +278,8 @@ void TransformStatusTarget(Entity * pokemon, Entity * target)
|
|||
else {
|
||||
entityInfo->apparentID = apparentID;
|
||||
target->sprite = sprite;
|
||||
entityInfo->transformStatus = STATUS_TRANSFORMED;
|
||||
entityInfo->transformStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EFC, TRUE) + 1;
|
||||
entityInfo->transformStatus.transformStatus = STATUS_TRANSFORMED;
|
||||
entityInfo->transformStatus.transformStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EFC, TRUE) + 1;
|
||||
sub_806CF98(target);
|
||||
nullsub_87(target);
|
||||
sub_806CCB4(target, sub_806CEBC(target));
|
||||
|
|
@ -301,13 +301,13 @@ void MobileStatusTarget(Entity * pokemon, Entity * target)
|
|||
entityInfo_1 = target->info;
|
||||
entityInfo = entityInfo_1;
|
||||
|
||||
if (entityInfo->transformStatus == STATUS_TRANSFORMED) {
|
||||
if (entityInfo->transformStatus.transformStatus == STATUS_TRANSFORMED) {
|
||||
SendTransformEndMessage(pokemon,target);
|
||||
}
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->transformStatus != STATUS_MOBILE) {
|
||||
entityInfo->transformStatus = STATUS_MOBILE;
|
||||
entityInfo->transformStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F04, FALSE) + 1;
|
||||
if (entityInfo->transformStatus.transformStatus != STATUS_MOBILE) {
|
||||
entityInfo->transformStatus.transformStatus = STATUS_MOBILE;
|
||||
entityInfo->transformStatus.transformStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F04, FALSE) + 1;
|
||||
nullsub_88(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBF28);
|
||||
}
|
||||
|
|
@ -390,9 +390,9 @@ void BlindTarget(Entity *pokemon, Entity *target)
|
|||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->eyesightStatus != STATUS_BLINKER) {
|
||||
entityInfo->eyesightStatus = STATUS_BLINKER;
|
||||
entityInfo->eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F08, TRUE) + 1;
|
||||
if (entityInfo->eyesightStatus.eyesightStatus != STATUS_BLINKER) {
|
||||
entityInfo->eyesightStatus.eyesightStatus = STATUS_BLINKER;
|
||||
entityInfo->eyesightStatus.eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F08, TRUE) + 1;
|
||||
sub_8041E0C(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB7F4);
|
||||
sub_803E46C(0x31);
|
||||
|
|
@ -417,11 +417,11 @@ void CrossEyeVisionTarget(Entity *pokemon, Entity *target)
|
|||
{
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->eyesightStatus != STATUS_CROSS_EYED) {
|
||||
if (entityInfo->eyesightStatus.eyesightStatus != STATUS_CROSS_EYED) {
|
||||
sub_8041E1C(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB834);
|
||||
entityInfo->eyesightStatus = STATUS_CROSS_EYED;
|
||||
entityInfo->eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F0C, TRUE) + 1;
|
||||
entityInfo->eyesightStatus.eyesightStatus = STATUS_CROSS_EYED;
|
||||
entityInfo->eyesightStatus.eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F0C, TRUE) + 1;
|
||||
sub_803F580(0x1);
|
||||
sub_8049ED4();
|
||||
sub_8040A84();
|
||||
|
|
@ -443,9 +443,9 @@ void RestoreVisionTarget(Entity *pokemon, Entity *target)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->eyesightStatus != STATUS_EYEDROPS) {
|
||||
entityInfo->eyesightStatus = STATUS_EYEDROPS;
|
||||
entityInfo->eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F10, FALSE) + 1;
|
||||
if (entityInfo->eyesightStatus.eyesightStatus != STATUS_EYEDROPS) {
|
||||
entityInfo->eyesightStatus.eyesightStatus = STATUS_EYEDROPS;
|
||||
entityInfo->eyesightStatus.eyesightStatusTurns = CalculateStatusTurns(target,gUnknown_80F4F10, FALSE) + 1;
|
||||
sub_8041E3C(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB880);
|
||||
sub_803E46C(0x31);
|
||||
|
|
@ -640,8 +640,8 @@ void LongTossStatusTarget(Entity * pokemon, Entity * target)
|
|||
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gUnknown_202DFE8,target,0);
|
||||
if (entityInfo->itemStatus != STATUS_LONG_TOSS) {
|
||||
entityInfo->itemStatus = STATUS_LONG_TOSS;
|
||||
if (entityInfo->itemStatus.itemStatus != STATUS_LONG_TOSS) {
|
||||
entityInfo->itemStatus.itemStatus = STATUS_LONG_TOSS;
|
||||
sub_8041EA4(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD20C);
|
||||
}
|
||||
|
|
@ -657,8 +657,8 @@ void PierceStatusTarget(Entity * pokemon, Entity * target)
|
|||
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gUnknown_202DFE8,target,0);
|
||||
if (entityInfo->itemStatus != STATUS_PIERCE) {
|
||||
entityInfo->itemStatus = STATUS_PIERCE;
|
||||
if (entityInfo->itemStatus.itemStatus != STATUS_PIERCE) {
|
||||
entityInfo->itemStatus.itemStatus = STATUS_PIERCE;
|
||||
sub_8041EB4(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FD254);
|
||||
}
|
||||
|
|
@ -1393,7 +1393,7 @@ void SendWaitingEndMessage(Entity * pokemon, Entity * target, u8 waitingStatus)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->waitingStatus) {
|
||||
switch(entityInfo->waitingStruct.waitingStatus) {
|
||||
case STATUS_NONE:
|
||||
case 4:
|
||||
break;
|
||||
|
|
@ -1410,7 +1410,7 @@ void SendWaitingEndMessage(Entity * pokemon, Entity * target, u8 waitingStatus)
|
|||
gDungeon->unk17B3C = 0;
|
||||
break;
|
||||
case STATUS_DECOY:
|
||||
entityInfo->waitingStatus = STATUS_NONE;
|
||||
entityInfo->waitingStruct.waitingStatus = STATUS_NONE;
|
||||
uVar3 = sub_806CEBC(target);
|
||||
sub_806CCB4(target,uVar3);
|
||||
gDungeon->decoyActive = FALSE;
|
||||
|
|
@ -1420,7 +1420,7 @@ void SendWaitingEndMessage(Entity * pokemon, Entity * target, u8 waitingStatus)
|
|||
}
|
||||
break;
|
||||
}
|
||||
entityInfo->waitingStatus = STATUS_NONE;
|
||||
entityInfo->waitingStruct.waitingStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
|
@ -1432,7 +1432,7 @@ void SendLinkedEndMessage(Entity * pokemon, Entity * target)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->linkedStatus)
|
||||
switch(entityInfo->linked.linkedStatus)
|
||||
{
|
||||
case STATUS_NONE:
|
||||
break;
|
||||
|
|
@ -1443,8 +1443,8 @@ void SendLinkedEndMessage(Entity * pokemon, Entity * target)
|
|||
SendMessage(target,*gUnknown_80FAA8C);
|
||||
break;
|
||||
}
|
||||
entityInfo->linkedStatus = STATUS_NONE;
|
||||
entityInfo->unkD8 = 0xff;
|
||||
entityInfo->linked.linkedStatus = STATUS_NONE;
|
||||
entityInfo->linked.unkD8 = 0xff;
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
|
@ -1458,7 +1458,7 @@ void SendMoveEndMessage(Entity * pokemon, Entity * target)
|
|||
}
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->moveStatus) {
|
||||
switch(entityInfo->moveStatus.moveStatus) {
|
||||
case STATUS_NONE:
|
||||
case 5:
|
||||
break;
|
||||
|
|
@ -1475,7 +1475,7 @@ void SendMoveEndMessage(Entity * pokemon, Entity * target)
|
|||
SendMessage(target,*gUnknown_80FA95C);
|
||||
break;
|
||||
}
|
||||
entityInfo->moveStatus = STATUS_NONE;
|
||||
entityInfo->moveStatus.moveStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
|
|
@ -1491,7 +1491,7 @@ void SendTransformEndMessage(Entity * pokemon, Entity *target)
|
|||
}
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->transformStatus) {
|
||||
switch(entityInfo->transformStatus.transformStatus) {
|
||||
case STATUS_NONE:
|
||||
case 4:
|
||||
break;
|
||||
|
|
@ -1510,7 +1510,7 @@ void SendTransformEndMessage(Entity * pokemon, Entity *target)
|
|||
SendMessage(target,*gUnknown_80FAB6C);
|
||||
break;
|
||||
}
|
||||
entityInfo->transformStatus = STATUS_NONE;
|
||||
entityInfo->transformStatus.transformStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
if (isInvisible) {
|
||||
sub_807EC28(TRUE);
|
||||
|
|
@ -1526,7 +1526,7 @@ void SendEyesightEndMessage(Entity * pokemon,Entity * target)
|
|||
}
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->eyesightStatus) {
|
||||
switch(entityInfo->eyesightStatus.eyesightStatus) {
|
||||
case STATUS_NONE:
|
||||
case 4:
|
||||
break;
|
||||
|
|
@ -1540,7 +1540,7 @@ void SendEyesightEndMessage(Entity * pokemon,Entity * target)
|
|||
SendMessage(target,*gUnknown_80FAA48);
|
||||
break;
|
||||
}
|
||||
entityInfo->eyesightStatus = STATUS_NONE;
|
||||
entityInfo->eyesightStatus.eyesightStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
if (entityInfo->isTeamLeader) {
|
||||
sub_803E46C(0x31);
|
||||
|
|
@ -1558,7 +1558,7 @@ void SendMuzzledEndMessage(Entity * pokemon, Entity * target)
|
|||
}
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
switch(entityInfo->muzzled) {
|
||||
switch(entityInfo->muzzled.muzzled) {
|
||||
case FALSE:
|
||||
case 2:
|
||||
break;
|
||||
|
|
@ -1566,7 +1566,7 @@ void SendMuzzledEndMessage(Entity * pokemon, Entity * target)
|
|||
SendMessage(target,*gUnknown_80FABC0);
|
||||
break;
|
||||
}
|
||||
entityInfo->muzzled = FALSE;
|
||||
entityInfo->muzzled.muzzled = FALSE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,10 +110,10 @@ void RunMonsterAI(Entity *pokemon, u32 unused)
|
|||
{
|
||||
target = gDungeon->allPokemon[i];
|
||||
if (EntityExists(target) &&
|
||||
target->info->waitingStatus == STATUS_DECOY &&
|
||||
target->info->waitingStruct.waitingStatus == STATUS_DECOY &&
|
||||
CanSeeTarget(pokemon, target))
|
||||
{
|
||||
bool8 enemyDecoy = target->info->enemyDecoy;
|
||||
bool8 enemyDecoy = target->info->waitingStruct.enemyDecoy;
|
||||
u8 targetingDecoy = TARGETING_DECOY_TEAM;
|
||||
if (enemyDecoy)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -363,7 +363,7 @@ s32 AIConsiderMove(struct AIPossibleMove *aiPossibleMove, Entity *pokemon, Move
|
|||
rangeTargetingFlags == TARGETING_FLAG_TARGET_FRONTAL_CONE ||
|
||||
rangeTargetingFlags == TARGETING_FLAG_TARGET_AROUND)
|
||||
{
|
||||
if (pokemonInfo->eyesightStatus == STATUS_BLINKER)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
{
|
||||
u8 direction = pokemonInfo->action.direction;
|
||||
i = direction; // Fixes a regswap.
|
||||
|
|
@ -792,7 +792,7 @@ bool8 TargetRegularAttack(Entity *pokemon, u32 *targetDir, bool8 checkPetrified)
|
|||
EntityInfo *pokemonInfo = pokemon->info;
|
||||
s32 numPotentialTargets = 0;
|
||||
s32 direction = pokemonInfo->action.direction;
|
||||
s32 faceTurnLimit = pokemonInfo->eyesightStatus == STATUS_BLINKER ? 1 : 8;
|
||||
s32 faceTurnLimit = pokemonInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER ? 1 : 8;
|
||||
s32 i;
|
||||
s32 potentialAttackTargetDirections[NUM_DIRECTIONS];
|
||||
s32 potentialAttackTargetWeights[NUM_DIRECTIONS];
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ u32 EvaluateItem(Entity *targetPokemon, Item *item, u32 itemTargetFlags)
|
|||
}
|
||||
break;
|
||||
case ITEM_ALLURE_SEED:
|
||||
if (pokemonInfo->eyesightStatus != STATUS_CROSS_EYED)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus != STATUS_CROSS_EYED)
|
||||
{
|
||||
if (CanTargetAdjacentPokemon(targetPokemon))
|
||||
{
|
||||
|
|
@ -265,7 +265,7 @@ u32 EvaluateItem(Entity *targetPokemon, Item *item, u32 itemTargetFlags)
|
|||
}
|
||||
break;
|
||||
case ITEM_BLINKER_SEED:
|
||||
if (pokemonInfo->eyesightStatus != STATUS_BLINKER)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus != STATUS_BLINKER)
|
||||
{
|
||||
if (CanTargetAdjacentPokemon(targetPokemon))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ void TargetThrownItem(Entity *pokemon, Entity *targetPokemon, Item *item, s32 ta
|
|||
distanceX = distanceX < 0 ? -distanceX : distanceX;
|
||||
distanceY = pokemon->pos.y - targetPokemon->pos.y;
|
||||
distanceY = distanceY < 0 ? -distanceY : distanceY;
|
||||
if (pokemon->info->itemStatus == STATUS_NONE)
|
||||
if (pokemon->info->itemStatus.itemStatus == STATUS_NONE)
|
||||
{
|
||||
s32 distance = distanceY < distanceX ? distanceX : distanceY;
|
||||
if (distance > RANGED_ATTACK_RANGE)
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ Entity* GetLeaderIfVisible(Entity *pokemon)
|
|||
{
|
||||
Entity *leader = GetLeader();
|
||||
if (leader &&
|
||||
leader->info->waitingStatus != STATUS_DECOY &&
|
||||
leader->info->waitingStruct.waitingStatus != STATUS_DECOY &&
|
||||
CanTarget(pokemon, leader, FALSE, FALSE) == TARGET_CAPABILITY_CANNOT_ATTACK &&
|
||||
CanTargetEntity(pokemon, leader))
|
||||
{
|
||||
|
|
@ -214,7 +214,7 @@ bool8 sub_8072CF4(Entity *entity)
|
|||
pos.y = entity->pos.y;
|
||||
sub_80694C0(entity,pos1.x,pos1.y,0);
|
||||
sub_8074FB0(entity,(info->action).direction,&pos);
|
||||
if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus != STATUS_MOBILE)) &&
|
||||
if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus.transformStatus != STATUS_MOBILE)) &&
|
||||
(!HasHeldItem(entity,ITEM_MOBILE_SCARF))) {
|
||||
sub_804AE08(&entity->pos);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ bool8 sub_8070F3C(Entity * pokemon, Position *pos, s32 direction)
|
|||
(((tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))))) {
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE ||
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE ||
|
||||
HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
terrain = CROSSABLE_TERRAIN_WALL;
|
||||
|
|
@ -137,7 +137,7 @@ bool8 sub_8070F80(Entity * pokemon, s32 direction)
|
|||
(((tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))))) {
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE ||
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE ||
|
||||
HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
terrain = CROSSABLE_TERRAIN_WALL;
|
||||
|
|
@ -183,7 +183,7 @@ bool8 sub_8071058(Entity * pokemon, s32 direction)
|
|||
(!tile->monster->info->isNotTeamMember)))) {
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE ||
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE ||
|
||||
HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
terrain = CROSSABLE_TERRAIN_WALL;
|
||||
|
|
@ -230,7 +230,7 @@ bool8 CanAttackInDirection(Entity *pokemon, s32 direction)
|
|||
{
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE ||
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE ||
|
||||
HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
|
|
@ -282,7 +282,7 @@ bool8 CanAIMonsterMoveInDirection(Entity *pokemon, s32 direction, bool8 *pokemon
|
|||
if (frontTile->object != NULL &&
|
||||
IQSkillIsEnabled(pokemon, IQ_TRAP_AVOIDER) &&
|
||||
GetEntityType(frontTile->object) == ENTITY_TRAP &&
|
||||
(frontTile->object->isVisible || pokemon->info->eyesightStatus == STATUS_EYEDROPS))
|
||||
(frontTile->object->isVisible || pokemon->info->eyesightStatus.eyesightStatus == STATUS_EYEDROPS))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -294,7 +294,7 @@ bool8 CanAIMonsterMoveInDirection(Entity *pokemon, s32 direction, bool8 *pokemon
|
|||
}
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE ||
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE ||
|
||||
HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
|
|
@ -337,7 +337,7 @@ bool8 IsAtJunction(Entity *pokemon)
|
|||
u32 crossableTerrain = GetCrossableTerrain(pokemon->info->id);
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE || HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE || HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
{
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
}
|
||||
|
|
@ -480,7 +480,7 @@ u8 CanTarget(Entity *pokemon, Entity *targetPokemon, bool8 ignoreInvisible, bool
|
|||
pokemonInfo->clientType == CLIENT_TYPE_CLIENT ||
|
||||
targetData->clientType == CLIENT_TYPE_CLIENT ||
|
||||
(checkPetrified && !pokemonInfo->isNotTeamMember && targetData->immobilize.immobilizeStatus == STATUS_PETRIFIED) ||
|
||||
(!ignoreInvisible && targetData->transformStatus == STATUS_INVISIBLE && !CanSeeInvisibleMonsters(pokemon)))
|
||||
(!ignoreInvisible && targetData->transformStatus.transformStatus == STATUS_INVISIBLE && !CanSeeInvisibleMonsters(pokemon)))
|
||||
{
|
||||
return TARGET_CAPABILITY_CAN_ATTACK_NOT_TARGET;
|
||||
}
|
||||
|
|
@ -519,7 +519,7 @@ u8 CanTarget(Entity *pokemon, Entity *targetPokemon, bool8 ignoreInvisible, bool
|
|||
targetIsEnemy = targetData->isNotTeamMember ? TRUE : FALSE;
|
||||
}
|
||||
targetIsDecoy = FALSE;
|
||||
if (targetData->waitingStatus == STATUS_DECOY)
|
||||
if (targetData->waitingStruct.waitingStatus == STATUS_DECOY)
|
||||
{
|
||||
targetIsDecoy = TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ bool8 CannotMove(Entity *pokemon, bool8 checkBlinker)
|
|||
{
|
||||
EntityInfo *pokemonInfo = pokemon->info;
|
||||
|
||||
if ((checkBlinker && pokemonInfo->eyesightStatus == STATUS_BLINKER)
|
||||
if ((checkBlinker && pokemonInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
|| pokemonInfo->sleep.sleep == STATUS_SLEEP
|
||||
|| pokemonInfo->sleep.sleep == STATUS_NAPPING
|
||||
|| pokemonInfo->sleep.sleep == STATUS_NIGHTMARE
|
||||
|
|
@ -44,7 +44,7 @@ bool8 sub_8070BC0(Entity* entity)
|
|||
|| entityInfo->sleep.sleep == STATUS_YAWNING
|
||||
|| entityInfo->sleep.sleep == STATUS_NIGHTMARE
|
||||
|| ShouldMonsterRunAway(entity)
|
||||
|| entityInfo->muzzled == TRUE
|
||||
|| entityInfo->muzzled.muzzled == TRUE
|
||||
|| entityInfo->immobilize.immobilizeStatus == STATUS_PETRIFIED
|
||||
|| entityInfo->immobilize.immobilizeStatus == STATUS_FROZEN)
|
||||
return FALSE;
|
||||
|
|
@ -53,7 +53,7 @@ bool8 sub_8070BC0(Entity* entity)
|
|||
return FALSE;
|
||||
if (entityInfo->sleep.sleep == STATUS_SLEEP)
|
||||
return FALSE;
|
||||
if (entityInfo->transformStatus == STATUS_INVISIBLE
|
||||
if (entityInfo->transformStatus.transformStatus == STATUS_INVISIBLE
|
||||
|| entityInfo->sleep.sleep == STATUS_NAPPING)
|
||||
return FALSE;
|
||||
if (entityInfo->Volatile.volatileStatus == STATUS_CRINGE)
|
||||
|
|
@ -61,11 +61,11 @@ bool8 sub_8070BC0(Entity* entity)
|
|||
if (entityInfo->immobilize.immobilizeStatus == STATUS_WRAP)
|
||||
return FALSE;
|
||||
if (entityInfo->immobilize.immobilizeStatus == STATUS_WRAPPED
|
||||
|| entityInfo->eyesightStatus == STATUS_CROSS_EYED)
|
||||
|| entityInfo->eyesightStatus.eyesightStatus == STATUS_CROSS_EYED)
|
||||
return FALSE;
|
||||
if (entityInfo->waitingStatus == STATUS_DECOY)
|
||||
if (entityInfo->waitingStruct.waitingStatus == STATUS_DECOY)
|
||||
return FALSE;
|
||||
if (entityInfo->eyesightStatus == STATUS_BLINKER)
|
||||
if (entityInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
return FALSE;
|
||||
if (entityInfo->Volatile.volatileStatus != STATUS_INFATUATED
|
||||
&& entityInfo->Volatile.volatileStatus != STATUS_PAUSED)
|
||||
|
|
@ -149,7 +149,7 @@ bool8 CanMoveInDirection(Entity *pokemon, u32 direction)
|
|||
|
||||
if (!IsCurrentFixedRoomBossFight())
|
||||
{
|
||||
if (pokemon->info->transformStatus == STATUS_MOBILE || HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
if (pokemon->info->transformStatus.transformStatus == STATUS_MOBILE || HasHeldItem(pokemon, ITEM_MOBILE_SCARF))
|
||||
crossableTerrain = CROSSABLE_TERRAIN_WALL;
|
||||
else if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER))
|
||||
crossableTerrain = CROSSABLE_TERRAIN_CREVICE;
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ u8 sub_80703A0(Entity *pokemon, Position *pos)
|
|||
tile = GetTile(pos->x,pos->y);
|
||||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y) && (tile->monster == NULL) && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) {
|
||||
if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) {
|
||||
if ((IsCurrentFixedRoomBossFight()) || ((entityInfo->transformStatus.transformStatus != STATUS_MOBILE && (!HasHeldItem(pokemon, ITEM_MOBILE_SCARF))))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityInfo->id);
|
||||
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
|
||||
|
|
@ -108,7 +108,7 @@ bool8 CanCrossWalls(Entity *pokemon)
|
|||
{
|
||||
EntityInfo *pokemonInfo = pokemon->info;
|
||||
EntityInfo *pokemonInfo2 = pokemonInfo;
|
||||
if (pokemonInfo2->transformStatus == STATUS_MOBILE)
|
||||
if (pokemonInfo2->transformStatus.transformStatus == STATUS_MOBILE)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
|
@ -135,7 +135,7 @@ bool8 sub_807049C(Entity *pokemon, Position *pos)
|
|||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
|
||||
(tile->monster == NULL || (GetEntityType(tile->monster) == ENTITY_MONSTER))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus.transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityInfo->id);
|
||||
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
|
||||
|
|
@ -219,7 +219,7 @@ bool8 sub_80705F0(Entity *pokemon, Position *pos)
|
|||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
|
||||
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER)))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus.transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityInfo->id);
|
||||
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
|
||||
|
|
@ -257,7 +257,7 @@ bool8 sub_80706A4(Entity *pokemon, Position *pos)
|
|||
if ((pos->x >= 0) && (pos->y >= 0) && (DUNGEON_MAX_SIZE_X > pos->x) &&
|
||||
(DUNGEON_MAX_SIZE_Y > pos->y && ((tile->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) == 0)) &&
|
||||
((tile->monster == NULL) || ((GetEntityType(tile->monster) == ENTITY_MONSTER) && (tile->monster->info == entityInfo)))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
if (IsCurrentFixedRoomBossFight() || (entityInfo->transformStatus.transformStatus != STATUS_MOBILE && !HasHeldItem(pokemon, ITEM_MOBILE_SCARF))) {
|
||||
crossableTerrain = GetCrossableTerrain(entityInfo->id);
|
||||
tileFlags = tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY);
|
||||
if (IQSkillIsEnabled(pokemon, IQ_ALL_TERRAIN_HIKER)) {
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ bool8 MonsterIsType(Entity *pokemon, u8 type)
|
|||
bool8 CanSeeInvisibleMonsters(Entity *pokemon)
|
||||
{
|
||||
EntityInfo *pokemonInfo = pokemon->info;
|
||||
if (pokemonInfo->eyesightStatus != STATUS_EYEDROPS)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus != STATUS_EYEDROPS)
|
||||
{
|
||||
if (!HasHeldItem(pokemon, ITEM_GOGGLE_SPECS))
|
||||
return FALSE;
|
||||
|
|
|
|||
|
|
@ -16,16 +16,16 @@ bool8 CanSeeTarget(Entity *entity, Entity *targetEntity)
|
|||
{
|
||||
if (entity->type == ENTITY_MONSTER)
|
||||
{
|
||||
if (!CanSeeInvisibleMonsters(entity) && targetEntity->info->transformStatus == STATUS_INVISIBLE)
|
||||
if (!CanSeeInvisibleMonsters(entity) && targetEntity->info->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (entity->info->eyesightStatus == STATUS_BLINKER)
|
||||
if (entity->info->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (targetEntity->info->transformStatus == STATUS_INVISIBLE)
|
||||
else if (targetEntity->info->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -43,16 +43,16 @@ bool8 CanTargetEntity(Entity *entity, Entity *targetEntity)
|
|||
{
|
||||
if (entity->type == ENTITY_MONSTER)
|
||||
{
|
||||
if (!CanSeeInvisibleMonsters(entity) && targetEntity->info->transformStatus == STATUS_INVISIBLE)
|
||||
if (!CanSeeInvisibleMonsters(entity) && targetEntity->info->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (entity->info->eyesightStatus == STATUS_BLINKER)
|
||||
if (entity->info->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (targetEntity->info->transformStatus == STATUS_INVISIBLE)
|
||||
else if (targetEntity->info->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -181,7 +181,7 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
}
|
||||
case MOVE_LOCK_ON:
|
||||
case MOVE_MIND_READER:
|
||||
if (pokemonInfo->moveStatus == STATUS_SURE_SHOT)
|
||||
if (pokemonInfo->moveStatus.moveStatus == STATUS_SURE_SHOT)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
break;
|
||||
case MOVE_DOOM_DESIRE:
|
||||
case MOVE_FUTURE_SIGHT:
|
||||
if (pokemonInfo->moveStatus == STATUS_SET_DAMAGE)
|
||||
if (pokemonInfo->moveStatus.moveStatus == STATUS_SET_DAMAGE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -266,7 +266,7 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_DESTINY_BOND:
|
||||
if (pokemonInfo->linkedStatus == STATUS_DESTINY_BOND)
|
||||
if (pokemonInfo->linked.linkedStatus == STATUS_DESTINY_BOND)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -327,13 +327,13 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_INVISIFY:
|
||||
if (pokemonInfo->transformStatus == STATUS_INVISIBLE)
|
||||
if (pokemonInfo->transformStatus.transformStatus == STATUS_INVISIBLE)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
case MOVE_FOCUS_ENERGY:
|
||||
if (pokemonInfo->moveStatus == STATUS_FOCUS_ENERGY)
|
||||
if (pokemonInfo->moveStatus.moveStatus == STATUS_FOCUS_ENERGY)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -438,7 +438,7 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_TRANSFORM:
|
||||
if (pokemonInfo->transformStatus == STATUS_TRANSFORMED)
|
||||
if (pokemonInfo->transformStatus.transformStatus == STATUS_TRANSFORMED)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -461,7 +461,7 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_SNATCH:
|
||||
if (pokemonInfo->waitingStatus == STATUS_SNATCH)
|
||||
if (pokemonInfo->waitingStruct.waitingStatus == STATUS_SNATCH)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -646,7 +646,7 @@ bool8 CanUseOnTargetWithStatusChecker(Entity *user, Entity *target, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_SMOKESCREEN:
|
||||
if (targetData->moveStatus == STATUS_WHIFFER)
|
||||
if (targetData->moveStatus.moveStatus == STATUS_WHIFFER)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -809,7 +809,7 @@ bool8 CanUseOnTargetWithStatusChecker(Entity *user, Entity *target, Move *move)
|
|||
case MOVE_CURSE:
|
||||
if (MonsterIsType(user, TYPE_GHOST))
|
||||
{
|
||||
if (targetData->waitingStatus == STATUS_CURSED)
|
||||
if (targetData->waitingStruct.waitingStatus == STATUS_CURSED)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
@ -837,7 +837,7 @@ bool8 CanUseOnTargetWithStatusChecker(Entity *user, Entity *target, Move *move)
|
|||
}
|
||||
break;
|
||||
case MOVE_LEECH_SEED:
|
||||
if (targetData->linkedStatus == STATUS_LEECH_SEED)
|
||||
if (targetData->linked.linkedStatus == STATUS_LEECH_SEED)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
|
|
|||
102
src/status.c
102
src/status.c
|
|
@ -796,16 +796,16 @@ void HandleLeechSeed(Entity * pokemon, Entity * target, bool8 displayMessage)
|
|||
}
|
||||
else
|
||||
{
|
||||
switch(entityInfo->linkedStatus)
|
||||
switch(entityInfo->linked.linkedStatus)
|
||||
{
|
||||
case STATUS_DESTINY_BOND:
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAA8C);
|
||||
default:
|
||||
entityInfo->linkedStatus = STATUS_LEECH_SEED;
|
||||
entityInfo->linkedStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EB0, TRUE) + 1;
|
||||
entityInfo->linkedStatusDamageCountdown = 0;
|
||||
entityInfo->linked.linkedStatus = STATUS_LEECH_SEED;
|
||||
entityInfo->linked.linkedStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EB0, TRUE) + 1;
|
||||
entityInfo->linked.linkedStatusDamageCountdown = 0;
|
||||
nullsub_78(target);
|
||||
entityInfo->unkD8 = 0xff;
|
||||
entityInfo->linked.unkD8 = 0xff;
|
||||
break;
|
||||
case STATUS_LEECH_SEED:
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAE7C);
|
||||
|
|
@ -814,9 +814,9 @@ void HandleLeechSeed(Entity * pokemon, Entity * target, bool8 displayMessage)
|
|||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
if (pokemon == gDungeon->allPokemon[index]) {
|
||||
entityInfo->unkD8 = index;
|
||||
entityInfo->linked.unkD8 = index;
|
||||
entityInfo2 = pokemon->info;
|
||||
entityInfo->unkD4 = entityInfo2->unk98;
|
||||
entityInfo->linked.unkD4 = entityInfo2->unk98;
|
||||
}
|
||||
}
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FAE58);
|
||||
|
|
@ -839,11 +839,11 @@ void sub_8078084(Entity * pokemon)
|
|||
target = gDungeon->allPokemon[index];
|
||||
if (EntityExists(target)) {
|
||||
entityInfo2 = target->info;
|
||||
if((u8)(entityInfo2->linkedStatus - 1) <= 1)
|
||||
if((u8)(entityInfo2->linked.linkedStatus - 1) <= 1)
|
||||
{
|
||||
if(entityInfo2->unkD4 == entityInfo->unk98)
|
||||
if(entityInfo2->linked.unkD4 == entityInfo->unk98)
|
||||
{
|
||||
entityInfo2->linkedStatus = STATUS_NONE;
|
||||
entityInfo2->linked.linkedStatus = STATUS_NONE;
|
||||
EntityUpdateStatusSprites(target);
|
||||
}
|
||||
}
|
||||
|
|
@ -863,17 +863,17 @@ void DestinyBondStatusTarget(Entity * pokemon, Entity * target)
|
|||
(GetEntityType(target) == ENTITY_MONSTER)) {
|
||||
entityInfo = pokemon->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,pokemon,0);
|
||||
linkedStatus = &entityInfo->linkedStatus;
|
||||
if (entityInfo->linkedStatus != STATUS_DESTINY_BOND)
|
||||
linkedStatus = &entityInfo->linked.linkedStatus;
|
||||
if (entityInfo->linked.linkedStatus != STATUS_DESTINY_BOND)
|
||||
{
|
||||
if (entityInfo->linkedStatus == STATUS_LEECH_SEED)
|
||||
if (entityInfo->linked.linkedStatus == STATUS_LEECH_SEED)
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FA79C);
|
||||
zero = 0;
|
||||
*linkedStatus = STATUS_DESTINY_BOND;
|
||||
entityInfo->linkedStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EF0,TRUE) + 1;
|
||||
entityInfo->linkedStatusDamageCountdown = zero;
|
||||
entityInfo->linked.linkedStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EF0,TRUE) + 1;
|
||||
entityInfo->linked.linkedStatusDamageCountdown = zero;
|
||||
nullsub_74(target);
|
||||
entityInfo->unkD8 = 0xff;
|
||||
entityInfo->linked.unkD8 = 0xff;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -883,9 +883,9 @@ void DestinyBondStatusTarget(Entity * pokemon, Entity * target)
|
|||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
if (target == gDungeon->allPokemon[index]) {
|
||||
entityInfo->unkD8 = index;
|
||||
entityInfo->linked.unkD8 = index;
|
||||
entityInfo2 = target->info;
|
||||
entityInfo->unkD4 = entityInfo2->unk98;
|
||||
entityInfo->linked.unkD4 = entityInfo2->unk98;
|
||||
}
|
||||
}
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBB4C);
|
||||
|
|
@ -900,9 +900,9 @@ void SureShotStatusTarget(Entity *pokemon, Entity * target, s32 turns)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->moveStatus != STATUS_SURE_SHOT) {
|
||||
entityInfo->moveStatus = STATUS_SURE_SHOT;
|
||||
entityInfo->moveStatusTurns = turns + 1;
|
||||
if (entityInfo->moveStatus.moveStatus != STATUS_SURE_SHOT) {
|
||||
entityInfo->moveStatus.moveStatus = STATUS_SURE_SHOT;
|
||||
entityInfo->moveStatus.moveStatusTurns = turns + 1;
|
||||
sub_8041CDC(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB73C);
|
||||
}
|
||||
|
|
@ -920,9 +920,9 @@ void WhifferStatusTarget(Entity *pokemon, Entity * target, s32 turns)
|
|||
if (EntityExists(target) && !HasSafeguardStatus(pokemon, target, TRUE)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->moveStatus != STATUS_WHIFFER) {
|
||||
entityInfo->moveStatus = STATUS_WHIFFER;
|
||||
entityInfo->moveStatusTurns = turns + 1;
|
||||
if (entityInfo->moveStatus.moveStatus != STATUS_WHIFFER) {
|
||||
entityInfo->moveStatus.moveStatus = STATUS_WHIFFER;
|
||||
entityInfo->moveStatus.moveStatusTurns = turns + 1;
|
||||
sub_8041CEC(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB780);
|
||||
}
|
||||
|
|
@ -940,9 +940,9 @@ void FixedDamageStatusTarget(Entity *pokemon, Entity * target)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->moveStatus != STATUS_SET_DAMAGE) {
|
||||
entityInfo->moveStatus = STATUS_SET_DAMAGE;
|
||||
entityInfo->moveStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EC4, FALSE) + 1;
|
||||
if (entityInfo->moveStatus.moveStatus != STATUS_SET_DAMAGE) {
|
||||
entityInfo->moveStatus.moveStatus = STATUS_SET_DAMAGE;
|
||||
entityInfo->moveStatus.moveStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EC4, FALSE) + 1;
|
||||
nullsub_79(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB8BC);
|
||||
}
|
||||
|
|
@ -960,9 +960,9 @@ void FocusEnergyStatusTarget(Entity *pokemon, Entity * target)
|
|||
if (EntityExists(target)) {
|
||||
entityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (entityInfo->moveStatus != STATUS_FOCUS_ENERGY) {
|
||||
entityInfo->moveStatus = STATUS_FOCUS_ENERGY;
|
||||
entityInfo->moveStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EC8, FALSE) + 1;
|
||||
if (entityInfo->moveStatus.moveStatus != STATUS_FOCUS_ENERGY) {
|
||||
entityInfo->moveStatus.moveStatus = STATUS_FOCUS_ENERGY;
|
||||
entityInfo->moveStatus.moveStatusTurns = CalculateStatusTurns(target, gUnknown_80F4EC8, FALSE) + 1;
|
||||
nullsub_80(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB900);
|
||||
}
|
||||
|
|
@ -985,7 +985,7 @@ void sub_80783C4(Entity * pokemon, Entity * target, u8 param_3)
|
|||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon, target, TRUE))) {
|
||||
targetEntityInfo = target->info;
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (targetEntityInfo->waitingStatus == STATUS_DECOY) {
|
||||
if (targetEntityInfo->waitingStruct.waitingStatus == STATUS_DECOY) {
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB994);
|
||||
}
|
||||
else {
|
||||
|
|
@ -993,21 +993,21 @@ void sub_80783C4(Entity * pokemon, Entity * target, u8 param_3)
|
|||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if ((((EntityExists(entity)) && (target != entity)) &&
|
||||
(u8)(entity->info->waitingStatus - 2U) < 2)) {
|
||||
(u8)(entity->info->waitingStruct.waitingStatus - 2U) < 2)) {
|
||||
SendWaitingEndMessage(pokemon,entity,STATUS_NONE);
|
||||
sub_803E46C(0x2a);
|
||||
}
|
||||
}
|
||||
sub_8041D38(target);
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (targetEntityInfo->waitingStatus != STATUS_NONE) {
|
||||
if (targetEntityInfo->waitingStruct.waitingStatus != STATUS_NONE) {
|
||||
SendWaitingEndMessage(pokemon,target, STATUS_DECOY);
|
||||
}
|
||||
targetEntityInfo->waitingStatus = STATUS_DECOY;
|
||||
targetEntityInfo->enemyDecoy = pokemon->info->isNotTeamMember;
|
||||
targetEntityInfo->unkCA = param_3;
|
||||
targetEntityInfo->waitingStatusTurns = CalculateStatusTurns(target,gUnknown_80F4ED0,TRUE) + 1;
|
||||
targetEntityInfo->curseDamageCountdown = 0;
|
||||
targetEntityInfo->waitingStruct.waitingStatus = STATUS_DECOY;
|
||||
targetEntityInfo->waitingStruct.enemyDecoy = pokemon->info->isNotTeamMember;
|
||||
targetEntityInfo->waitingStruct.unkCA = param_3;
|
||||
targetEntityInfo->waitingStruct.waitingStatusTurns = CalculateStatusTurns(target,gUnknown_80F4ED0,TRUE) + 1;
|
||||
targetEntityInfo->waitingStruct.curseDamageCountdown = 0;
|
||||
sub_806CCB4(target,sub_806CEBC(target));
|
||||
gDungeon->decoyActive = TRUE;
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB978);
|
||||
|
|
@ -1054,10 +1054,10 @@ void CurseStatusTarget(Entity *pokemon, Entity * target)
|
|||
if (HP == 0) {
|
||||
pokemonEntityData->HP = 1;
|
||||
}
|
||||
if (targetEntityInfo->waitingStatus != STATUS_CURSED) {
|
||||
targetEntityInfo->waitingStatus = STATUS_CURSED;
|
||||
targetEntityInfo->waitingStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EA4,TRUE) + 1;
|
||||
targetEntityInfo->curseDamageCountdown = 0;
|
||||
if (targetEntityInfo->waitingStruct.waitingStatus != STATUS_CURSED) {
|
||||
targetEntityInfo->waitingStruct.waitingStatus = STATUS_CURSED;
|
||||
targetEntityInfo->waitingStruct.waitingStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EA4,TRUE) + 1;
|
||||
targetEntityInfo->waitingStruct.curseDamageCountdown = 0;
|
||||
}
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FB004);
|
||||
|
|
@ -1085,7 +1085,7 @@ void SnatchStatusTarget(Entity * pokemon, Entity * target)
|
|||
for(index = 0; index < DUNGEON_MAX_POKEMON; index++)
|
||||
{
|
||||
entity = gDungeon->allPokemon[index];
|
||||
if ((EntityExists(entity)) && (entity->info->waitingStatus == STATUS_SNATCH)) {
|
||||
if ((EntityExists(entity)) && (entity->info->waitingStruct.waitingStatus == STATUS_SNATCH)) {
|
||||
SendWaitingEndMessage(pokemon, entity, STATUS_NONE);
|
||||
}
|
||||
}
|
||||
|
|
@ -1093,10 +1093,10 @@ void SnatchStatusTarget(Entity * pokemon, Entity * target)
|
|||
|
||||
targetEntityInfo = target->info;
|
||||
targetEntityInfo2 = targetEntityInfo;
|
||||
if (targetEntityInfo->waitingStatus != STATUS_SNATCH) {
|
||||
targetEntityInfo->waitingStatus = STATUS_SNATCH;
|
||||
targetEntityInfo->waitingStatusTurns= CalculateStatusTurns(target,gUnknown_80F4EA8,FALSE) + 1;
|
||||
targetEntityInfo->curseDamageCountdown = 0;
|
||||
if (targetEntityInfo->waitingStruct.waitingStatus != STATUS_SNATCH) {
|
||||
targetEntityInfo->waitingStruct.waitingStatus = STATUS_SNATCH;
|
||||
targetEntityInfo->waitingStruct.waitingStatusTurns= CalculateStatusTurns(target,gUnknown_80F4EA8,FALSE) + 1;
|
||||
targetEntityInfo->waitingStruct.curseDamageCountdown = 0;
|
||||
}
|
||||
|
||||
gDungeon->snatchPokemon = target;
|
||||
|
|
@ -1156,13 +1156,13 @@ void InvisibleStatusTarget(Entity * pokemon, Entity * target)
|
|||
if (EntityExists(target)) {
|
||||
targetEntityInfo = target->info;
|
||||
targetEntityInfo_1 = targetEntityInfo;
|
||||
if (targetEntityInfo_1->transformStatus == STATUS_TRANSFORMED) {
|
||||
if (targetEntityInfo_1->transformStatus.transformStatus == STATUS_TRANSFORMED) {
|
||||
SendTransformEndMessage(pokemon,target);
|
||||
}
|
||||
SetMessageArgument(gAvailablePokemonNames,target,0);
|
||||
if (targetEntityInfo_1->transformStatus != STATUS_INVISIBLE) {
|
||||
targetEntityInfo_1->transformStatus = STATUS_INVISIBLE;
|
||||
targetEntityInfo_1->transformStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EE4,FALSE) + 1;
|
||||
if (targetEntityInfo_1->transformStatus.transformStatus != STATUS_INVISIBLE) {
|
||||
targetEntityInfo_1->transformStatus.transformStatus = STATUS_INVISIBLE;
|
||||
targetEntityInfo_1->transformStatus.transformStatusTurns = CalculateStatusTurns(target,gUnknown_80F4EE4,FALSE) + 1;
|
||||
sub_8041D84(target);
|
||||
sub_80522F4(pokemon,target,*gUnknown_80FBA80);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ bool8 HasStatusAffectingActions(Entity *pokemon)
|
|||
SendMessage(pokemon, *gPtrBideMessage);
|
||||
return TRUE;
|
||||
}
|
||||
if (pokemonInfo->waitingStatus == STATUS_DECOY)
|
||||
if (pokemonInfo->waitingStruct.waitingStatus == STATUS_DECOY)
|
||||
{
|
||||
SetActionPassTurnOrWalk(&pokemonInfo->action, pokemonInfo->id);
|
||||
pokemonInfo->action.direction = DungeonRandInt(NUM_DIRECTIONS);
|
||||
|
|
@ -78,7 +78,7 @@ bool8 HasStatusAffectingActions(Entity *pokemon)
|
|||
{
|
||||
return TRUE;
|
||||
}
|
||||
if (pokemonInfo->eyesightStatus == STATUS_BLINKER)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER)
|
||||
{
|
||||
if (!CanMoveInDirection(pokemon, pokemonInfo->action.direction))
|
||||
{
|
||||
|
|
@ -98,7 +98,7 @@ bool8 HasStatusAffectingActions(Entity *pokemon)
|
|||
DecideAttack(pokemon);
|
||||
return TRUE;
|
||||
}
|
||||
if (pokemonInfo->eyesightStatus == STATUS_CROSS_EYED)
|
||||
if (pokemonInfo->eyesightStatus.eyesightStatus == STATUS_CROSS_EYED)
|
||||
{
|
||||
SetActionPassTurnOrWalk(&pokemonInfo->action, pokemonInfo->id);
|
||||
pokemonInfo->action.direction = DungeonRandInt(NUM_DIRECTIONS);
|
||||
|
|
|
|||
|
|
@ -59,14 +59,14 @@ void SetMessageArgument_2(u8 *buffer, EntityInfo *param_2, s32 colorNum)
|
|||
{
|
||||
if (((gDungeon->blinded ||
|
||||
gDungeon->hallucinating) ||
|
||||
(param_2->transformStatus == STATUS_INVISIBLE)) &&
|
||||
(param_2->transformStatus.transformStatus == STATUS_INVISIBLE)) &&
|
||||
(param_2->isNotTeamMember))
|
||||
{
|
||||
strcpy(buffer, *gUnknown_80F8988);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (param_2->waitingStatus == STATUS_DECOY) {
|
||||
if (param_2->waitingStruct.waitingStatus == STATUS_DECOY) {
|
||||
strcpy(buffer, *gUnknown_80F8968);
|
||||
}
|
||||
else
|
||||
|
|
@ -88,7 +88,7 @@ void SetMessageArgument_2(u8 *buffer, EntityInfo *param_2, s32 colorNum)
|
|||
|
||||
void sub_8070968(u8 *buffer, EntityInfo *entityInfo, s32 colorNum)
|
||||
{
|
||||
if (entityInfo->waitingStatus == STATUS_DECOY) {
|
||||
if (entityInfo->waitingStruct.waitingStatus == STATUS_DECOY) {
|
||||
sprintfStatic(buffer, gUnknown_8106FA4, colorNum + 0x30, *gUnknown_80F8974);
|
||||
}
|
||||
else if (entityInfo->isNotTeamMember) {
|
||||
|
|
@ -103,14 +103,14 @@ void sub_80709C8(u8 *buffer, EntityInfo *entityInfo)
|
|||
{
|
||||
if (((gDungeon->blinded ||
|
||||
gDungeon->hallucinating) ||
|
||||
(entityInfo->transformStatus == STATUS_INVISIBLE)) &&
|
||||
(entityInfo->transformStatus.transformStatus == STATUS_INVISIBLE)) &&
|
||||
(entityInfo->isNotTeamMember))
|
||||
{
|
||||
strcpy(buffer, *gUnknown_80F8994);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (entityInfo->waitingStatus == STATUS_DECOY) {
|
||||
if (entityInfo->waitingStruct.waitingStatus == STATUS_DECOY) {
|
||||
strcpy(buffer, *gUnknown_80F8974);
|
||||
}
|
||||
else
|
||||
|
|
@ -136,13 +136,13 @@ bool8 HasNegativeStatus(Entity *pokemon)
|
|||
pokemonInfo->nonVolatile.nonVolatileStatus != STATUS_NONE ||
|
||||
(pokemonInfo->immobilize.immobilizeStatus != STATUS_INGRAIN && pokemonInfo->immobilize.immobilizeStatus != STATUS_NONE) ||
|
||||
pokemonInfo->Volatile.volatileStatus != STATUS_NONE ||
|
||||
pokemonInfo->waitingStatus == STATUS_CURSED ||
|
||||
pokemonInfo->waitingStatus == STATUS_DECOY ||
|
||||
pokemonInfo->linkedStatus == STATUS_LEECH_SEED ||
|
||||
pokemonInfo->moveStatus == STATUS_WHIFFER ||
|
||||
pokemonInfo->eyesightStatus == STATUS_BLINKER ||
|
||||
pokemonInfo->eyesightStatus == STATUS_CROSS_EYED ||
|
||||
pokemonInfo->muzzled == TRUE ||
|
||||
pokemonInfo->waitingStruct.waitingStatus == STATUS_CURSED ||
|
||||
pokemonInfo->waitingStruct.waitingStatus == STATUS_DECOY ||
|
||||
pokemonInfo->linked.linkedStatus == STATUS_LEECH_SEED ||
|
||||
pokemonInfo->moveStatus.moveStatus == STATUS_WHIFFER ||
|
||||
pokemonInfo->eyesightStatus.eyesightStatus == STATUS_BLINKER ||
|
||||
pokemonInfo->eyesightStatus.eyesightStatus == STATUS_CROSS_EYED ||
|
||||
pokemonInfo->muzzled.muzzled == TRUE ||
|
||||
pokemonInfo->exposed ||
|
||||
pokemonInfo->perishSongTurns != 0)
|
||||
{
|
||||
|
|
|
|||
123
src/trap_1.c
123
src/trap_1.c
|
|
@ -49,21 +49,21 @@ void sub_8081B54(void *, u8 *);
|
|||
void SaveSpeedStage(unkStruct_8094924 *param_1, s32 param_2);
|
||||
void sub_8081854(unkStruct_8094924 *param_1, s32 param_2);
|
||||
void sub_808183C(unkStruct_8094924 *param_1, s32 param_2);
|
||||
void sub_8081AB8(void *, bool8 *);
|
||||
void sub_8081A9C(void *, u8*);
|
||||
void sub_8081A80(void *, u8*);
|
||||
void sub_8081A74(void *, u8*);
|
||||
void sub_8081A58(void *, u8*);
|
||||
void sub_8081A24(void *, u8*);
|
||||
void SaveVolatile(unkStruct_8094924 *param_1, Volatile *param_2);
|
||||
void SaveImmobilize(unkStruct_8094924 *param_1, Immobilize *param_2);
|
||||
void SaveNonVolatile(unkStruct_8094924 *param_1, NonVolatile *param_2);
|
||||
void SaveMuzzledStatus(unkStruct_8094924 *param_1, Muzzled *param_2);
|
||||
void SaveEyesightStatus(unkStruct_8094924 *param_1, EyesightStatus *param_2);
|
||||
void SaveTransformStatus(unkStruct_8094924 *param_1, TransformStatus *param_2);
|
||||
void SaveItemStatus(unkStruct_8094924 *param_1, ItemStatus *param_2);
|
||||
void SaveMoveStatus(unkStruct_8094924 *param_1, MoveStatus* param_2);
|
||||
void SaveLinkedStatus(unkStruct_8094924 *param_1, Linked *param_2);
|
||||
void SaveVolatileStatus(unkStruct_8094924 *param_1, Volatile *param_2);
|
||||
void SaveImmobilizeStatus(unkStruct_8094924 *param_1, Immobilize *param_2);
|
||||
void SaveNonVolatileStatus(unkStruct_8094924 *param_1, NonVolatile *param_2);
|
||||
void SaveEntitySleep(unkStruct_8094924 *param_1, Sleep* param_2);
|
||||
void SaveTactic(unkStruct_8094924 *param_1, u8 param_2);
|
||||
void SaveHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2);
|
||||
void SaveCharging(unkStruct_8094924 *param_1, Charging *param_2);
|
||||
void SaveProtection(unkStruct_8094924 *param_1, Protection *param_2);
|
||||
void sub_80819F0(void *, u8 *);
|
||||
void SaveChargingStatus(unkStruct_8094924 *param_1, Charging *param_2);
|
||||
void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2);
|
||||
void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2);
|
||||
void SaveSpeedCounters(void *, u8 *, u32);
|
||||
void SaveClientType(unkStruct_8094924 *param_1, u8 param_2);
|
||||
void sub_803E708(u32, u32);
|
||||
|
|
@ -247,13 +247,13 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
|||
Volatile *puStack_80;
|
||||
Charging *puStack_7c;
|
||||
Protection *puStack_78;
|
||||
u8 *puStack_74;
|
||||
u8 *puStack_70;
|
||||
u8 *puStack_6c;
|
||||
u8 *puStack_68;
|
||||
u8 *puStack_64;
|
||||
u8 *puStack_60;
|
||||
bool8 *pbStack_5c;
|
||||
Waiting *puStack_74;
|
||||
Linked *puStack_70;
|
||||
MoveStatus *puStack_6c;
|
||||
ItemStatus *puStack_68;
|
||||
TransformStatus *puStack_64;
|
||||
EyesightStatus *puStack_60;
|
||||
Muzzled *pbStack_5c;
|
||||
bool8 *pbStack_58;
|
||||
bool8 *pbStack_54;
|
||||
bool8 *pbStack_50;
|
||||
|
|
@ -341,8 +341,8 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
|||
puStack_80 = &info->Volatile;
|
||||
puStack_7c = &info->charging;
|
||||
puStack_78 = &info->protection;
|
||||
puStack_74 = &info->waitingStatus;
|
||||
puStack_70 = &info->linkedStatus;
|
||||
puStack_74 = &info->waitingStruct;
|
||||
puStack_70 = &info->linked;
|
||||
puStack_6c = &info->moveStatus;
|
||||
puStack_68 = &info->itemStatus;
|
||||
puStack_64 = &info->transformStatus;
|
||||
|
|
@ -380,18 +380,18 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2)
|
|||
sub_8083078(param_1,*puStack_98);
|
||||
sub_8083078(param_1,*puStack_94);
|
||||
SaveEntitySleep(param_1,puStack_8c);
|
||||
SaveNonVolatile(param_1,puStack_88);
|
||||
SaveImmobilize(param_1,puStack_84);
|
||||
SaveVolatile(param_1,puStack_80);
|
||||
SaveCharging(param_1,puStack_7c);
|
||||
SaveProtection(param_1,puStack_78);
|
||||
sub_80819F0(param_1,puStack_74);
|
||||
sub_8081A24(param_1,puStack_70);
|
||||
sub_8081A58(param_1,puStack_6c);
|
||||
sub_8081A74(param_1,puStack_68);
|
||||
sub_8081A80(param_1,puStack_64);
|
||||
sub_8081A9C(param_1,puStack_60);
|
||||
sub_8081AB8(param_1,pbStack_5c);
|
||||
SaveNonVolatileStatus(param_1,puStack_88);
|
||||
SaveImmobilizeStatus(param_1,puStack_84);
|
||||
SaveVolatileStatus(param_1,puStack_80);
|
||||
SaveChargingStatus(param_1,puStack_7c);
|
||||
SaveProtectionStatus(param_1,puStack_78);
|
||||
SaveWaitingStatus(param_1,puStack_74);
|
||||
SaveLinkedStatus(param_1,puStack_70);
|
||||
SaveMoveStatus(param_1,puStack_6c);
|
||||
SaveItemStatus(param_1,puStack_68);
|
||||
SaveTransformStatus(param_1,puStack_64);
|
||||
SaveEyesightStatus(param_1,puStack_60);
|
||||
SaveMuzzledStatus(param_1,pbStack_5c);
|
||||
sub_80830B4(param_1,*pbStack_58);
|
||||
sub_80830B4(param_1,*pbStack_54);
|
||||
sub_80830B4(param_1,*pbStack_50);
|
||||
|
|
@ -623,7 +623,7 @@ void SaveEntitySleep(unkStruct_8094924 *param_1, Sleep* param_2)
|
|||
sub_8083060(param_1, param_2->sleepTurns);
|
||||
}
|
||||
|
||||
void SaveNonVolatile(unkStruct_8094924 *param_1, NonVolatile *param_2)
|
||||
void SaveNonVolatileStatus(unkStruct_8094924 *param_1, NonVolatile *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->nonVolatileStatus, 1);
|
||||
sub_8083060(param_1, param_2->nonVolatileStatusTurns);
|
||||
|
|
@ -631,7 +631,7 @@ void SaveNonVolatile(unkStruct_8094924 *param_1, NonVolatile *param_2)
|
|||
sub_8083060(param_1, param_2->unk4);
|
||||
}
|
||||
|
||||
void SaveImmobilize(unkStruct_8094924 *param_1, Immobilize *param_2)
|
||||
void SaveImmobilizeStatus(unkStruct_8094924 *param_1, Immobilize *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->immobilizeStatus, 1);
|
||||
sub_8083060(param_1, param_2->immobilizeStatusTurns);
|
||||
|
|
@ -639,22 +639,69 @@ void SaveImmobilize(unkStruct_8094924 *param_1, Immobilize *param_2)
|
|||
sub_8083078(param_1, param_2->unk4);
|
||||
}
|
||||
|
||||
void SaveVolatile(unkStruct_8094924 *param_1, Volatile *param_2)
|
||||
void SaveVolatileStatus(unkStruct_8094924 *param_1, Volatile *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->volatileStatus, 1);
|
||||
sub_8083060(param_1, param_2->volatileStatusTurns);
|
||||
}
|
||||
|
||||
void SaveCharging(unkStruct_8094924 *param_1, Charging *param_2)
|
||||
void SaveChargingStatus(unkStruct_8094924 *param_1, Charging *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->chargingStatus, 1);
|
||||
sub_8083060(param_1, param_2->chargingStatusTurns);
|
||||
sub_8083060(param_1, param_2->chargingStatusMoveIndex);
|
||||
}
|
||||
|
||||
void SaveProtection(unkStruct_8094924 *param_1, Protection *param_2)
|
||||
void SaveProtectionStatus(unkStruct_8094924 *param_1, Protection *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->protectionStatus, 1);
|
||||
sub_8083060(param_1, param_2->protectionStatusTurns);
|
||||
}
|
||||
|
||||
void SaveWaitingStatus(unkStruct_8094924 *param_1, Waiting *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->waitingStatus, 1);
|
||||
sub_80830B4(param_1, param_2->enemyDecoy);
|
||||
sub_80830B4(param_1, param_2->unkCA);
|
||||
sub_8083060(param_1, param_2->waitingStatusTurns);
|
||||
sub_8083060(param_1, param_2->curseDamageCountdown);
|
||||
}
|
||||
|
||||
void SaveLinkedStatus(unkStruct_8094924 *param_1, Linked *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->linkedStatus, 1);
|
||||
sub_8083078(param_1, param_2->unkD4);
|
||||
sub_8083060(param_1, param_2->unkD8);
|
||||
sub_8083060(param_1, param_2->linkedStatusTurns);
|
||||
sub_8083060(param_1, param_2->linkedStatusDamageCountdown);
|
||||
}
|
||||
|
||||
void SaveMoveStatus(unkStruct_8094924 *param_1, MoveStatus* param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->moveStatus, 1);
|
||||
sub_8083060(param_1, param_2->moveStatusTurns);
|
||||
}
|
||||
|
||||
void SaveItemStatus(unkStruct_8094924 *param_1, ItemStatus *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->itemStatus, 1);
|
||||
}
|
||||
|
||||
void SaveTransformStatus(unkStruct_8094924 *param_1, TransformStatus *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->transformStatus, 1);
|
||||
sub_8083060(param_1, param_2->transformStatusTurns);
|
||||
}
|
||||
|
||||
void SaveEyesightStatus(unkStruct_8094924 *param_1, EyesightStatus *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->eyesightStatus, 1);
|
||||
sub_8083060(param_1, param_2->eyesightStatusTurns);
|
||||
}
|
||||
|
||||
void SaveMuzzledStatus(unkStruct_8094924 *param_1, Muzzled *param_2)
|
||||
{
|
||||
sub_8082FA8(param_1, ¶m_2->muzzled, 1);
|
||||
sub_8083060(param_1, param_2->muzzledTurns);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user