Condition="GAMESTATE:IsEventMode() and MenuButtonGiveUp() and not GAMESTATE:IsCourseMode()"
                InitCommand="%function(self)
                if gnStaminaSongPercent > gnLowestRestartPercent and gnStaminaSongPercent < gnHighestRestartPercent then
-                       local Path = THEME:GetPath( EC_SOUNDS, '', '_save');
-                       SOUND:PlayOnce(Path);
                        SCREENMAN:SetNewScreen('ScreenStage');
                        end
                end"
 
 
 <!--Screen Transition-->
        <Layer Type="Quad"
+       OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomx,SCREEN_WIDTH;zoomy,SCREEN_HEIGHT;diffuse,1,1,1,0;"
+       QuadFlickerMessageCommand="@'x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomx,SCREEN_WIDTH*2;zoomy,SCREEN_HEIGHT*2;diffuse,1,1,1,1;diffusealpha,0.1;linear,0.1;diffusealpha,0;'"
+       />
+       
+       <Layer Type="Quad"
        Condition="not GAMESTATE:IsCourseMode();"
        OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomx,SCREEN_WIDTH;zoomy,SCREEN_HEIGHT;diffuse,0,0,0,1;linear,0.3;diffusealpha,0;"
        ScreenTransitionMessageCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;zoomx,SCREEN_WIDTH;zoomy,SCREEN_HEIGHT;diffuse,0,0,0,0;linear,0.3;diffusealpha,1;"
        OnCommand="diffusealpha,0;"
        ScreenTransitionMessageCommand="%function(self) 
        if gnStaminaSongPercent > gnLowestRestartPercent and gnStaminaSongPercent < gnHighestRestartPercent then
+               local Path = THEME:GetPath( EC_SOUNDS, '', '_save');
+               SOUND:PlayOnce(Path);
+               MESSAGEMAN:Broadcast('QuadFlicker');
                self:queuecommand('Blink');
                end
        end" 
 
                                        InitCommand="hibernate,0.199;"><children>
                        <Actor
                                File="@'../../Graphics/ScreenGameplay stage '..GetStageText()"
-                               OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+SCREEN_HEIGHT;decelerate,0.3;y,SCREEN_CENTER_Y-40;accelerate,0.1;y,SCREEN_CENTER_Y;"
+                               OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y+SCREEN_HEIGHT;decelerate,0.3;y,SCREEN_CENTER_Y-80;accelerate,0.1;y,SCREEN_CENTER_Y-20;"
                        />
                </children></ActorFrame>
                <ActorFrame Condition="GAMESTATE:IsCourseMode()" 
 
 gnPath = getSystemSound('gnJudgeBar', '0');
 SOUND:PlayOnce(gnPath);
 end"> <children>
-<!--Rate Message-->
-       <Layer Type="Quad" InitCommand="%function(self) if GetRateMod() ~= '1.0x' then GAMESTATE:ApplyGameCommand('mod, 1.0xmusic',1); SCREENMAN:SystemMessage('Rate Modifier has been restored to 1.0x') end end" />
-
        <Layer File="base frame B" InitCommand="@'diffuse,'..BackgroundColor()..';'"/>
        <Layer File="base frame F" InitCommand="@'diffuse,'..FrameColor()..';'"/>
        <!-- +7s are for 4:3, will need to make them +6s if using widescreen -->
 
 -- Alternate (darker) player colours for diffuseshifting
 function PlayerAltColor( pn )
        if pn == PLAYER_1 then return "#7F5400" end     -- default "#7F5400"
-       if pn == PLAYER_2 then return "#2A7F1F" end     -- default "#2A7F1F"
+       if pn == PLAYER_2 then return "#226919" end     -- default "#226919"
        return "1,1,1,1"
 end
 
 
 -- SHIFT SCREEN EVALUATION ELEMENTS IN DOUBLE MODE
 -- SET SCREEN SPECIFIC VARIABLES
 -- DIFFERENTIATE PLAYERS USING SHARED RESOURCES
