mirror of
https://github.com/DramaticShape/DramaticShapeVoxelMod.git
synced 2026-08-12 09:10:49 +02:00
the sparkle was playing behind the transition wipe
Armed on the occupant-change edge, which happens while the screen is still mid-wipe -- so the burst spent its whole three-quarter-second life underneath it. The instrumentation is what settled it: armed=1, quads=450, which is 45 frames times 10 stars, exactly LIFE. It was never missing. It was drawing where nobody could see it. Two gates, because the first one was still wrong. Holding the clock until the scene DREW the side does not help: the battle renders under the wipe for about a second before the wipe is gone. The burst now waits until the battle is the top of the stack -- the wipe popped, somebody watching -- and only then starts. Armed and released are separate moments now, which is what they always were. Also, a shiny no longer discolours a PERSON. Both sides can be holding a trainer pic rather than a Pokemon (the foe's portrait before the send-out, the player's own back until "Go!"), and the tint was going straight through it. Shininess is a fact about a Pokemon, not its owner. sideTexture asks the same two questions it already used to label the finished texture. And the capture drivers build the party BEFORE pinning the odds. Pokemon.new is where shininess is decided, so setting odds to 1 first made the player's own Pikachu shiny too -- which tinted the player's side, which during the intro is the trainer sprite. That is what "the player trainer sprite seems discolored" was. Lineup is now Charizard, Electrode, Vaporeon, Dratini. Verified by strip: the burst lands in the frames right after the wipe clears, and the trainer back sprite is its own colour again.
This commit is contained in:
+18
-4
@@ -1108,10 +1108,24 @@ function OverworldBattle.sideTexture(battle, side)
|
||||
-- alone, which the engine's both-sides-at-once pic layer cannot do.
|
||||
local shinyTint = nil
|
||||
do
|
||||
local battler = (side == "player") and battle.player or battle.enemy
|
||||
local g2 = game()
|
||||
shinyTint = battler and V.require("ShinyUI")
|
||||
.tintFor(battler.mon, g2 and g2.data) or nil
|
||||
-- NOT when this side is showing a PERSON. Both sides can be holding a
|
||||
-- trainer pic rather than a Pokemon -- the foe's portrait before the
|
||||
-- send-out, and the player's own back until "Go!" -- and a shiny is a
|
||||
-- fact about a Pokemon, not about its owner. Tinting through it turned
|
||||
-- the player's trainer sprite a different colour for the whole intro,
|
||||
-- which is what a shiny Pokemon in the party looks like if you do not
|
||||
-- ask this question. The two tests are the same ones sideTexture already
|
||||
-- uses to label the finished texture, asked here instead of after.
|
||||
local person = (side == "enemy"
|
||||
and battle.showEnemyTrainer and battle.trainerPic)
|
||||
or (side == "player"
|
||||
and battle.showPlayerBack and battle.playerBackPic)
|
||||
if not person then
|
||||
local battler = (side == "player") and battle.player or battle.enemy
|
||||
local g2 = game()
|
||||
shinyTint = battler and V.require("ShinyUI")
|
||||
.tintFor(battler.mon, g2 and g2.data) or nil
|
||||
end
|
||||
end
|
||||
|
||||
local ok, err = pcall(function()
|
||||
|
||||
Reference in New Issue
Block a user