Timer Doesn't Run Expire Code on Map

Discussion in 'Javascript/Plugin Support' started by Porcelain, Sep 17, 2018.

  1. Porcelain

    Porcelain Veteran Veteran

    Messages:
    38
    Likes Received:
    1
    First Language:
    English
    I have my Game_Timer run the following code on expire:
    $gameTimer.stop();
    SceneManager.goto(Scene_Gameover);

    This removes the timer and gives the player a Game Over, but it only works in battle. I'm trying to get it to also work on the map screen. I tried running SceneManager.goto(Scene_Gameover); through a script call on the map, and it worked, so the problem isn't with my timer code.

    It looks like both Scene_Map and Scene_Battle update the timer properly with:
    var active = this.isActive();
    $gameTimer.update(active);

    I believe this is a bug with MV's default scripts, but it isn't normally noticed because the timer normally just does BattleManager.abort(); on expiration.

    The code for the timer ticking down and expiring is:
    Game_Timer.prototype.update = function(sceneActive) {
    if (sceneActive && this._working && this._frames > 0) {
    this._frames--;
    if (this._frames === 0) {
    this.onExpire();

    The timer ticks down fine on the map, so it is running this code, it just will not do the
    $gameTimer.stop();
    SceneManager.goto(Scene_Gameover);
    part that I've replaced BattleManager.abort(); with.

    And is there a way to have the game close all windows on the timer expiring? As it is, it does not close the ActorCommand window or any message/choice windows. It closes the party status and party command windows just fine on going to Scene_Gameover in battle.

    Thanks!
     
    #1
  2. Yethwhinger

    Yethwhinger Veteran Veteran

    Messages:
    52
    Likes Received:
    25
    Location:
    San Jose, CA, USA
    First Language:
    English
    Primarily Uses:
    RMMV
    I used an MV version 1.6.1 project with the following plugin based on your description, and it went to the gameover scene whether the timer expired in the battle scene or the map scene. Do you have any other plugins running?
    Code:
    // TimerGameover.js
    // Created on 9/27/2018
    
    /*:
    * @plugindesc This plugin is meant to give a gameover
    * when the timer expires.
    *
    * @help This plugin changes the code that runs when
    * the game timer expires so that it causes the
    * gameover condition.
    */
    
    //----------------------------
    // Changes to Game_Timer
    //----------------------------
    
    Game_Timer.prototype.onExpire = function () {
        this.stop();
        SceneManager.goto(Scene_Gameover);
    };
     
    #2
  3. Porcelain

    Porcelain Veteran Veteran

    Messages:
    38
    Likes Received:
    1
    First Language:
    English
    My project files are version 1.0. Been putting off updating because they're heavily modified.

    My code is missing the
    this.stop();

    so I'll try that. Thank you! If it doesn't work I already have a workaround.
     
    #3

Share This Page