Skip to content

Commit 407c543

Browse files
committed
Add Island Flyover Braking item
1 parent 66c27a5 commit 407c543

3 files changed

Lines changed: 59 additions & 0 deletions

File tree

src/core/ItemMgr.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,10 @@ const char* ItemMgr::GetItemName(ItemMgr::ItemID id) {
342342
return "Island Flyover Unlock Balloons";
343343
case ISLAND_FLYOVER_UNLOCK_TWO_SEATER:
344344
return "Island Flyover Unlock Two Seater";
345+
case ISLAND_FLYOVER_UNLOCK_BOOST:
346+
return "Island Flyover Unlock Boosting";
347+
case ISLAND_FLYOVER_UNLOCK_BRAKE:
348+
return "Island Flyover Unlock Braking";
345349

346350
default:
347351
kiwi::cout << "Unknown ID" << kiwi::endl;
@@ -440,6 +444,8 @@ void ItemMgr::Clear() {
440444
mPlnNightLightsFlag = false;
441445
mPlnBalloonsFlag = false;
442446
mPlnTwoSeaterPlaneFlag = false;
447+
mPlnBoostFlag = false;
448+
mPlnBrakeFlag = true;
443449
}
444450

445451
/**
@@ -538,6 +544,8 @@ void ItemMgr::Debug() {
538544
//mPlnNightLightsFlag = r.CoinFlip();
539545
//mPlnBalloonsFlag = r.CoinFlip();
540546
//mPlnTwoSeaterPlaneFlag = r.CoinFlip();
547+
//mPlnBoostFlag = r.CoinFlip();
548+
//mPlnBrakeFlag = r.CoinFlip();
541549
}
542550

543551
} // namespace AP

src/core/ItemMgr.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,8 @@ class ItemMgr : public kiwi::DynamicSingleton<ItemMgr>,
210210
ISLAND_FLYOVER_NIGHT_LIGHTS = 0x1305,
211211
ISLAND_FLYOVER_UNLOCK_BALLOONS = 0x1306,
212212
ISLAND_FLYOVER_UNLOCK_TWO_SEATER = 0x1307,
213+
ISLAND_FLYOVER_UNLOCK_BOOST = 0x1308,
214+
ISLAND_FLYOVER_UNLOCK_BRAKE = 0x1309,
213215

214216
FINAL_ITEM_ID
215217
};
@@ -602,6 +604,12 @@ class ItemMgr : public kiwi::DynamicSingleton<ItemMgr>,
602604
bool IsPlnTwoSeaterUnlock() const {
603605
return mPlnTwoSeaterPlaneFlag;
604606
}
607+
bool IsPlnBoostUnlock() const {
608+
return mPlnBoostFlag;
609+
}
610+
bool IsPlnBrakeUnlock() const {
611+
return mPlnBrakeFlag;
612+
}
605613
/**@}*/
606614

607615
private:
@@ -919,6 +927,10 @@ class ItemMgr : public kiwi::DynamicSingleton<ItemMgr>,
919927
bool mPlnBalloonsFlag;
920928
//! Two Seater Plane
921929
bool mPlnTwoSeaterPlaneFlag;
930+
//! Braking
931+
bool mPlnBrakeFlag;
932+
//! Boosting
933+
bool mPlnBoostFlag;
922934
/**@}*/
923935

924936
public:
@@ -1384,6 +1396,12 @@ class ItemMgr : public kiwi::DynamicSingleton<ItemMgr>,
13841396
case ISLAND_FLYOVER_UNLOCK_TWO_SEATER:
13851397
mPlnTwoSeaterPlaneFlag = true;
13861398
break;
1399+
case ISLAND_FLYOVER_UNLOCK_BOOST:
1400+
mPlnBoostFlag = true;
1401+
break;
1402+
case ISLAND_FLYOVER_UNLOCK_BRAKE:
1403+
mPlnBrakeFlag = true;
1404+
break;
13871405

13881406
default:
13891407
kiwi::cout << "Error giving item with id: " << id << kiwi::endl;

src/hooks/Pln/items_Pln.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,5 +121,38 @@ TRAMPOLINE_DEF(0x804455e0, 0x804455e4) {
121121
// clang-format on
122122
}
123123

124+
/**
125+
* @brief Unlocks braking in Island Flyover
126+
*/
127+
bool PlnSetBrake() {
128+
return ItemMgr::GetInstance().IsPlnBrakeUnlock();
129+
}
130+
131+
/**
132+
* @brief PlnSetBrake trampoline
133+
*/
134+
TRAMPOLINE_DEF(0x80433858, 0x8043385c) {
135+
// clang-format off
136+
TRAMPOLINE_BEGIN
137+
138+
mr r14, r0
139+
bl PlnSetBrake
140+
cmpwi r3, 1
141+
beq Unlocked
142+
b Locked
143+
144+
Unlocked:
145+
TRAMPOLINE_END
146+
mr r0, r14
147+
stb r6, 0x120(r3)
148+
b Exit
149+
Locked:
150+
TRAMPOLINE_END
151+
mr r0, r14
152+
Exit:
153+
blr
154+
// clang-format on
155+
}
156+
124157
} // namespace Pln
125158
} // namespace AP

0 commit comments

Comments
 (0)