-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathTMBalloonLoop.js
167 lines (147 loc) · 5.43 KB
/
TMBalloonLoop.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
//=============================================================================
// TMVplugin - フキダシループ
// 作者: tomoaky (http://hikimoki.sakura.ne.jp/)
// Version: 1.11
// 最終更新日: 2016/06/20
//=============================================================================
/*:
* @plugindesc フキダシアイコンをループ表示させます。
*
* @author tomoaky (http://hikimoki.sakura.ne.jp/)
*
* @help
* 使い方:
* プラグインコマンドまたはメモ欄タグを使ってイベントにフキダシループを設
* 定すると、指定されたフキダシアイコンが繰り返し表示され続けるようになり
* ます。
*
* イベントのメモ欄以外に、実行内容の一番上にある注釈コマンド内でも同様の
* タグでフキダシループを設定することができます。メモ欄と注釈の両方にタグ
* がある場合は注釈が優先されます。
*
* プラグインコマンドによるフキダシループは、イベントページの切り替わりや
* イベントコマンド『イベントの一時消去』などによって解除されます。
*
* プラグインコマンド:
* setBalloonLoop 2 1
* 2番のイベントにフキダシループとしてびっくりアイコンを設定します。イベ
* ント番号は -1 ならプレイヤー、0 ならコマンドを実行しているイベントが対
* 象となります。
* 表示するアイコンの番号はイベントコマンド『フキダシアイコンの表示』での
* 並びに対応していて、0 を指定するとフキダシループが解除されます。
*
* メモ欄タグ(イベント):
* <balloonLoop:1>
* このタグがついているイベントは setBalloonLoop を実行しなくても自動的に
* フキダシループが設定されます。数値は表示するアイコン番号です。
*
*/
var Imported = Imported || {};
Imported.TMBalloonLoop = true;
if (!Imported.TMEventBase) {
Imported.TMEventBase = true;
(function() {
//-----------------------------------------------------------------------------
// Game_Event
//
var _Game_Event_setupPage = Game_Event.prototype.setupPage;
Game_Event.prototype.setupPage = function() {
_Game_Event_setupPage.call(this);
if (this._pageIndex >= 0) {
this.loadCommentParams();
}
};
Game_Event.prototype.loadCommentParams = function() {
this._commentParams = {};
var re = /<([^<>:]+)(:?)([^>]*)>/g;
var list = this.list();
for (var i = 0; i < list.length; i++) {
var command = list[i];
if (command && command.code == 108 || command.code == 408) {
for (;;) {
var match = re.exec(command.parameters[0]);
if (match) {
if (match[2] === ':') {
this._commentParams[match[1]] = match[3];
} else {
this._commentParams[match[1]] = true;
}
} else {
break;
}
}
} else {
break;
}
}
};
Game_Event.prototype.loadTagParam = function(paramName) {
if (this._commentParams[paramName]) {
return this._commentParams[paramName];
} else if (this.event().meta[paramName]) {
return this.event().meta[paramName];
} else {
return null;
}
};
})();
}
(function() {
//-----------------------------------------------------------------------------
// Game_CharacterBase
//
var _Game_CharacterBase_endBalloon = Game_CharacterBase.prototype.endBalloon;
Game_CharacterBase.prototype.endBalloon = function() {
_Game_CharacterBase_endBalloon.call(this);
var balloonLoop = this.balloonLoop();
if (balloonLoop) {
this.requestBalloon(balloonLoop);
}
};
Game_CharacterBase.prototype.setBalloonLoop = function(balloonLoop) {
this._balloonLoop = balloonLoop;
};
Game_CharacterBase.prototype.balloonLoop = function() {
return this._balloonLoop;
};
//-----------------------------------------------------------------------------
// Game_Event
//
var _Game_Event_setupPage = Game_Event.prototype.setupPage;
Game_Event.prototype.setupPage = function() {
_Game_Event_setupPage.call(this);
if (this._pageIndex >= 0) {
var balloonLoop = +this.loadTagParam('balloonLoop');
if (balloonLoop) {
this.setBalloonLoop(balloonLoop);
}
} else {
this.setBalloonLoop(0);
}
};
//-----------------------------------------------------------------------------
// Game_Interpreter
//
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'setBalloonLoop') {
var character = this.character(+args[0]);
if (character) {
character.setBalloonLoop(+args[1]);
}
}
};
//-----------------------------------------------------------------------------
// Sprite_Character
//
var _Sprite_Character_endBalloon = Sprite_Character.prototype.endBalloon;
Sprite_Character.prototype.endBalloon = function() {
var balloonLoop = this._character.balloonLoop();
if (balloonLoop) {
this._balloonSprite.setup(balloonLoop);
} else {
_Sprite_Character_endBalloon.call(this);
}
};
})();