+-- 'RATE MOD HAS BEEN RESTORED' MESSAGE
 
 
 
        gnStatFrequency = gnStatFrequency + 1;
        gnOptionMod = 0;
        gnOptionModType = 0;
+       RateRestoreMessage(false)
 end
 
 
                end
        if gnScreenSelectMusicTimer == nil then gnScreenSelectMusicTimer = gnDefaultSSM; end
        if gnScreenPlayerOptionsTimer == nil then gnScreenPlayerOptionsTimer = gnDefaultSPO; end
+       RateRestoreMessage(true);
 end
 
 
        gnP1Winning = false;
        gnP2Winning = false;
        gnLowHealth = false;
-       gnRateRestore = 0;
        gnLowHealth = false;
        gnVoiceTimer = 0;
        gnStaminaTimer = 0;
 
 if scn == 'ScreenEvaluation' then
 gnSongCount = gnSongCount + 1;
+RateRestoreMessage(false);
 end
 
 
 
 
 
+
+
+-- ==='RATE MOD HAS BEEN RESTORED' MESSAGE===
+-- Call with false to display message, call with true to display the message AND reset the mod
+function RateRestoreMessage(i)
+       if GetRateMod() ~= '1.0x' then 
+               if i then
+               GAMESTATE:ApplyGameCommand('mod, 1.0xmusic',1);
+               end 
+       SCREENMAN:SystemMessage('Rate Modifier has been restored to 1.0x')
+       end
+end
 
 PerDifficultyAwardP2OnCommand=@"DrawOrder,1;horizalign,right;zoom,.55;addx,"..ScreenEvaluationDoubleShift(PLAYER_2)..";"
 PerDifficultyAwardP2OffCommand=accelerate,.3;addx,EvalTweenDistance()
 PeakComboAwardP1X=SCREEN_CENTER_X-290+EvalX()
-PeakComboAwardP1Y=SCREEN_CENTER_Y+65+131-44
+PeakComboAwardP1Y=SCREEN_CENTER_Y+65+131-40
 PeakComboAwardP1OnCommand=DrawOrder,1;zoom,.5;addx,-EvalTweenDistance();addx,EvalTweenDistance()
 PeakComboAwardP1OffCommand=accelerate,.3;addx,-EvalTweenDistance()
 PeakComboAwardP2X=SCREEN_CENTER_X+20+EvalX()
-PeakComboAwardP2Y=SCREEN_CENTER_Y+65+131-44
+PeakComboAwardP2Y=SCREEN_CENTER_Y+65+131-40
 PeakComboAwardP2OnCommand=DrawOrder,1;zoom,.5;addx,EvalTweenDistance();addx,-EvalTweenDistance()
 PeakComboAwardP2OffCommand=accelerate,.3;addx,EvalTweenDistance()
 MachineRecordP1X=SCREEN_CENTER_X-108+EvalX()-48+132-2
 CreditsP2OnCommand=shadowlength,0;horizalign,right;vertalign,bottom;zoom,0.5
 MessageX=0
 MessageY=0
-MessageOnCommand=diffusealpha,0;zoom,0.6;stoptweening;horizalign,left;linear,0.2;diffusealpha,1;x,SCREEN_LEFT+20;y,SCREEN_TOP+13;zoom,0.6;shadowlength,0;addy,-40;diffusealpha,1;linear,0.5;diffusealpha,1;addy,40;
+MessageOnCommand=%function(self) if SOUND ~= nil then local Path = THEME:GetPath( EC_SOUNDS, 'gnSystemMessage', 'sound' ); SOUND:PlayOnce(Path); end self:diffusealpha(0);self:zoom(0.6);self:stoptweening();self:horizalign('left');self:linear(0.2);self:diffusealpha(1);self:x(SCREEN_LEFT+20);self:y(SCREEN_TOP+13);self:zoom(0.6);self:shadowlength(0);self:addy(-40);self:diffusealpha(1);self:linear(0.5);self:diffusealpha(1);self:addy(40); end
 MessageOffCommand=sleep,5;diffusealpha,1;linear,0.5;diffusealpha,1;addy,-40;
 MessageFrameX=0
 MessageFrameY=0