View difference between Paste ID: ZyyQr1CD and xZz7P7n2
SHOW: | | - or go back to the newest paste.
1
//=============================================================================
2
// RestoreLocation.js
3
//=============================================================================
4
5
/*:
6
 * @plugindesc Allows you to specify where the player loads
7
 * @author NoTaku
8
 *
9
 * @help
10
 *
11
 * Plugin Command:
12
 *   RestoreLocation restore                                 # teleport the player to the stored location
13
 *   RestoreLocation storeLoc mapid x y dir                  # store the specified location
14
 *   RestoreLocation storeMap mapid                          # change the stored map
15
 *   RestoreLocation storePos x y                            # change the stored x, y coordinate
16
 *   RestoreLocation storeDir dir                            # change the stored direction
17
 *   RestoreLocation storePlayerLoc                          # store the player's current location
18
 *   RestoreLocation storeRelativeLoc evid x_off y_off dir   # store a location as an offset from the event with specified id
19
 *   RestoreLocation storeVariableMap idvar                  # store a location from a map
20
 *   RestoreLocation storeVariableLoc idvar xvar yvar dirvar # store a location from four variables
21
 *   RestoreLocation storeVariablePos xvar yvar              # store an x, y coordinate from two variables
22
 *   RestoreLocation storeVariableDir dirvar                 # store a direction from variable
23
 *   RestoreLocation clear                                   # clear the stored location
24
 *
25
 */
26
27
(function() {
28
    var parameters = PluginManager.parameters('RestoreLocation');
29
30
    var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
31
32
    var _registry = {};
33
34
    _registry.restore = function() {
35
        if($gamePlayer._savedMapId!==0) { 
36
            $gamePlayer.reserveTransfer($gamePlayer._savedMapId,$gamePlayer._savedX||$gamePlayer.x,$gamePlayer._savedY||$gamePlayer.y,$gamePlayer._savedDirection||$gamePlayer._direction);
37
            return 1;
38
        }
39
        return 0;
40
    };
41
42
    _registry.storeLoc = function(mapid,x,y,dir) {
43
        $gamePlayer._savedMapId = mapid||$gameMap._mapId;
44
        $gamePlayer._savedX = x;
45
        $gamePlayer._savedY = y;
46
        $gamePlayer._savedDirection = dir;
47
    };
48
49
    _registry.storeMap = function(mapid) {
50
        $gamePlayer._savedMapId = mapid||$gameMap._mapId;
51
    };
52
53
    _registry.storePos = function(x,y) {
54
        $gamePlayer._savedX = x;
55
        $gamePlayer._savedY = y;
56
    };
57
58
    _registry.storeDir = function(dir) {
59
        $gamePlayer._savedDirection = dir;
60
    };
61
62
    _registry.storePlayerLoc = function() {
63
        $gamePlayer._savedMapId = $gameMap._mapId;
64
        $gamePlayer._savedX = $gamePlayer.x;
65
        $gamePlayer._savedY = $gamePlayer.y;
66
        $gamePlayer._savedDirection = $gamePlayer._direction;
67
    };
68
69
    _registry.storeRelativeLoc = function(evid,x_off,y_off,dir) {
70
        var rel = $gameMap.event(evid||this._eventId);
71
        if(rel) {
72
            $gamePlayer._savedMap = $gameMap._mapId;
73
            $gamePlayer._savedX = rel.x+x_off;
74
            $gamePlayer._savedY = rel.y+y_off;
75-
            if(direction) {
75+
            $gamePlayer.savedDirection = dir||rel._direction;
76-
                $gamePlayer.savedDirection = rel._direction;
76+
77
    };
78
79
    _registry.storeVariableLoc = function(idvar,xvar,yvar,dirvar) {
80
        var vars = $gameSystem.variables;
81
        _registry.storeLoc(vars.value(idvar),vars.value(xvar),vars.value(yvar),vars.value(dirvar));
82
    };
83
84
    _registry.storeVariableMap = function(idvar) {
85
        _registry.storeMap($gameSystem.variables.value(idvar));
86
    };
87
88
    _registry.storeVariablePos = function(xvar,yvar) {
89
        var vars = $gameSystem.variables;
90
        _registry.storePos(vars.value(xvar),vars.value(yvar));
91
    };
92
93
    _registry.storeVariableDir = function(dirvar) {
94
        _registry.storeDir($gameSystem.variables.value(dirvar))
95
    };
96
97
    _registry.clear = function() {
98
        $gamePlayer._savedMapId = 0;
99
        $gamePlayer._savedX = 0;
100
        $gamePlayer._savedY = 0;
101
        $gamePlayer._savedDirection = 0;
102
    };
103
104
    Game_Interpreter.prototype.pluginCommand = function(command, args) {
105
        _Game_Interpreter_pluginCommand.call(this, command, args);
106
        if(command === 'RestoreLocation') {
107
            var func = _registry[args.shift()];
108
            if(typeof func !== 'undefined') {
109
                func.apply(this,args);
110
            }
111
        }
112
    };
113
114
    var _Game_Player_initMembers = Game_Player.prototype.initMembers;
115
116
    Game_Player.prototype.initMembers = function() {
117
        _Game_Player_initMembers.call(this);
118
        this._savedMapId = 0;
119
        this._savedX = 0;
120
        this._savedY = 0;
121
        this._savedDirection = 0;
122
    };
123
124
    Scene_Load.prototype.onLoadSuccess = function() {
125
        SoundManager.playLoad();
126
        this.fadeOutAll();
127
        if(!_registry.restore()) {
128
            this.reloadMapIfUpdated();
129
        }
130
        SceneManager.goto(Scene_Map);
131
        this._loadSuccess = true;
132
    };
133
})();