var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { if (typeof b !== "function" && b !== null) throw new TypeError( "Class extends value " + String(b) + " is not a constructor or null" ); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __()); }; })(); /*:ja * @target MZ * @author ル * * * @command addRandomActor * @text ランダムな怪人を追加 * @des ランダムな怪人を追加 * * @command addGachaActor * @text ガチャチケで怪人を追加 * @des ガチャチケで怪人を追加 * */ var Nore; (function (Nore) { var pluginName = "Nore_Formation"; PluginManager.registerCommand(pluginName, "addRandomActor", function (args) { $slg.formation().addRandomMonster(); }); PluginManager.registerCommand(pluginName, "addGachaActor", function (args) { $slg.formation().addGachaMonster(); }); })(Nore || (Nore = {})); var MonsterRare; (function (MonsterRare) { MonsterRare[(MonsterRare["none"] = -1)] = "none"; MonsterRare[(MonsterRare["zako"] = 0)] = "zako"; MonsterRare[(MonsterRare["common"] = 1)] = "common"; MonsterRare[(MonsterRare["rare"] = 2)] = "rare"; MonsterRare[(MonsterRare["sr"] = 3)] = "sr"; MonsterRare[(MonsterRare["ssr"] = 4)] = "ssr"; })(MonsterRare || (MonsterRare = {})); var BattleObject = /** @class */ (function () { function BattleObject() { this._x = 0; this._y = 0; this._pattern = 0; this._direction = 2; this._opacity = 255; this._animationCount = 0; this._transparent = false; } BattleObject.prototype.id = function () { return this._id; }; BattleObject.prototype.actor = function () { var actor = $gameActors.actor(this._actorId); if (!actor) { console.error("actorが見つかりません:" + this._actorId); } return actor; }; BattleObject.prototype.characterName = function () { return this.actor().characterName(); }; BattleObject.prototype.characterIndex = function () { return this.actor().characterIndex(); }; BattleObject.prototype.pattern = function () { return this._pattern < 3 ? this._pattern : 1; }; BattleObject.prototype.updateAnimation = function () { this.updateAnimationCount(); if (this._animationCount >= this.animationWait()) { this.updatePattern(); this._animationCount = 0; } }; BattleObject.prototype.animationWait = function () { return 9; }; BattleObject.prototype.updateAnimationCount = function () { this._animationCount++; }; BattleObject.prototype.updatePattern = function () { this._pattern = (this._pattern + 1) % this.maxPattern(); }; BattleObject.prototype.maxPattern = function () { return 4; }; BattleObject.prototype.direction = function () { if (this._enemy) { return 2; } else { return 8; } return this._direction; }; BattleObject.prototype.opacity = function () { return this._opacity; }; BattleObject.prototype.blendMode = function () { return 0; }; BattleObject.prototype.bushDepth = function () { return 0; }; BattleObject.prototype.x = function () { return this._x; }; BattleObject.prototype.y = function () { return this._y; }; BattleObject.prototype.atk = function () { return this.actor().atk; }; BattleObject.prototype.isTransparent = function () { return this._transparent; }; BattleObject.prototype.tileId = function () { return 0; }; return BattleObject; })(); var BattleUnit = /** @class */ (function (_super) { __extends(BattleUnit, _super); function BattleUnit(id, battleActor) { var _this = _super.call(this) || this; _this._knockBackFrame = 0; _this._guardCount = 0; _this._id = id; _this._battleActor = battleActor; _this._actorId = battleActor.actorId(); _this.setup(); return _this; } BattleUnit.prototype.setup = function () { this._hp = this.mhp(); this._x = 0; this._y = 520; }; BattleUnit.prototype.mhp = function () { return this.battleActor().mhp(); }; BattleUnit.prototype.battleActor = function () { return this._battleActor; }; BattleUnit.prototype.hp = function () { return this._hp; }; BattleUnit.prototype.isDead = function () { return this._hp <= 0; }; BattleUnit.prototype.hpRate = function () { return this.hp() / this.mhp(); }; return BattleUnit; })(BattleObject); var BattleUnitDir2 = /** @class */ (function (_super) { __extends(BattleUnitDir2, _super); function BattleUnitDir2(battleActor, disable) { var _this = _super.call(this, -1, battleActor) || this; _this._battleActor = battleActor; _this._disable = disable; return _this; } BattleUnitDir2.prototype.direction = function () { return 2; }; BattleUnitDir2.prototype.opacity = function () { if (this._disable) { return 120; } else { return _super.prototype.opacity.call(this); } }; BattleUnitDir2.prototype.characterName = function () { return this._battleActor.characterName(); }; BattleUnitDir2.prototype.characterIndex = function () { return this._battleActor.characterIndex(); }; BattleUnitDir2.prototype.pattern = function () { return 1; }; return BattleUnitDir2; })(BattleUnit); var Sprite_SlotUnit = /** @class */ (function (_super) { __extends(Sprite_SlotUnit, _super); function Sprite_SlotUnit(battleUnit, rect) { var _this = _super.call(this, battleUnit) || this; _this._rect = rect; _this._battleUnit = battleUnit; _this._character = battleUnit; _this.update(); _this._isReady = _this.bitmap.isReady(); return _this; } Sprite_SlotUnit.prototype.battleUnit = function () { return this._battleUnit; }; Sprite_SlotUnit.prototype.updatePosition = function () { this.x = this._rect.x + 25; this.y = this._rect.y; this.z = 1; }; Sprite_SlotUnit.prototype.isImageChanged = function () { if (!this._isReady) { return true; } return _super.prototype.isImageChanged.call(this); }; Sprite_SlotUnit.prototype.setCharacterBitmap = function () { _super.prototype.setCharacterBitmap.call(this); this._isReady = this.bitmap.isReady(); }; return Sprite_SlotUnit; })(Sprite_Character); var Slot; (function (Slot) { Slot[(Slot["slot1"] = 1)] = "slot1"; Slot[(Slot["slot2"] = 2)] = "slot2"; Slot[(Slot["slot3"] = 3)] = "slot3"; Slot[(Slot["slot4"] = 4)] = "slot4"; Slot[(Slot["slot5"] = 5)] = "slot5"; })(Slot || (Slot = {})); var Formation = /** @class */ (function () { function Formation() { this._allMembers = []; this._battleMembers = []; this._changed = false; // 並びやメンバーに変更があった場合 this._filterChanged = false; // this._levelUp = false; // this._id = 0; } Formation.prototype.isComplete = function () { return this._allMembers.length == this.totalKaijinNum(); }; Formation.prototype.totalKaijinNum = function () { var n = 0; for (var k in KAIJIN_PARAMS) { n++; } return n; }; Formation.prototype.hasZako = function () { for (var _i = 0, _a = this.battleMembers(); _i < _a.length; _i++) { var b = _a[_i]; if (!b) { continue; } if (b.actor().isZako()) { return true; } } return false; }; Formation.prototype.onLevelUp = function () { this._changed = true; this._filterChanged = true; this._levelUp = true; }; Formation.prototype.isLevelUp = function () { return this._levelUp; }; Formation.prototype.clearLevelUp = function () { this._levelUp = false; }; Formation.prototype.nextId = function () { this._id++; return this._id; }; Formation.prototype.isBattleMamber = function (actor) { for (var _i = 0, _a = this.battleMembers(); _i < _a.length; _i++) { var b = _a[_i]; if (!b) { continue; } if (b.actorId() == actor.actorId()) { return true; } } return false; }; Formation.prototype.kaijinExists = function () { for (var _i = 0, _a = this.battleMembers(); _i < _a.length; _i++) { var b = _a[_i]; if (!b) { continue; } if (b.actor().isKaijin()) { return true; } } return false; }; Formation.prototype.kaijinCount = function () { var n = 0; for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var b = _a[_i]; if (!b) { continue; } if (b.actor().isKaijin()) { n++; } } return n; }; Formation.prototype.isEmpty = function (slot) { if (this._battleMembers.length <= slot) { return false; } return this._battleMembers[slot] == 0; }; Formation.prototype.saveBattle = function () {}; Formation.prototype.restoreBattle = function () {}; Formation.prototype.leader = function () { if (!this._leader) { this._leader = new BattleActor(this.nextId(), 10, 1); } return this._leader; }; Formation.prototype.addMember = function (actorId, level) { var actor = new BattleActor(this.nextId(), actorId, level); this._allMembers.push(actor); return actor.id(); }; Formation.prototype.allMembers = function () { if (!$gameSwitches.value(325)) { return this._allMembers; } var members = []; for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var m = _a[_i]; if (!m.isZako()) { members.push(m); } } return members; }; Formation.prototype.battleMembers = function () { var result = []; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { result.push(this.findBattleActor(n)); } else { result.push(null); } } return result; }; Formation.prototype.deadMembers = function () { var result = []; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.isDead()) { result.push(b); } } } return result; }; Formation.prototype.existBattleMembers = function () { var result = []; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { result.push(this.findBattleActor(n)); } } return result; }; Formation.prototype.battleMemberIds = function () { return this._battleMembers.concat(); }; Formation.prototype.findBattleActor = function (id) { if (id == -1) { return; } for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var b = _a[_i]; if (b.id() == id) { return b; } } console.error("IDが" + id + "のBattleActorが見つかりません"); return null; }; Formation.prototype.findBattleActorByActorId = function (id) { for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var b = _a[_i]; if (b.actorId() == id) { return b; } } console.error("IDが" + id + "のBattleActorが見つかりません"); return null; }; Formation.prototype.maxBattleMembers = function () { return 5; }; Formation.prototype.totalPower = function () { var n = 0; for (var _i = 0, _a = this.battleMembers(); _i < _a.length; _i++) { var m = _a[_i]; if (m) { n += m.power(); } } return n; }; Formation.prototype.slotBy = function (id) { for (var i = 0; i < this._battleMembers.length; i++) { var m = this._battleMembers[i]; if (m) { var actor = this.findBattleActor(m); if (actor && actor.id() == id) { return i; } } } return -1; }; Formation.prototype.battleMemberAt = function (index) { var id = this._battleMembers[index]; if (id >= 0) { return this.findBattleActor(id); } return null; }; Formation.prototype.slotOf = function (actor) { for (var i = 0; i < this._battleMembers.length; i++) { var m = this._battleMembers[i]; if (m) { if (actor.id() == m) { return i; } } } return -1; }; Formation.prototype.setActor = function (slotId, actor) { var currentSlot = this.slotOf(actor); if (currentSlot >= 0) { this._battleMembers[currentSlot] = -1; } if (actor) { this._battleMembers[slotId] = actor.id(); } else { this._battleMembers[slotId] = -1; } this._changed = true; this.calcPassiveSkill(); }; Formation.prototype.swap = function (slotId1, slotId2) { var temp1 = this._battleMembers[slotId1]; var temp2 = this._battleMembers[slotId2]; this._battleMembers[slotId1] = temp2; this._battleMembers[slotId2] = temp1; this._changed = true; this.calcPassiveSkill(); }; Formation.prototype.calcPassiveSkill = function () { this._passiveSkills = new PassiveSkills(); var battleMembers = this.battleMembers(); for (var i = 0; i < this.maxBattleMembers(); i++) { var battleActor = this.battleMemberAt(i); if (!battleActor) { continue; } var passiveSkills = battleActor.createPassiveSkillList(battleMembers); if (passiveSkills.length > 0) { for ( var _i = 0, passiveSkills_1 = passiveSkills; _i < passiveSkills_1.length; _i++ ) { var s = passiveSkills_1[_i]; this._passiveSkills.push(s); } } } for (var _a = 0, _b = this.allMembers(); _a < _b.length; _a++) { var m = _b[_a]; m.setPassiveSkills(this._passiveSkills); } }; Formation.prototype.addRandomMonster = function () { var actorId = this.selectRandomMonster(); this.joinMonster(actorId); }; Formation.prototype.addGachaMonster = function () { var t = $gameParty.useGachaTicket(); if (!t) { console.error("ガチャチケを持っていません"); return; } if ($gameParty.gachaTicket() == 0) { $gameSwitches.setValue(33, false); } var actorId = t.actorId(); this.joinMonster(actorId); }; Formation.prototype.selectRandomMonster = function () { var actorId = this.roulette(); if ($slg.facilityInfo().hasFacility(65)) { if (this.isExists(actorId)) { p("怪人かぶり1:" + actorId); actorId = this.roulette(); if ($slg.facilityInfo().hasFacility(66)) { if (this.isExists(actorId)) { p("怪人かぶり2:" + actorId); actorId = this.roulette(); } if (this.isExists(actorId)) { p("怪人かぶり3:" + actorId); actorId = this.roulette(); } } } } return actorId; }; Formation.prototype.joinMonster = function (actorId) { if (actorId < 0) { console.error("不正な怪人が追加されました"); return; } var actor = $gameActors.actor(actorId); var battleActor = new BattleActor(-1, actorId, 1); $gameVariables.setValue(59, battleActor.name()); if (this.isExists(actor.actorId())) { $gameSwitches.setValue(59, true); var battleActorId = this.levelUp(actor.actorId()); $gameTemp.lastJoinBattleActorId = battleActorId; $gameTemp.lastJoinBattleActorNew = false; var g = this.goldByRare(battleActor.rare()); $gameVariables.setValue(90, g); if (g > 0) { p("かぶりG:" + g); $gameParty.gainGold(g); } } else { $gameSwitches.setValue(59, false); var battleActorId = this.addMember(actor.actorId(), 1); $gameTemp.lastJoinBattleActorId = battleActorId; $gameTemp.lastJoinBattleActorNew = true; } var rare = this.findBattleActorByActorId(actor.actorId()).rare(); var rareEffect = rare >= MonsterRare.sr; $gameSwitches.setValue(28, rareEffect); $gameSwitches.setValue(29, rare == MonsterRare.ssr); }; Formation.prototype.goldByRare = function (rare) { switch (rare) { case MonsterRare.common: return 50; case MonsterRare.rare: return 100; case MonsterRare.sr: return 150; case MonsterRare.ssr: return 200; } return 0; }; Formation.prototype.roulette = function () { var rare = new Gacha().decideRare(); var candidates = this.monsterCandidates(rare); if (candidates.length == 0) { console.error("怪人を追加できません"); return -1; } var random = Math.randomInt(candidates.length); var actorId = candidates[random]; return actorId; }; Formation.prototype.isExists = function (actorId) { for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var b = _a[_i]; if (b.actorId() == actorId) { return true; } } return false; }; Formation.prototype.monsterCandidates = function (r) { var result = []; var minLevel = 1; var maxLevel = 1 + $slg.facilityInfo().findMaxFacilityLevel(FacilityType.monster); for (var i = 102; i < 150; i++) { if (!KAIJIN_PARAMS[i]) { continue; } var rare = KAIJIN_PARAMS[i][0]; if (isNaN(rare)) { console.error("怪人のレベルが不正です:" + i); continue; } if (r == rare) { result.push(i); } } return result; }; Formation.prototype.leftTarget = function () { for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { return b; } } } return null; }; Formation.prototype.priorityTarget = function () { var targets = []; var battleCount = 0; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { var value = this.priorityByBattlerCount(battleCount); value += this.provokeValue(b); for (var i = 0; i < value; i++) { targets.push(b); } battleCount++; } } } if (targets.length == 0) { return null; } var dice = Math.randomInt(targets.length); return targets[dice]; }; Formation.prototype.aliveTargets = function () { var targets = []; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { targets.push(b); } } } return targets; }; Formation.prototype.aliveTargetFrontNum = function (num) { var targets = this.aliveTargets(); if (targets.length <= num) { return targets; } var result = []; for (var i = 0; i < num; i++) { result.push(targets[i]); } return result; }; Formation.prototype.aliveTargetNum = function (num) { var targets = this.aliveTargets(); if (targets.length <= num) { return targets; } var result = []; var list = this.aliveTargetCandidates(); for (var i = 0; i < num; i++) { while (list.length > 0) { var b = list.pop(); if (result.contains(b)) { continue; } result.push(b); break; } } return result; }; Formation.prototype.aliveTargetCandidates = function () { var result = []; var battleCount = 0; for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { var value = this.priorityByBattlerCount(battleCount); value += this.provokeValue(b); for (var i = 0; i < value; i++) { result.push(b); } battleCount++; } } } result = Nore.shuffle(result); return result; }; Formation.prototype.provokeValue = function (b) { return this._passiveSkills.provokeValue(b); }; Formation.prototype.aliveTargetTop = function () { for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { return [b]; } } } return []; }; Formation.prototype.aliveTargetBottom = function () { for (var i = 0; i < this._battleMembers.length; i++) { var n = this._battleMembers[this._battleMembers.length - 1 - i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { return [b]; } } } return []; }; Formation.prototype.priorityByBattlerCount = function (battleCount) { switch (battleCount) { case 0: return 8; case 1: return 5; case 2: return 3; case 3: return 2; default: return 1; } }; Formation.prototype.isAllDead = function () { for (var _i = 0, _a = this._battleMembers; _i < _a.length; _i++) { var n = _a[_i]; if (n) { var b = this.findBattleActor(n); if (b.hp() > 0) { return false; } } } return true; }; Formation.prototype.recoverAll = function () { for (var _i = 0, _a = this.existBattleMembers(); _i < _a.length; _i++) { var a = _a[_i]; a.recoverAll(); } }; Formation.prototype.levelUp = function (actorId) { for (var _i = 0, _a = this._allMembers; _i < _a.length; _i++) { var b = _a[_i]; if (b.actorId() == actorId) { b.levelUp(); if (this.trainingInfo().trainingActorId() == actorId) { this.trainingInfo().clearTraining(); } return b.id(); } } return -1; }; Formation.prototype.isChanged = function () { return this._changed; }; Formation.prototype.clearChanged = function () { this._changed = false; }; Formation.prototype.isRareEnabled = function (r) { if (this.isRareSelected(r)) { return true; } var onCount = 0; for (var f in this._rareFilter) { if (this._rareFilter[f]) { onCount++; } } return onCount == 0; }; Formation.prototype.isRareSelected = function (r) { this._rareFilter = this._rareFilter || {}; for (var f in this._rareFilter) { if (parseInt(f) == r) { if (this._rareFilter[f]) { return true; } } } return false; }; Formation.prototype.clearRareFilter = function () { this._rareFilter = {}; this._filterChanged = true; }; Formation.prototype.clearElementFilter = function () { this._elementFilter = {}; this._filterChanged = true; }; Formation.prototype.putRareFilter = function (r) { this._rareFilter = this._rareFilter || {}; this._rareFilter[r] = !this._rareFilter[r]; this._filterChanged = true; }; Formation.prototype.isElementEnabled = function (r) { if (this.isElementSelected(r)) { return true; } var onCount = 0; for (var f in this._elementFilter) { if (this._elementFilter[f]) { onCount++; } } return onCount == 0; }; Formation.prototype.isElementSelected = function (r) { this._elementFilter = this._elementFilter || {}; for (var f in this._elementFilter) { if (parseInt(f) == r) { if (this._elementFilter[f]) { return true; } } } return false; }; Formation.prototype.putElementFilter = function (e) { this._elementFilter = this._elementFilter || {}; this._elementFilter[e] = !this._elementFilter[e]; this._filterChanged = true; }; Formation.prototype.filterChanged = function () { return this._filterChanged; }; Formation.prototype.clearFilterChanged = function () { this._filterChanged = false; }; Formation.prototype.sortValue = function () { return MonsterSort.rare; //this._sortValue || MonsterSort.rare; }; Formation.prototype.changeSort = function () { this._sortValue = this._sortValue || MonsterSort.newArrival; this._sortValue++; if (this._sortValue > MonsterSort.element) { this._sortValue = MonsterSort.newArrival; } this._filterChanged = true; }; Formation.prototype.trainingInfo = function () { this._trainingInfo = this._trainingInfo || new TrainingInfo(); return this._trainingInfo; }; return Formation; })(); var MonsterElement; (function (MonsterElement) { MonsterElement[(MonsterElement["none"] = -1)] = "none"; MonsterElement[(MonsterElement["flame"] = 0)] = "flame"; MonsterElement[(MonsterElement["water"] = 1)] = "water"; MonsterElement[(MonsterElement["wood"] = 2)] = "wood"; })(MonsterElement || (MonsterElement = {})); var MonsterElementColor; (function (MonsterElementColor) { MonsterElementColor[(MonsterElementColor["flame"] = 11141120)] = "flame"; MonsterElementColor[(MonsterElementColor["water"] = 2237149)] = "water"; MonsterElementColor[(MonsterElementColor["wood"] = 43520)] = "wood"; })(MonsterElementColor || (MonsterElementColor = {})); var MonsterElementStringColor; (function (MonsterElementStringColor) { MonsterElementStringColor["flame"] = "#aa0000"; MonsterElementStringColor["water"] = "#0000aa"; MonsterElementStringColor["wood"] = "#00aa00"; })(MonsterElementStringColor || (MonsterElementStringColor = {}));