Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Boss Randomization #81

Merged
merged 104 commits into from
Jun 7, 2022

Conversation

TriumphantBass
Copy link
Collaborator

@TriumphantBass TriumphantBass commented May 30, 2022

Introduction
This PR adds a boss randomization setting that changes the placement of bosses.

Bosses XP, HP, and ATK will be scaled to the boss at the position they are replacing, unless the Scale Bosses setting is turned off.

This will not affect the item locations or when they are awarded (i.e. the vanilla boss rooms will have rewards when the bosses are defeated).

Changes only active during boss rando:

  • Ravenlord arena has 6 moving platforms to allow full arena movement with only single jump (no dash, timestop, etc)
  • Varndagroth item is rewarded after the fight

General changes:

  • All bosses will record a TSRando_<boss kill flag>
    This was originally just for boss rando because flags were getting set and unset frequently, but looking at completed save files, some of the bosses actually reset theirs naturally, so having a separate record helps keep room triggers more consistent.

@CaitSith2
Copy link
Contributor

Nightmare as Prince Nuvius or Nightmare as Vol Terrilis ends the game prematurely. In the case of Archipelago, it prompts for !forfeit and !collect, but does NOT register to the archipelago server that the goal is complete.

@TriumphantBass
Copy link
Collaborator Author

Added proper minion scaling

@TriumphantBass
Copy link
Collaborator Author

Fixed AP goal state

@CaitSith2
Copy link
Contributor

gas effect not present during the boss as The Maw fight, when missing a gas mask. In other words, I didn't have to breath biscuits during the boss fight.

@TriumphantBass
Copy link
Collaborator Author

By design. The gas fills the room of the boss replacing the maw.

@CaitSith2
Copy link
Contributor

Except that didn't happen at all.

@TriumphantBass
Copy link
Collaborator Author

Regression fixed
image

@CaitSith2
Copy link
Contributor

One thing I did note is that whatever level your oxygen was at, does NOT carry over to the boss room, but instead acts as if it is right full once again, and upon defeat of the boss, full Oxygen once again.

@CaitSith2
Copy link
Contributor

Also, the boss room that replaces Feline Sentry SHOULD fill with gas, if The Maw is dead

@CaitSith2
Copy link
Contributor

if (vanillaBossId == (int)EBossID.FelineSentry && level.GameSave.GetSaveBool("TSRando_IsBossDead_Maw"))
                FillRoomWithGas(level);

@TriumphantBass
Copy link
Collaborator Author

added

@CaitSith2
Copy link
Contributor

And I found yet another bug. I had Ifrit as Nightmare for my boss. (This can also work for Ravenlord as Nightmare). The key here, is that you clear out the two gyre boss rooms.

Now, go through the Gyre Archive itself, then go to either the Ifrit spot or Ravenlord spot. If you picked the one it randomly chose to initialize, you will end up actually fighting either Ifrit or Ravenlord, and if that is the as Nightmare fight, then you win upon defeating the boss.

@TriumphantBass
Copy link
Collaborator Author

#81 (comment)

And I found yet another bug. I had Ifrit as Nightmare for my boss. (This can also work for Ravenlord as Nightmare). The key here, is that you clear out the two gyre boss rooms.

Now, go through the Gyre Archive itself, then go to either the Ifrit spot or Ravenlord spot. If you picked the one it randomly chose to initialize, you will end up actually fighting either Ifrit or Ravenlord, and if that is the as Nightmare fight, then you win upon defeating the boss.

Do you have a seed number for this?

@CaitSith2
Copy link
Contributor

CaitSith2 commented Jun 3, 2022

AllPlayers.zip Save files containing the aformentioned situation. (since I ran this via Archipelago as part of my bug hunting.)

The pre_gyre_archive_init has the ifrit boss fight room empty, post_gyre has it ready to fight ifrit, even though ifrit should already be dead. Killing that instance of ifrit WILL finish the game.

https://archipelago.gg/room/EqiJ_b-2TxGNqRrjtF0BgQ - AP seed that I used, along with modifying the code to force boss rando on, Lunais slot.

@TriumphantBass
Copy link
Collaborator Author

Okay, reproduced and fixed. Entering a gyre portal wipes the IsBossDead for each which is part of why I added TSRando prefixes throughout.

Boss flags are now refreshed after each of the gyre portals

@Jarno458 Jarno458 merged commit b225290 into Jarno458:master Jun 7, 2022
@TriumphantBass TriumphantBass deleted the feature/boss-randomizer branch January 17, 2023 05:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants