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 soul event infrastructure for boss fight #84

Merged
merged 35 commits into from
Feb 29, 2024

Conversation

TheAfroOfDoom
Copy link
Owner

@TheAfroOfDoom TheAfroOfDoom commented Feb 29, 2024

Summary

Split from #83

This PR adds the logic, visuals, and sounds required for the soul-event phase of the boss fight.

In #26 we added the base infrastructure for the boss-fight. From that PR:

The boss fight director essentially functions as a state machine, where we do certain things both during states themselves and during transitions between states.

e.g.:

  • transition into attack phase state -> play music, set scores, set tag as boss_fight.phase.attack
  • during attack phase state -> attack by picking through a random list depending on phase (phase 0 is x bullets upper/> lower, homing vines, friendliness pellets, etc.)
  • transition into warn phase state -> play alarm sound, don't start new attacks, set scores, set tag as boss_fight.phase.warn
  • during warn phase state -> wait until next state transition (into soul phase)
  • etc..

We expand that list of steps in this PR with:

  • (continuing from) ...during warn phase state -> wait until next state transition (into soul phase)
  • transition into soul event phase state
  • wait for tv static to end
  • start next soul event based on boss-fight.progress.phase.i
  • wait for signal from soul event to continue boss-fight (it will remove the has_active_soul_event tag) (next PR)
  • play tv static again and wait
  • transition into attack phase state
  • ...

This PR also adds new models/animations to supplement the new soul event phase.


Test plan

N/A

Reproducing in-game

function _:boss_fight

Preview

video of transition from attack phase to soul event phase

https://youtu.be/Y3s63O9Nj5M

models

new locators on tv_screen model tv_screen -- static variant
image tv-screen-static-variant
soul -- red soul -- 0
1 1
soul -- 1 soul -- 2
1 1
soul -- 3 soul -- 4
1 1
soul -- 5
1

animations

full WARNING animation

new, before new, after
warning-before warning-after-with-soul
undertale old map
undertale warning image
soul -- shake soul -- float
soul shaking soul float raw
soul event tv_screen with soul floating
soul floating

world changes

new soul arena

image image

Supplemental changes

  • make datapack/test workflow run regardless of if datapack/lint passes -- f36d384 (#84)
  • add objective setup and reset_scores functions to run on /reload -- d5ac716 (#84)
  • refactor AJ removal function calls into standalone function -- 1a3a311 (#84)
  • add convenience function to stop the boss fight -- 26db866 (#84)
  • let attack-flies trigger next boss-fight attack sooner -- 1a73212 (#84)
  • add missing models to remove_animated_java_models -- a0d30c5 (#84)

- also forgot to add `soul_0_sword` to this list, so add it now
- it can loop endlessly now that we connect all 3 phases (`attack`, `soul`, `warn`) so having a function call to end it is crucial
…function

- attack phase didn't follow this pattern, so fix it
…an differentiate between it and the soul event's tv_screen model
- used in boss fight soul phase initializer function so we don't delete both soul + boss_fight tv_screen modelsn when we only want to delete one of them
- not connected to other phases, that's coming in next commit
- `warn` -> `soul` -> `attack`
- add missing comment in attack terminate function
- add to boss fight director logic
- images taken straight from the sprite sheet
- adjust length of attack phase 1 for the sounds to line up better
  - the warning/static sounds were too close together before
- -75 blocks in z-direction of main arena
@TheAfroOfDoom TheAfroOfDoom force-pushed the soul-event-infrastructure branch from 54b95e9 to e4811c1 Compare February 29, 2024 02:48
- red (default), blue, cyan, green, magenta, orange, yellow variants
- animations: `float`, `shake`
- also adjust animation positions so it moves accordingly
…ight phase

 - also rename `soul.soul` tag to `soul.soul_event` for extra clarity
…ge (float more)

- more accurate to Undertale's look
- before, had to wait for indicator to finish de-animating/terminating
- now, we check for X flies to be remaining in order to trigger the next boss fight's attack
@TheAfroOfDoom TheAfroOfDoom force-pushed the soul-event-infrastructure branch from b3b17ce to a0d30c5 Compare February 29, 2024 02:59
@TheAfroOfDoom TheAfroOfDoom changed the title Soul event infrastructure add soul event infrastructure Feb 29, 2024
@TheAfroOfDoom TheAfroOfDoom changed the title add soul event infrastructure add soul event infrastructure for boss fight Feb 29, 2024
@TheAfroOfDoom TheAfroOfDoom marked this pull request as ready for review February 29, 2024 03:50
@TheAfroOfDoom TheAfroOfDoom merged commit e4dca8e into main Feb 29, 2024
5 checks passed
@TheAfroOfDoom TheAfroOfDoom deleted the soul-event-infrastructure branch February 29, 2024 03:56
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.

1 participant