diff --git a/asm/code_8080CF0.s b/asm/code_8080CF0.s index d66b14f89..09045f4b3 100644 --- a/asm/code_8080CF0.s +++ b/asm/code_8080CF0.s @@ -5,110 +5,8 @@ .text - thumb_func_start sub_8081AD4 -sub_8081AD4: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r4] - bl sub_8083060 - ldrb r1, [r4, 0x1] - adds r0, r5, 0 - bl sub_8083060 - adds r1, r4, 0x2 - adds r0, r5, 0 - movs r2, 0x2 - bl sub_8082FA8 - ldrb r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083060 - ldrb r1, [r4, 0x5] - adds r0, r5, 0 - bl sub_8083060 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081AD4 - - thumb_func_start sub_8081B08 -sub_8081B08: - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r7, 0 - movs r5, 0x3 -_08081B12: - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_8081AD4 - adds r4, 0x8 - subs r5, 0x1 - cmp r5, 0 - bge _08081B12 - adds r0, r7, 0 - adds r0, 0x20 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_8083060 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8081B08 - - thumb_func_start sub_8081B34 -sub_8081B34: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r0, 0 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8083048 - movs r0, 0x2 - ldrsh r1, [r4, r0] - adds r0, r5, 0 - bl sub_8083048 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081B34 - - thumb_func_start sub_8081B54 -sub_8081B54: - push {lr} - movs r2, 0x3 - bl sub_8082FA8 - pop {r0} - bx r0 - thumb_func_end sub_8081B54 - - thumb_func_start sub_8081B60 -sub_8081B60: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4] - bl sub_8083030 - ldrh r1, [r4, 0x4] - adds r0, r5, 0 - bl sub_8083030 - adds r1, r4, 0 - adds r1, 0x9 - adds r0, r5, 0 - movs r2, 0x1 - bl sub_8082FA8 - adds r4, 0xE - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_8082FA8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8081B60 - - thumb_func_start sub_8081B94 -sub_8081B94: + thumb_func_start SaveDungeonWeather +SaveDungeonWeather: push {r4-r6,lr} adds r6, r0, 0 adds r5, r1, 0 @@ -149,7 +47,7 @@ _08081BAC: pop {r4-r6} pop {r0} bx r0 - thumb_func_end sub_8081B94 + thumb_func_end SaveDungeonWeather thumb_func_start sub_8081BF4 sub_8081BF4: diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index f55bae5d7..35e1dac7c 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -31,6 +31,24 @@ typedef struct Dungeon_sub u8 unk2; } Dungeon_sub; +typedef struct Weather +{ + /* 0xE264 */ u8 weather; // Uses the weather constants in weather.h. + u8 unkE265; // Uses the weather constants in weather.h + /* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically. + /* 0xE267 */ u8 unkE267[0xE269 - 0xE267]; + u8 unkE269; + u8 fillE26A; + u8 unkE26B; + u8 weatherTurns; + u8 fillE26D[0xE26F - 0xE26D]; + /* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather. + /* 0xE277 */ u8 mudSportTurns; + /* 0xE278 */ u8 waterSportTurns; + /* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects + +} Weather; + // size: 0x30 typedef struct unkDungeonGlobal_unk1CE98_sub { @@ -175,20 +193,7 @@ typedef struct Dungeon u32 unkE250; u8 fillE254[0xE260 - 0xE254]; u32 unkE260; - /* 0xE264 */ u8 weather; // Uses the weather constants in weather.h. - u8 unkE265; // Uses the weather constants in weather.h - /* 0xE266 */ u8 weatherDamageCounter; // Timer for applying sandstorm/hail damage periodically. - /* 0xE267 */ u8 unkE267[0xE269 - 0xE267]; - u8 unkE269; - u8 fillE26A; - u8 unkE26B; - u8 weatherTurns; - u8 fillE26D[0xE26F - 0xE26D]; - /* 0xE26F */ u8 naturalWeather[8]; // The weather at the start of the floor. If the weather changes, then expires, revert back to the starting weather. - /* 0xE277 */ u8 mudSportTurns; - /* 0xE278 */ u8 waterSportTurns; - /* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects - u8 fillE27A[0xE27C - 0xE27A]; + /* 0xE264 */ Weather weather; // Uses the weather constants in weather.h. /* 0xE27C */ Tile unkE27C[8][8]; /* 0xE87C */ u8 unkE87C[8][8]; u32 fillE8BC; diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index c320cfaa2..7f31e33ad 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -1072,7 +1072,7 @@ void ArticunoPreFightDialogue(void) DisplayDungeonDialogue(gArticunoPreFightDialogue_7); sub_803E708(10,0x46); PlaySoundEffect(0); // snow flurry - gDungeon->unkE265 = WEATHER_SNOW; + gDungeon->weather.unkE265 = WEATHER_SNOW; sub_807EAA0(0,1); PlaySoundEffect(0x1ee); // flash effect? sub_8088574(); @@ -1107,7 +1107,7 @@ void ArticunoReFightDialogue(void) LeaderEntity = xxx_call_GetLeader(); ArticunoEntity = GetEntityFromClientType(0xd); - gDungeon->unkE265 = WEATHER_SNOW; + gDungeon->weather.unkE265 = WEATHER_SNOW; sub_807EAA0(0,1); sub_803E708(10,0x46); DisplayDungeonDialogue(gArticunoReFightDialogue_1); @@ -1134,7 +1134,7 @@ void ArticunoPostStoryPreFightDialogue(void) sub_80866C4(gUnknown_8102A9C); } else { - gDungeon->unkE265 = WEATHER_SNOW; + gDungeon->weather.unkE265 = WEATHER_SNOW; sub_807EAA0(0,1); ArticunoScreenFlash(); sub_8086738(); @@ -2494,7 +2494,7 @@ void RaikouPreFightDialogue(void) DisplayDungeonDialogue(gRaikouPreFightDialogue_1); RaikouScreenFlash(); DisplayDungeonDialogue(gRaikouPreFightDialogue_2); - gDungeon->unkE265 = WEATHER_RAIN; + gDungeon->weather.unkE265 = WEATHER_RAIN; sub_807EAA0(0,1); sub_803E708(10,70); DisplayDungeonDialogue(gRaikouPreFightDialogue_3); @@ -2516,7 +2516,7 @@ void RaikouReFightDialogue(void) LeaderEntity = xxx_call_GetLeader(); RaikouEntity = GetEntityFromClientType(0x13); - gDungeon->unkE265 = WEATHER_RAIN; + gDungeon->weather.unkE265 = WEATHER_RAIN; sub_807EAA0(0,1); RaikouScreenFlash(); DisplayDungeonDialogue(gRaikouReFightDialogue_1); @@ -2540,7 +2540,7 @@ void RaikouPostStoryPreFightDialogue(void) sub_80866C4(gRaikouPostStoryPreFightDialogue_4); } else { - gDungeon->unkE265 = WEATHER_RAIN; + gDungeon->weather.unkE265 = WEATHER_RAIN; sub_807EAA0(0,1); DisplayDungeonDialogue(gRaikouPostStoryPreFightDialogue_1); RaikouScreenFlash(); diff --git a/src/code_8069E0C.c b/src/code_8069E0C.c index 0df1cda77..f92891064 100644 --- a/src/code_8069E0C.c +++ b/src/code_8069E0C.c @@ -71,23 +71,23 @@ void TriggerWeatherAbilities(void) if (gDungeon->unkC != 0) { gDungeon->unkC = 0; - gDungeon->nullifyWeather = FALSE; + gDungeon->weather.nullifyWeather = FALSE; for(index = 0; index < DUNGEON_MAX_POKEMON; index++) { entity = gDungeon->allPokemon[index]; if (EntityExists(entity)) { if (HasAbility(entity, ABILITY_DRIZZLE)) { - gDungeon->naturalWeather[WEATHER_RAIN] = 1; + gDungeon->weather.naturalWeather[WEATHER_RAIN] = 1; } else if (HasAbility(entity, ABILITY_SAND_STREAM)) { - gDungeon->naturalWeather[WEATHER_SANDSTORM] = 1; + gDungeon->weather.naturalWeather[WEATHER_SANDSTORM] = 1; } else if (HasAbility(entity, ABILITY_DROUGHT)) { - gDungeon->naturalWeather[WEATHER_SUNNY] = 1; + gDungeon->weather.naturalWeather[WEATHER_SUNNY] = 1; } if ((HasAbility(entity, ABILITY_AIR_LOCK)) || (HasAbility(entity, ABILITY_CLOUD_NINE))) { - gDungeon->nullifyWeather = TRUE; + gDungeon->weather.nullifyWeather = TRUE; } } } diff --git a/src/move_actions.c b/src/move_actions.c index e67492bda..a95cd5ad8 100644 --- a/src/move_actions.c +++ b/src/move_actions.c @@ -441,7 +441,7 @@ bool32 sub_805783C(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool32 sub_805785C(Entity *pokemon, Entity *target, Move *move, s32 param_4) { - gDungeon->unkE26B = gUnknown_80F4F42; + gDungeon->weather.unkE26B = gUnknown_80F4F42; if (sub_807EAA0(1,0) == 0) { // The weather remains unchanged sub_80522F4(pokemon,target,*gUnknown_80FCF74); @@ -451,7 +451,7 @@ bool32 sub_805785C(Entity *pokemon, Entity *target, Move *move, s32 param_4) bool32 sub_80578A4(Entity *pokemon, Entity *target, Move *move, s32 param_4) { - gDungeon->weatherTurns = gUnknown_80F4F42; + gDungeon->weather.weatherTurns = gUnknown_80F4F42; if (sub_807EAA0(1,0) == 0) { // The weather remains unchanged sub_80522F4(pokemon,target,*gUnknown_80FCF80); @@ -2035,7 +2035,7 @@ bool8 sub_805946C(Entity * pokemon,Entity * target,Move * move,u32 param_4) bool8 sub_80594E0(Entity *pokemon, Entity *target, Move *move, u32 param_4) { - gDungeon->unkE269 = gUnknown_80F4F42; + gDungeon->weather.unkE269 = gUnknown_80F4F42; if(sub_807EAA0(1, 0) == 0) { sub_80522F4(pokemon, target, *gUnknown_80FCF78); @@ -2729,7 +2729,7 @@ bool8 RolePlayMoveAction(Entity *pokemon, Entity *target, Move *move, u32 param_ bool8 sub_805A394(Entity *pokemon, Entity *target, Move *move, u32 param_4) { - gDungeon->unkE267[1] = gUnknown_80F4F42; + gDungeon->weather.unkE267[1] = gUnknown_80F4F42; if (sub_807EAA0(1,0) == 0) { sub_80522F4(pokemon,target,*gUnknown_80FCF7C); } diff --git a/src/move_checks.c b/src/move_checks.c index c9e30f1c1..ce698e24a 100644 --- a/src/move_checks.c +++ b/src/move_checks.c @@ -375,13 +375,13 @@ bool8 CanUseOnSelfWithStatusChecker(Entity *pokemon, Move *move) break; } case MOVE_MUD_SPORT: - if (gDungeon->mudSportTurns > 0) + if (gDungeon->weather.mudSportTurns > 0) { return FALSE; } break; case MOVE_WATER_SPORT: - if (gDungeon->waterSportTurns > 0) + if (gDungeon->weather.waterSportTurns > 0) { return FALSE; } diff --git a/src/trap_1.c b/src/trap_1.c index 5e0369f69..613efb81f 100644 --- a/src/trap_1.c +++ b/src/trap_1.c @@ -14,15 +14,15 @@ extern u8 gUnknown_81071D4[]; extern void sub_8082FA8(unkStruct_8094924 *, void *, s32); -void sub_8081B60(void *, Tile *); +void SaveTile(unkStruct_8094924 *r0, Tile *tile); void sub_80830F8(void * , u32*); void sub_808312C(void *, u32 *); -void sub_8081B94(void *, u8 *); +void SaveDungeonWeather(void *, Weather *); void sub_8083078(void *, u32); void sub_80830B4(void *, u8); void sub_8083030(void *, u16); -void sub_8080E0C(unkStruct_8094924 *, Entity *); -void sub_808300C(void *, u8 *); +void SaveEntity(unkStruct_8094924 *param_1, Entity *); +void sub_808300C(unkStruct_8094924 *param_1, u8 *); void sub_8081788(unkStruct_8094924 *param_1, Item *param_2); void sub_8080B90(unkStruct_8094924 *param_1); void SaveItemData(unkStruct_8094924 *param_1); @@ -34,20 +34,20 @@ void sub_8080CF0(unkStruct_8094924 *param_1); void nullsub_98(unkStruct_8094924 *param_1); void sub_8082F9C(unkStruct_8094924 *param_1, u32, u32); void sub_8049ED4(void); -void sub_8083060(void *, u32); +void sub_8083060(unkStruct_8094924 *param_1, u32); void sub_80817F4(unkStruct_8094924 *param_1, u32 param_2); -void sub_80830A0(void *, u32); +void sub_80830A0(unkStruct_8094924 *param_1, u32); void sub_808180C(unkStruct_8094924 *param_1, u32 param_2); -void sub_8083048(void *, u32); +void sub_8083048(unkStruct_8094924 *param_1, u32); void sub_80818C8(unkStruct_8094924 *param_1, JoinedAt *param_2); -void sub_80817C8(unkStruct_8094924 *param_1, ActionContainer *param_2); -void sub_8081B34(void *, void *); -void sub_8081B08(void *, Move *); +void SaveActionContainer(unkStruct_8094924 *param_1, ActionContainer *param_2); +void sub_8081B34(unkStruct_8094924 *r0, s16 *r1); +void SaveEntityMoves(unkStruct_8094924 *r0, Move *move); void sub_8081824(unkStruct_8094924 *param_1, u32 param_2); void sub_80817B0(unkStruct_8094924 *param_1, u32 param_2); void SavePosition(void*, Position *); -void sub_80818E4(unkStruct_8094924 *param_1, AITarget* param_2); -void sub_8081B54(void *, u8 *); +void SaveAITargetStatus(unkStruct_8094924 *param_1, AITarget* param_2); +void SaveIQFlags(unkStruct_8094924 *r0, u8 *r1); 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); @@ -66,10 +66,10 @@ void SaveHiddenPower(unkStruct_8094924 *param_1, HiddenPower *param_2); 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 SaveSpeedCounters(unkStruct_8094924 *param_1, u8 *speedCounters, u32 numCounters); void SaveClientType(unkStruct_8094924 *param_1, u8 param_2); void sub_803E708(u32, u32); -void sub_80421C0(Entity *, u32); +void sub_80421C0(Entity *, u16); void sub_804687C(Entity *, Position *, Position *, Item *, u32); void HandleTripTrap(Entity *pokemon, Entity *target) @@ -218,15 +218,15 @@ void sub_8080CF0(unkStruct_8094924 *param_1) sub_8083030(param_1,gDungeon->unk3800); for(counter = 0; counter < MAX_TEAM_MEMBERS; counter++) { - sub_8080E0C(param_1,gDungeon->teamPokemon[counter]); + SaveEntity(param_1,gDungeon->teamPokemon[counter]); } for(counter = 0; counter < DUNGEON_MAX_WILD_POKEMON; counter++) { - sub_8080E0C(param_1,gDungeon->wildPokemon[counter]); + SaveEntity(param_1,gDungeon->wildPokemon[counter]); } } -void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) +void SaveEntity(unkStruct_8094924 *param_1, Entity *param_2) { Position *pos; EntityInfo *info; @@ -322,7 +322,7 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) sub_80830A0(param_1,info->offensiveMultipliers[1]); sub_80830A0(param_1,info->defensiveMultipliers[0]); sub_80830A0(param_1,info->defensiveMultipliers[1]); - sub_80817C8(param_1,&info->action); + SaveActionContainer(param_1,&info->action); sub_808180C(param_1,info->types[0]); sub_808180C(param_1,info->types[1]); sub_8081824(param_1,info->abilities[0]); @@ -373,9 +373,9 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) pos++; } - sub_80818E4(param_1,temp3); - sub_8081B54(param_1,temp2); - sub_8081B54(param_1,temp1); + SaveAITargetStatus(param_1,temp3); + SaveIQFlags(param_1,temp2); + SaveIQFlags(param_1,temp1); SaveTactic(param_1,*puStack_a0); SaveHiddenPower(param_1,psStack_a4); sub_8083078(param_1,*puStack_9c); @@ -415,9 +415,9 @@ void sub_8080E0C(unkStruct_8094924 *param_1,Entity *param_2) sub_8083060(param_1,info->stockpileStage); sub_8083060(param_1,info->fill113); sub_8083060(param_1,(u8)info->moveRandomly); - sub_8081B08(param_1,info->moves); - sub_8081B34(param_1,&info->belly); - sub_8081B34(param_1,&info->maxBelly); + SaveEntityMoves(param_1,info->moves); + sub_8081B34(param_1,(s16 *)&info->belly); + sub_8081B34(param_1,(s16 *)&info->maxBelly); sub_80830B4(param_1,info->aiNextToTarget); sub_80830B4(param_1,info->recalculateFollow); sub_80830B4(param_1,info->waiting); @@ -472,7 +472,7 @@ void sub_8081454(unkStruct_8094924 *param_1) for(iVar2 = 0; iVar2 < DUNGEON_MAX_SIZE_X; iVar2++) { - sub_8081B60(param_1,&gDungeon->tiles[iVar1][iVar2]); + SaveTile(param_1,&gDungeon->tiles[iVar1][iVar2]); } } @@ -494,11 +494,11 @@ void sub_8081454(unkStruct_8094924 *param_1) { for(iVar2 = 0; iVar2 < 8; iVar2++) { - sub_8081B60(param_1, &gDungeon->unkE27C[iVar1][iVar2]); + SaveTile(param_1, &gDungeon->unkE27C[iVar1][iVar2]); sub_8083060(param_1, gDungeon->unkE87C[iVar1][iVar2]); } } - sub_8081B94(param_1,&gDungeon->weather); + SaveDungeonWeather(param_1,&gDungeon->weather); } void sub_808165C(unkStruct_8094924 *param_1) @@ -540,7 +540,7 @@ void sub_80817B0(unkStruct_8094924 *param_1, u32 param_2) sub_8082FA8(param_1, &stack, 1); } -void sub_80817C8(unkStruct_8094924 *param_1, ActionContainer *param_2) +void SaveActionContainer(unkStruct_8094924 *param_1, ActionContainer *param_2) { sub_8082FA8(param_1, ¶m_2->direction, 1); sub_8082FA8(param_1, ¶m_2->itemTargetPosition.x, 1); @@ -609,7 +609,7 @@ void sub_80818C8(unkStruct_8094924 *param_1, JoinedAt *param_2) sub_8083060(param_1, param_2->unk1); } -void sub_80818E4(unkStruct_8094924 *param_1, AITarget* param_2) +void SaveAITargetStatus(unkStruct_8094924 *param_1, AITarget* param_2) { sub_8082FA8(param_1, ¶m_2->aiObjective, 1); sub_80830B4(param_1, param_2->aiNotNextToTarget); @@ -707,3 +707,42 @@ void SaveMuzzledStatus(unkStruct_8094924 *param_1, Muzzled *param_2) sub_8083060(param_1, param_2->muzzledTurns); } +void SaveEntityMove(unkStruct_8094924 *r0, Move *r1) +{ + sub_8083060(r0, r1->moveFlags); + sub_8083060(r0, r1->moveFlags2); + sub_8082FA8(r0, &r1->id, 2); + sub_8083060(r0, r1->PP); + sub_8083060(r0, r1->ginseng); +} + +void SaveEntityMoves(unkStruct_8094924 *r0, Move *move) +{ + s32 index; + for(index = 0; index < MAX_MON_MOVES; index++) + { + SaveEntityMove(r0, &move[index]); + } + sub_8083060(r0, *(u8 *)(move + 0x4)); // Struggle Move flags? +} + +void sub_8081B34(unkStruct_8094924 *r0, s16 *r1) +{ + sub_8083048(r0, r1[0]); + sub_8083048(r0, r1[1]); +} + +void SaveIQFlags(unkStruct_8094924 *r0, u8 *r1) +{ + sub_8082FA8(r0, r1, 3); +} + +void SaveTile(unkStruct_8094924 *r0, Tile *tile) +{ + sub_8083030(r0, tile->terrainType); + sub_8083030(r0, tile->unk4); + sub_8082FA8(r0, &tile->room, 1); + sub_8082FA8(r0, &tile->unkE, 1); +} + + diff --git a/src/type_effectiveness.c b/src/type_effectiveness.c index 9f76d1521..3375bfc16 100644 --- a/src/type_effectiveness.c +++ b/src/type_effectiveness.c @@ -231,11 +231,11 @@ bool8 sub_806E100(s32 *param_1, Entity *pokemon, Entity *target, u8 type, struct sub_800A34C(param_1,param_1, gUnknown_8106F64); gDungeon->unk16A = TRUE; } - if (((gDungeon->mudSportTurns != 0) || (weather == WEATHER_FOG)) && (type == TYPE_ELECTRIC)) { + if (((gDungeon->weather.mudSportTurns != 0) || (weather == WEATHER_FOG)) && (type == TYPE_ELECTRIC)) { gDungeon->fill16E[7] = TRUE; sub_800A34C(param_1,param_1,gUnknown_8106F1C); } - if ((gDungeon->waterSportTurns != 0) && (type == TYPE_FIRE)) { + if ((gDungeon->weather.waterSportTurns != 0) && (type == TYPE_FIRE)) { gDungeon->fill16E[8] = TRUE; sub_800A34C(param_1,param_1,gUnknown_8106F1C); } @@ -388,11 +388,11 @@ s32 WeightWeakTypePicker(Entity *user, Entity *target, u8 moveType) return 2; } } - if (gDungeon->mudSportTurns != 0 && moveType == TYPE_ELECTRIC) + if (gDungeon->weather.mudSportTurns != 0 && moveType == TYPE_ELECTRIC) { return 2; } - if (gDungeon->waterSportTurns != 0 && moveType == TYPE_FIRE) + if (gDungeon->weather.waterSportTurns != 0 && moveType == TYPE_FIRE) { return 2; } diff --git a/src/weather.c b/src/weather.c index 1bdc3e3c9..f64ed70aa 100644 --- a/src/weather.c +++ b/src/weather.c @@ -19,7 +19,7 @@ u8 GetApparentWeather(Entity *pokemon) { return WEATHER_CLEAR; } - return gDungeon->weather; + return gDungeon->weather.weather; } void sub_807E5AC(void) @@ -38,18 +38,18 @@ void sub_807E5E4(u8 weather) int index; u8 *preload; - gDungeon->unkE265 = weather; - gDungeon->weather = gDungeon->unkE265; - gDungeon->nullifyWeather = FALSE; + gDungeon->weather.unkE265 = weather; + gDungeon->weather.weather = gDungeon->weather.unkE265; + gDungeon->weather.nullifyWeather = FALSE; for(index = 0; index < 8; index++) { - gDungeon->unkE267[index] = 0; - gDungeon->naturalWeather[index] = 0; + gDungeon->weather.unkE267[index] = 0; + gDungeon->weather.naturalWeather[index] = 0; } - preload = &gDungeon->weatherDamageCounter; + preload = &gDungeon->weather.weatherDamageCounter; index = 0; *preload = 9; - gDungeon->mudSportTurns = 0; - gDungeon->waterSportTurns = 0; + gDungeon->weather.mudSportTurns = 0; + gDungeon->weather.waterSportTurns = 0; for(index = 0; index < 0x100; index++) { gDungeon->unk17C[index].unk0 = index;