* WIP cutscenes
* cutscene tweaks
* cutscene: erase background drawing under text
* Make text outlines thicker
* Prepare an interface for adding new cutscenes
* Basic progress tracking for cutscenes
* cutscene: support specifying scene name and BGM
* cutscene: exit with transition after scene ends
* Implement --cutscene ID and --list-cutscenes CLI flags
* fix progress_write_cmd_unlock_cutscenes
* Play intro cutscene before entering main menu for the first time
Also added --intro parameter in dev builds to force playing the intro
cutscene
* Add intro cutscene
* cutscenes: update opening/01 scene
* add Reimu Good End
* remove Bonus Data
* split up a bit of dialogue, revert an image change in intro
* small typo
* most cutscenes complete
* smartquotify
* finish Extra intros
* new cutscenes routed into main game
* fix ENDING_ID
* rough 'mediaroom' menu
* fix cutscene menu crash
* derp
* PR changes
* fixing imports
* more PR fixes
* PR fixes, including updating the script to #255
* add in newlines for readability
Co-authored-by: Alice D <alice@starwitch.productions>
The damage protection now applies to non-spells as well. Total immunity
lasts for 1 second, then the damage multiplier linearly climbs to 1 over
the next 4 seconds.
* Homing shots are slower
* Homing shots do more damage, but fire less frequently (DPS is
preserved)
* Needle slaves are slightly closer together and rotate a bit faster
* More shift-spam abuse prevention
* Implement asynchronous logging
Put all log messages into a queue. A background thread will format and
dispatch the messages to loggers in a first-in-first-out fashion. This
is mostly useful for windows/wine, or in cases *very* spammy logging.
This adds some malloc overhead, however.
Can be disabled with TAISEI_LOG_ASYNC=0
* log: unfuck memory management
* log: add TAISEI_LOG_ASYNC_FAST_SHUTDOWN env variable
If true, don't wait for the logging queue to process every message
before shutting down.
* strbuf: fix off-by-one error
* log: sync queue before crashing on assertion failure
* docs/ENVIRON: update logging docs
The SPIR-V optimizer tends to transform early function returns into
awful switch/break abominations. ANGLE's D3D backend mistranslates such
code, leading to a bad case of blackscreenitis.
This commit fixes a few known affected shaders (reimu_gap, fxaa,
boss_zoom), but I expect there to be more undiscovered cases.
Fixes #241
Fixes #242
Before canceling tasks, find all events with subscribers and cancel
them. This wakes the subscribers, allowing them to run additional
cleanup code if necessary.
Coroutines are also taken down earlier in the stage shutdown sequence,
before removing any entities. This avoids the problem of entity removal
code waking up coroutines by cancelling events, which in turn may spawn
more entities. This issue sometimes caused the elusive "%i entities were
not properly unregistered" bug.
* stage1: attempt to make Easy easier; misc tweaks
* stage1: buff health of boss nons
* stage1: use new enemy spawners
* stage1: Normal balance; some Easy tweaks
* stage1: tweak Hard version of Perfect Freeze
* stage1: simplify a common_charge
* Add red fairies; tweaks to blue fairies and circles
* Add more fairies and a simple enemy archetype system
Note that existing stages not utilizing the new enemy spawning system
will have a visual regression - fairies will not have their magic
circles and particle effects visible. These are no longer implemented by
the enemy visual rules and require additional setup from the new spawner
wrappers. All stages should be converted to the new system.
Also improved old fairy sprites
* enemy_classes: rebalance HP
* enemy_classes: add EnemySpawner typedef
* items: add ITEMS() shortcut macro for use with enemy spawners
This workaround is needed to avoid music synchronization issues due to
loading times. BGMs are typically started on the very first frame of the
stage, which often has to wait for resources to finish loading.
If entering a new stage while holding the shot button, myon never moves
away from the player until the player itself moves, and therefore never
initializes its .dir property. The initial value of .dir is 0.
All shots fired in this state have zero velocity, since .dir is supposed
to be a direction unit vector for them.
This patch initializes .dir to a sane value right away, and prevents
myon from getting stuck to the player in the first place.
Note that the original bug did not trigger when starting a new game,
only after a stage transition. The reason for that is currently unknown.
This does not seem to cause any replay inconsistencies, so the quirk is
probably on the user input layer.
fixes #252
* switch: fix es-shaders being packed before transpilation
* switch: build fixes and glsl debug logs
* switch: fix crash on shutdown
shutdown is now done before __libc_fini_array is called, which avoids
freeing the gl context resources twice (in __libc_fini_array, and in SDL_GL_DeleteContext)
* initial commit (basic structure, does not compile)
* it compiles now
* moving some stuff around
* move spells/nonspells over to their own files, and retab the whole directory
* retab meson file (oops)
* newline shuffling
* clean up some imports, move functions to spellcards
* Update src/stages/stage5/background_anim.c
Co-authored-by: Andrei Alexeyev <akari@taisei-project.org>
* Apply suggestions from code review
Co-authored-by: Andrei Alexeyev <akari@taisei-project.org>
* code review changes
* change cloud_common to spawn_cloud
* move explosion survival to spells
* add missing timeline imports (oops)
* add missing comma
Co-authored-by: Andrei Alexeyev <akari@taisei-project.org>
* basic stage 6 structure (nothing here yet)
* it compiles and runs (needs testing)
* reindent
* missing import
* fix baryons
* import cleanups
* moving spells from elly.c to their spellcard sources
* code review changes, and some additional cleanup
* more PR changes, removing more dead code
* clean up some imports, move functions to spellcards
* remove dual initalization
This is a partial cherry-pick of commits:
eccec37982009f7196c6aeec9bd0ac94d4b8e1fd (#222)
415c263592e9ce23fbc5080f15fde19ebec5702a (#223)
With extra stage related stuff removed