mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-20 07:45:13 -05:00
Merge pull request #270 from AnonymousRandomPerson/master
Some checks are pending
GithubCI / build (push) Waiting to run
Some checks are pending
GithubCI / build (push) Waiting to run
This commit is contained in:
@@ -347,7 +347,7 @@ _0807E90E:
|
||||
bl CalcSpeedStage
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x25
|
||||
bl HasAbility
|
||||
bl AbilityIsActive
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E958
|
||||
@@ -414,7 +414,7 @@ _0807E9A4:
|
||||
bhi _0807E9FE
|
||||
adds r0, r5, 0
|
||||
movs r1, 0x25
|
||||
bl HasAbility
|
||||
bl AbilityIsActive
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807E9D4
|
||||
@@ -1034,7 +1034,7 @@ _0807EEA0:
|
||||
adds r1, r5, 0
|
||||
movs r2, 0x3
|
||||
adds r3, r6, 0
|
||||
bl WarpTarget
|
||||
bl WarpTarget
|
||||
b _0807EE72
|
||||
_0807EEAE:
|
||||
movs r6, 0
|
||||
@@ -1741,7 +1741,7 @@ sub_807F43C:
|
||||
mov r8, r1
|
||||
mov r0, r8
|
||||
movs r1, 0xE
|
||||
bl HasAbility
|
||||
bl AbilityIsActive
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _0807F470
|
||||
@@ -2301,7 +2301,7 @@ _0807F8BE:
|
||||
mov r1, r8
|
||||
movs r2, 0
|
||||
movs r3, 0
|
||||
bl WarpTarget
|
||||
bl WarpTarget
|
||||
b _0807F8FA
|
||||
.align 2, 0
|
||||
_0807F8D0: .4byte gAdjacentTileOffsets
|
||||
|
||||
@@ -108,7 +108,7 @@ enum DungeonID
|
||||
NUM_DUNGEONS
|
||||
};
|
||||
|
||||
static inline bool8 IsClientOrTeamBase(s32 joinedDungeon)
|
||||
static inline bool8 IsExperienceLocked(s32 joinedDungeon)
|
||||
{
|
||||
if (joinedDungeon == DUNGEON_JOIN_LOCATION_CLIENT_POKEMON || joinedDungeon == DUNGEON_RESCUE_TEAM_BASE)
|
||||
return TRUE;
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
bool8 HasSafeguardStatus(Entity * param_1, Entity * param_2, bool8 displayMessage);
|
||||
bool8 sub_8071728(Entity * pokemon, Entity * target, bool8 displayMessage);
|
||||
bool8 sub_80717A4(Entity *pokemon, u16 moveID);
|
||||
bool8 HasAbility(Entity *pokemon, u8 ability);
|
||||
bool8 AbilityIsActive(Entity *pokemon, u8 ability);
|
||||
bool8 MonsterIsType(Entity *pokemon, u8 type);
|
||||
bool8 CanSeeInvisibleMonsters(Entity *pokemon);
|
||||
bool8 HasTactic(Entity *pokemon, u8 tactic);
|
||||
bool8 IsTacticSet(Entity *pokemon, u8 tactic);
|
||||
bool8 IQSkillIsEnabled(Entity *pokemon, u8 IQSkill);
|
||||
void LoadIQSkills(Entity *pokemon);
|
||||
bool8 CanSeeTeammate(Entity * pokemon);
|
||||
|
||||
@@ -1010,7 +1010,7 @@ void sub_8043D60(void)
|
||||
|
||||
if (monInfo->shopkeeper == TRUE)
|
||||
unk = FALSE;
|
||||
if (IsClientOrTeamBase(monInfo->joinedAt.id))
|
||||
if (IsExperienceLocked(monInfo->joinedAt.id))
|
||||
unk = FALSE;
|
||||
if (monInfo->monsterBehavior == BEHAVIOR_RESCUE_TARGET)
|
||||
unk = FALSE;
|
||||
|
||||
@@ -746,7 +746,7 @@ void HandleGummiItemAction(Entity *pokemon, Entity *target, u8 gummiIndex)
|
||||
gUnknown_810A808[targetInfo->types[0]][gummiIndex] +
|
||||
gUnknown_810A808[targetInfo->types[1]][gummiIndex],0,1);
|
||||
if (!targetInfo->isNotTeamMember) {
|
||||
if (!IsClientOrTeamBase(targetInfo->joinedAt.id)) {
|
||||
if (!IsExperienceLocked(targetInfo->joinedAt.id)) {
|
||||
baseIQ = targetInfo->IQ;
|
||||
targetInfo->IQ += gummiBoost;
|
||||
currIQ = baseIQ + gummiBoost;
|
||||
@@ -834,7 +834,7 @@ bool8 sub_8048950(Entity *param_1,Item *item)
|
||||
if (entityInfo->monsterBehavior == BEHAVIOR_RESCUE_TARGET) {
|
||||
flag = FALSE;
|
||||
}
|
||||
if (IsClientOrTeamBase(entityInfo->joinedAt.id)) {
|
||||
if (IsExperienceLocked(entityInfo->joinedAt.id)) {
|
||||
flag = FALSE;
|
||||
}
|
||||
entityInfo->unk157 = flag;
|
||||
@@ -896,7 +896,7 @@ bool8 sub_8048A68(Entity *param_1,Item *item)
|
||||
if (pEVar6->monsterBehavior == BEHAVIOR_RESCUE_TARGET) {
|
||||
flag = FALSE;
|
||||
}
|
||||
if (IsClientOrTeamBase(pEVar6->joinedAt.id)) {
|
||||
if (IsExperienceLocked(pEVar6->joinedAt.id)) {
|
||||
flag = FALSE;
|
||||
}
|
||||
if (pEVar6->isTeamLeader) {
|
||||
@@ -959,7 +959,7 @@ bool32 sub_8048B9C(Entity *entity,Item *param_2)
|
||||
{
|
||||
flag = FALSE;
|
||||
}
|
||||
if(IsClientOrTeamBase(entity1Info->joinedAt.id))
|
||||
if(IsExperienceLocked(entity1Info->joinedAt.id))
|
||||
{
|
||||
flag = FALSE;
|
||||
}
|
||||
|
||||
@@ -1541,7 +1541,7 @@ bool8 sub_805EC4C(Entity *a0, u8 a1)
|
||||
tileMonsterInfo = GetEntInfo(tileMonster);
|
||||
if (tileMonsterInfo->isNotTeamMember
|
||||
&& (tileMonsterInfo->shopkeeper != 1 && tileMonsterInfo->shopkeeper != 2)
|
||||
&& !IsClientOrTeamBase(tileMonsterInfo->joinedAt.id)
|
||||
&& !IsExperienceLocked(tileMonsterInfo->joinedAt.id)
|
||||
&& tileMonsterInfo->monsterBehavior != BEHAVIOR_RESCUE_TARGET) {
|
||||
return FALSE;
|
||||
}
|
||||
@@ -3468,7 +3468,7 @@ void sub_806145C(struct UnkFieldTeamMenuStruct *a0)
|
||||
}
|
||||
}
|
||||
|
||||
if (IsClientOrTeamBase(monInfo->joinedAt.id)) {
|
||||
if (IsExperienceLocked(monInfo->joinedAt.id)) {
|
||||
sub_8044FF0(0x19);
|
||||
sub_8044FF0(0x3B);
|
||||
sub_8044FF0(0x1A);
|
||||
|
||||
@@ -108,7 +108,7 @@ void sub_8069E0C(Entity *pokemon)
|
||||
EntityInfo *entityInfo;
|
||||
|
||||
entityInfo = GetEntInfo(pokemon);
|
||||
if (HasAbility(pokemon, ABILITY_FORECAST)) {
|
||||
if (AbilityIsActive(pokemon, ABILITY_FORECAST)) {
|
||||
entityInfo->types[0] = gUnknown_80F520C[GetApparentWeather(pokemon)].unk0;
|
||||
entityInfo->types[1] = TYPE_NONE;
|
||||
}
|
||||
@@ -134,16 +134,16 @@ void TriggerWeatherAbilities(void)
|
||||
{
|
||||
entity = gDungeon->activePokemon[index];
|
||||
if (EntityExists(entity)) {
|
||||
if (HasAbility(entity, ABILITY_DRIZZLE)) {
|
||||
if (AbilityIsActive(entity, ABILITY_DRIZZLE)) {
|
||||
gDungeon->weather.naturalWeather[WEATHER_RAIN] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_SAND_STREAM)) {
|
||||
else if (AbilityIsActive(entity, ABILITY_SAND_STREAM)) {
|
||||
gDungeon->weather.naturalWeather[WEATHER_SANDSTORM] = 1;
|
||||
}
|
||||
else if (HasAbility(entity, ABILITY_DROUGHT)) {
|
||||
else if (AbilityIsActive(entity, ABILITY_DROUGHT)) {
|
||||
gDungeon->weather.naturalWeather[WEATHER_SUNNY] = 1;
|
||||
}
|
||||
if ((HasAbility(entity, ABILITY_AIR_LOCK)) || (HasAbility(entity, ABILITY_CLOUD_NINE))) {
|
||||
if ((AbilityIsActive(entity, ABILITY_AIR_LOCK)) || (AbilityIsActive(entity, ABILITY_CLOUD_NINE))) {
|
||||
gDungeon->weather.nullifyWeather = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -155,7 +155,7 @@ s32 GetMonsterApparentID(Entity *pokemon, s32 _id)
|
||||
{
|
||||
s16 id = (s16)(_id);
|
||||
if (id == MONSTER_CASTFORM || IS_CASTFORM_FORM_MONSTER(id)) {
|
||||
if (HasAbility(pokemon, ABILITY_FORECAST))
|
||||
if (AbilityIsActive(pokemon, ABILITY_FORECAST))
|
||||
return gUnknown_80F520C[GetApparentWeather(pokemon)].unk2;
|
||||
return MONSTER_CASTFORM;
|
||||
}
|
||||
@@ -220,7 +220,7 @@ void sub_8069F9C(Entity *pokemon, Entity *target, Move *move)
|
||||
|
||||
if (targetInfo->unk15A != 0) {
|
||||
targetInfo->unk15A = 0;
|
||||
if (HasAbility(target, ABILITY_COLOR_CHANGE)) {
|
||||
if (AbilityIsActive(target, ABILITY_COLOR_CHANGE)) {
|
||||
u8 type = GetMoveTypeForMonster(pokemon,move);
|
||||
if (move->id == MOVE_WEATHER_BALL) {
|
||||
u32 weather = GetApparentWeather(pokemon);
|
||||
@@ -267,7 +267,7 @@ void sub_806A120(Entity * pokemon, Entity * target, Move* move)
|
||||
|
||||
void sub_806A1B0(Entity *pokemon)
|
||||
{
|
||||
if ((EntityExists(pokemon)) && (HasAbility(pokemon, ABILITY_TRUANT))) {
|
||||
if ((EntityExists(pokemon)) && (AbilityIsActive(pokemon, ABILITY_TRUANT))) {
|
||||
PausedStatusTarget(pokemon,pokemon,0,1,0);
|
||||
}
|
||||
}
|
||||
@@ -833,37 +833,37 @@ void EndAbilityImmuneStatus(Entity *attacker, Entity *target)
|
||||
{
|
||||
EntityInfo *targetInfo = GetEntInfo(target);
|
||||
|
||||
if (HasAbility(target, ABILITY_LIMBER) && targetInfo->burnClassStatus.status == STATUS_PARALYSIS) {
|
||||
if (AbilityIsActive(target, ABILITY_LIMBER) && targetInfo->burnClassStatus.status == STATUS_PARALYSIS) {
|
||||
EndBurnClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_OWN_TEMPO) && targetInfo->cringeClassStatus.status == STATUS_CONFUSED) {
|
||||
if (AbilityIsActive(target, ABILITY_OWN_TEMPO) && targetInfo->cringeClassStatus.status == STATUS_CONFUSED) {
|
||||
EndCringeClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_WATER_VEIL) && targetInfo->burnClassStatus.status == STATUS_BURN) {
|
||||
if (AbilityIsActive(target, ABILITY_WATER_VEIL) && targetInfo->burnClassStatus.status == STATUS_BURN) {
|
||||
EndBurnClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_OBLIVIOUS) && targetInfo->cringeClassStatus.status == STATUS_INFATUATED) {
|
||||
if (AbilityIsActive(target, ABILITY_OBLIVIOUS) && targetInfo->cringeClassStatus.status == STATUS_INFATUATED) {
|
||||
EndCringeClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if ((HasAbility(target, ABILITY_INSOMNIA) || HasAbility(target, ABILITY_VITAL_SPIRIT))
|
||||
if ((AbilityIsActive(target, ABILITY_INSOMNIA) || AbilityIsActive(target, ABILITY_VITAL_SPIRIT))
|
||||
&& (IsSleeping(target) || targetInfo->sleepClassStatus.status == STATUS_YAWNING))
|
||||
{
|
||||
EndSleepClassStatus(attacker, target, FALSE, TRUE);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_MAGMA_ARMOR) && targetInfo->frozenClassStatus.status == STATUS_FROZEN) {
|
||||
if (AbilityIsActive(target, ABILITY_MAGMA_ARMOR) && targetInfo->frozenClassStatus.status == STATUS_FROZEN) {
|
||||
EndFrozenClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_IMMUNITY) && ENTITY_POISONED(targetInfo)) {
|
||||
if (AbilityIsActive(target, ABILITY_IMMUNITY) && ENTITY_POISONED(targetInfo)) {
|
||||
EndBurnClassStatus(attacker, target);
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_FORECAST)) {
|
||||
if (AbilityIsActive(target, ABILITY_FORECAST)) {
|
||||
targetInfo->isColorChanged = FALSE;
|
||||
if (targetInfo->reflectClassStatus.status == STATUS_CONVERSION2) {
|
||||
EndReflectClassStatus(attacker, target);
|
||||
@@ -2266,7 +2266,7 @@ void sub_806C51C(Entity *entity)
|
||||
if (!entInfo->isNotTeamMember || entInfo->curseClassStatus.status == STATUS_DECOY) {
|
||||
var_34 = 1;
|
||||
}
|
||||
if (IsClientOrTeamBase(entInfo->joinedAt.id) || entInfo->monsterBehavior == 1) {
|
||||
if (IsExperienceLocked(entInfo->joinedAt.id) || entInfo->monsterBehavior == 1) {
|
||||
var_34 = 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -379,7 +379,7 @@ void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *
|
||||
returnDmg += 4;
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_ROUGH_SKIN))
|
||||
if (AbilityIsActive(target, ABILITY_ROUGH_SKIN))
|
||||
returnDmg += 2;
|
||||
|
||||
if (returnDmg) {
|
||||
@@ -407,37 +407,37 @@ void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *
|
||||
bool32 isPhysical = IsTypePhysical(dmgStruct->type);
|
||||
EntityInfo *attackerInfo = GetEntInfo(attacker);
|
||||
|
||||
if (HasAbility(target, ABILITY_ARENA_TRAP)
|
||||
if (AbilityIsActive(target, ABILITY_ARENA_TRAP)
|
||||
&& !MonsterIsType(attacker, TYPE_FLYING)
|
||||
&& !HasAbility(attacker, ABILITY_LEVITATE)
|
||||
&& !AbilityIsActive(attacker, ABILITY_LEVITATE)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E10)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_ARENA_TRAP;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_SHADOW_TAG)
|
||||
if (AbilityIsActive(target, ABILITY_SHADOW_TAG)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E12)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_SHADOW_TAG;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_MAGNET_PULL)
|
||||
if (AbilityIsActive(target, ABILITY_MAGNET_PULL)
|
||||
&& MonsterIsType(attacker, TYPE_STEEL)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E14)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_MAGNET_PULL;
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_STATIC)
|
||||
if (AbilityIsActive(target, ABILITY_STATIC)
|
||||
&& isPhysical
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E16)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_STATIC;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_POISON_POINT)
|
||||
if (AbilityIsActive(target, ABILITY_POISON_POINT)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E18)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_POISON_POINT;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_EFFECT_SPORE)
|
||||
if (AbilityIsActive(target, ABILITY_EFFECT_SPORE)
|
||||
&& isPhysical
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E1A)
|
||||
{
|
||||
@@ -449,18 +449,18 @@ void HandleDealingDamage(Entity *attacker, Entity *target, struct DamageStruct *
|
||||
else
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_EFFECT_SPORE_SLP;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_FLAME_BODY)
|
||||
if (AbilityIsActive(target, ABILITY_FLAME_BODY)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E1C)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_FLAME_BODY;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_CUTE_CHARM)
|
||||
if (AbilityIsActive(target, ABILITY_CUTE_CHARM)
|
||||
&& isPhysical
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E1E)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_CUTE_CHARM;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_STENCH)
|
||||
if (AbilityIsActive(target, ABILITY_STENCH)
|
||||
&& DungeonRandInt(100) < gUnknown_80F4E20)
|
||||
{
|
||||
attackerInfo->abilityEffectFlags |= ABILITY_FLAG_STENCH;
|
||||
@@ -519,7 +519,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
|
||||
dmgStruct->dmg = gUnknown_80F4F8C;
|
||||
}
|
||||
|
||||
if (arg4 != 0x20E && HasAbility(target, ABILITY_STURDY) && dmgStruct->dmg == 9999) {
|
||||
if (arg4 != 0x20E && AbilityIsActive(target, ABILITY_STURDY) && dmgStruct->dmg == 9999) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[1], target, 0);
|
||||
TryDisplayDungeonLoggableMessage3(attacker, target, gUnknown_80FCA90);
|
||||
sub_8042238(attacker, target);
|
||||
@@ -540,12 +540,12 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
|
||||
WakeUpPokemon(target);
|
||||
}
|
||||
|
||||
if ((HasAbility(target, ABILITY_VOLT_ABSORB) && dmgStruct->type == TYPE_ELECTRIC)) {
|
||||
if ((AbilityIsActive(target, ABILITY_VOLT_ABSORB) && dmgStruct->type == TYPE_ELECTRIC)) {
|
||||
HealTargetHP(attacker, target, dmgStruct->dmg, 0, 0);
|
||||
dmgStruct->tookNoDamage = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
else if (HasAbility(target, ABILITY_WATER_ABSORB) && dmgStruct->type == TYPE_WATER) {
|
||||
else if (AbilityIsActive(target, ABILITY_WATER_ABSORB) && dmgStruct->type == TYPE_WATER) {
|
||||
HealTargetHP(attacker, target, dmgStruct->dmg, 0, 0);
|
||||
dmgStruct->tookNoDamage = TRUE;
|
||||
return FALSE;
|
||||
@@ -739,7 +739,7 @@ static bool8 HandleDealingDamageInternal(Entity *attacker, Entity *target, struc
|
||||
if (targetData->isTeamLeader || (targetData->joinedAt.id == DUNGEON_JOIN_LOCATION_PARTNER && gDungeon->unk644.unk18 == 0)) {
|
||||
DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9CEC[r8]);
|
||||
}
|
||||
else if (IsClientOrTeamBase(targetData->joinedAt.id)) {
|
||||
else if (IsExperienceLocked(targetData->joinedAt.id)) {
|
||||
DisplayDungeonLoggableMessageTrue(attacker, gUnknown_80F9DAC[r8]);
|
||||
}
|
||||
else if (targetData->monsterBehavior == BEHAVIOR_RESCUE_TARGET) {
|
||||
|
||||
@@ -63,7 +63,7 @@ static void ApplyAtkDefStatBoosts(Entity *attacker, Entity *target, u8 moveType,
|
||||
s32 defDivisor = 1;
|
||||
s32 splitIndex = (!IsTypePhysical(moveType)) ? 1 : 0;
|
||||
|
||||
if (HasAbility(attacker, ABILITY_GUTS)) {
|
||||
if (AbilityIsActive(attacker, ABILITY_GUTS)) {
|
||||
EntityInfo *entInfo = GetEntInfo(attacker);
|
||||
bool8 gutsBoost = HasNegativeStatus(attacker);
|
||||
bool8 visFlags_attacker_1 = SetVisualFlags(entInfo,1,gutsBoost);
|
||||
@@ -77,7 +77,7 @@ static void ApplyAtkDefStatBoosts(Entity *attacker, Entity *target, u8 moveType,
|
||||
}
|
||||
}
|
||||
|
||||
if ((HasAbility(attacker, ABILITY_HUGE_POWER)) || (HasAbility(attacker, ABILITY_PURE_POWER))) {
|
||||
if ((AbilityIsActive(attacker, ABILITY_HUGE_POWER)) || (AbilityIsActive(attacker, ABILITY_PURE_POWER))) {
|
||||
EntityInfo *entInfo = GetEntInfo(attacker);
|
||||
bool32 hugePowerBoost = (rand < 33 && splitIndex == 0);
|
||||
bool8 visFlags_attacker_2 = SetVisualFlags(entInfo,0x100,hugePowerBoost);
|
||||
@@ -92,7 +92,7 @@ static void ApplyAtkDefStatBoosts(Entity *attacker, Entity *target, u8 moveType,
|
||||
}
|
||||
}
|
||||
|
||||
if ((HasAbility(attacker, ABILITY_HUSTLE)) && (splitIndex == 0)) {
|
||||
if ((AbilityIsActive(attacker, ABILITY_HUSTLE)) && (splitIndex == 0)) {
|
||||
atkMultiplier *= 3;
|
||||
atkDivisor *= 2;
|
||||
}
|
||||
@@ -104,21 +104,21 @@ static void ApplyAtkDefStatBoosts(Entity *attacker, Entity *target, u8 moveType,
|
||||
isNotEnemy = TRUE;
|
||||
}
|
||||
|
||||
if ((HasAbility(attacker, ABILITY_PLUS)) && (splitIndex == 1) && gDungeon->minusIsActive[isNotEnemy]) {
|
||||
if ((AbilityIsActive(attacker, ABILITY_PLUS)) && (splitIndex == 1) && gDungeon->minusIsActive[isNotEnemy]) {
|
||||
atkMultiplier *= 15;
|
||||
atkDivisor *= 10;
|
||||
}
|
||||
if ((HasAbility(attacker, ABILITY_MINUS)) && (splitIndex == 1) && gDungeon->plusIsActive[isNotEnemy]) {
|
||||
if ((AbilityIsActive(attacker, ABILITY_MINUS)) && (splitIndex == 1) && gDungeon->plusIsActive[isNotEnemy]) {
|
||||
atkMultiplier *= 15;
|
||||
atkDivisor *= 10;
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_INTIMIDATE) && (splitIndex == 0)) {
|
||||
if (AbilityIsActive(target, ABILITY_INTIMIDATE) && (splitIndex == 0)) {
|
||||
atkMultiplier *= 4;
|
||||
atkDivisor *= 5;
|
||||
}
|
||||
|
||||
if ((HasAbility(target, ABILITY_MARVEL_SCALE)) && (splitIndex == 0)) {
|
||||
if ((AbilityIsActive(target, ABILITY_MARVEL_SCALE)) && (splitIndex == 0)) {
|
||||
EntityInfo *targetInfo = GetEntInfo(target);
|
||||
bool8 hasNegStatus_target = HasNegativeStatus(target);
|
||||
bool8 visFlags_target = SetVisualFlags(targetInfo, 8, hasNegStatus_target);
|
||||
@@ -164,7 +164,7 @@ void CalcDamage(Entity *attacker, Entity *target, u8 moveType, s32 movePower, s3
|
||||
if (!attackerInfo->isTeamLeader && FixedPointToInt(attackerInfo->belly) == 0) {
|
||||
SetDamageOne(dmgStruct, moveType);
|
||||
}
|
||||
else if (moveId == MOVE_REGULAR_ATTACK && HasAbility(target, ABILITY_WONDER_GUARD)) {
|
||||
else if (moveId == MOVE_REGULAR_ATTACK && AbilityIsActive(target, ABILITY_WONDER_GUARD)) {
|
||||
SetDamageOne(dmgStruct, moveType);
|
||||
}
|
||||
else {
|
||||
@@ -346,7 +346,7 @@ void CalcDamage(Entity *attacker, Entity *target, u8 moveType, s32 movePower, s3
|
||||
}
|
||||
|
||||
// Check crit
|
||||
if (!HasAbility(target, ABILITY_BATTLE_ARMOR) && !HasAbility(target, ABILITY_SHELL_ARMOR)) {
|
||||
if (!AbilityIsActive(target, ABILITY_BATTLE_ARMOR) && !AbilityIsActive(target, ABILITY_SHELL_ARMOR)) {
|
||||
s32 critOdds;
|
||||
|
||||
if (attackerInfo->isNotTeamMember) {
|
||||
@@ -471,7 +471,7 @@ void sub_806F370(Entity *pokemon, Entity *target, s32 dmg, s32 giveExp, bool8 *t
|
||||
s32 effectiv = gTypeEffectivenessChart[moveType][targetInfo->types[i]];
|
||||
typeEffectiveness[i] = effectiv;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_WONDER_GUARD)) {
|
||||
if (AbilityIsActive(target, ABILITY_WONDER_GUARD)) {
|
||||
if (gUnknown_80F54B4[typeEffectiveness[0]][typeEffectiveness[1]] != EFFECTIVENESS_SUPER) {
|
||||
dmgNew = 0;
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ void sub_8071D4C(Entity *pokemon, Entity *target, s32 exp)
|
||||
|
||||
info = GetEntInfo(target);
|
||||
if (info->level != 100) {
|
||||
if (!IsClientOrTeamBase(info->joinedAt.id)) {
|
||||
if (!IsExperienceLocked(info->joinedAt.id)) {
|
||||
newExp = info->exp + exp;
|
||||
if (9999998 < newExp) {
|
||||
newExp = 9999999;
|
||||
@@ -309,7 +309,7 @@ void sub_8072008(Entity *pokemon, Entity *target, s32 level, u8 param_4, u8 para
|
||||
atk[1] = info->atk[1];
|
||||
def[0] = info->def[0];
|
||||
def[1] = info->def[1];
|
||||
if (!IsClientOrTeamBase(info->joinedAt.id)) {
|
||||
if (!IsExperienceLocked(info->joinedAt.id)) {
|
||||
newLevel = info->level + level;
|
||||
if (99 < newLevel) {
|
||||
newLevel = 100;
|
||||
@@ -441,7 +441,7 @@ void LevelDownTarget(Entity *pokemon, Entity *target, u32 level)
|
||||
{
|
||||
flag = FALSE;
|
||||
info = GetEntInfo(target);
|
||||
if(!IsClientOrTeamBase(info->joinedAt.id))
|
||||
if(!IsExperienceLocked(info->joinedAt.id))
|
||||
{
|
||||
newLevel = info->level - level;
|
||||
if(newLevel <= 0)
|
||||
@@ -480,7 +480,7 @@ bool8 sub_80723D0(Entity *pokemon, Entity *target, u8 param_3, u8 param_4)
|
||||
exp = info->exp;
|
||||
|
||||
|
||||
if(IsClientOrTeamBase(info->joinedAt.id))
|
||||
if(IsExperienceLocked(info->joinedAt.id))
|
||||
return FALSE;
|
||||
|
||||
for(level = info->level + 1; level <= 100; level++)
|
||||
@@ -577,7 +577,7 @@ bool8 sub_80725A4(Entity *pokemon, Entity *target)
|
||||
oldLevel = info->level;
|
||||
|
||||
|
||||
if(IsClientOrTeamBase(info->joinedAt.id)) return FALSE;
|
||||
if(IsExperienceLocked(info->joinedAt.id)) return FALSE;
|
||||
|
||||
for(level = 1; level < info->level; level++)
|
||||
{
|
||||
|
||||
@@ -143,7 +143,7 @@ void sub_8073D14(Entity *entity)
|
||||
return;
|
||||
if (entityInfo->shopkeeper == 1)
|
||||
return;
|
||||
if (IsClientOrTeamBase(entityInfo->joinedAt.id))
|
||||
if (IsExperienceLocked(entityInfo->joinedAt.id))
|
||||
return;
|
||||
if (entityInfo->monsterBehavior == BEHAVIOR_RESCUE_TARGET)
|
||||
return;
|
||||
@@ -407,13 +407,13 @@ void sub_8074094(Entity *entity)
|
||||
|
||||
// Abilities check
|
||||
rand = DungeonRandInt(100);
|
||||
if (HasAbility(entity, ABILITY_SHED_SKIN) && rand < gUnknown_80F4E0C && HasNegativeStatus(entity)) {
|
||||
if (AbilityIsActive(entity, ABILITY_SHED_SKIN) && rand < gUnknown_80F4E0C && HasNegativeStatus(entity)) {
|
||||
UseAttack(NULL);
|
||||
if (!EntityExists(entity) || sub_8044B28())
|
||||
return;
|
||||
sub_8079F20(entity, entity, 1, 0);
|
||||
}
|
||||
if (HasAbility(entity, ABILITY_SPEED_BOOST)) {
|
||||
if (AbilityIsActive(entity, ABILITY_SPEED_BOOST)) {
|
||||
entityInfo->unk113++;
|
||||
if (entityInfo->unk113 >= gUnknown_80F4F30) {
|
||||
entityInfo->unk113 = 0;
|
||||
@@ -541,7 +541,7 @@ void sub_8074094(Entity *entity)
|
||||
entityInfo->leechSeedClassStatus.status = 0;
|
||||
}
|
||||
else {
|
||||
bool8 dmgUser = HasAbility(entity, ABILITY_LIQUID_OOZE);
|
||||
bool8 dmgUser = AbilityIsActive(entity, ABILITY_LIQUID_OOZE);
|
||||
sub_80444F4(entity);
|
||||
UseAttack(NULL);
|
||||
if (!EntityExists(entity) || !EntityExists(target) || sub_8044B28())
|
||||
@@ -646,7 +646,7 @@ void TickStatusHeal(Entity *entity)
|
||||
r4 += gUnknown_80F4FC4;
|
||||
if (entityInfo->reflectClassStatus.status == STATUS_WISH)
|
||||
r4 += gUnknown_80F4FC0;
|
||||
if (HasAbility(entity, ABILITY_RAIN_DISH) && GetApparentWeather(entity) == WEATHER_RAIN)
|
||||
if (AbilityIsActive(entity, ABILITY_RAIN_DISH) && GetApparentWeather(entity) == WEATHER_RAIN)
|
||||
r4 += gUnknown_80F4FC2;
|
||||
|
||||
if (r4 > 500)
|
||||
|
||||
@@ -964,7 +964,7 @@ void Conversion2StatusTarget(Entity * pokemon, Entity * target)
|
||||
if (EntityExists(target)) {
|
||||
entityInfo = GetEntInfo(target);
|
||||
|
||||
if(HasAbility(target, ABILITY_FORECAST))
|
||||
if(AbilityIsActive(target, ABILITY_FORECAST))
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gPtrForecastPreventsConversion2Message);
|
||||
else
|
||||
{
|
||||
|
||||
@@ -102,7 +102,7 @@ void BlowAwayTarget(Entity *pokemon, Entity *target, u32 direction)
|
||||
return;
|
||||
}
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if (HasAbility(target,ABILITY_SUCTION_CUPS)) {
|
||||
if (AbilityIsActive(target,ABILITY_SUCTION_CUPS)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCBCC); // {POKEMON_0} is anchored! It can't be knocked flying!
|
||||
return;
|
||||
}
|
||||
@@ -253,7 +253,7 @@ void WarpTarget(Entity *pokemon, Entity *target, u32 param_3, DungeonPos *pos)
|
||||
flag = FALSE;
|
||||
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if (HasAbility(target,ABILITY_SUCTION_CUPS)) {
|
||||
if (AbilityIsActive(target,ABILITY_SUCTION_CUPS)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCAE8);
|
||||
return;
|
||||
}
|
||||
@@ -555,7 +555,7 @@ void HandlePounceOrbAction(Entity *pokemon, Entity *target, u8 r2) {
|
||||
DungeonPos pos;
|
||||
u32 direction = r2;
|
||||
info = GetEntInfo(target);
|
||||
if(HasAbility(target, ABILITY_SUCTION_CUPS))
|
||||
if(AbilityIsActive(target, ABILITY_SUCTION_CUPS))
|
||||
{
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], target, 0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon, target, *gUnknown_80FCB98);
|
||||
@@ -795,7 +795,7 @@ void HandleExplosion(Entity *pokemon,Entity *target,DungeonPos *param_3,s32 para
|
||||
uStack_2c = param_6;
|
||||
for (index = 0; index < DUNGEON_MAX_POKEMON; index++) {
|
||||
entity1 = gDungeon->activePokemon[index];
|
||||
if ((EntityExists(entity1)) && (HasAbility(entity1, ABILITY_DAMP))) break;
|
||||
if ((EntityExists(entity1)) && (AbilityIsActive(entity1, ABILITY_DAMP))) break;
|
||||
}
|
||||
if (index != DUNGEON_MAX_POKEMON) {
|
||||
sub_804218C(pokemon,target);
|
||||
|
||||
@@ -73,11 +73,11 @@ void HandleSwitcherOrb(Entity *pokemon,Entity *target)
|
||||
DungeonPos targetPos;
|
||||
|
||||
|
||||
if (HasAbility(pokemon, ABILITY_SUCTION_CUPS)) {
|
||||
if (AbilityIsActive(pokemon, ABILITY_SUCTION_CUPS)) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],pokemon,0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places
|
||||
}
|
||||
else if(HasAbility(target, ABILITY_SUCTION_CUPS))
|
||||
else if(AbilityIsActive(target, ABILITY_SUCTION_CUPS))
|
||||
{
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCAC0); // $m0 is anchored! It won't switch places
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
s32 CalculateStatusTurns(Entity *target, s16 *turnRange, bool8 factorCurerSkills)
|
||||
{
|
||||
s32 numTurns;
|
||||
|
||||
|
||||
numTurns = DungeonRandRange(turnRange[0],turnRange[1]);
|
||||
if (EntityExists(target) && (GetEntityType(target) == ENTITY_MONSTER) && (factorCurerSkills)) {
|
||||
if (IQSkillIsEnabled(target, IQ_SELF_CURER) && (numTurns != 0x7f)) {
|
||||
numTurns /= 2;
|
||||
}
|
||||
if (HasAbility(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) {
|
||||
if (AbilityIsActive(target, ABILITY_NATURAL_CURE) && (numTurns != 0x7f) && (4 < numTurns)) {
|
||||
numTurns = 5;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,14 +131,14 @@ void TrySpawnMonsterAndActivatePlusMinus(void)
|
||||
isNotEnemy = TRUE;
|
||||
}
|
||||
|
||||
if (HasAbility(entity, ABILITY_LIGHTNINGROD)) {
|
||||
if (AbilityIsActive(entity, ABILITY_LIGHTNINGROD)) {
|
||||
gDungeon->lightningRodPokemon = entity;
|
||||
gDungeon->unk17B38 = entityInfo->unk98;
|
||||
}
|
||||
if (HasAbility(entity, ABILITY_MINUS)) {
|
||||
if (AbilityIsActive(entity, ABILITY_MINUS)) {
|
||||
gDungeon->minusIsActive[isNotEnemy] = TRUE;
|
||||
}
|
||||
if (HasAbility(entity, ABILITY_PLUS)) {
|
||||
if (AbilityIsActive(entity, ABILITY_PLUS)) {
|
||||
gDungeon->plusIsActive[isNotEnemy] = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ void ChooseAIMove(Entity *pokemon)
|
||||
s32 maxWeight;
|
||||
if (CannotAttack(pokemon, FALSE) ||
|
||||
ShouldMonsterRunAwayAndShowEffect(pokemon, TRUE) ||
|
||||
HasTactic(pokemon, TACTIC_KEEP_YOUR_DISTANCE) ||
|
||||
IsTacticSet(pokemon, TACTIC_KEEP_YOUR_DISTANCE) ||
|
||||
(pokemonInfo->cringeClassStatus.status == STATUS_CONFUSED && DungeonRandOutcome(gConfusedAttackChance)))
|
||||
{
|
||||
return;
|
||||
|
||||
@@ -49,7 +49,7 @@ void AIMovement(Entity *pokemon, bool8 showRunAwayEffect)
|
||||
pokemonInfo->aiTarget.aiNotNextToTarget = FALSE;
|
||||
pokemonInfo->aiTarget.aiTargetingEnemy = FALSE;
|
||||
pokemonInfo->aiTarget.aiTurningAround = FALSE;
|
||||
if (HasTactic(pokemon, TACTIC_BE_PATIENT))
|
||||
if (IsTacticSet(pokemon, TACTIC_BE_PATIENT))
|
||||
{
|
||||
u32 maxHPStat = pokemonInfo->maxHPStat;
|
||||
maxHPStat += maxHPStat >> 0x1f;
|
||||
@@ -59,7 +59,7 @@ void AIMovement(Entity *pokemon, bool8 showRunAwayEffect)
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (HasTactic(pokemon, TACTIC_WAIT_THERE))
|
||||
if (IsTacticSet(pokemon, TACTIC_WAIT_THERE))
|
||||
{
|
||||
pokemonInfo->action.action = ACTION_NOTHING;
|
||||
}
|
||||
@@ -235,7 +235,7 @@ bool8 ChooseTargetPosition(Entity *pokemon)
|
||||
pokemonInfo->aiTarget.aiTargetSpawnGenID = pokemonInfo->aiTarget.aiTarget->spawnGenID;
|
||||
pokemonInfo->aiTarget.aiTargetingEnemy = TRUE;
|
||||
pokemonInfo->moveRandomly = FALSE;
|
||||
if (HasTactic(pokemon, TACTIC_KEEP_YOUR_DISTANCE) && !CanSeeTeammate(pokemon))
|
||||
if (IsTacticSet(pokemon, TACTIC_KEEP_YOUR_DISTANCE) && !CanSeeTeammate(pokemon))
|
||||
{
|
||||
s32 distanceX = pokemon->pos.x - possibleTargets[targetIndex]->pos.x;
|
||||
if (distanceX < 0)
|
||||
@@ -258,7 +258,7 @@ bool8 ChooseTargetPosition(Entity *pokemon)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
if (!HasTactic(pokemon, TACTIC_GO_THE_OTHER_WAY))
|
||||
if (!IsTacticSet(pokemon, TACTIC_GO_THE_OTHER_WAY))
|
||||
{
|
||||
do
|
||||
{
|
||||
|
||||
@@ -395,7 +395,7 @@ bool8 IsAtJunction(Entity *pokemon)
|
||||
|
||||
bool8 ShouldAvoidFirstHit(Entity *pokemon, bool8 forceAvoid)
|
||||
{
|
||||
if (!HasTactic(pokemon, TACTIC_AVOID_THE_FIRST_HIT))
|
||||
if (!IsTacticSet(pokemon, TACTIC_AVOID_THE_FIRST_HIT))
|
||||
return FALSE;
|
||||
if (!forceAvoid)
|
||||
return FALSE;
|
||||
@@ -419,7 +419,7 @@ bool8 ShouldMonsterRunAway(Entity *pokemon)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (HasAbility(pokemon, ABILITY_RUN_AWAY))
|
||||
if (AbilityIsActive(pokemon, ABILITY_RUN_AWAY))
|
||||
{
|
||||
bool8 runAwayActive = pokemonInfo->HP < pokemonInfo->maxHPStat / 2;
|
||||
if (runAwayActive)
|
||||
@@ -427,8 +427,8 @@ bool8 ShouldMonsterRunAway(Entity *pokemon)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
if (HasTactic(pokemon, TACTIC_GET_AWAY) ||
|
||||
(HasTactic(pokemon, TACTIC_AVOID_TROUBLE) && pokemonInfo->HP <= pokemonInfo->maxHPStat / 2))
|
||||
if (IsTacticSet(pokemon, TACTIC_GET_AWAY) ||
|
||||
(IsTacticSet(pokemon, TACTIC_AVOID_TROUBLE) && pokemonInfo->HP <= pokemonInfo->maxHPStat / 2))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@@ -452,7 +452,7 @@ void CheckRunAwayVisualFlag(Entity *pokemon, bool8 showRunAwayEffect)
|
||||
EntityInfo *iVar2;
|
||||
iVar2 = GetEntInfo(pokemon);
|
||||
|
||||
if (((!iVar2->isTeamLeader) && HasAbility(pokemon,ABILITY_RUN_AWAY) &&
|
||||
if (((!iVar2->isTeamLeader) && AbilityIsActive(pokemon,ABILITY_RUN_AWAY) &&
|
||||
(cVar1 = SetVisualFlags(iVar2,4,iVar2->HP <= iVar2->maxHPStat / 2), showRunAwayEffect)) &&
|
||||
(cVar1)) {
|
||||
ShowVisualFlags(pokemon);
|
||||
@@ -534,9 +534,9 @@ u8 sub_807167C(Entity * pokemon, Entity * target)
|
||||
pokemonEntityData = GetEntInfo(pokemon);
|
||||
targetEntityInfo = GetEntInfo(target);
|
||||
if (pokemonEntityData->monsterBehavior != BEHAVIOR_RESCUE_TARGET) {
|
||||
cannotUseItems = IsClientOrTeamBase(pokemonEntityData->joinedAt.id);
|
||||
cannotUseItems = IsExperienceLocked(pokemonEntityData->joinedAt.id);
|
||||
if (!cannotUseItems && (pokemonEntityData->shopkeeper == SHOPKEEPER_MODE_NORMAL) && (targetEntityInfo->monsterBehavior != BEHAVIOR_RESCUE_TARGET)) {
|
||||
cannotUseItems = IsClientOrTeamBase(targetEntityInfo->joinedAt.id);
|
||||
cannotUseItems = IsExperienceLocked(targetEntityInfo->joinedAt.id);
|
||||
if (cannotUseItems || (targetEntityInfo->shopkeeper != SHOPKEEPER_MODE_NORMAL)) {
|
||||
error:
|
||||
return TREATMENT_IGNORE;
|
||||
|
||||
@@ -81,7 +81,7 @@ bool8 CheckVariousConditions(Entity *pokemon)
|
||||
EntityInfo *pokemonInfo = GetEntInfo(pokemon);
|
||||
|
||||
if (pokemonInfo->monsterBehavior == BEHAVIOR_RESCUE_TARGET
|
||||
|| IsClientOrTeamBase(pokemonInfo->joinedAt.id)
|
||||
|| IsExperienceLocked(pokemonInfo->joinedAt.id)
|
||||
|| (!pokemonInfo->isTeamLeader && ShouldMonsterRunAway(pokemon))
|
||||
|| CheckVariousStatuses2(pokemon, FALSE)
|
||||
|| CheckVariousStatuses(pokemon))
|
||||
|
||||
@@ -565,7 +565,7 @@ static void UseMoveAgainstTargets(Entity **targetsArray, Entity *attacker, Move
|
||||
}
|
||||
|
||||
if (moveHits) {
|
||||
if (HasAbility(currTarget, ABILITY_SOUNDPROOF) && IsSoundMove(move)) {
|
||||
if (AbilityIsActive(currTarget, ABILITY_SOUNDPROOF) && IsSoundMove(move)) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[1], currTarget, 0);
|
||||
TryDisplayDungeonLoggableMessage3(attacker, currTarget, gUnknown_8100524); // Soundproof suppressed the sound move!
|
||||
moveHits = FALSE;
|
||||
@@ -646,7 +646,7 @@ static void UseMoveAgainstTargets(Entity **targetsArray, Entity *attacker, Move
|
||||
targetInfo->unk165 = GetDirectionTowardsPosition(&currTarget->pos, &attacker->pos);
|
||||
}
|
||||
|
||||
if (HasAbility(currTarget, ABILITY_PRESSURE)
|
||||
if (AbilityIsActive(currTarget, ABILITY_PRESSURE)
|
||||
&& GetTreatmentBetweenMonsters(attacker, currTarget, TRUE, FALSE) == 1
|
||||
&& move->id != MOVE_REGULAR_ATTACK
|
||||
&& move->id != MOVE_STRUGGLE
|
||||
@@ -1690,7 +1690,7 @@ static s32 TryHitTarget(Entity *attacker, Entity *target, Move *move, struct Dam
|
||||
if (AccuracyCalc(attacker, target, move, ACCURACY_2, TRUE)) { // Move hits
|
||||
bool32 isFalseSwipe = (move->id == MOVE_FALSE_SWIPE);
|
||||
|
||||
if (HasAbility(target, ABILITY_ILLUMINATE)) {
|
||||
if (AbilityIsActive(target, ABILITY_ILLUMINATE)) {
|
||||
gDungeon->unk644.unk1E = 999;
|
||||
gDungeon->unk17B34 = target;
|
||||
gDungeon->unk17B40 = target->spawnGenID;
|
||||
@@ -2730,7 +2730,7 @@ static bool8 AccuracyCalc(Entity *attacker, Entity *target, Move *move, s32 accu
|
||||
}
|
||||
|
||||
statStageAccuracy = attackerInfo->hitChanceStages[0];
|
||||
if (HasAbility(attacker, ABILITY_COMPOUNDEYES)) {
|
||||
if (AbilityIsActive(attacker, ABILITY_COMPOUNDEYES)) {
|
||||
statStageAccuracy += 2;
|
||||
}
|
||||
if (move->id == MOVE_THUNDER) {
|
||||
@@ -2757,10 +2757,10 @@ static bool8 AccuracyCalc(Entity *attacker, Entity *target, Move *move, s32 accu
|
||||
if (targetInfo->exposed) {
|
||||
statStageEvasion = 10;
|
||||
}
|
||||
if (GetApparentWeather(target) == WEATHER_SANDSTORM && HasAbility(target, ABILITY_SAND_VEIL)) {
|
||||
if (GetApparentWeather(target) == WEATHER_SANDSTORM && AbilityIsActive(target, ABILITY_SAND_VEIL)) {
|
||||
statStageEvasion += 2;
|
||||
}
|
||||
if (HasAbility(attacker, ABILITY_HUSTLE)) {
|
||||
if (AbilityIsActive(attacker, ABILITY_HUSTLE)) {
|
||||
bool32 specialMove = (IsTypePhysical(GetMoveType(move)) == FALSE);
|
||||
if (!specialMove) {
|
||||
statStageEvasion += 2;
|
||||
@@ -3154,7 +3154,7 @@ bool8 sub_805727C(Entity * pokemon, Entity * target, s32 chance)
|
||||
return FALSE;
|
||||
|
||||
if (chance != 0) {
|
||||
if (HasAbility(pokemon, ABILITY_SERENE_GRACE)) {
|
||||
if (AbilityIsActive(pokemon, ABILITY_SERENE_GRACE)) {
|
||||
uVar2 = DungeonRandOutcome_2(chance * 2);
|
||||
}
|
||||
else
|
||||
@@ -3167,7 +3167,7 @@ bool8 sub_805727C(Entity * pokemon, Entity * target, s32 chance)
|
||||
uVar2 = TRUE;
|
||||
}
|
||||
|
||||
if (uVar2 && (pokemon != target) && HasAbility(target, ABILITY_SHIELD_DUST))
|
||||
if (uVar2 && (pokemon != target) && AbilityIsActive(target, ABILITY_SHIELD_DUST))
|
||||
{
|
||||
sub_80429C8(target);
|
||||
return FALSE;
|
||||
@@ -3182,7 +3182,7 @@ bool8 RollSecondaryEffect(Entity *pokemon, s32 chance)
|
||||
return FALSE;
|
||||
if(chance == 0)
|
||||
return TRUE;
|
||||
if(HasAbility(pokemon, ABILITY_SERENE_GRACE))
|
||||
if(AbilityIsActive(pokemon, ABILITY_SERENE_GRACE))
|
||||
return DungeonRandOutcome_2(chance * 2);
|
||||
else
|
||||
return DungeonRandOutcome_2(chance);
|
||||
|
||||
@@ -46,7 +46,7 @@ bool8 sub_8071728(Entity * pokemon, Entity * target, bool8 displayMessage)
|
||||
return TRUE;
|
||||
}
|
||||
else {
|
||||
if (HasAbility(target, ABILITY_CLEAR_BODY) || HasAbility(target, ABILITY_WHITE_SMOKE)) {
|
||||
if (AbilityIsActive(target, ABILITY_CLEAR_BODY) || AbilityIsActive(target, ABILITY_WHITE_SMOKE)) {
|
||||
if (displayMessage) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], target, 0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon, target, gUnknown_80FCEFC);
|
||||
@@ -88,7 +88,7 @@ bool8 sub_80717A4(Entity *pokemon, u16 moveID)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 HasAbility(Entity *pokemon, u8 ability)
|
||||
bool8 AbilityIsActive(Entity *pokemon, u8 ability)
|
||||
{
|
||||
if (!EntityExists(pokemon))
|
||||
{
|
||||
@@ -137,7 +137,7 @@ bool8 CanSeeInvisibleMonsters(Entity *pokemon)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 HasTactic(Entity *pokemon, u8 tactic)
|
||||
bool8 IsTacticSet(Entity *pokemon, u8 tactic)
|
||||
{
|
||||
EntityInfo *pokemonInfo = GetEntInfo(pokemon);
|
||||
if (pokemonInfo->isTeamLeader)
|
||||
|
||||
@@ -1063,7 +1063,7 @@ bool8 GigaDrainMoveAction(Entity * pokemon, Entity * target, Move * move, u32 pa
|
||||
bool8 flag;
|
||||
EntityInfo *entityInfo;
|
||||
|
||||
hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE);
|
||||
hasLiquidOoze = AbilityIsActive(target, ABILITY_LIQUID_OOZE);
|
||||
uVar3 = HandleDamagingMove(pokemon,target,move,0x100,param_4);
|
||||
flag = uVar3 != 0 ? TRUE : FALSE;
|
||||
if (flag && RollSecondaryEffect(pokemon, 0)) {
|
||||
@@ -1433,7 +1433,7 @@ bool8 sub_8058E5C(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
iVar3 = 1;
|
||||
}
|
||||
flag = TRUE;
|
||||
if ((!HasAbility(pokemon, ABILITY_ROCK_HEAD)) && RollSecondaryEffect(pokemon, 0)) {
|
||||
if ((!AbilityIsActive(pokemon, ABILITY_ROCK_HEAD)) && RollSecondaryEffect(pokemon, 0)) {
|
||||
sub_806F370(pokemon,pokemon,iVar3,0,0,0,0x1fd,0x14,1,0);
|
||||
}
|
||||
}
|
||||
@@ -1549,7 +1549,7 @@ bool8 FissureMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4
|
||||
|
||||
uVar5 = sub_806F4A4(target, moveType) != 0 ? TRUE : FALSE;
|
||||
|
||||
if (HasAbility(target, ABILITY_LEVITATE)) {
|
||||
if (AbilityIsActive(target, ABILITY_LEVITATE)) {
|
||||
uVar5 = FALSE;
|
||||
}
|
||||
if (!uVar5) {
|
||||
@@ -1591,7 +1591,7 @@ bool8 AbsorbMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param_4)
|
||||
bool8 flag;
|
||||
|
||||
flag = FALSE;
|
||||
hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE);
|
||||
hasLiquidOoze = AbilityIsActive(target, ABILITY_LIQUID_OOZE);
|
||||
iVar3 = HandleDamagingMove(pokemon,target,move,0x100,param_4);
|
||||
if (iVar3 != 0) {
|
||||
iVar4 = iVar3 / 2;
|
||||
@@ -1621,7 +1621,7 @@ bool8 SkillSwapMoveAction(Entity *pokemon, Entity *target, Move *move, s32 param
|
||||
|
||||
EntityInfo *pokeEntityData = GetEntInfo(pokemon);
|
||||
EntityInfo *targetEntityInfo = GetEntInfo(target);
|
||||
if ((HasAbility(target, ABILITY_WONDER_GUARD)) || (HasAbility(pokemon, ABILITY_WONDER_GUARD))) {
|
||||
if ((AbilityIsActive(target, ABILITY_WONDER_GUARD)) || (AbilityIsActive(pokemon, ABILITY_WONDER_GUARD))) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FC8C0);
|
||||
flag = FALSE;
|
||||
}
|
||||
@@ -1708,7 +1708,7 @@ bool8 DoubleEdgeMoveAction(Entity * pokemon,Entity * target,Move * move,u32 para
|
||||
flag = FALSE;
|
||||
if (HandleDamagingMove(pokemon, target, move, 0x100, param_4) != 0) {
|
||||
flag = TRUE;
|
||||
if ((!HasAbility(pokemon, ABILITY_ROCK_HEAD)) && (RollSecondaryEffect(pokemon,0) != 0)) {
|
||||
if ((!AbilityIsActive(pokemon, ABILITY_ROCK_HEAD)) && (RollSecondaryEffect(pokemon,0) != 0)) {
|
||||
HP = GetEntInfo(pokemon)->maxHPStat;
|
||||
if (HP < 0) {
|
||||
HP = HP + 7;
|
||||
@@ -2005,7 +2005,7 @@ bool8 ConversionMoveAction(Entity * pokemon,Entity * target,Move * move,u32 para
|
||||
|
||||
counter = 0;
|
||||
info = GetEntInfo(target);
|
||||
if (HasAbility(target, ABILITY_FORECAST)) {
|
||||
if (AbilityIsActive(target, ABILITY_FORECAST)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gPtrForecastPreventsTypeSwitchMessage);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2281,7 +2281,7 @@ bool8 TrickMoveAction(Entity * pokemon,Entity * target, Move *move, u32 param_4)
|
||||
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],pokemon,0);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[1],target,0);
|
||||
if (HasAbility(target, ABILITY_STICKY_HOLD)) {
|
||||
if (AbilityIsActive(target, ABILITY_STICKY_HOLD)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCCE4);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2398,7 +2398,7 @@ bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_
|
||||
|
||||
entityInfo = GetEntInfo(pokemon);
|
||||
targetEntityInfo = GetEntInfo(target);
|
||||
if (HasAbility(target, ABILITY_WONDER_GUARD)) {
|
||||
if (AbilityIsActive(target, ABILITY_WONDER_GUARD)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FC854);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2599,7 +2599,7 @@ bool8 KnockOffMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_
|
||||
targetEntityInfo = GetEntInfo(target);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], pokemon, 0);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[1], target, 0);
|
||||
if (HasAbility(target, ABILITY_STICKY_HOLD))
|
||||
if (AbilityIsActive(target, ABILITY_STICKY_HOLD))
|
||||
{
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCCE8);
|
||||
return FALSE;
|
||||
@@ -2889,7 +2889,7 @@ bool32 BeatUpMoveAction(Entity * pokemon, Entity * target, Move *move, u32 param
|
||||
&& GetTreatmentBetweenMonsters(pokemon,targetEntity,FALSE,FALSE) == TREATMENT_TREAT_AS_ALLY)
|
||||
{
|
||||
EntityInfo *targetInfo = GetEntInfo(targetEntity);
|
||||
if (targetInfo->monsterBehavior != BEHAVIOR_RESCUE_TARGET && !IsClientOrTeamBase(targetInfo->joinedAt.id)) {
|
||||
if (targetInfo->monsterBehavior != BEHAVIOR_RESCUE_TARGET && !IsExperienceLocked(targetInfo->joinedAt.id)) {
|
||||
WarpTarget(pokemon,targetEntity,2,&target->pos);
|
||||
flag = TRUE;
|
||||
SetExpMultplier(info);
|
||||
|
||||
@@ -177,7 +177,7 @@ u8 sub_8075BF4(Entity * pokemon, s32 sleepClassStatusTurns)
|
||||
if(entityInfo->sleepClassStatus.status != STATUS_NIGHTMARE && entityInfo->sleepClassStatus.status != STATUS_SLEEP)
|
||||
{
|
||||
entityInfo->sleepClassStatus.status = STATUS_SLEEP;
|
||||
if ((sleepClassStatusTurns != 0x7f) && HasAbility(pokemon, ABILITY_EARLY_BIRD) &&
|
||||
if ((sleepClassStatusTurns != 0x7f) && AbilityIsActive(pokemon, ABILITY_EARLY_BIRD) &&
|
||||
(sleepClassStatusTurns = sleepClassStatusTurns / 2, sleepClassStatusTurns < 1)) {
|
||||
sleepClassStatusTurns = 1;
|
||||
}
|
||||
@@ -236,13 +236,13 @@ bool8 CannotSleep(Entity * pokemon, Entity * target, u8 param_3, bool8 displayMe
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else if (HasAbility(target, ABILITY_INSOMNIA)) {
|
||||
else if (AbilityIsActive(target, ABILITY_INSOMNIA)) {
|
||||
if (displayMessage) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCD58);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
else if (HasAbility(target, ABILITY_VITAL_SPIRIT)) {
|
||||
else if (AbilityIsActive(target, ABILITY_VITAL_SPIRIT)) {
|
||||
if (displayMessage) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCD88);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ void NightmareStatusTarget(Entity * pokemon, Entity * target, s32 turns)
|
||||
sub_8041EC8(target);
|
||||
if (entityInfo->sleepClassStatus.status != STATUS_NIGHTMARE) {
|
||||
entityInfo->sleepClassStatus.turns = turns;
|
||||
if ((HasAbility(target, ABILITY_EARLY_BIRD)) && (entityInfo->sleepClassStatus.turns >>= 1, entityInfo->sleepClassStatus.turns == 0)) {
|
||||
if ((AbilityIsActive(target, ABILITY_EARLY_BIRD)) && (entityInfo->sleepClassStatus.turns >>= 1, entityInfo->sleepClassStatus.turns == 0)) {
|
||||
entityInfo->sleepClassStatus.turns = 1;
|
||||
}
|
||||
}
|
||||
@@ -306,7 +306,7 @@ void NappingStatusTarget(Entity * pokemon, Entity * target, s32 turns)
|
||||
sub_8041ED8(target);
|
||||
if (entityInfo->sleepClassStatus.status == STATUS_NONE || entityInfo->sleepClassStatus.status == STATUS_YAWNING) {
|
||||
entityInfo->sleepClassStatus.turns = turns;
|
||||
if ((HasAbility(target, ABILITY_EARLY_BIRD)) && (entityInfo->sleepClassStatus.turns >>= 1, entityInfo->sleepClassStatus.turns == 0)) {
|
||||
if ((AbilityIsActive(target, ABILITY_EARLY_BIRD)) && (entityInfo->sleepClassStatus.turns >>= 1, entityInfo->sleepClassStatus.turns == 0)) {
|
||||
entityInfo->sleepClassStatus.turns = 1;
|
||||
}
|
||||
}
|
||||
@@ -439,7 +439,7 @@ void InfatuateStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessa
|
||||
if (EntityExists(target)) {
|
||||
entityInfo = GetEntInfo(target);
|
||||
if (!HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
if (HasAbility(target,ABILITY_OBLIVIOUS)) {
|
||||
if (AbilityIsActive(target,ABILITY_OBLIVIOUS)) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if (displayMessage) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCC4C);
|
||||
@@ -480,7 +480,7 @@ void BurnedStatusTarget(Entity * pokemon, Entity * target, u8 param_3, bool8 dis
|
||||
if (!HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
entityInfo = GetEntInfo(target);
|
||||
SetMessageArgument_2(gFormatBuffer_Monsters[0],entityInfo,0);
|
||||
if (HasAbility(target, ABILITY_WATER_VEIL)) {
|
||||
if (AbilityIsActive(target, ABILITY_WATER_VEIL)) {
|
||||
if (displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCE5C);
|
||||
}
|
||||
@@ -517,7 +517,7 @@ void BurnedStatusTarget(Entity * pokemon, Entity * target, u8 param_3, bool8 dis
|
||||
}
|
||||
EntityUpdateStatusSprites(target);
|
||||
|
||||
if (!HasAbility(target, ABILITY_SYNCHRONIZE)) {
|
||||
if (!AbilityIsActive(target, ABILITY_SYNCHRONIZE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -573,7 +573,7 @@ void PoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag
|
||||
}
|
||||
else
|
||||
{
|
||||
if (HasAbility(target, ABILITY_IMMUNITY)) {
|
||||
if (AbilityIsActive(target, ABILITY_IMMUNITY)) {
|
||||
if (displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCEB0);
|
||||
}
|
||||
@@ -610,7 +610,7 @@ void PoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FB5F8);
|
||||
}
|
||||
|
||||
if ((HasAbility(target, ABILITY_SYNCHRONIZE)) && !isNotPoisoned)
|
||||
if ((AbilityIsActive(target, ABILITY_SYNCHRONIZE)) && !isNotPoisoned)
|
||||
{
|
||||
hasSynchronized = FALSE;
|
||||
|
||||
@@ -662,7 +662,7 @@ void BadlyPoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayM
|
||||
}
|
||||
else
|
||||
{
|
||||
if (HasAbility(target, ABILITY_IMMUNITY)) {
|
||||
if (AbilityIsActive(target, ABILITY_IMMUNITY)) {
|
||||
if (displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCEB0);
|
||||
}
|
||||
@@ -692,7 +692,7 @@ void BadlyPoisonedStatusTarget(Entity * pokemon, Entity * target, bool8 displayM
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FB5F8);
|
||||
}
|
||||
|
||||
if ((HasAbility(target, ABILITY_SYNCHRONIZE)) && !isNotBadlyPoisoned)
|
||||
if ((AbilityIsActive(target, ABILITY_SYNCHRONIZE)) && !isNotBadlyPoisoned)
|
||||
{
|
||||
hasSynchronized = FALSE;
|
||||
|
||||
@@ -735,7 +735,7 @@ void FrozenStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessage)
|
||||
entityInfo = GetEntInfo(target);
|
||||
|
||||
if ((entityInfo->frozenClassStatus.status != STATUS_FROZEN) && !HasSafeguardStatus(pokemon,target,displayMessage)) {
|
||||
if (HasAbility(target, ABILITY_MAGMA_ARMOR)) {
|
||||
if (AbilityIsActive(target, ABILITY_MAGMA_ARMOR)) {
|
||||
if (displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCDE0);
|
||||
}
|
||||
@@ -1007,7 +1007,7 @@ void LowerAttackStageTarget(Entity * pokemon, Entity * target, s32 index, s32 de
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FD550);
|
||||
}
|
||||
else {
|
||||
if ((!HasAbility(target, ABILITY_HYPER_CUTTER)) || (index != STAT_STAGE_ATK)) goto _08076EE4;
|
||||
if ((!AbilityIsActive(target, ABILITY_HYPER_CUTTER)) || (index != STAT_STAGE_ATK)) goto _08076EE4;
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCA60);
|
||||
}
|
||||
|
||||
14
src/status.c
14
src/status.c
@@ -183,7 +183,7 @@ extern void sub_80420A0(Entity *);
|
||||
|
||||
u8 GetFlashFireStatus(Entity *pokemon)
|
||||
{
|
||||
if (!EntityExists(pokemon) || !HasAbility(pokemon, ABILITY_FLASH_FIRE))
|
||||
if (!EntityExists(pokemon) || !AbilityIsActive(pokemon, ABILITY_FLASH_FIRE))
|
||||
{
|
||||
return FLASH_FIRE_STATUS_NONE;
|
||||
}
|
||||
@@ -248,7 +248,7 @@ void ChangeAttackMultiplierTarget(Entity *pokemon, Entity *target, u32 statStage
|
||||
return;
|
||||
}
|
||||
|
||||
if (HasAbility(target, ABILITY_HYPER_CUTTER) && (statStage == STAT_STAGE_ATK) && F248LessThanInt(param_4, 1)) {
|
||||
if (AbilityIsActive(target, ABILITY_HYPER_CUTTER) && (statStage == STAT_STAGE_ATK) && F248LessThanInt(param_4, 1)) {
|
||||
if (displayMessage) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCA60);
|
||||
@@ -376,7 +376,7 @@ void LowerAccuracyStageTarget(Entity * pokemon, Entity * target, s32 statStage,
|
||||
strcpy(gFormatBuffer_Items[0],*gUnknown_80FC084);
|
||||
}
|
||||
if (!sub_8071728(pokemon,target,displayMessage)) {
|
||||
if (HasAbility(target, ABILITY_KEEN_EYE) && (statStage == STAT_STAGE_ACCURACY)){
|
||||
if (AbilityIsActive(target, ABILITY_KEEN_EYE) && (statStage == STAT_STAGE_ACCURACY)){
|
||||
if(displayMessage)
|
||||
{
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
@@ -406,7 +406,7 @@ void CringeStatusTarget(Entity * pokemon,Entity * target, bool8 displayMessage)
|
||||
|
||||
if (EntityExists(target)) {
|
||||
if (!HasSafeguardStatus(pokemon, target, displayMessage)) {
|
||||
if (HasAbility(target, ABILITY_INNER_FOCUS)){
|
||||
if (AbilityIsActive(target, ABILITY_INNER_FOCUS)){
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if(displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCC18);
|
||||
@@ -441,7 +441,7 @@ void ParalyzeStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag
|
||||
bool8 bVar7;
|
||||
|
||||
if ((EntityExists(target)) && (!HasSafeguardStatus(pokemon,target,displayMessage))) {
|
||||
if (HasAbility(target, ABILITY_LIMBER)) {
|
||||
if (AbilityIsActive(target, ABILITY_LIMBER)) {
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0],target,0);
|
||||
if (displayMessage) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCBF8);
|
||||
@@ -465,7 +465,7 @@ void ParalyzeStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessag
|
||||
else {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FB2CC);
|
||||
}
|
||||
if ((HasAbility(target, ABILITY_SYNCHRONIZE)) && (!bVar6)) {
|
||||
if ((AbilityIsActive(target, ABILITY_SYNCHRONIZE)) && (!bVar6)) {
|
||||
bVar7 = FALSE;
|
||||
|
||||
for(index = 0; index < NUM_DIRECTIONS; index++)
|
||||
@@ -598,7 +598,7 @@ void ConfuseStatusTarget(Entity * pokemon, Entity * target, bool8 displayMessage
|
||||
}
|
||||
else
|
||||
{
|
||||
if (HasAbility(target, ABILITY_OWN_TEMPO)) {
|
||||
if (AbilityIsActive(target, ABILITY_OWN_TEMPO)) {
|
||||
if (displayMessage)
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FCDB4);
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ bool8 HandleColorChange(Entity * pokemon, Entity * target)
|
||||
|
||||
entityInfo = GetEntInfo(target);
|
||||
newType = gDungeonCamouflageTypes[gDungeon->tileset];
|
||||
if (HasAbility(target, ABILITY_FORECAST)) {
|
||||
if (AbilityIsActive(target, ABILITY_FORECAST)) {
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gPtrForecastPreventsTypeSwitchMessage);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -507,7 +507,7 @@ bool8 DreamEaterMoveAction(Entity * pokemon, Entity * target, Move *move, s32 pa
|
||||
bool8 flag;
|
||||
|
||||
flag = FALSE;
|
||||
hasLiquidOoze = HasAbility(target, ABILITY_LIQUID_OOZE);
|
||||
hasLiquidOoze = AbilityIsActive(target, ABILITY_LIQUID_OOZE);
|
||||
if (IsSleeping(target)) {
|
||||
iVar3 = HandleDamagingMove(pokemon,target,move,0x100,param_4);
|
||||
if (iVar3 != 0) {
|
||||
@@ -698,7 +698,7 @@ bool8 ThiefAction(Entity * pokemon, Entity * target, Move *move, s32 param_4)
|
||||
targetInfo2 = GetEntInfo(target);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[0], pokemon, 0);
|
||||
SubstitutePlaceholderStringTags(gFormatBuffer_Monsters[1], target, 0);
|
||||
if (HasAbility(target, ABILITY_STICKY_HOLD)) {
|
||||
if (AbilityIsActive(target, ABILITY_STICKY_HOLD)) {
|
||||
return TRUE;
|
||||
}
|
||||
else if (HasHeldItem(target, ITEM_ALERT_SPECS)) {
|
||||
|
||||
@@ -36,10 +36,10 @@ s32 sub_8070828(Entity *pokemon, bool8 displayMessage)
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
if ((HasAbility(pokemon, ABILITY_SWIFT_SWIM)) && (GetApparentWeather(pokemon) == WEATHER_RAIN)) {
|
||||
if ((AbilityIsActive(pokemon, ABILITY_SWIFT_SWIM)) && (GetApparentWeather(pokemon) == WEATHER_RAIN)) {
|
||||
flag = TRUE;
|
||||
}
|
||||
if ((HasAbility(pokemon, ABILITY_CHLOROPHYLL)) && (GetApparentWeather(pokemon) == WEATHER_SUNNY)) {
|
||||
if ((AbilityIsActive(pokemon, ABILITY_CHLOROPHYLL)) && (GetApparentWeather(pokemon) == WEATHER_SUNNY)) {
|
||||
flag = TRUE;
|
||||
}
|
||||
if (displayMessage && SetVisualFlags(GetEntInfo(pokemon), 0x40, flag)) {
|
||||
|
||||
@@ -103,7 +103,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
if ((type == TYPE_NORMAL) || (type == TYPE_FIGHTING)) {
|
||||
normalOrFightingType = TRUE;
|
||||
}
|
||||
if ((HasAbility(target, ABILITY_WONDER_GUARD)) && (type != TYPE_NONE)) {
|
||||
if ((AbilityIsActive(target, ABILITY_WONDER_GUARD)) && (type != TYPE_NONE)) {
|
||||
hasWonderGuard = TRUE;
|
||||
}
|
||||
param_5->effectiveness = EFFECTIVENESS_NEUTRAL;
|
||||
@@ -132,7 +132,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
param_1->lo = temp;
|
||||
}
|
||||
|
||||
if (((type == TYPE_FIRE) || (type == TYPE_ICE)) && (HasAbility(target,ABILITY_THICK_FAT))) {
|
||||
if (((type == TYPE_FIRE) || (type == TYPE_ICE)) && (AbilityIsActive(target,ABILITY_THICK_FAT))) {
|
||||
gDungeon->unk134.unk16D = TRUE;
|
||||
F48_16_SMul(param_1,param_1, &gUnknown_8106F1C);
|
||||
}
|
||||
@@ -144,7 +144,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
param_5->unkE = 1;
|
||||
bVar4 = FALSE;
|
||||
}
|
||||
if ((type == TYPE_GROUND) && (HasAbility(target, ABILITY_LEVITATE))) {
|
||||
if ((type == TYPE_GROUND) && (AbilityIsActive(target, ABILITY_LEVITATE))) {
|
||||
gDungeon->unk134.fill16E[1] = TRUE;
|
||||
FP48_16_FromS32(param_1,0);
|
||||
param_5->effectiveness = EFFECTIVENESS_IMMUNE;
|
||||
@@ -152,7 +152,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
param_5->unkE = 1;
|
||||
bVar4 = FALSE;
|
||||
}
|
||||
if ((type == TYPE_WATER) && (HasAbility(pokemon, ABILITY_TORRENT))) {
|
||||
if ((type == TYPE_WATER) && (AbilityIsActive(pokemon, ABILITY_TORRENT))) {
|
||||
torrentFlag = pokemonInfo->maxHPStat / 4 >= pokemonInfo->HP;
|
||||
torrentVisualFlag = SetVisualFlags(pokemonInfo,0x80,torrentFlag);
|
||||
if (torrentFlag) {
|
||||
@@ -164,7 +164,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FEDA8);
|
||||
}
|
||||
}
|
||||
if ((type == TYPE_GRASS) && (HasAbility(pokemon, ABILITY_OVERGROW))) {
|
||||
if ((type == TYPE_GRASS) && (AbilityIsActive(pokemon, ABILITY_OVERGROW))) {
|
||||
overgrowFlag = pokemonInfo->maxHPStat / 4 >= pokemonInfo->HP;
|
||||
overgrowVisualFlag = SetVisualFlags(pokemonInfo,2,overgrowFlag);
|
||||
if (overgrowFlag) {
|
||||
@@ -176,7 +176,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FED88);
|
||||
}
|
||||
}
|
||||
if ((type == TYPE_BUG) && (HasAbility(pokemon, ABILITY_SWARM))) {
|
||||
if ((type == TYPE_BUG) && (AbilityIsActive(pokemon, ABILITY_SWARM))) {
|
||||
swarmFlag = pokemonInfo->maxHPStat / 4 >= pokemonInfo->HP;
|
||||
swarmVisualFlag = SetVisualFlags(pokemonInfo,0x10,swarmFlag);
|
||||
if (swarmFlag) {
|
||||
@@ -188,7 +188,7 @@ bool8 sub_806E100(s48_16 *param_1, Entity *pokemon, Entity *target, u8 type, str
|
||||
TryDisplayDungeonLoggableMessage3(pokemon,target,*gUnknown_80FEDC8);
|
||||
}
|
||||
}
|
||||
if ((type == TYPE_FIRE) && (HasAbility(pokemon, ABILITY_BLAZE))) {
|
||||
if ((type == TYPE_FIRE) && (AbilityIsActive(pokemon, ABILITY_BLAZE))) {
|
||||
blazeFlag = pokemonInfo->maxHPStat / 4 >= pokemonInfo->HP;
|
||||
blazeVisualFlag = SetVisualFlags(pokemonInfo,0x20,blazeFlag);
|
||||
if (blazeFlag) {
|
||||
@@ -268,15 +268,15 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (moveType == TYPE_ELECTRIC && HasAbility(target, ABILITY_VOLT_ABSORB))
|
||||
if (moveType == TYPE_ELECTRIC && AbilityIsActive(target, ABILITY_VOLT_ABSORB))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (moveType == TYPE_WATER && HasAbility(target, ABILITY_WATER_ABSORB))
|
||||
if (moveType == TYPE_WATER && AbilityIsActive(target, ABILITY_WATER_ABSORB))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (moveType == TYPE_GROUND && HasAbility(target, ABILITY_LEVITATE))
|
||||
if (moveType == TYPE_GROUND && AbilityIsActive(target, ABILITY_LEVITATE))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
@@ -314,11 +314,11 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
}
|
||||
} while ((s32)(++targetType) <= (s32)(targetTypes + 1));
|
||||
breakLoop:
|
||||
if ((moveType == TYPE_FIRE || moveType == TYPE_ICE) && HasAbility(target, ABILITY_THICK_FAT))
|
||||
if ((moveType == TYPE_FIRE || moveType == TYPE_ICE) && AbilityIsActive(target, ABILITY_THICK_FAT))
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
if (moveType == TYPE_WATER && HasAbility(user, ABILITY_TORRENT))
|
||||
if (moveType == TYPE_WATER && AbilityIsActive(user, ABILITY_TORRENT))
|
||||
{
|
||||
s32 maxHPStat = userData->maxHPStat;
|
||||
if (maxHPStat < 0)
|
||||
@@ -330,7 +330,7 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
weight *= 2;
|
||||
}
|
||||
}
|
||||
if (moveType == TYPE_GRASS && HasAbility(user, ABILITY_OVERGROW))
|
||||
if (moveType == TYPE_GRASS && AbilityIsActive(user, ABILITY_OVERGROW))
|
||||
{
|
||||
s32 maxHPStat = userData->maxHPStat;
|
||||
if (maxHPStat < 0)
|
||||
@@ -342,7 +342,7 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
weight *= 2;
|
||||
}
|
||||
}
|
||||
if (moveType == TYPE_BUG && HasAbility(user, ABILITY_SWARM))
|
||||
if (moveType == TYPE_BUG && AbilityIsActive(user, ABILITY_SWARM))
|
||||
{
|
||||
s32 maxHPStat = userData->maxHPStat;
|
||||
if (maxHPStat < 0)
|
||||
@@ -354,7 +354,7 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType)
|
||||
weight *= 2;
|
||||
}
|
||||
}
|
||||
if (moveType == TYPE_FIRE && HasAbility(user, ABILITY_BLAZE))
|
||||
if (moveType == TYPE_FIRE && AbilityIsActive(user, ABILITY_BLAZE))
|
||||
{
|
||||
s32 maxHPStat = userData->maxHPStat;
|
||||
if (maxHPStat < 0)
|
||||
|
||||
Reference in New Issue
Block a user