diff --git a/include/bmarch.h b/include/bmarch.h index c93e3b22..08d2e46a 100644 --- a/include/bmarch.h +++ b/include/bmarch.h @@ -11,7 +11,7 @@ s32 IsBallista(struct Trap* trap); int sub_8037AC0(struct Trap* trap); int sub_8037AEC(struct Trap* trap); int GetBallistaItemUses(struct Trap* trap); -// ??? ClearBallistaOccupied(???); -// ??? SetBallistaOccupied(???); +void ClearBallistaOccupied(struct Trap* trap); +void SetBallistaOccupied(struct Trap* trap); #endif // GUARD_BMARCH_H diff --git a/include/bmunit.h b/include/bmunit.h index 0c39c029..545bf0cc 100644 --- a/include/bmunit.h +++ b/include/bmunit.h @@ -463,6 +463,7 @@ struct Unit* GetUnit(int id); const struct ClassData* GetClassData(int classId); const struct CharacterData* GetCharacterData(int charId); void UnitRemoveItem(struct Unit* unit, int slot); +s32 CanUnitCrossTerrain(struct Unit* unit, int terrain); #define UNIT_IS_VALID(aUnit) ((aUnit) && (aUnit)->pCharacterData) #define UNIT_CHAR_ID(aUnit) ((aUnit)->pCharacterData->number) diff --git a/src/bmtarget.c b/src/bmtarget.c index 9b07d9d6..b0d76501 100644 --- a/src/bmtarget.c +++ b/src/bmtarget.c @@ -18,8 +18,6 @@ struct Unit* EWRAM_DATA gSubjectUnit = NULL; -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - void ForEachUnitInMovement(void(*func)(struct Unit* unit)) { int ix; int iy; @@ -306,7 +304,7 @@ void TryAddToDropTargetList(int x, int y) { return; } - if (!CanUnitCrossTerrain(GetUnit(gSubjectUnit->rescue), gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(GetUnit(gSubjectUnit->rescue), gBmMapTerrain[y][x])) { return; } @@ -809,7 +807,7 @@ void AddAsTarget_IfPositionCleanForSummon(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } @@ -841,7 +839,7 @@ void sub_8025CD8(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } @@ -1272,7 +1270,7 @@ void TryAddToMineTargetList(int x, int y) { return; } - if (!CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { + if (!(s8)CanUnitCrossTerrain(gSubjectUnit, gBmMapTerrain[y][x])) { return; } diff --git a/src/bmunit.c b/src/bmunit.c index a30de742..27b43199 100644 --- a/src/bmunit.c +++ b/src/bmunit.c @@ -989,7 +989,7 @@ void UnitChangeFaction(struct Unit* unit, int faction) { GetUnit(newUnit->rescue)->rescue = newUnit->index; } -inline s8 CanUnitCrossTerrain(struct Unit* unit, int terrain) { +inline s32 CanUnitCrossTerrain(struct Unit* unit, int terrain) { const s8* lookup = GetUnitMovementCost(unit); return (lookup[terrain] > 0) ? TRUE : FALSE; } @@ -1036,7 +1036,7 @@ void UnitGetDeathDropLocation(struct Unit* unit, int* xOut, int* yOut) { if (gBmMapHidden[iy][ix] & HIDDEN_BIT_UNIT) continue; - if (!CanUnitCrossTerrain(rescuee, gBmMapTerrain[iy][ix])) + if (!(s8)CanUnitCrossTerrain(rescuee, gBmMapTerrain[iy][ix])) continue; distance = RECT_DISTANCE(ix, iy, unit->xPos, unit->yPos); diff --git a/src/bmusemind.c b/src/bmusemind.c index 165aff1b..ab9312ef 100644 --- a/src/bmusemind.c +++ b/src/bmusemind.c @@ -25,8 +25,6 @@ #include "bmmind.h" #include "bmusemind.h" -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - struct ProcCmd CONST_DATA ProcScr_PostWarpStaffAction[] = { PROC_SLEEP(0), PROC_CALL_2(PostWarpStaff_ExecTrap), @@ -142,7 +140,7 @@ void GetRescueStaffeePosition(struct Unit* unit, struct Unit* target, int* xOut, continue; } - if (!CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { + if (!(s8)CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { continue; } @@ -181,7 +179,7 @@ void GetRescueStaffeePosition(struct Unit* unit, struct Unit* target, int* xOut, continue; } - if (!CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { + if (!(s8)CanUnitCrossTerrain(target, gBmMapTerrain[iy][ix])) { continue; } diff --git a/src/fogmap.c b/src/fogmap.c index c1d04a1f..73e85e20 100644 --- a/src/fogmap.c +++ b/src/fogmap.c @@ -8,8 +8,6 @@ #include "hardware.h" #include "bmudisp.h" -s8 CanUnitCrossTerrain(struct Unit* unit, int terrain); - void UpdateMapViewWithFog(int vision_range) { if (vision_range < 0) @@ -51,7 +49,7 @@ void FillWarpRangeMap(struct Unit *unit_act, struct Unit *unit_tar) { if (gBmMapMovement[y][x] > 0x78) continue; - if (CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && + if ((s8)CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && 0 == gBmMapUnit[y][x]) continue; @@ -64,7 +62,7 @@ void FillWarpRangeMap(struct Unit *unit_act, struct Unit *unit_tar) { if (gBmMapMovement[y][x] > 0x78) continue; - if (CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && + if ((s8)CanUnitCrossTerrain(unit_tar, gBmMapTerrain[y][x]) && 0 == gBmMapUnit[y][x] && 0 != gBmMapFog[y][x]) continue; diff --git a/src/mapanim_summon.c b/src/mapanim_summon.c index d6eda926..3b63b93f 100644 --- a/src/mapanim_summon.c +++ b/src/mapanim_summon.c @@ -202,9 +202,6 @@ void ProcSummonDK_ResetCounter(struct SumProc* proc) s8 SelectSummonPos(int x, int y, struct SumThing* result) { - // It is very strange that in this function, CanUnitCrossTerrain should return as int(*)(Unit*, int) - extern int CanUnitCrossTerrain(struct Unit* unit, int terrain); - struct SumThing array[9]; u8 chosen, count = 0; short iy, ix;