princess-synergy/www/js/plugins/JsScript27Set.js
2026-02-05 14:03:22 -06:00

92 lines
3.7 KiB
JavaScript

var Imported = Imported || {};
Imported.Galv_CharacterFrames = true;
var Galv = Galv || {};
Galv.CF = Galv.CF || {};
/*:
* @plugindesc
*
* @author Galv - galvs-scripts.com
*
* @param Frame Speed Modifier
* @desc Equation SUBRTRACTED from frame speed (when not 3 frames). See help for more info on this.
* @default f * 0.8
*
* @help
*/
(function () {
Galv.CF.y = PluginManager.parameters('JsScript27Set')["Frame Speed Modifier"];
let Glv_FuncSave = new Function('f', 'return (' + Galv.CF.y + ");");
Game_CharacterBase.prototype._cframes = 3;
Game_CharacterBase.prototype._spattern = 1;
var f = Game_CharacterBase.prototype._cframes;
Game_CharacterBase.prototype._patSpd = 0;
Game_CharacterBase.prototype._SetPtn = -1;
Galv.CF.Galv_Window_Base_drawCharacter = Window_Base.prototype.drawCharacter;
Window_Base.prototype.drawCharacter = function (characterName, characterIndex, x, y) {
var setFrame = characterName.match(/\%\((.*)\)/i);
if (setFrame) {
this._cframes = Number(setFrame[1]);
var f = this._cframes;
var bitmap = ImageManager.loadCharacter(characterName);
var big = ImageManager.isBigCharacter(characterName);
var pw = bitmap.width / (big ? f : f * 4);
var ph = bitmap.height / (big ? 4 : 8);
var n = characterIndex;
var sx = (n % 4 * 3 + 1) * pw;
var sy = (Math.floor(n / 4) * 4) * ph;
this.contents.blt(bitmap, sx, sy, pw, ph, x - pw / 2, y - ph);
} else {
Galv.CF.Galv_Window_Base_drawCharacter.call(this, characterName, characterIndex, x, y);
}
};
Galv.CF.Galv_Sprite_Character_setCharacterBitmap = Sprite_Character.prototype.setCharacterBitmap;
Sprite_Character.prototype.setCharacterBitmap = function () {
var setFrame = this._characterName.match(/\%\((.*)\)/i);
if (setFrame) {
this._cframes = Number(setFrame[1]);
this._character._spattern = 0;
var f = this._cframes;
this._character._patSpd = Glv_FuncSave(f);
} else {
this._cframes = 3;
this._character._spattern = 1;
this._character._patSpd = 0;
}
this._character._cframes = this._cframes;
Galv.CF.Galv_Sprite_Character_setCharacterBitmap.call(this);
};
Game_CharacterBase.prototype.pattern = function () {
if (this._SetPtn != -1) {
return this._SetPtn;
}
return this._pattern < this._cframes ? this._pattern : this._spattern;
};
Game_CharacterBase.prototype.updatePattern = function () {
if (!this.hasStepAnime() && this._stopCount > 0) {
this.resetPattern();
} else {
this._pattern = (this._pattern + 1) % (this._cframes + this._spattern);
}
};
Galv.CF.Galv_Game_CharacterBase_animationWait = Game_CharacterBase.prototype.animationWait;
Game_CharacterBase.prototype.animationWait = function () {
return Galv.CF.Galv_Game_CharacterBase_animationWait.call(this) - this._patSpd;
};
Sprite_Character.prototype.characterBlockX = function () {
if (this._isBigCharacter) {
return 0;
} else {
var index = this._character.characterIndex();
return index % 4 * this._cframes;
}
};
Sprite_Character.prototype.patternWidth = function () {
if (this._tileId > 0) {
return $gameMap.tileWidth();
} else if (this._isBigCharacter) {
return this.bitmap.width / this._cframes;
} else {
return this.bitmap.width / (this._cframes * 4);
}
};
})();