546 - bombShield(int a, int script)
Sets the bomb invulnerability flag (a=0 false, a=1 true), the caller's ANM script will change to script when a bomb is active.
611 - etEx(int etId, int async, int type, float a, float b)
Adds bullet transformation to bullet manager etId, Transformation of flag type determines the specific behaviour of the bullet. Documentation can be found here.
BulletEffectType-67108864 - etExDelay(string et, string isAsync, string time)
Hide the bullet for time frames. During this time, it will not move, will be invisible and won't have a hitbox. If used as a first transformation, can be used to delay when the bullet actually appears.
6 - isDelayedSpawn
While this flag is set, the bullet will be invisible and not have a hitbox. This flag is cleared once the delay timer ends.
4 - short_timer
Integer value between -1 and 15 inclusive (by default -1). If non-negative, shooters using short_timer shoot their bullets and timer increments by 1 per frame until 15 is reached. Once 15, timer reset to -1 or 0 depending on Z key state.
5 - long_timer
Integer value between -1 and 120 inclusive (by default -1). If non-negative, shooters using long_timer shoot their bullets and timer increments by 1 per frame until 120 is reached. Once 120, timer reset to -1 or 0 depending on Z key state.
91 - floatTime(int slot, float var, int time, int mode, float start, float final)
In time frames using mode mode, variable var changes from start to final. slot is used to set the slot to be used by this ins, every enemy has 8 slots.
-9980 - F1
Local float variable, inherited by spawned enemies.
-9984 - I1
Local integer variable, inherited by spawned enemies.
-9989 - ANGLE_PLAYER
Angle from the enemy to the player.
-9962 - BOSS_Y
Final Y position of the boss.
-9990 - PLAYER_Y
Player's Y position.
-9963 - BOSS_X
Final X position of the boss.
-9991 - PLAYER_X
Player's X position.
81 - circlePos(float varX, float varY, float angle, float radius)
Performs following operation: varX = cos(angle) * radius and varY = cos(angle) * radius
-9981 - F0
Local float variable, inherited by spawned enemies.
300 - enmCreate(string sub, float x, float y, int hp, int score, int item)
Creates an enemy using subroutine sub at coordinates (x, y) (relative to position of the parent), health of created enemy is hp, score bonus is score and item drop is item.
601 - etOn(int etId)
Shoots bullet(s) using properties from bullet manager etId.
23 - wait(int time)
Stops sub execution for time frames.
1 - delete()
Returns to the top of current call stack.
2 - GAME_SPEED
The value controls by how much faster the game speed is run. This variable is often set to a number between 0 and 1. This value is often changed when a (final) boss dies or when a photo is taken. Its default value is 1.
Desync - Random Token Edition
Specifications
- Versions:
1.00a -
1.00b
- Difficulty:
Easy -
Normal -
Hard -
Lunatic -
Extra - Mode:
Main game -
Practice mode-Spell practice mode-Achievement hall - Shottype:
ReimuWolf -
MarisaWolf -
YoumuWolf -
ReimuOtter -
MarisaOtter -
YoumuOtter -
ReimuEagle -
MarisaEagle -
YoumuEagle
What happens
When watching a replay from Stage 2 through Stage 6, the replay may desynchronise in the middle of the stage. This usually happens when having timed out a hyper in which the game gives the player different tokens, but rarely can it happen slightly differently.
How it happens
Despite its seemingly random occurrence, there is a consistent set-up for this desync to take place.
- On the stage prior to the desync, the following must be true:
The player must have an
Otter hyper as their last hyper of the stage.
The
Otter hyper must be timed out.
The
Otter hyper must be touching an enemy when being timed out. - On the stage of the desync, the player must activate a hyper.
- On the stage of the desync, the hyper must be timed out.
When starting directly from the stage of the desync, the hyper actually lasts a few frames longer than when having started it from the previous stage.
There are various ways the desync could be caused. Below lists a few ways:
- The player receives different tokens
- The hyper ends a lot later than intentionally because of token pick-ups
- The player does not pick up/picks ups a token that was spawned from the delayed hyper.
Sometimes, the replay doesn't desync at all with there being no differences. Other times, the replay has a slight score desync but the replay still works just fine.
Why it happens
In order to understand why this desync happens, we must first know what causes the duration of hypers to decrease.
- When not shooting, the hyper duration decreases by 1 per frame.
- When shooting, the hyper duration decreases by 2 per frame.
- When using an
Otter hyper, the hyper duration decreases by 2 per frame if the Otter part of the hyper is touching an enemy.
Whether the hyper duration decreases by 1 or 2 per frame is more complicated than at first thought.
- When not shooting, the hyper duration decreases by 1 per frame.
In this case, the game checks whether the player has shot in the last few frames. If false, then the hyper duration decreases by 1 per frame. - When shooting, the hyper duration decreases by 2 per frame.
In this case, the game checks whether the player has shot in the last few frames. If true, then the hyper duration decreases by 1 per frame. - When using an
Otter hyper, the hyper duration decreases by 2 per frame if the Otter part of the hyper is touching an enemy.
This works differently. In this case, the game checks whether the Otter part of the hyper has hit an enemy However, this process does not happen every frame. Even if the Otter part of the hyper hits an enemy for let's say exactly 5 frames, the hyper duration is going to decrease by 2 per frame for much longer than 5 frames (the hyper decreases by 2 per frame for about 30 frames).
Instead, if the Otter part of the hyper touches an enemy, the hyper duration from that point on decreases by 2 per frame for about 30 frames during an active hyper. This process is stopped if the hyper is prematurely ended. However, this process is paused if the hyper is ended by timing it out. This means that the next hyper resumes the process until the ~30 frames have ended.
When starting directly from the desynced stage, the game does not remember that the previous hyper was an
Otter hyper, and that the hyper ended naturally with the Otter hyper touching an enemy. Because of this, when starting from the desynced stage, the first hyper lasts slightly longer than intentionally, which may result in a desync.
Links
Replays
This section has no content yet. Would you like to add to this section? Contact me if you are interested!
Videos
- Nylilsa. 「September 4, 2022」. "東方鬼形獣~リプレイバグ" https://www.youtube.com/watch?v=-FXzOT3_trg
All Wily Beast and Weakest Creature pages: | |
|---|---|
| YoumuEagle's Damage Cap · Instant Hyper Deactivation · Death by Intentional Hyper Break · Token duplication · Token Desync - Stage Transition Edition · Desync - Roaring Mode Edition · Desync - Random Token Edition · Saki's Survival Hurtbox · Saki's Final Bomb Damage · Slowdown Item Duplication | All Desync-related pages: | All Shottype-related pages: | All Stage transition-related pages: |