TheAfroOfDoom / omega-flowey-minecraft-remastered

MIT License
3 stars 1 forks source link

✨ ⚔️ add `x-bullets-upper-save-states` attack #118

Closed TheAfroOfDoom closed 2 months ago

TheAfroOfDoom commented 2 months ago

Summary

This can be thought of as a sort-of follow-up to https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/pull/91.

In phases 2 and 4 of the boss fight in Undertale, Flowey has two attacks he uses involving save-states (similar to those found in game console emulators like Dolphin).

This PR adds the second of those two attacks -- x-bullets-upper-save-states.

Flowey summons five triplets of bullets from each upper eye at the player (similar behavior from the base x-bullets-upper attack https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/pull/10). Part-way through this first group of bullets he "save-state's" (verb) and the text FILE 2 SAVED appears on the bottom left of the screen.

Flowey then begins to summon a second group of bullets, this time using homing-vines (https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/pull/27), but right before they hit the player he "load-state's" (verb) and the arena state is reset to the state it was at when he save-state'd earlier. That is:

  • bullets from the old state are re-summoned at the same position / rotation
  • new bullets from the state right before we load-state are deleted
  • the player's position and rotation are reset to what they were when we save-state'd

This was a relatively complicated attack to make but I'm happy with the behavior of it and mostly happy with the quality/maintainability of the underlying code.

In the original/old map, the behavior was actually wrong. I didn't make the second set of bullets be homing-vines -- they were just more x-bullets. I additionally, erroneously, added an "x-bullets-lower-save-states" attack which didn't exist in the original.

(we could pretty easily add this though ^, maybe in a different non-vanilla version of the boss-fight)


We also add this attack to the relevant boss-fight phases alongside the homing-vines-save-states attack in attack phases 2 and 4 (https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/commit/e737865e5cfcc1e41b2244a733d391dd592c3a15).

Notable commit(s):

https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/commit/5e0e6125644779fb234d1978227b04308b6dbd78

This commit adds the logic for save/load-state-ing entities relevant to the x-bullets-upper attack (in contrast to the base logic being for homing-vines in https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/pull/91).


https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/commit/4afa8ae79c4c53219fbf7bda52a909c47d94814e, https://github.com/TheAfroOfDoom/omega-flowey-minecraft-remastered/commit/88e4d0d88edafa60708b58982fd673c5a192c321

We adjust the timing between attack for boss-fight phases 2 and 4 in these commits. This allows the music cadence/amount of attacks during the save-state phases to be more accurate to Undertale.


Reproducing in-game

function _:attack/x-bullets-upper-save-states

Preview

attack

in-game -- old in-game -- new
old new preview
undertale
undertale

attack will not load-state if player takes damage

in-game -- new undertale
new no load if damage undertale-no-load-state-if-damaged
from https://youtu.be/RJ4kumxv_1k?t=254

videos with sound

in-game -- old in-game -- new
https://youtu.be/2IprmKr31pU?t=284 https://youtu.be/o7fEm7sL6XE
undertale updated boss-fight attack phases 2 and 4
https://youtu.be/8jmptY4uCkk&t=139s https://youtu.be/xQhAKv2Y_IQ

Supplemental changes