new cheat: Unbreakable wings.

This commit is contained in:
Sonic Dreamcaster 2024-11-24 21:12:16 -03:00
parent 16f4c15952
commit 29fb86f92d
2 changed files with 27 additions and 19 deletions

View File

@ -935,14 +935,16 @@ void Player_DamageWings(Player* player, s32 side, s32 damage) {
gRightWingFlashTimer[player->num] = 30; gRightWingFlashTimer[player->num] = 30;
if (player->arwing.rightWingState == WINGSTATE_INTACT) { if (player->arwing.rightWingState == WINGSTATE_INTACT) {
gRightWingHealth[player->num] -= damage; gRightWingHealth[player->num] -= damage;
if (gRightWingHealth[player->num] <= 0) { if (CVarGetInteger("gUnbreakableWings", 0) == 0) {
Play_SpawnDebris(1, player->hit1.x, player->hit1.y, player->hit1.z); if (gRightWingHealth[player->num] <= 0) {
player->arwing.rightWingState = WINGSTATE_BROKEN; Play_SpawnDebris(1, player->hit1.x, player->hit1.y, player->hit1.z);
func_effect_8007D0E0(player->hit1.x, player->hit1.y, player->hit1.z, 2.0f); player->arwing.rightWingState = WINGSTATE_BROKEN;
gRightWingDebrisTimer[player->num] = 50; func_effect_8007D0E0(player->hit1.x, player->hit1.y, player->hit1.z, 2.0f);
Player_PlaySfx(player->sfxSource, NA_SE_ARWING_WING_BROKEN, player->num); gRightWingDebrisTimer[player->num] = 50;
if (gAllRangeWingRepairTimer == 0) { Player_PlaySfx(player->sfxSource, NA_SE_ARWING_WING_BROKEN, player->num);
gAllRangeWingRepairTimer = 1000; if (gAllRangeWingRepairTimer == 0) {
gAllRangeWingRepairTimer = 1000;
}
} }
} }
} }
@ -950,14 +952,16 @@ void Player_DamageWings(Player* player, s32 side, s32 damage) {
gLeftWingFlashTimer[player->num] = 30; gLeftWingFlashTimer[player->num] = 30;
if (player->arwing.leftWingState == WINGSTATE_INTACT) { if (player->arwing.leftWingState == WINGSTATE_INTACT) {
gLeftWingHealth[player->num] -= damage; gLeftWingHealth[player->num] -= damage;
if (gLeftWingHealth[player->num] <= 0) { if (CVarGetInteger("gUnbreakableWings", 0) == 0) {
Play_SpawnDebris(0, player->hit2.x, player->hit2.y, player->hit2.z); if (gLeftWingHealth[player->num] <= 0) {
player->arwing.leftWingState = WINGSTATE_BROKEN; Play_SpawnDebris(0, player->hit2.x, player->hit2.y, player->hit2.z);
func_effect_8007D0E0(player->hit2.x, player->hit2.y, player->hit2.z, 2.0f); player->arwing.leftWingState = WINGSTATE_BROKEN;
gLeftWingDebrisTimer[player->num] = 50; func_effect_8007D0E0(player->hit2.x, player->hit2.y, player->hit2.z, 2.0f);
Player_PlaySfx(player->sfxSource, NA_SE_ARWING_WING_BROKEN, player->num); gLeftWingDebrisTimer[player->num] = 50;
if (gAllRangeWingRepairTimer == 0) { Player_PlaySfx(player->sfxSource, NA_SE_ARWING_WING_BROKEN, player->num);
gAllRangeWingRepairTimer = 1000; if (gAllRangeWingRepairTimer == 0) {
gAllRangeWingRepairTimer = 1000;
}
} }
} }
} }

View File

@ -425,7 +425,12 @@ void DrawEnhancementsMenu() {
if (UIWidgets::BeginMenu("Gameplay")) { if (UIWidgets::BeginMenu("Gameplay")) {
UIWidgets::CVarCheckbox("No Level of Detail (LOD)", "gDisableLOD", { UIWidgets::CVarCheckbox("No Level of Detail (LOD)", "gDisableLOD", {
.tooltip = "Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance" .tooltip = "Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance",
.defaultValue = true
});
UIWidgets::CVarCheckbox("Character heads inside Arwings at all times", "gTeamFaces", {
.tooltip = "Character heads are displayed inside Arwings in all cutscenes",
.defaultValue = true
}); });
ImGui::EndMenu(); ImGui::EndMenu();
@ -454,6 +459,7 @@ void DrawEnhancementsMenu() {
void DrawCheatsMenu() { void DrawCheatsMenu() {
if (UIWidgets::BeginMenu("Cheats")) { if (UIWidgets::BeginMenu("Cheats")) {
UIWidgets::CVarCheckbox("Infinite Lives", "gInfiniteLives"); UIWidgets::CVarCheckbox("Infinite Lives", "gInfiniteLives");
UIWidgets::CVarCheckbox("Unbreakable Wings", "gUnbreakableWings");
UIWidgets::CVarCheckbox("Infinite Bombs", "gInfiniteBombs"); UIWidgets::CVarCheckbox("Infinite Bombs", "gInfiniteBombs");
UIWidgets::CVarCheckbox("Hyper Laser", "gHyperLaser"); UIWidgets::CVarCheckbox("Hyper Laser", "gHyperLaser");
@ -475,8 +481,6 @@ void DrawHit64Menu() {
UIWidgets::CVarCheckbox("Start with Peppy dead", "gHit64PeppyDead", { UIWidgets::CVarCheckbox("Start with Peppy dead", "gHit64PeppyDead", {
.tooltip = "Start the level with with Peppy dead." .tooltip = "Start the level with with Peppy dead."
}); });
// UIWidgets::CVarCheckbox("Infinite Bombs", "gInfiniteBombs");
// UIWidgets::CVarCheckbox("Hyper Laser", "gHyperLaser");
ImGui::EndMenu(); ImGui::EndMenu();
} }