173 lines
4.6 KiB
JavaScript
173 lines
4.6 KiB
JavaScript
var Imported = Imported || {};
|
|
Imported.GALV_CFStepSe = true;
|
|
var Galv = Galv || {};
|
|
Galv.CFSTEP = Galv.CFSTEP || {};
|
|
/*:
|
|
* @plugindesc
|
|
*
|
|
* @author Galv - galvs-scripts.com
|
|
*
|
|
* @param Step Frames
|
|
* @desc Which frames of a characterset will play step sounds separated by commas
|
|
* @default 1,5
|
|
*
|
|
* @param Events
|
|
* @desc Set if you want events to have steps or not.
|
|
* true or false
|
|
* @default true
|
|
*
|
|
* @param -- Terrain Step SE --
|
|
* @desc
|
|
* @default
|
|
*
|
|
* @param Terrain 1
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 2
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 3
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 4
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 5
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 6
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @param Terrain 7
|
|
* @desc se_name, volume, pitch
|
|
* @default
|
|
*
|
|
* @help
|
|
*/
|
|
(function() {
|
|
Galv.CFSTEP.delay = 10;
|
|
Galv.CFSTEP.frames = PluginManager.parameters('JsScript26Set')["Step Frames"].split(',');
|
|
Galv.CFSTEP.events = PluginManager.parameters('JsScript26Set')["Events"].toLowerCase() === 'true' ? true : false;
|
|
Galv.CFSTEP.makeSound = function(txt) {
|
|
if (Array.isArray(txt)) {
|
|
var arr = txt;
|
|
} else {
|
|
var arr = txt.split(",");
|
|
};
|
|
var obj = {
|
|
name: arr[0],
|
|
pan: 0,
|
|
pitch: Number(arr[2]),
|
|
volume: Number(arr[1])
|
|
};
|
|
return obj;
|
|
};
|
|
Galv.CFSTEP.terrainSounds = [];
|
|
for (var i = 1; i < 7; i++) {
|
|
var txt = PluginManager.parameters('JsScript26Set')["Terrain " + i];
|
|
Galv.CFSTEP.terrainSounds[i] = Galv.CFSTEP.makeSound(txt);
|
|
};
|
|
Galv.CFSTEP.Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
|
|
Game_CharacterBase.prototype.initMembers = function() {
|
|
this.stepSeInit();
|
|
Galv.CFSTEP.Game_CharacterBase_initMembers.call(this);
|
|
};
|
|
Game_CharacterBase.prototype.stepSeInit = function() {
|
|
this._patternSe = -2;
|
|
this._stepSeDelay = 0;
|
|
this._stepSeOn = true;
|
|
this._stepSeFrames = [];
|
|
this._stopSteps = true;
|
|
for (var i = 0; i < Galv.CFSTEP.frames.length; i++) {
|
|
this._stepSeFrames[i] = Number(Galv.CFSTEP.frames[i]);
|
|
}
|
|
};
|
|
Game_CharacterBase.prototype.playStepSE = function(volMod) {
|
|
if (this._stepSeDelay < Galv.CFSTEP.delay) return;
|
|
var tSe = Galv.CFSTEP.terrainSounds[$gameMap.terrainTag(this._x,this._y)];
|
|
if (tSe) {
|
|
var tVol = Number(tSe.volume);
|
|
if (volMod) tSe.volume = tSe.volume * volMod;
|
|
tSe.volume = tSe.volume + (Math.random() * 16) - 8;
|
|
var tPit = Number(tSe.pitch);
|
|
tSe.pitch = tSe.pitch + (Math.random() * 16) - 8;
|
|
AudioManager.playSe(tSe);
|
|
tSe.volume = Number(tVol);
|
|
tSe.pitch = Number(tPit);
|
|
this._stepSeDelay = 0;
|
|
};
|
|
};
|
|
Game_CharacterBase.prototype.isStep = function(pat) {
|
|
return this._stepSeFrames.contains(pat)
|
|
};
|
|
Galv.CFSTEP.Game_Player_update = Game_Player.prototype.update;
|
|
Game_Player.prototype.update = function(sceneActive) {
|
|
Galv.CFSTEP.Game_Player_update.call(this,sceneActive);
|
|
this.updateStepSe();
|
|
};
|
|
Game_Player.prototype.updateStepSe = function() {
|
|
this._stepSeDelay++;
|
|
if (!this._stepSeOn || this.idleTime) return;
|
|
var pat = this.pattern();
|
|
if (this.isStep(pat)) {
|
|
if (this._patternSe != pat && this.isMoving() && this.hasWalkAnime()) {
|
|
this.playStepSE();
|
|
this._patternSe = pat;
|
|
this._stopSteps = false;
|
|
}
|
|
} else {
|
|
if (this._stopCount == 1 && this.hasWalkAnime() && !this._stopSteps) {
|
|
this.playStepSE(0.5);
|
|
this._stopSteps = true;
|
|
};
|
|
this._patternSe = -1;
|
|
}
|
|
};
|
|
if (Galv.CFSTEP.events) {
|
|
Galv.CFSTEP.Game_Event_refresh = Game_Event.prototype.refresh;
|
|
Game_Event.prototype.refresh = function() {
|
|
Galv.CFSTEP.Game_Event_refresh.call(this);
|
|
this.setStepSe();
|
|
};
|
|
Game_Event.prototype.setStepSe = function() {
|
|
if (this.event().note.contains("<step_se>") && this._characterName != "") {
|
|
this._stepSeOn = true;
|
|
} else {
|
|
var page = this.page();
|
|
var stepSe = false;
|
|
if (page) {
|
|
for (var i = 0; i < page.list.length; i++) {
|
|
if (page.list[i].code == 108 && page.list[i].parameters[0].contains("<step_se>")) {
|
|
var stepSe = true;
|
|
};
|
|
};
|
|
};
|
|
this._stepSeOn = stepSe;
|
|
};
|
|
};
|
|
Galv.CFSTEP.Game_Event_update = Game_Event.prototype.update;
|
|
Game_Event.prototype.update = function(sceneActive) {
|
|
Galv.CFSTEP.Game_Event_update.call(this,sceneActive);
|
|
this.updateStepSe();
|
|
};
|
|
Game_Event.prototype.updateStepSe = function() {
|
|
if (!this._stepSeOn) return;
|
|
var pat = this.pattern();
|
|
if (this.isStep(pat)) {
|
|
if (this._patternSe != pat && this.isMoving() && this.hasWalkAnime()) {
|
|
this.playStepSE();
|
|
this._patternSe = pat;
|
|
}
|
|
} else {
|
|
this._patternSe = -1;
|
|
}
|
|
this._stepSeDelay++;
|
|
};
|
|
}; // end if (Galv.CFSTEP.events)
|
|
})();
|