From aea5335470f84f81317a28685c09570f988692b3 Mon Sep 17 00:00:00 2001 From: alexpolo1 Date: Tue, 5 Nov 2019 12:54:48 +0100 Subject: [PATCH] pkug111 --- RPG project 2019/data/Map002.json | 2 +- RPG project 2019/data/MapInfos.json | 2 +- RPG project 2019/data/System.json | 2 +- RPG project 2019/js/plugins.js | 24 +- .../js/plugins/YEP_X_BattleSysATB.js | 2562 +++++++++++++++++ .../js/plugins/YEP_X_BattleSysSTB.js | 728 +++++ .../js/plugins/YEP_X_TurnOrderDisplay.js | 1244 ++++++++ RPG project 2019/save/file1.rpgsave | 2 +- RPG project 2019/save/global.rpgsave | 2 +- 9 files changed, 4551 insertions(+), 17 deletions(-) create mode 100644 RPG project 2019/js/plugins/YEP_X_BattleSysATB.js create mode 100644 RPG project 2019/js/plugins/YEP_X_BattleSysSTB.js create mode 100644 RPG project 2019/js/plugins/YEP_X_TurnOrderDisplay.js diff --git a/RPG project 2019/data/Map002.json b/RPG project 2019/data/Map002.json index 0d3d010..031fdaf 100644 --- a/RPG project 2019/data/Map002.json +++ b/RPG project 2019/data/Map002.json @@ -6,7 +6,7 @@ null, {"id":1,"name":"Shop","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":2,"pattern":0,"characterIndex":5},"list":[{"code":101,"indent":0,"parameters":["Monster",5,0,2]},{"code":401,"indent":0,"parameters":["Hi,"]},{"code":401,"indent":0,"parameters":["Welcome to the shop"]},{"code":102,"indent":0,"parameters":[["Shop","Exit"],1,0,2,0]},{"code":402,"indent":0,"parameters":[0,"Shop"]},{"code":302,"indent":1,"parameters":[0,6,0,0,false]},{"code":605,"indent":1,"parameters":[0,7,0,0]},{"code":605,"indent":1,"parameters":[0,8,0,0]},{"code":605,"indent":1,"parameters":[0,9,0,0]},{"code":605,"indent":1,"parameters":[0,10,0,0]},{"code":605,"indent":1,"parameters":[0,11,0,0]},{"code":605,"indent":1,"parameters":[0,3,0,0]},{"code":605,"indent":1,"parameters":[0,4,0,0]},{"code":0,"indent":1,"parameters":[]},{"code":402,"indent":0,"parameters":[1,"Exit"]},{"code":101,"indent":1,"parameters":["Monster",5,0,2]},{"code":401,"indent":1,"parameters":["Bye"]},{"code":0,"indent":1,"parameters":[]},{"code":404,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":false}],"x":1,"y":6}, {"id":2,"name":"Shop","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":2,"pattern":0,"characterIndex":5},"list":[{"code":101,"indent":0,"parameters":["Monster",5,0,2]},{"code":401,"indent":0,"parameters":["Hi,"]},{"code":401,"indent":0,"parameters":["Welcome to the shop"]},{"code":102,"indent":0,"parameters":[["Shop","Exit"],1,0,2,0]},{"code":402,"indent":0,"parameters":[0,"Shop"]},{"code":302,"indent":1,"parameters":[1,7,0,0,false]},{"code":605,"indent":1,"parameters":[1,8,0,0]},{"code":605,"indent":1,"parameters":[1,10,0,0]},{"code":605,"indent":1,"parameters":[1,11,0,0]},{"code":605,"indent":1,"parameters":[1,13,0,0]},{"code":605,"indent":1,"parameters":[1,14,0,0]},{"code":605,"indent":1,"parameters":[1,16,0,0]},{"code":605,"indent":1,"parameters":[1,17,0,0]},{"code":605,"indent":1,"parameters":[1,19,0,0]},{"code":605,"indent":1,"parameters":[1,20,0,0]},{"code":605,"indent":1,"parameters":[1,22,0,0]},{"code":605,"indent":1,"parameters":[1,23,0,0]},{"code":0,"indent":1,"parameters":[]},{"code":402,"indent":0,"parameters":[1,"Exit"]},{"code":101,"indent":1,"parameters":["Monster",5,0,2]},{"code":401,"indent":1,"parameters":["Bye"]},{"code":0,"indent":1,"parameters":[]},{"code":404,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":false}],"x":17,"y":15}, {"id":3,"name":"Shop","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":2,"pattern":0,"characterIndex":5},"list":[{"code":101,"indent":0,"parameters":["Monster",5,0,2]},{"code":401,"indent":0,"parameters":["Hi,"]},{"code":401,"indent":0,"parameters":["Welcome to the shop"]},{"code":102,"indent":0,"parameters":[["Shop","Exit"],1,0,2,0]},{"code":402,"indent":0,"parameters":[0,"Shop"]},{"code":302,"indent":1,"parameters":[2,1,0,0,false]},{"code":605,"indent":1,"parameters":[2,6,0,0]},{"code":605,"indent":1,"parameters":[2,7,0,0]},{"code":605,"indent":1,"parameters":[2,8,0,0]},{"code":605,"indent":1,"parameters":[2,9,0,0]},{"code":605,"indent":1,"parameters":[2,10,0,0]},{"code":0,"indent":1,"parameters":[]},{"code":402,"indent":0,"parameters":[1,"Exit"]},{"code":101,"indent":1,"parameters":["Monster",5,0,2]},{"code":401,"indent":1,"parameters":["Bye"]},{"code":0,"indent":1,"parameters":[]},{"code":404,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":false}],"x":24,"y":5}, -{"id":4,"name":"testbattle","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":8,"pattern":2,"characterIndex":2},"list":[{"code":301,"indent":0,"parameters":[0,3,false,false]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":13,"y":7}, +{"id":4,"name":"testbattle","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"tileId":0,"characterName":"Monster","direction":8,"pattern":2,"characterIndex":0},"list":[{"code":301,"indent":0,"parameters":[0,1,true,true]},{"code":601,"indent":0,"parameters":[]},{"code":0,"indent":1,"parameters":[]},{"code":602,"indent":0,"parameters":[]},{"code":0,"indent":1,"parameters":[]},{"code":603,"indent":0,"parameters":[]},{"code":0,"indent":1,"parameters":[]},{"code":604,"indent":0,"parameters":[]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":0,"walkAnime":true}],"x":13,"y":7}, {"id":5,"name":"EV005","note":"","pages":[{"conditions":{"actorId":1,"actorValid":false,"itemId":1,"itemValid":false,"selfSwitchCh":"A","selfSwitchValid":false,"switch1Id":1,"switch1Valid":false,"switch2Id":1,"switch2Valid":false,"variableId":1,"variableValid":false,"variableValue":0},"directionFix":false,"image":{"characterIndex":0,"characterName":"!Door1","direction":2,"pattern":1,"tileId":0},"list":[{"code":250,"indent":0,"parameters":[{"name":"Open1","pan":0,"pitch":100,"volume":90}]},{"code":205,"indent":0,"parameters":[0,{"list":[{"code":17},{"code":15,"parameters":[3]},{"code":18},{"code":15,"parameters":[3]},{"code":19},{"code":37},{"code":0}],"repeat":false,"skippable":false,"wait":true}]},{"code":505,"indent":0,"parameters":[{"code":17}]},{"code":505,"indent":0,"parameters":[{"code":15,"parameters":[3]}]},{"code":505,"indent":0,"parameters":[{"code":18}]},{"code":505,"indent":0,"parameters":[{"code":15,"parameters":[3]}]},{"code":505,"indent":0,"parameters":[{"code":19}]},{"code":505,"indent":0,"parameters":[{"code":37}]},{"code":205,"indent":0,"parameters":[-1,{"list":[{"code":12},{"code":0}],"repeat":false,"skippable":true,"wait":true}]},{"code":505,"indent":0,"parameters":[{"code":12}]},{"code":250,"indent":0,"parameters":[{"name":"Move1","pan":0,"pitch":100,"volume":90}]},{"code":201,"indent":0,"parameters":[0,4,7,23,0,0]},{"code":0,"indent":0,"parameters":[]}],"moveFrequency":3,"moveRoute":{"list":[{"code":0,"parameters":[]}],"repeat":true,"skippable":false,"wait":false},"moveSpeed":3,"moveType":0,"priorityType":1,"stepAnime":false,"through":false,"trigger":1,"walkAnime":false}],"x":13,"y":0} ] } \ No newline at end of file diff --git a/RPG project 2019/data/MapInfos.json b/RPG project 2019/data/MapInfos.json index 7e94bc4..21dec53 100644 --- a/RPG project 2019/data/MapInfos.json +++ b/RPG project 2019/data/MapInfos.json @@ -1,7 +1,7 @@ [ null, {"id":1,"expanded":true,"name":"MAP001","order":1,"parentId":0,"scrollX":1092,"scrollY":630}, -{"id":2,"expanded":false,"name":"MAP003","order":3,"parentId":4,"scrollX":1508,"scrollY":881.3333333333334}, +{"id":2,"expanded":false,"name":"MAP003","order":3,"parentId":4,"scrollX":1081.3333333333333,"scrollY":756.6666666666666}, null, {"id":4,"expanded":true,"name":"MAP002","order":2,"parentId":1,"scrollX":832,"scrollY":640} ] \ No newline at end of file diff --git a/RPG project 2019/data/System.json b/RPG project 2019/data/System.json index 8257083..3aa20d9 100644 --- a/RPG project 2019/data/System.json +++ b/RPG project 2019/data/System.json @@ -1 +1 @@ -{"airship":{"bgm":{"name":"Ship3","pan":0,"pitch":100,"volume":90},"characterIndex":3,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"armorTypes":["","General Armor","Magic Armor","Light Armor","Heavy Armor","Small Shield","Large Shield"],"attackMotions":[{"type":0,"weaponImageId":0},{"type":1,"weaponImageId":1},{"type":1,"weaponImageId":2},{"type":1,"weaponImageId":3},{"type":1,"weaponImageId":4},{"type":1,"weaponImageId":5},{"type":1,"weaponImageId":6},{"type":2,"weaponImageId":7},{"type":2,"weaponImageId":8},{"type":2,"weaponImageId":9},{"type":0,"weaponImageId":10},{"type":0,"weaponImageId":11},{"type":0,"weaponImageId":12}],"battleBgm":{"name":"Battle3","pan":0,"pitch":100,"volume":90},"battleback1Name":"Meadow","battleback2Name":"Forest","battlerHue":0,"battlerName":"Dragon","boat":{"bgm":{"name":"Ship1","pan":0,"pitch":100,"volume":90},"characterIndex":0,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"currencyUnit":"G","defeatMe":{"name":"Defeat1","pan":0,"pitch":100,"volume":90},"editMapId":2,"elements":["","Physical","Fire","Ice","Thunder","Water","Earth","Wind","Light","Darkness"],"equipTypes":["","Weapon","Shield","Head","Body","Accessory","Shoes","Gloves","","",""],"gameTitle":"RPG project 2019","gameoverMe":{"name":"Gameover1","pan":0,"pitch":100,"volume":90},"locale":"en_US","magicSkills":[1,2],"menuCommands":[true,true,true,true,true,true],"optDisplayTp":true,"optDrawTitle":true,"optExtraExp":true,"optFloorDeath":false,"optFollowers":true,"optSideView":true,"optSlipDeath":true,"optTransparent":false,"partyMembers":[1,2,3,4],"ship":{"bgm":{"name":"Ship2","pan":0,"pitch":100,"volume":90},"characterIndex":1,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"skillTypes":["","Magic","Special"],"sounds":[{"name":"Cursor2","pan":0,"pitch":100,"volume":90},{"name":"Decision1","pan":0,"pitch":100,"volume":90},{"name":"Cancel2","pan":0,"pitch":100,"volume":90},{"name":"Buzzer1","pan":0,"pitch":100,"volume":90},{"name":"Equip1","pan":0,"pitch":100,"volume":90},{"name":"Save","pan":0,"pitch":100,"volume":90},{"name":"Load","pan":0,"pitch":100,"volume":90},{"name":"Battle1","pan":0,"pitch":100,"volume":90},{"name":"Run","pan":0,"pitch":100,"volume":90},{"name":"Attack3","pan":0,"pitch":100,"volume":90},{"name":"Damage4","pan":0,"pitch":100,"volume":90},{"name":"Collapse1","pan":0,"pitch":100,"volume":90},{"name":"Collapse2","pan":0,"pitch":100,"volume":90},{"name":"Collapse3","pan":0,"pitch":100,"volume":90},{"name":"Damage5","pan":0,"pitch":100,"volume":90},{"name":"Collapse4","pan":0,"pitch":100,"volume":90},{"name":"Recovery","pan":0,"pitch":100,"volume":90},{"name":"Miss","pan":0,"pitch":100,"volume":90},{"name":"Evasion1","pan":0,"pitch":100,"volume":90},{"name":"Evasion2","pan":0,"pitch":100,"volume":90},{"name":"Reflection","pan":0,"pitch":100,"volume":90},{"name":"Shop1","pan":0,"pitch":100,"volume":90},{"name":"Item3","pan":0,"pitch":100,"volume":90},{"name":"Item3","pan":0,"pitch":100,"volume":90}],"startMapId":2,"startX":13,"startY":6,"switches":["","","","","","","","","","","","","","","","","","","","",""],"terms":{"basic":["Level","Lv","HP","HP","MP","MP","TP","TP","EXP","EXP"],"commands":["Fight","Escape","Attack","Guard","Item","Skill","Equip","Status","Formation","Save","Game End","Options","Weapon","Armor","Key Item","Equip","Optimize","Clear","New Game","Continue",null,"To Title","Cancel",null,"Buy","Sell"],"params":["Max HP","Max MP","Attack","Defense","M.Attack","M.Defense","Agility","Luck","Hit","Evasion"],"messages":{"actionFailure":"There was no effect on %1!","actorDamage":"%1 took %2 damage!","actorDrain":"%1 was drained of %2 %3!","actorGain":"%1 gained %2 %3!","actorLoss":"%1 lost %2 %3!","actorNoDamage":"%1 took no damage!","actorNoHit":"Miss! %1 took no damage!","actorRecovery":"%1 recovered %2 %3!","alwaysDash":"Always Dash","bgmVolume":"BGM Volume","bgsVolume":"BGS Volume","buffAdd":"%1's %2 went up!","buffRemove":"%1's %2 returned to normal!","commandRemember":"Command Remember","counterAttack":"%1 counterattacked!","criticalToActor":"A painful blow!!","criticalToEnemy":"An excellent hit!!","debuffAdd":"%1's %2 went down!","defeat":"%1 was defeated.","emerge":"%1 emerged!","enemyDamage":"%1 took %2 damage!","enemyDrain":"%1 was drained of %2 %3!","enemyGain":"%1 gained %2 %3!","enemyLoss":"%1 lost %2 %3!","enemyNoDamage":"%1 took no damage!","enemyNoHit":"Miss! %1 took no damage!","enemyRecovery":"%1 recovered %2 %3!","escapeFailure":"However, it was unable to escape!","escapeStart":"%1 has started to escape!","evasion":"%1 evaded the attack!","expNext":"To Next %1","expTotal":"Current %1","file":"File","levelUp":"%1 is now %2 %3!","loadMessage":"Load which file?","magicEvasion":"%1 nullified the magic!","magicReflection":"%1 reflected the magic!","meVolume":"ME Volume","obtainExp":"%1 %2 received!","obtainGold":"%1\\G found!","obtainItem":"%1 found!","obtainSkill":"%1 learned!","partyName":"%1's Party","possession":"Possession","preemptive":"%1 got the upper hand!","saveMessage":"Save to which file?","seVolume":"SE Volume","substitute":"%1 protected %2!","surprise":"%1 was surprised!","useItem":"%1 uses %2!","victory":"%1 was victorious!"}},"testBattlers":[{"actorId":1,"equips":[1,1,2,3,0],"level":1},{"actorId":2,"equips":[2,1,2,3,0],"level":1},{"actorId":3,"equips":[3,0,2,3,4],"level":1},{"actorId":4,"equips":[4,0,2,3,4],"level":1}],"testTroopId":4,"title1Name":"Plain","title2Name":"","titleBgm":{"name":"Theme2","pan":0,"pitch":100,"volume":90},"variables":["","","","","","","","","","","","","","","","","","","","",""],"versionId":87609485,"victoryMe":{"name":"Victory1","pan":0,"pitch":100,"volume":90},"weaponTypes":["","Dagger","Sword","Flail","Axe","","Cane","Bow","Crossbow","Gun","Claw","Glove","Spear"],"windowTone":[-102,136,255,0]} \ No newline at end of file +{"airship":{"bgm":{"name":"Ship3","pan":0,"pitch":100,"volume":90},"characterIndex":3,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"armorTypes":["","General Armor","Magic Armor","Light Armor","Heavy Armor","Small Shield","Large Shield"],"attackMotions":[{"type":0,"weaponImageId":0},{"type":1,"weaponImageId":1},{"type":1,"weaponImageId":2},{"type":1,"weaponImageId":3},{"type":1,"weaponImageId":4},{"type":1,"weaponImageId":5},{"type":1,"weaponImageId":6},{"type":2,"weaponImageId":7},{"type":2,"weaponImageId":8},{"type":2,"weaponImageId":9},{"type":0,"weaponImageId":10},{"type":0,"weaponImageId":11},{"type":0,"weaponImageId":12}],"battleBgm":{"name":"Battle3","pan":0,"pitch":100,"volume":90},"battleback1Name":"Meadow","battleback2Name":"Forest","battlerHue":0,"battlerName":"Dragon","boat":{"bgm":{"name":"Ship1","pan":0,"pitch":100,"volume":90},"characterIndex":0,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"currencyUnit":"G","defeatMe":{"name":"Defeat1","pan":0,"pitch":100,"volume":90},"editMapId":2,"elements":["","Physical","Fire","Ice","Thunder","Water","Earth","Wind","Light","Darkness"],"equipTypes":["","Weapon","Shield","Head","Body","Accessory","Shoes","Gloves","","",""],"gameTitle":"RPG project 2019","gameoverMe":{"name":"Gameover1","pan":0,"pitch":100,"volume":90},"locale":"en_US","magicSkills":[1,2],"menuCommands":[true,true,true,true,true,true],"optDisplayTp":true,"optDrawTitle":true,"optExtraExp":true,"optFloorDeath":false,"optFollowers":true,"optSideView":true,"optSlipDeath":true,"optTransparent":false,"partyMembers":[1,2,3,4],"ship":{"bgm":{"name":"Ship2","pan":0,"pitch":100,"volume":90},"characterIndex":1,"characterName":"Vehicle","startMapId":0,"startX":0,"startY":0},"skillTypes":["","Magic","Special"],"sounds":[{"name":"Cursor2","pan":0,"pitch":100,"volume":90},{"name":"Decision1","pan":0,"pitch":100,"volume":90},{"name":"Cancel2","pan":0,"pitch":100,"volume":90},{"name":"Buzzer1","pan":0,"pitch":100,"volume":90},{"name":"Equip1","pan":0,"pitch":100,"volume":90},{"name":"Save","pan":0,"pitch":100,"volume":90},{"name":"Load","pan":0,"pitch":100,"volume":90},{"name":"Battle1","pan":0,"pitch":100,"volume":90},{"name":"Run","pan":0,"pitch":100,"volume":90},{"name":"Attack3","pan":0,"pitch":100,"volume":90},{"name":"Damage4","pan":0,"pitch":100,"volume":90},{"name":"Collapse1","pan":0,"pitch":100,"volume":90},{"name":"Collapse2","pan":0,"pitch":100,"volume":90},{"name":"Collapse3","pan":0,"pitch":100,"volume":90},{"name":"Damage5","pan":0,"pitch":100,"volume":90},{"name":"Collapse4","pan":0,"pitch":100,"volume":90},{"name":"Recovery","pan":0,"pitch":100,"volume":90},{"name":"Miss","pan":0,"pitch":100,"volume":90},{"name":"Evasion1","pan":0,"pitch":100,"volume":90},{"name":"Evasion2","pan":0,"pitch":100,"volume":90},{"name":"Reflection","pan":0,"pitch":100,"volume":90},{"name":"Shop1","pan":0,"pitch":100,"volume":90},{"name":"Item3","pan":0,"pitch":100,"volume":90},{"name":"Item3","pan":0,"pitch":100,"volume":90}],"startMapId":2,"startX":13,"startY":6,"switches":["","","","","","","","","","","","","","","","","","","","",""],"terms":{"basic":["Level","Lv","HP","HP","MP","MP","TP","TP","EXP","EXP"],"commands":["Fight","Escape","Attack","Guard","Item","Skill","Equip","Status","Formation","Save","Game End","Options","Weapon","Armor","Key Item","Equip","Optimize","Clear","New Game","Continue",null,"To Title","Cancel",null,"Buy","Sell"],"params":["Max HP","Max MP","Attack","Defense","M.Attack","M.Defense","Agility","Luck","Hit","Evasion"],"messages":{"actionFailure":"There was no effect on %1!","actorDamage":"%1 took %2 damage!","actorDrain":"%1 was drained of %2 %3!","actorGain":"%1 gained %2 %3!","actorLoss":"%1 lost %2 %3!","actorNoDamage":"%1 took no damage!","actorNoHit":"Miss! %1 took no damage!","actorRecovery":"%1 recovered %2 %3!","alwaysDash":"Always Dash","bgmVolume":"BGM Volume","bgsVolume":"BGS Volume","buffAdd":"%1's %2 went up!","buffRemove":"%1's %2 returned to normal!","commandRemember":"Command Remember","counterAttack":"%1 counterattacked!","criticalToActor":"A painful blow!!","criticalToEnemy":"An excellent hit!!","debuffAdd":"%1's %2 went down!","defeat":"%1 was defeated.","emerge":"%1 emerged!","enemyDamage":"%1 took %2 damage!","enemyDrain":"%1 was drained of %2 %3!","enemyGain":"%1 gained %2 %3!","enemyLoss":"%1 lost %2 %3!","enemyNoDamage":"%1 took no damage!","enemyNoHit":"Miss! %1 took no damage!","enemyRecovery":"%1 recovered %2 %3!","escapeFailure":"However, it was unable to escape!","escapeStart":"%1 has started to escape!","evasion":"%1 evaded the attack!","expNext":"To Next %1","expTotal":"Current %1","file":"File","levelUp":"%1 is now %2 %3!","loadMessage":"Load which file?","magicEvasion":"%1 nullified the magic!","magicReflection":"%1 reflected the magic!","meVolume":"ME Volume","obtainExp":"%1 %2 received!","obtainGold":"%1\\G found!","obtainItem":"%1 found!","obtainSkill":"%1 learned!","partyName":"%1's Party","possession":"Possession","preemptive":"%1 got the upper hand!","saveMessage":"Save to which file?","seVolume":"SE Volume","substitute":"%1 protected %2!","surprise":"%1 was surprised!","useItem":"%1 uses %2!","victory":"%1 was victorious!"}},"testBattlers":[{"actorId":1,"equips":[1,1,2,3,0],"level":1},{"actorId":2,"equips":[2,1,2,3,0],"level":1},{"actorId":3,"equips":[3,0,2,3,4],"level":1},{"actorId":4,"equips":[4,0,2,3,4],"level":1}],"testTroopId":4,"title1Name":"Plain","title2Name":"","titleBgm":{"name":"Theme2","pan":0,"pitch":100,"volume":90},"variables":["","","","","","","","","","","","","","","","","","","","",""],"versionId":95190282,"victoryMe":{"name":"Victory1","pan":0,"pitch":100,"volume":90},"weaponTypes":["","Dagger","Sword","Flail","Axe","","Cane","Bow","Crossbow","Gun","Claw","Glove","Spear"],"windowTone":[-102,136,255,0]} \ No newline at end of file diff --git a/RPG project 2019/js/plugins.js b/RPG project 2019/js/plugins.js index 57b63fa..0be0fd2 100644 --- a/RPG project 2019/js/plugins.js +++ b/RPG project 2019/js/plugins.js @@ -2,53 +2,53 @@ // Do not edit this file directly. var $plugins = [ -{"name":"WeaponSkill","status":true,"description":"Change skill id of attack for each weapon.","parameters":{}}, +{"name":"YEP_CoreEngine","status":true,"description":"v1.31 Needed for the majority of Yanfly Engine Scripts. Also\r\ncontains bug fixes found inherently in RPG Maker.","parameters":{"---Screen---":"","Screen Width":"816","Screen Height":"624","Scale Battlebacks":"true","Scale Title":"true","Scale Game Over":"true","Open Console":"false","Reposition Battlers":"true","GameFont Load Timer":"0","Update Real Scale":"false","Collection Clear":"true","---Gold---":"","Gold Max":"99999999","Gold Font Size":"20","Gold Icon":"313","Gold Overlap":"A lotta","---Items---":"","Default Max":"99","Quantity Text Size":"20","---Parameters---":"","Max Level":"99","Actor MaxHP":"9999","Actor MaxMP":"9999","Actor Parameter":"999","Enemy MaxHP":"999999","Enemy MaxMP":"9999","Enemy Parameter":"999","---Battle---":"","Animation Rate":"4","Flash Target":"false","Show Events Transition":"true","Show Events Snapshot":"true","---Map Optimization---":"","Refresh Update HP":"true","Refresh Update MP":"true","Refresh Update TP":"false","---Font---":"","Chinese Font":"SimHei, Heiti TC, sans-serif","Korean Font":"Dotum, AppleGothic, sans-serif","Default Font":"GameFont, Verdana, Arial, Courier New","Font Size":"28","Text Align":"left","---Windows---":"","Digit Grouping":"true","Line Height":"36","Icon Width":"32","Icon Height":"32","Face Width":"144","Face Height":"144","Window Padding":"18","Text Padding":"6","Window Opacity":"192","Gauge Outline":"true","Gauge Height":"18","Menu TP Bar":"true","---Window Colors---":"","Color: Normal":"0","Color: System":"16","Color: Crisis":"17","Color: Death":"18","Color: Gauge Back":"19","Color: HP Gauge 1":"20","Color: HP Gauge 2":"21","Color: MP Gauge 1":"22","Color: MP Gauge 2":"23","Color: MP Cost":"23","Color: Power Up":"24","Color: Power Down":"25","Color: TP Gauge 1":"28","Color: TP Gauge 2":"29","Color: TP Cost Color":"29"}}, +{"name":"YEP_BattleEngineCore","status":true,"description":"v1.50 Have more control over the flow of the battle system\nwith this plugin and alter various aspects to your liking.","parameters":{"---General---":"","Action Speed":"agi","Default System":"ctb","---Escape---":"","Escape Ratio":"0.5 * $gameParty.agility() / $gameTroop.agility()","Fail Escape Boost":"0.10","---Animation---":"","Animation Base Delay":"0","Animation Next Delay":"0","Certain Hit Animation":"0","Physical Animation":"52","Magical Animation":"51","Enemy Attack Animation":"39","Reflect Animation":"42","Motion Waiting":"false","---Frontview---":"","Front Position X":"Graphics.boxWidth / 8 + Graphics.boxWidth / 4 * index","Front Position Y":"Graphics.boxHeight - 180","Front Actor Sprite":"false","Front Sprite Priority":"1","---Sideview---":"","Home Position X":"screenWidth - 16 - (maxSize + 2) * 32 + index * 32","Home Position Y":"screenHeight - statusHeight - maxSize * 48 + (index+1) * 48 - 32","Side Sprite Priority":"1","---Sprites---":"","Default X Anchor":"0.50","Default Y Anchor":"1.00","Step Distance":"48","Flinch Distance":"12","Show Shadows":"true","---Damage Popups---":"","Popup Duration":"128","Newest Popup Bottom":"true","Popup Overlap Rate":"0.9","Critical Popup":"255, 0, 0, 160","Critical Duration":"60","---Tick-Settings---":"","Timed States":"false","Timed Buffs":"false","Turn Time":"100","AI Self Turns":"true","---Window Settings---":"","Lower Windows":"true","Window Rows":"4","Command Window Rows":"4","Command Alignment":"center","Start Actor Command":"true","Current Max":"false","---Selection Help---":"","Mouse Over":"true","Select Help Window":"true","User Help Text":"User","Ally Help Text":"Ally","Allies Help Text":"Allies","Enemy Help Text":"Enemy","Enemies Help Text":"Enemies","All Help Text":"All %1","Random Help Text":"%2 Random %1","---Enemy Select---":"","Visual Enemy Select":"true","Show Enemy Name":"true","Show Select Box":"false","Enemy Font Size":"20","Enemy Auto Select":"this.furthestRight()","---Actor Select---":"","Visual Actor Select":"true","---Battle Log---":"","Show Emerge Text":"false","Show Pre-Emptive Text":"true","Show Surprise Text":"true","Optimize Speed":"true","Show Action Text":"false","Show State Text":"false","Show Buff Text":"false","Show Counter Text":"true","Show Reflect Text":"true","Show Substitute Text":"true","Show Fail Text":"false","Show Critical Text":"false","Show Miss Text":"false","Show Evasion Text":"false","Show HP Text":"false","Show MP Text":"false","Show TP Text":"false"}}, +{"name":"YEP_X_BattleSysCTB","status":true,"description":"v1.17 (Requires YEP_BattleEngineCore.js) Add CTB (Charge\nTurn Battle) into your game using this plugin!","parameters":{"---CTB Settings---":"","Per Tick":"user.agi","Initial Speed":"0","Full Gauge":"Math.max(7000, BattleManager.highestBaseAgi() * 120)","Pre-Emptive Bonuses":"0.8","Surprise Bonuses":"0.8","---Escape---":"","Escape Ratio":"0.125 * $gameParty.agility() / $gameTroop.agility()","Fail Escape Boost":"0.025","---Turn---":"","Full Turn":"Math.min(200, BattleManager.lowestBaseAgi() * 8)","---Rubberband---":"","Enable Rubberband":"true","Minimum Speed":"0.5 * BattleManager.highestBaseAgi()","Maximum Speed":"1.5 * BattleManager.highestBaseAgi()","---Sound---":"","Ready Sound":"Decision1","Ready Volume":"90","Ready Pitch":"120","Ready Pan":"0","---Turn Order---":"","Show Turn Order":"true","Icon Size":"32","Position Y":"54","Position X":"right","Turn Direction":"left","Ally Border Color":"4","Ally Back Color":"22","Ally Icon":"0","Enemy Border Color":"2","Enemy Back Color":"19","Enemy Icon":"0","Enemy SV Battlers":"false"}}, +{"name":"WeaponSkill","status":false,"description":"Change skill id of attack for each weapon.","parameters":{}}, {"name":"MadeWithMv","status":true,"description":"Show a Splash Screen \"Made with MV\" and/or a Custom Splash Screen before going to main screen.","parameters":{"Show Made With MV":"true","Made with MV Image":"MadeWithMv","Show Custom Splash":"false","Custom Image":"","Fade Out Time":"120","Fade In Time":"120","Wait Time":"160"}}, {"name":"EnemyBook","status":true,"description":"Displays detailed statuses of enemies.","parameters":{"Unknown Data":"??????"}}, {"name":"ItemBook","status":true,"description":"Displays detailed statuses of items.","parameters":{"Unknown Data":"??????","Price Text":"Price","Equip Text":"Equip","Type Text":"Type"}}, -{"name":"SimpleMsgSideView","status":true,"description":"at sideview battle, only display item/skill names.","parameters":{"displayAttack":"0","position":"1"}}, -{"name":"YEP_CoreEngine","status":true,"description":"v1.31 Needed for the majority of Yanfly Engine Scripts. Also\r\ncontains bug fixes found inherently in RPG Maker.","parameters":{"---Screen---":"","Screen Width":"816","Screen Height":"624","Scale Battlebacks":"true","Scale Title":"true","Scale Game Over":"true","Open Console":"false","Reposition Battlers":"true","GameFont Load Timer":"0","Update Real Scale":"false","Collection Clear":"true","---Gold---":"","Gold Max":"99999999","Gold Font Size":"20","Gold Icon":"313","Gold Overlap":"A lotta","---Items---":"","Default Max":"99","Quantity Text Size":"20","---Parameters---":"","Max Level":"99","Actor MaxHP":"9999","Actor MaxMP":"9999","Actor Parameter":"999","Enemy MaxHP":"999999","Enemy MaxMP":"9999","Enemy Parameter":"999","---Battle---":"","Animation Rate":"4","Flash Target":"false","Show Events Transition":"true","Show Events Snapshot":"true","---Map Optimization---":"","Refresh Update HP":"true","Refresh Update MP":"true","Refresh Update TP":"false","---Font---":"","Chinese Font":"SimHei, Heiti TC, sans-serif","Korean Font":"Dotum, AppleGothic, sans-serif","Default Font":"GameFont, Verdana, Arial, Courier New","Font Size":"28","Text Align":"left","---Windows---":"","Digit Grouping":"true","Line Height":"36","Icon Width":"32","Icon Height":"32","Face Width":"144","Face Height":"144","Window Padding":"18","Text Padding":"6","Window Opacity":"192","Gauge Outline":"true","Gauge Height":"18","Menu TP Bar":"true","---Window Colors---":"","Color: Normal":"0","Color: System":"16","Color: Crisis":"17","Color: Death":"18","Color: Gauge Back":"19","Color: HP Gauge 1":"20","Color: HP Gauge 2":"21","Color: MP Gauge 1":"22","Color: MP Gauge 2":"23","Color: MP Cost":"23","Color: Power Up":"24","Color: Power Down":"25","Color: TP Gauge 1":"28","Color: TP Gauge 2":"29","Color: TP Cost Color":"29"}}, -{"name":"YEP_BattleAICore","status":true,"description":"v1.15 This plugin allows you to structure battle A.I.\npatterns with more control.","parameters":{"Dynamic Actions":"true","Dynamic Turn Count":"false","Element Testing":"true","Default AI Level":"80"}}, -{"name":"YEP_BattleEngineCore","status":true,"description":"v1.50 Have more control over the flow of the battle system\nwith this plugin and alter various aspects to your liking.","parameters":{"---General---":"","Action Speed":"agi","Default System":"dtb","---Escape---":"","Escape Ratio":"0.5 * $gameParty.agility() / $gameTroop.agility()","Fail Escape Boost":"0.10","---Animation---":"","Animation Base Delay":"0","Animation Next Delay":"0","Certain Hit Animation":"0","Physical Animation":"52","Magical Animation":"51","Enemy Attack Animation":"39","Reflect Animation":"42","Motion Waiting":"false","---Frontview---":"","Front Position X":"Graphics.boxWidth / 8 + Graphics.boxWidth / 4 * index","Front Position Y":"Graphics.boxHeight - 180","Front Actor Sprite":"false","Front Sprite Priority":"1","---Sideview---":"","Home Position X":"screenWidth - 16 - (maxSize + 2) * 32 + index * 32","Home Position Y":"screenHeight - statusHeight - maxSize * 48 + (index+1) * 48 - 32","Side Sprite Priority":"1","---Sprites---":"","Default X Anchor":"0.50","Default Y Anchor":"1.00","Step Distance":"48","Flinch Distance":"12","Show Shadows":"true","---Damage Popups---":"","Popup Duration":"128","Newest Popup Bottom":"true","Popup Overlap Rate":"0.9","Critical Popup":"255, 0, 0, 160","Critical Duration":"60","---Tick-Settings---":"","Timed States":"false","Timed Buffs":"false","Turn Time":"100","AI Self Turns":"true","---Window Settings---":"","Lower Windows":"true","Window Rows":"4","Command Window Rows":"4","Command Alignment":"center","Start Actor Command":"true","Current Max":"false","---Selection Help---":"","Mouse Over":"true","Select Help Window":"true","User Help Text":"User","Ally Help Text":"Ally","Allies Help Text":"Allies","Enemy Help Text":"Enemy","Enemies Help Text":"Enemies","All Help Text":"All %1","Random Help Text":"%2 Random %1","---Enemy Select---":"","Visual Enemy Select":"true","Show Enemy Name":"true","Show Select Box":"false","Enemy Font Size":"20","Enemy Auto Select":"this.furthestRight()","---Actor Select---":"","Visual Actor Select":"true","---Battle Log---":"","Show Emerge Text":"false","Show Pre-Emptive Text":"true","Show Surprise Text":"true","Optimize Speed":"true","Show Action Text":"false","Show State Text":"false","Show Buff Text":"false","Show Counter Text":"true","Show Reflect Text":"true","Show Substitute Text":"true","Show Fail Text":"false","Show Critical Text":"false","Show Miss Text":"false","Show Evasion Text":"false","Show HP Text":"false","Show MP Text":"false","Show TP Text":"false"}}, +{"name":"SimpleMsgSideView","status":false,"description":"at sideview battle, only display item/skill names.","parameters":{"displayAttack":"0","position":"1"}}, +{"name":"YEP_BattleAICore","status":false,"description":"v1.15 This plugin allows you to structure battle A.I.\npatterns with more control.","parameters":{"Dynamic Actions":"true","Dynamic Turn Count":"false","Element Testing":"true","Default AI Level":"80"}}, {"name":"YEP_BuffsStatesCore","status":true,"description":"v1.16 Alter the basic mechanics behind buffs and states\nthat aren't adjustable within the RPG Maker editor.","parameters":{"---Turn Indicator---":"","Show Turns":"true","Font Size":"16","Turn Alignment":"right","Turn Buffer X":"-3","Turn Buffer Y":"-6","State Color":"0","Buff Color":"24","Debuff Color":"2","---Enemy Icons---":"","Show Enemy Icons":"true","Enemy Buff Turn":"true","Enemy State Turn":"true","Enemy State Counter":"true","---Buff Settings---":"","Default Limit":"4","Maximum Limit":"8","Buff Formula":"this._buffs[paramId] * 0.25 + 1.0","Show Buff Rate":"false","---State Settings---":"","Reapply Rules":"1","Show Enemy Turns":"true","---Counter Settings---":"","Counter Font Size":"16","Counter Alignment":"center","Counter Buffer X":"0","Counter Buffer Y":"8","Counter Color":"0"}}, {"name":"YEP_ButtonCommonEvents","status":true,"description":"v1.02 On the field map, call common events when certain\nbuttons are pressed on the keyboard.","parameters":{"---Top Row---":"","Key ~":"0","Key 1":"0","Key 2":"0","Key 3":"0","Key 4":"0","Key 5":"0","Key 6":"0","Key 7":"0","Key 8":"0","Key 9":"0","Key 0":"0","Key -":"0","Key =":"0","---2nd Row---":"","Key Q (PageUp)":"0","Key W (PageDown)":"0","Key E":"0","Key R":"0","Key T":"0","Key Y":"0","Key U":"0","Key I":"0","Key O":"0","Key P":"0","Key [":"0","Key ]":"0","Key \\":"0","---3rd Row---":"","Key A":"0","Key S":"0","Key D":"0","Key F":"0","Key G":"0","Key H":"0","Key J":"0","Key K":"0","Key L":"0","Key ;":"0","Key \"":"0","Key Enter (OK)":"0","---4th Row---":"","Key Shift (Dash)":"0","Key Z (OK)":"0","Key X (Cancel)":"0","Key C":"0","Key V":"0","Key B":"0","Key N":"0","Key M":"0","Key ,":"0","Key .":"0","Key /":"0","---Misc---":"","Key Space (OK)":"0","Key Left (Left)":"0","Key Up (Up)":"0","Key Right (Right)":"0","Key Down (Down)":"0","Key Insert (Cancel)":"0","Key Delete":"0","Key Home":"0","Key End":"0","Key Page Up (PageUp)":"0","Key Page Down (PageDown)":"0","---NumPad---":"","Key NumPad 0 (Cancel)":"0","Key NumPad 1":"0","Key NumPad 2 (Down)":"0","Key NumPad 3":"0","Key NumPad 4 (Left)":"0","Key NumPad 5":"0","Key NumPad 6 (Right)":"0","Key NumPad 7":"0","Key NumPad 8 (Up)":"0","Key NumPad 9":"0","Key NumPad .":"0","Key NumPad +":"0","Key NumPad -":"0","Key NumPad *":"0","Key NumPad /":"0"}}, {"name":"YEP_CreditsPage","status":true,"description":"v1.02 Adds a 'Credits' command to the title screen that\nwill take the player to a credits scene.","parameters":{"---General---":"","Command Name":"Credits","---Credit Lines---":"","Line 1 Text":"","Line 1 URL":"","Line 2 Text":"","Line 2 URL":"","Line 3 Text":"","Line 3 URL":"","Line 4 Text":"","Line 4 URL":"","Line 5 Text":"","Line 5 URL":"","Line 6 Text":"","Line 6 URL":"","Line 7 Text":"","Line 7 URL":"","Line 8 Text":"","Line 8 URL":"","Line 9 Text":"","Line 9 URL":"","Line 10 Text":"","Line 10 URL":"","Line 11 Text":"","Line 11 URL":"","Line 12 Text":"","Line 12 URL":"","Line 13 Text":"","Line 13 URL":"","Line 14 Text":"","Line 14 URL":"","Line 15 Text":"","Line 15 URL":"","Line 16 Text":"","Line 16 URL":"","Line 17 Text":"","Line 17 URL":"","Line 18 Text":"","Line 18 URL":"","Line 19 Text":"","Line 19 URL":"","Line 20 Text":"","Line 20 URL":"","Line 21 Text":"","Line 21 URL":"","Line 22 Text":"","Line 22 URL":"","Line 23 Text":"","Line 23 URL":"","Line 24 Text":"","Line 24 URL":"","Line 25 Text":"","Line 25 URL":"","Line 26 Text":"","Line 26 URL":"","Line 27 Text":"","Line 27 URL":"","Line 28 Text":"","Line 28 URL":"","Line 29 Text":"","Line 29 URL":"","Line 30 Text":"","Line 30 URL":"","Line 31 Text":"","Line 31 URL":"","Line 32 Text":"","Line 32 URL":"","Line 33 Text":"","Line 33 URL":"","Line 34 Text":"","Line 34 URL":"","Line 35 Text":"","Line 35 URL":"","Line 36 Text":"","Line 36 URL":"","Line 37 Text":"","Line 37 URL":"","Line 38 Text":"","Line 38 URL":"","Line 39 Text":"","Line 39 URL":"","Line 40 Text":"","Line 40 URL":"","Line 41 Text":"","Line 41 URL":"","Line 42 Text":"","Line 42 URL":"","Line 43 Text":"","Line 43 URL":"","Line 44 Text":"","Line 44 URL":"","Line 45 Text":"","Line 45 URL":"","Line 46 Text":"","Line 46 URL":"","Line 47 Text":"","Line 47 URL":"","Line 48 Text":"","Line 48 URL":"","Line 49 Text":"","Line 49 URL":"","Line 50 Text":"","Line 50 URL":"","Line 51 Text":"","Line 51 URL":"","Line 52 Text":"","Line 52 URL":"","Line 53 Text":"","Line 53 URL":"","Line 54 Text":"","Line 54 URL":"","Line 55 Text":"","Line 55 URL":"","Line 56 Text":"","Line 56 URL":"","Line 57 Text":"","Line 57 URL":"","Line 58 Text":"","Line 58 URL":"","Line 59 Text":"","Line 59 URL":"","Line 60 Text":"","Line 60 URL":"","Line 61 Text":"","Line 61 URL":"","Line 62 Text":"","Line 62 URL":"","Line 63 Text":"","Line 63 URL":"","Line 64 Text":"","Line 64 URL":"","Line 65 Text":"","Line 65 URL":"","Line 66 Text":"","Line 66 URL":"","Line 67 Text":"","Line 67 URL":"","Line 68 Text":"","Line 68 URL":"","Line 69 Text":"","Line 69 URL":"","Line 70 Text":"","Line 70 URL":"","Line 71 Text":"","Line 71 URL":"","Line 72 Text":"","Line 72 URL":"","Line 73 Text":"","Line 73 URL":"","Line 74 Text":"","Line 74 URL":"","Line 75 Text":"","Line 75 URL":"","Line 76 Text":"","Line 76 URL":"","Line 77 Text":"","Line 77 URL":"","Line 78 Text":"","Line 78 URL":"","Line 79 Text":"","Line 79 URL":"","Line 80 Text":"","Line 80 URL":"","Line 81 Text":"","Line 81 URL":"","Line 82 Text":"","Line 82 URL":"","Line 83 Text":"","Line 83 URL":"","Line 84 Text":"","Line 84 URL":"","Line 85 Text":"","Line 85 URL":"","Line 86 Text":"","Line 86 URL":"","Line 87 Text":"","Line 87 URL":"","Line 88 Text":"","Line 88 URL":"","Line 89 Text":"","Line 89 URL":"","Line 90 Text":"","Line 90 URL":"","Line 91 Text":"","Line 91 URL":"","Line 92 Text":"","Line 92 URL":"","Line 93 Text":"","Line 93 URL":"","Line 94 Text":"","Line 94 URL":"","Line 95 Text":"","Line 95 URL":"","Line 96 Text":"","Line 96 URL":"","Line 97 Text":"","Line 97 URL":"","Line 98 Text":"","Line 98 URL":"","Line 99 Text":"","Line 99 URL":"","Line 100 Text":"","Line 100 URL":"","Line 101 Text":"","Line 101 URL":"","Line 102 Text":"","Line 102 URL":"","Line 103 Text":"","Line 103 URL":"","Line 104 Text":"","Line 104 URL":"","Line 105 Text":"","Line 105 URL":"","Line 106 Text":"","Line 106 URL":"","Line 107 Text":"","Line 107 URL":"","Line 108 Text":"","Line 108 URL":"","Line 109 Text":"","Line 109 URL":"","Line 110 Text":"","Line 110 URL":"","Line 111 Text":"","Line 111 URL":"","Line 112 Text":"","Line 112 URL":"","Line 113 Text":"","Line 113 URL":"","Line 114 Text":"","Line 114 URL":"","Line 115 Text":"","Line 115 URL":"","Line 116 Text":"","Line 116 URL":"","Line 117 Text":"","Line 117 URL":"","Line 118 Text":"","Line 118 URL":"","Line 119 Text":"","Line 119 URL":"","Line 120 Text":"","Line 120 URL":"","Line 121 Text":"","Line 121 URL":"","Line 122 Text":"","Line 122 URL":"","Line 123 Text":"","Line 123 URL":"","Line 124 Text":"","Line 124 URL":"","Line 125 Text":"","Line 125 URL":"","Line 126 Text":"","Line 126 URL":"","Line 127 Text":"","Line 127 URL":"","Line 128 Text":"","Line 128 URL":"","Line 129 Text":"","Line 129 URL":"","Line 130 Text":"","Line 130 URL":"","Line 131 Text":"","Line 131 URL":"","Line 132 Text":"","Line 132 URL":"","Line 133 Text":"","Line 133 URL":"","Line 134 Text":"","Line 134 URL":"","Line 135 Text":"","Line 135 URL":"","Line 136 Text":"","Line 136 URL":"","Line 137 Text":"","Line 137 URL":"","Line 138 Text":"","Line 138 URL":"","Line 139 Text":"","Line 139 URL":"","Line 140 Text":"","Line 140 URL":"","Line 141 Text":"","Line 141 URL":"","Line 142 Text":"","Line 142 URL":"","Line 143 Text":"","Line 143 URL":"","Line 144 Text":"","Line 144 URL":"","Line 145 Text":"","Line 145 URL":"","Line 146 Text":"","Line 146 URL":"","Line 147 Text":"","Line 147 URL":"","Line 148 Text":"","Line 148 URL":"","Line 149 Text":"","Line 149 URL":"","Line 150 Text":"","Line 150 URL":"","Line 151 Text":"","Line 151 URL":"","Line 152 Text":"","Line 152 URL":"","Line 153 Text":"","Line 153 URL":"","Line 154 Text":"","Line 154 URL":"","Line 155 Text":"","Line 155 URL":"","Line 156 Text":"","Line 156 URL":"","Line 157 Text":"","Line 157 URL":"","Line 158 Text":"","Line 158 URL":"","Line 159 Text":"","Line 159 URL":"","Line 160 Text":"","Line 160 URL":"","Line 161 Text":"","Line 161 URL":"","Line 162 Text":"","Line 162 URL":"","Line 163 Text":"","Line 163 URL":"","Line 164 Text":"","Line 164 URL":"","Line 165 Text":"","Line 165 URL":"","Line 166 Text":"","Line 166 URL":"","Line 167 Text":"","Line 167 URL":"","Line 168 Text":"","Line 168 URL":"","Line 169 Text":"","Line 169 URL":"","Line 170 Text":"","Line 170 URL":"","Line 171 Text":"","Line 171 URL":"","Line 172 Text":"","Line 172 URL":"","Line 173 Text":"","Line 173 URL":"","Line 174 Text":"","Line 174 URL":"","Line 175 Text":"","Line 175 URL":"","Line 176 Text":"","Line 176 URL":"","Line 177 Text":"","Line 177 URL":"","Line 178 Text":"","Line 178 URL":"","Line 179 Text":"","Line 179 URL":"","Line 180 Text":"","Line 180 URL":"","Line 181 Text":"","Line 181 URL":"","Line 182 Text":"","Line 182 URL":"","Line 183 Text":"","Line 183 URL":"","Line 184 Text":"","Line 184 URL":"","Line 185 Text":"","Line 185 URL":"","Line 186 Text":"","Line 186 URL":"","Line 187 Text":"","Line 187 URL":"","Line 188 Text":"","Line 188 URL":"","Line 189 Text":"","Line 189 URL":"","Line 190 Text":"","Line 190 URL":"","Line 191 Text":"","Line 191 URL":"","Line 192 Text":"","Line 192 URL":"","Line 193 Text":"","Line 193 URL":"","Line 194 Text":"","Line 194 URL":"","Line 195 Text":"","Line 195 URL":"","Line 196 Text":"","Line 196 URL":"","Line 197 Text":"","Line 197 URL":"","Line 198 Text":"","Line 198 URL":"","Line 199 Text":"","Line 199 URL":"","Line 200 Text":"","Line 200 URL":"","Line 201 Text":"","Line 201 URL":"","Line 202 Text":"","Line 202 URL":"","Line 203 Text":"","Line 203 URL":"","Line 204 Text":"","Line 204 URL":"","Line 205 Text":"","Line 205 URL":"","Line 206 Text":"","Line 206 URL":"","Line 207 Text":"","Line 207 URL":"","Line 208 Text":"","Line 208 URL":"","Line 209 Text":"","Line 209 URL":"","Line 210 Text":"","Line 210 URL":"","Line 211 Text":"","Line 211 URL":"","Line 212 Text":"","Line 212 URL":"","Line 213 Text":"","Line 213 URL":"","Line 214 Text":"","Line 214 URL":"","Line 215 Text":"","Line 215 URL":"","Line 216 Text":"","Line 216 URL":"","Line 217 Text":"","Line 217 URL":"","Line 218 Text":"","Line 218 URL":"","Line 219 Text":"","Line 219 URL":"","Line 220 Text":"","Line 220 URL":"","Line 221 Text":"","Line 221 URL":"","Line 222 Text":"","Line 222 URL":"","Line 223 Text":"","Line 223 URL":"","Line 224 Text":"","Line 224 URL":"","Line 225 Text":"","Line 225 URL":"","Line 226 Text":"","Line 226 URL":"","Line 227 Text":"","Line 227 URL":"","Line 228 Text":"","Line 228 URL":"","Line 229 Text":"","Line 229 URL":"","Line 230 Text":"","Line 230 URL":"","Line 231 Text":"","Line 231 URL":"","Line 232 Text":"","Line 232 URL":"","Line 233 Text":"","Line 233 URL":"","Line 234 Text":"","Line 234 URL":"","Line 235 Text":"","Line 235 URL":"","Line 236 Text":"","Line 236 URL":"","Line 237 Text":"","Line 237 URL":"","Line 238 Text":"","Line 238 URL":"","Line 239 Text":"","Line 239 URL":"","Line 240 Text":"","Line 240 URL":"","Line 241 Text":"","Line 241 URL":"","Line 242 Text":"","Line 242 URL":"","Line 243 Text":"","Line 243 URL":"","Line 244 Text":"","Line 244 URL":"","Line 245 Text":"","Line 245 URL":"","Line 246 Text":"","Line 246 URL":"","Line 247 Text":"","Line 247 URL":"","Line 248 Text":"","Line 248 URL":"","Line 249 Text":"","Line 249 URL":"","Line 250 Text":"","Line 250 URL":"","Line 251 Text":"","Line 251 URL":"","Line 252 Text":"","Line 252 URL":"","Line 253 Text":"","Line 253 URL":"","Line 254 Text":"","Line 254 URL":"","Line 255 Text":"","Line 255 URL":"","Line 256 Text":"","Line 256 URL":"","Line 257 Text":"","Line 257 URL":"","Line 258 Text":"","Line 258 URL":"","Line 259 Text":"","Line 259 URL":"","Line 260 Text":"","Line 260 URL":"","Line 261 Text":"","Line 261 URL":"","Line 262 Text":"","Line 262 URL":"","Line 263 Text":"","Line 263 URL":"","Line 264 Text":"","Line 264 URL":"","Line 265 Text":"","Line 265 URL":"","Line 266 Text":"","Line 266 URL":"","Line 267 Text":"","Line 267 URL":"","Line 268 Text":"","Line 268 URL":"","Line 269 Text":"","Line 269 URL":"","Line 270 Text":"","Line 270 URL":"","Line 271 Text":"","Line 271 URL":"","Line 272 Text":"","Line 272 URL":"","Line 273 Text":"","Line 273 URL":"","Line 274 Text":"","Line 274 URL":"","Line 275 Text":"","Line 275 URL":"","Line 276 Text":"","Line 276 URL":"","Line 277 Text":"","Line 277 URL":"","Line 278 Text":"","Line 278 URL":"","Line 279 Text":"","Line 279 URL":"","Line 280 Text":"","Line 280 URL":"","Line 281 Text":"","Line 281 URL":"","Line 282 Text":"","Line 282 URL":"","Line 283 Text":"","Line 283 URL":"","Line 284 Text":"","Line 284 URL":"","Line 285 Text":"","Line 285 URL":"","Line 286 Text":"","Line 286 URL":"","Line 287 Text":"","Line 287 URL":"","Line 288 Text":"","Line 288 URL":"","Line 289 Text":"","Line 289 URL":"","Line 290 Text":"","Line 290 URL":"","Line 291 Text":"","Line 291 URL":"","Line 292 Text":"","Line 292 URL":"","Line 293 Text":"","Line 293 URL":"","Line 294 Text":"","Line 294 URL":"","Line 295 Text":"","Line 295 URL":"","Line 296 Text":"","Line 296 URL":"","Line 297 Text":"","Line 297 URL":"","Line 298 Text":"","Line 298 URL":"","Line 299 Text":"","Line 299 URL":"","Line 300 Text":"","Line 300 URL":""}}, -{"name":"YEP_EnemyLevels","status":true,"description":"v1.09 This plugin enables giving your enemies levels and\nparameter changes with those levels.","parameters":{"---General---":"","Show Level":"true","Level Format":"Lv%1 %2","Minimum Level":"1","Maximum Level":"9999","Maximum Cap":"9999","Preserve Rate":"true","---Level Setup---":"","Default Type":"5","Positive Fluctuation":"2","Negative Fluctuation":"2","---MaxHP Growth---":"","MaxHP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MaxHP Rate Growth":"0.15","MaxHP Flat Growth":"50.0","---MaxMP Growth---":"","MaxMP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MaxMP Rate Growth":"0.10","MaxMP Flat Growth":"10.0","---ATK Growth---":"","ATK Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","ATK Rate Growth":"0.05","ATK Flat Growth":"2.5","---DEF Growth---":"","DEF Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","DEF Rate Growth":"0.05","DEF Flat Growth":"2.5","---MAT Growth---":"","MAT Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MAT Rate Growth":"0.05","MAT Flat Growth":"2.5","---MDF Growth---":"","MDF Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MDF Rate Growth":"0.05","MDF Flat Growth":"2.5","---AGI Growth---":"","AGI Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","AGI Rate Growth":"0.05","AGI Flat Growth":"2.5","---LUK Growth---":"","LUK Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","LUK Rate Growth":"0.05","LUK Flat Growth":"2.5","---EXP Growth---":"","EXP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","EXP Rate Growth":"0.15","EXP Flat Growth":"10.0","---Gold Growth---":"","Gold Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","Gold Rate Growth":"0.15","Gold Flat Growth":"10.0"}}, +{"name":"YEP_EnemyLevels","status":false,"description":"v1.09 This plugin enables giving your enemies levels and\nparameter changes with those levels.","parameters":{"---General---":"","Show Level":"true","Level Format":"Lv%1 %2","Minimum Level":"1","Maximum Level":"9999","Maximum Cap":"9999","Preserve Rate":"true","---Level Setup---":"","Default Type":"5","Positive Fluctuation":"2","Negative Fluctuation":"2","---MaxHP Growth---":"","MaxHP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MaxHP Rate Growth":"0.15","MaxHP Flat Growth":"50.0","---MaxMP Growth---":"","MaxMP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MaxMP Rate Growth":"0.10","MaxMP Flat Growth":"10.0","---ATK Growth---":"","ATK Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","ATK Rate Growth":"0.05","ATK Flat Growth":"2.5","---DEF Growth---":"","DEF Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","DEF Rate Growth":"0.05","DEF Flat Growth":"2.5","---MAT Growth---":"","MAT Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MAT Rate Growth":"0.05","MAT Flat Growth":"2.5","---MDF Growth---":"","MDF Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","MDF Rate Growth":"0.05","MDF Flat Growth":"2.5","---AGI Growth---":"","AGI Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","AGI Rate Growth":"0.05","AGI Flat Growth":"2.5","---LUK Growth---":"","LUK Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","LUK Rate Growth":"0.05","LUK Flat Growth":"2.5","---EXP Growth---":"","EXP Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","EXP Rate Growth":"0.15","EXP Flat Growth":"10.0","---Gold Growth---":"","Gold Formula":"base * (1 + (level - 1) * rate) + (flat * (level - 1))","Gold Rate Growth":"0.15","Gold Flat Growth":"10.0"}}, {"name":"YEP_EquipCore","status":true,"description":"v1.18 Allows for the equipment system to be more flexible to\nallow for unique equipment slots per class.","parameters":{"---General---":"","Text Align":"center","Finish Command":"Finish","Remove Text":"Remove","Remove Icon":"16","Empty Text":"","Empty Icon":"16","---Rules---":"","Non-Removable Types":"1","Non-Optimized Types":"5"}}, {"name":"YEP_EventCopier","status":true,"description":"v1.01 Copy premade events from a template including all of the\npossible data stored from a different map!","parameters":{"---General---":"","TemplateMaps":"[\"1\"]","TemplateNames":"[]","---Lunatic Mode---":"","PreCopyCode":"\"// Variables Description\\n//\\n// mapId ID of the map to be loaded.\\n// eventId ID of the event to be loaded.\\n// target The event before it's copied over.\\n// player The player character.\"","PostCopyCode":"\"// Variables Description\\n//\\n// target The loaded event after copied over.\\n// player The player character.\""}}, {"name":"YEP_ExtraEnemyDrops","status":true,"description":"v1.09 Allows your enemies to drop more than just three\nitems as per the editor's limit.","parameters":{}}, {"name":"YEP_IconBalloons","status":true,"description":"v1.02 Allows you to use icons for your on-map balloons\nover your characters and events!","parameters":{"Empty Filename":"EmptyBalloon"}}, {"name":"YEP_ItemCore","status":true,"description":"v1.30 Changes the way Items are handled for your game\nand the Item Scene, too.","parameters":{"---General---":"","Max Items":"0","Max Weapons":"100","Max Armors":"100","Starting ID":"3000","Random Variance":"0","Negative Variance":"false","Name Format":"%1%2%3%4","Name Spacing":"true","Boost Format":"(+%1)","---Item Scene---":"","Updated Scene Item":"true","List Equipped Items":"true","Show Icon":"true","Icon Size":"128","Font Size":"20","Command Alignment":"center","Recovery Format":"%1 Heal","Add State":"+State","Add Buff":"+Buff","Remove State":"-State","Remove Buff":"-Buff","Maximum Icons":"4","Use Command":"Use %1","Carry Format":"%1/%2","--Independent Items--":"","Midgame Note Parsing":"false"}}, +{"name":"YEP_MusicMenu","status":true,"description":"v1.01 Access and play music from a menu! Players can unlock\nsongs from in the game as they play.","parameters":{"---General---":"","Music Icon":"80","Hidden Name":"? ? ? ? ?","Hidden Help":"This song hasn't been unlocked yet.","---Song List---":"","Song 1 Data":"Theme1; Title Theme; 90; 100; 0; Title theme for this game!","Song 2 Data":"Battle1; Let's Battle; 100; 100; 0; En garde!","Song 3 Data":"Field1; World of Fantasy; 90; 110; 0; The overworld theme!","Song 4 Data":"Town1; Calm, Peaceful Days; 90; 100; 0; Our town theme!","Song 5 Data":"Castle1; Castle Royalty; 90; 100; 0; Living a life of royalty!","Song 6 Data":"Dungeon1; Depths of Dungeon Diving; 90; 100; 0; So mysterious!","Song 7 Data":"Scene1; Day to Day; 90; 100; 0; Living life one day at a time!","Song 8 Data":"Ship1; Let's Set Sail!; 90; 100; 0; Ahoy! To open waters we go!","Song 9 Data":"","Song 10 Data":"","Song 11 Data":"","Song 12 Data":"","Song 13 Data":"","Song 14 Data":"","Song 15 Data":"","Song 16 Data":"","Song 17 Data":"","Song 18 Data":"","Song 19 Data":"","Song 20 Data":"","Song 21 Data":"","Song 22 Data":"","Song 23 Data":"","Song 24 Data":"","Song 25 Data":"","Song 26 Data":"","Song 27 Data":"","Song 28 Data":"","Song 29 Data":"","Song 30 Data":"","Song 31 Data":"","Song 32 Data":"","Song 33 Data":"","Song 34 Data":"","Song 35 Data":"","Song 36 Data":"","Song 37 Data":"","Song 38 Data":"","Song 39 Data":"","Song 40 Data":"","Song 41 Data":"","Song 42 Data":"","Song 43 Data":"","Song 44 Data":"","Song 45 Data":"","Song 46 Data":"","Song 47 Data":"","Song 48 Data":"","Song 49 Data":"","Song 50 Data":"","Song 51 Data":"","Song 52 Data":"","Song 53 Data":"","Song 54 Data":"","Song 55 Data":"","Song 56 Data":"","Song 57 Data":"","Song 58 Data":"","Song 59 Data":"","Song 60 Data":"","Song 61 Data":"","Song 62 Data":"","Song 63 Data":"","Song 64 Data":"","Song 65 Data":"","Song 66 Data":"","Song 67 Data":"","Song 68 Data":"","Song 69 Data":"","Song 70 Data":"","Song 71 Data":"","Song 72 Data":"","Song 73 Data":"","Song 74 Data":"","Song 75 Data":"","Song 76 Data":"","Song 77 Data":"","Song 78 Data":"","Song 79 Data":"","Song 80 Data":"","Song 81 Data":"","Song 82 Data":"","Song 83 Data":"","Song 84 Data":"","Song 85 Data":"","Song 86 Data":"","Song 87 Data":"","Song 88 Data":"","Song 89 Data":"","Song 90 Data":"","Song 91 Data":"","Song 92 Data":"","Song 93 Data":"","Song 94 Data":"","Song 95 Data":"","Song 96 Data":"","Song 97 Data":"","Song 98 Data":"","Song 99 Data":"","Song 100 Data":""}}, {"name":"YEP_KeyboardConfig","status":true,"description":"v1.04 Allows players to adjust their button configuration\nfor keyboards.","parameters":{"---General---":"","Command Name":"Keyboard Config","Button Events":"1 2 3","Button Events List":"[]","---Help Text---":"","Key Help":"Change the configuration of this key?","Default Layout":"Default Keyboard Layout","Default Help":"Reverts your keyboard setting to the default setup.","WASD Layout":"WASD Movement Layout","WASD Help":"Changes your keyboard to WASD movement.","Finish Config":"Finish Configuration","Finish Help":"Are you done configuring your keyboard?","Assigned Color":"21","Action Color":"4","Clear Text":"Clear","---Key Names---":"","OK Key":"OK","OK Text":"OK / Talk","Escape Key":"X","Escape Text":"Cancel / Menu","Cancel Key":"Cancel","Cancel Text":"Cancel","Menu Key":"Menu","Menu Text":"Menu","Shift Key":"Dash","Shift Text":"Dash","PageUp Key":"PgUp","PageUp Text":"Page Up","PageDown Key":"PgDn","PageDown Text":"Page Down","Left Key":"◄","Left Text":"Move ◄ Left","Up Key":"▲","Up Text":"Move ▲ Up","Right Key":"►","Right Text":"Move ► Right","Down Key":"▼","Down Text":"Move ▼ Down"}}, {"name":"YEP_LifeSteal","status":true,"description":"v1.04 Enables passive life steal traits without them being\nactive abilities but instead as passive traits.","parameters":{"Enable HP Overheal":"false","Enable MP Overheal":"false","Negative HP LifeSteal":"false","Negative MP LifeSteal":"false"}}, {"name":"YEP_MainMenuManager","status":true,"description":"v1.03 This plugin allows you to manage the various aspects\nof your main menu.","parameters":{"---General---":"","Hide Actor Window":"false","Hide Gold Window":"false","Blurry Background":"true","---Command---":"","Command Alignment":"left","Command Position":"left","Command Columns":"1","Command Rows":"Math.min(10, Math.ceil(this.maxItems() / this.maxCols()))","Command Width":"240","---Menu Items---":"","---Menu 1---":"","Menu 1 Name":"","Menu 1 Symbol":"","Menu 1 Show":"","Menu 1 Enabled":"","Menu 1 Ext":"","Menu 1 Main Bind":"","Menu 1 Actor Bind":"","---Menu 2---":"","Menu 2 Name":"","Menu 2 Symbol":"","Menu 2 Show":"","Menu 2 Enabled":"","Menu 2 Ext":"","Menu 2 Main Bind":"","Menu 2 Actor Bind":"","---Menu 3---":"","Menu 3 Name":"","Menu 3 Symbol":"","Menu 3 Show":"","Menu 3 Enabled":"","Menu 3 Ext":"","Menu 3 Main Bind":"","Menu 3 Actor Bind":"","---Menu 4---":"","Menu 4 Name":"","Menu 4 Symbol":"","Menu 4 Show":"","Menu 4 Enabled":"","Menu 4 Ext":"","Menu 4 Main Bind":"","Menu 4 Actor Bind":"","---Menu 5---":"","Menu 5 Name":"","Menu 5 Symbol":"","Menu 5 Show":"","Menu 5 Enabled":"","Menu 5 Ext":"","Menu 5 Main Bind":"","Menu 5 Actor Bind":"","---Menu 6---":"","Menu 6 Name":"","Menu 6 Symbol":"","Menu 6 Show":"","Menu 6 Enabled":"","Menu 6 Ext":"","Menu 6 Main Bind":"","Menu 6 Actor Bind":"","---Menu 7---":"","Menu 7 Name":"","Menu 7 Symbol":"","Menu 7 Show":"","Menu 7 Enabled":"","Menu 7 Ext":"","Menu 7 Main Bind":"","Menu 7 Actor Bind":"","---Menu 8---":"","Menu 8 Name":"","Menu 8 Symbol":"","Menu 8 Show":"","Menu 8 Enabled":"","Menu 8 Ext":"","Menu 8 Main Bind":"","Menu 8 Actor Bind":"","---Menu 9---":"","Menu 9 Name":"","Menu 9 Symbol":"","Menu 9 Show":"","Menu 9 Enabled":"","Menu 9 Ext":"","Menu 9 Main Bind":"","Menu 9 Actor Bind":"","---Menu 10---":"","Menu 10 Name":"TextManager.item","Menu 10 Symbol":"item","Menu 10 Show":"this.needsCommand('item')","Menu 10 Enabled":"this.areMainCommandsEnabled()","Menu 10 Ext":"","Menu 10 Main Bind":"this.commandItem.bind(this)","Menu 10 Actor Bind":"","---Menu 11---":"","Menu 11 Name":"","Menu 11 Symbol":"","Menu 11 Show":"","Menu 11 Enabled":"","Menu 11 Ext":"","Menu 11 Main Bind":"","Menu 11 Actor Bind":"","---Menu 12---":"","Menu 12 Name":"","Menu 12 Symbol":"","Menu 12 Show":"","Menu 12 Enabled":"","Menu 12 Ext":"","Menu 12 Main Bind":"","Menu 12 Actor Bind":"","---Menu 13---":"","Menu 13 Name":"","Menu 13 Symbol":"","Menu 13 Show":"","Menu 13 Enabled":"","Menu 13 Ext":"","Menu 13 Main Bind":"","Menu 13 Actor Bind":"","---Menu 14---":"","Menu 14 Name":"","Menu 14 Symbol":"","Menu 14 Show":"","Menu 14 Enabled":"","Menu 14 Ext":"","Menu 14 Main Bind":"","Menu 14 Actor Bind":"","---Menu 15---":"","Menu 15 Name":"TextManager.skill","Menu 15 Symbol":"skill","Menu 15 Show":"this.needsCommand('skill')","Menu 15 Enabled":"this.areMainCommandsEnabled()","Menu 15 Ext":"","Menu 15 Main Bind":"this.commandPersonal.bind(this)","Menu 15 Actor Bind":"SceneManager.push(Scene_Skill)","---Menu 16---":"","Menu 16 Name":"","Menu 16 Symbol":"","Menu 16 Show":"","Menu 16 Enabled":"","Menu 16 Ext":"","Menu 16 Main Bind":"","Menu 16 Actor Bind":"","---Menu 17---":"","Menu 17 Name":"","Menu 17 Symbol":"","Menu 17 Show":"","Menu 17 Enabled":"","Menu 17 Ext":"","Menu 17 Main Bind":"","Menu 17 Actor Bind":"","---Menu 18---":"","Menu 18 Name":"","Menu 18 Symbol":"","Menu 18 Show":"","Menu 18 Enabled":"","Menu 18 Ext":"","Menu 18 Main Bind":"","Menu 18 Actor Bind":"","---Menu 19---":"","Menu 19 Name":"","Menu 19 Symbol":"","Menu 19 Show":"","Menu 19 Enabled":"","Menu 19 Ext":"","Menu 19 Main Bind":"","Menu 19 Actor Bind":"","---Menu 20---":"","Menu 20 Name":"TextManager.equip","Menu 20 Symbol":"equip","Menu 20 Show":"this.needsCommand('equip')","Menu 20 Enabled":"this.areMainCommandsEnabled()","Menu 20 Ext":"","Menu 20 Main Bind":"this.commandPersonal.bind(this)","Menu 20 Actor Bind":"SceneManager.push(Scene_Equip)","---Menu 21---":"","Menu 21 Name":"","Menu 21 Symbol":"","Menu 21 Show":"","Menu 21 Enabled":"","Menu 21 Ext":"","Menu 21 Main Bind":"","Menu 21 Actor Bind":"","---Menu 22---":"","Menu 22 Name":"","Menu 22 Symbol":"","Menu 22 Show":"","Menu 22 Enabled":"","Menu 22 Ext":"","Menu 22 Main Bind":"","Menu 22 Actor Bind":"","---Menu 23---":"","Menu 23 Name":"","Menu 23 Symbol":"","Menu 23 Show":"","Menu 23 Enabled":"","Menu 23 Ext":"","Menu 23 Main Bind":"","Menu 23 Actor Bind":"","---Menu 24---":"","Menu 24 Name":"","Menu 24 Symbol":"","Menu 24 Show":"","Menu 24 Enabled":"","Menu 24 Ext":"","Menu 24 Main Bind":"","Menu 24 Actor Bind":"","---Menu 25---":"","Menu 25 Name":"Yanfly.Param.CCCCmdName","Menu 25 Symbol":"class","Menu 25 Show":"Imported.YEP_ClassChangeCore && $gameSystem.isShowClass()","Menu 25 Enabled":"$gameSystem.isEnableClass() && this.areMainCommandsEnabled()","Menu 25 Ext":"","Menu 25 Main Bind":"this.commandPersonal.bind(this)","Menu 25 Actor Bind":"SceneManager.push(Scene_Class)","---Menu 26---":"","Menu 26 Name":"","Menu 26 Symbol":"","Menu 26 Show":"","Menu 26 Enabled":"","Menu 26 Ext":"","Menu 26 Main Bind":"","Menu 26 Actor Bind":"","---Menu 27---":"","Menu 27 Name":"","Menu 27 Symbol":"","Menu 27 Show":"","Menu 27 Enabled":"","Menu 27 Ext":"","Menu 27 Main Bind":"","Menu 27 Actor Bind":"","---Menu 28---":"","Menu 28 Name":"","Menu 28 Symbol":"","Menu 28 Show":"","Menu 28 Enabled":"","Menu 28 Ext":"","Menu 28 Main Bind":"","Menu 28 Actor Bind":"","---Menu 29---":"","Menu 29 Name":"","Menu 29 Symbol":"","Menu 29 Show":"","Menu 29 Enabled":"","Menu 29 Ext":"","Menu 29 Main Bind":"","Menu 29 Actor Bind":"","---Menu 30---":"","Menu 30 Name":"","Menu 30 Symbol":"","Menu 30 Show":"","Menu 30 Enabled":"","Menu 30 Ext":"","Menu 30 Main Bind":"","Menu 30 Actor Bind":"","---Menu 31---":"","Menu 31 Name":"","Menu 31 Symbol":"","Menu 31 Show":"","Menu 31 Enabled":"","Menu 31 Ext":"","Menu 31 Main Bind":"","Menu 31 Actor Bind":"","---Menu 32---":"","Menu 32 Name":"","Menu 32 Symbol":"","Menu 32 Show":"","Menu 32 Enabled":"","Menu 32 Ext":"","Menu 32 Main Bind":"","Menu 32 Actor Bind":"","---Menu 33---":"","Menu 33 Name":"","Menu 33 Symbol":"","Menu 33 Show":"","Menu 33 Enabled":"","Menu 33 Ext":"","Menu 33 Main Bind":"","Menu 33 Actor Bind":"","---Menu 34---":"","Menu 34 Name":"","Menu 34 Symbol":"","Menu 34 Show":"","Menu 34 Enabled":"","Menu 34 Ext":"","Menu 34 Main Bind":"","Menu 34 Actor Bind":"","---Menu 35---":"","Menu 35 Name":"","Menu 35 Symbol":"","Menu 35 Show":"","Menu 35 Enabled":"","Menu 35 Ext":"","Menu 35 Main Bind":"","Menu 35 Actor Bind":"","---Menu 36---":"","Menu 36 Name":"","Menu 36 Symbol":"","Menu 36 Show":"","Menu 36 Enabled":"","Menu 36 Ext":"","Menu 36 Main Bind":"","Menu 36 Actor Bind":"","---Menu 37---":"","Menu 37 Name":"","Menu 37 Symbol":"","Menu 37 Show":"","Menu 37 Enabled":"","Menu 37 Ext":"","Menu 37 Main Bind":"","Menu 37 Actor Bind":"","---Menu 38---":"","Menu 38 Name":"","Menu 38 Symbol":"","Menu 38 Show":"","Menu 38 Enabled":"","Menu 38 Ext":"","Menu 38 Main Bind":"","Menu 38 Actor Bind":"","---Menu 39---":"","Menu 39 Name":"","Menu 39 Symbol":"","Menu 39 Show":"","Menu 39 Enabled":"","Menu 39 Ext":"","Menu 39 Main Bind":"","Menu 39 Actor Bind":"","---Menu 40---":"","Menu 40 Name":"","Menu 40 Symbol":"","Menu 40 Show":"","Menu 40 Enabled":"","Menu 40 Ext":"","Menu 40 Main Bind":"","Menu 40 Actor Bind":"","---Menu 41---":"","Menu 41 Name":"","Menu 41 Symbol":"","Menu 41 Show":"","Menu 41 Enabled":"","Menu 41 Ext":"","Menu 41 Main Bind":"","Menu 41 Actor Bind":"","---Menu 42---":"","Menu 42 Name":"","Menu 42 Symbol":"","Menu 42 Show":"","Menu 42 Enabled":"","Menu 42 Ext":"","Menu 42 Main Bind":"","Menu 42 Actor Bind":"","---Menu 43---":"","Menu 43 Name":"","Menu 43 Symbol":"","Menu 43 Show":"","Menu 43 Enabled":"","Menu 43 Ext":"","Menu 43 Main Bind":"","Menu 43 Actor Bind":"","---Menu 44---":"","Menu 44 Name":"","Menu 44 Symbol":"","Menu 44 Show":"","Menu 44 Enabled":"","Menu 44 Ext":"","Menu 44 Main Bind":"","Menu 44 Actor Bind":"","---Menu 45---":"","Menu 45 Name":"","Menu 45 Symbol":"","Menu 45 Show":"","Menu 45 Enabled":"","Menu 45 Ext":"","Menu 45 Main Bind":"","Menu 45 Actor Bind":"","---Menu 46---":"","Menu 46 Name":"","Menu 46 Symbol":"","Menu 46 Show":"","Menu 46 Enabled":"","Menu 46 Ext":"","Menu 46 Main Bind":"","Menu 46 Actor Bind":"","---Menu 47---":"","Menu 47 Name":"","Menu 47 Symbol":"","Menu 47 Show":"","Menu 47 Enabled":"","Menu 47 Ext":"","Menu 47 Main Bind":"","Menu 47 Actor Bind":"","---Menu 48---":"","Menu 48 Name":"","Menu 48 Symbol":"","Menu 48 Show":"","Menu 48 Enabled":"","Menu 48 Ext":"","Menu 48 Main Bind":"","Menu 48 Actor Bind":"","---Menu 49---":"","Menu 49 Name":"","Menu 49 Symbol":"","Menu 49 Show":"","Menu 49 Enabled":"","Menu 49 Ext":"","Menu 49 Main Bind":"","Menu 49 Actor Bind":"","---Menu 50---":"","Menu 50 Name":"TextManager.status","Menu 50 Symbol":"status","Menu 50 Show":"this.needsCommand('status')","Menu 50 Enabled":"this.areMainCommandsEnabled()","Menu 50 Ext":"","Menu 50 Main Bind":"this.commandPersonal.bind(this)","Menu 50 Actor Bind":"SceneManager.push(Scene_Status)","---Menu 51---":"","Menu 51 Name":"","Menu 51 Symbol":"","Menu 51 Show":"","Menu 51 Enabled":"","Menu 51 Ext":"","Menu 51 Main Bind":"","Menu 51 Actor Bind":"","---Menu 52---":"","Menu 52 Name":"","Menu 52 Symbol":"","Menu 52 Show":"","Menu 52 Enabled":"","Menu 52 Ext":"","Menu 52 Main Bind":"","Menu 52 Actor Bind":"","---Menu 53---":"","Menu 53 Name":"","Menu 53 Symbol":"","Menu 53 Show":"","Menu 53 Enabled":"","Menu 53 Ext":"","Menu 53 Main Bind":"","Menu 53 Actor Bind":"","---Menu 54---":"","Menu 54 Name":"","Menu 54 Symbol":"","Menu 54 Show":"","Menu 54 Enabled":"","Menu 54 Ext":"","Menu 54 Main Bind":"","Menu 54 Actor Bind":"","---Menu 55---":"","Menu 55 Name":"TextManager.formation","Menu 55 Symbol":"formation","Menu 55 Show":"this.needsCommand('formation')","Menu 55 Enabled":"this.isFormationEnabled()","Menu 55 Ext":"","Menu 55 Main Bind":"this.commandFormation.bind(this)","Menu 55 Actor Bind":"","---Menu 56---":"","Menu 56 Name":"","Menu 56 Symbol":"","Menu 56 Show":"","Menu 56 Enabled":"","Menu 56 Ext":"","Menu 56 Main Bind":"","Menu 56 Actor Bind":"","---Menu 57---":"","Menu 57 Name":"","Menu 57 Symbol":"","Menu 57 Show":"","Menu 57 Enabled":"","Menu 57 Ext":"","Menu 57 Main Bind":"","Menu 57 Actor Bind":"","---Menu 58---":"","Menu 58 Name":"","Menu 58 Symbol":"","Menu 58 Show":"","Menu 58 Enabled":"","Menu 58 Ext":"","Menu 58 Main Bind":"","Menu 58 Actor Bind":"","---Menu 59---":"","Menu 59 Name":"","Menu 59 Symbol":"","Menu 59 Show":"","Menu 59 Enabled":"","Menu 59 Ext":"","Menu 59 Main Bind":"","Menu 59 Actor Bind":"","---Menu 60---":"","Menu 60 Name":"","Menu 60 Symbol":"","Menu 60 Show":"","Menu 60 Enabled":"","Menu 60 Ext":"","Menu 60 Main Bind":"","Menu 60 Actor Bind":"","---Menu 61---":"","Menu 61 Name":"","Menu 61 Symbol":"","Menu 61 Show":"","Menu 61 Enabled":"","Menu 61 Ext":"","Menu 61 Main Bind":"","Menu 61 Actor Bind":"","---Menu 62---":"","Menu 62 Name":"","Menu 62 Symbol":"","Menu 62 Show":"","Menu 62 Enabled":"","Menu 62 Ext":"","Menu 62 Main Bind":"","Menu 62 Actor Bind":"","---Menu 63---":"","Menu 63 Name":"","Menu 63 Symbol":"","Menu 63 Show":"","Menu 63 Enabled":"","Menu 63 Ext":"","Menu 63 Main Bind":"","Menu 63 Actor Bind":"","---Menu 64---":"","Menu 64 Name":"","Menu 64 Symbol":"","Menu 64 Show":"","Menu 64 Enabled":"","Menu 64 Ext":"","Menu 64 Main Bind":"","Menu 64 Actor Bind":"","---Menu 65---":"","Menu 65 Name":"","Menu 65 Symbol":"","Menu 65 Show":"","Menu 65 Enabled":"","Menu 65 Ext":"","Menu 65 Main Bind":"","Menu 65 Actor Bind":"","---Menu 66---":"","Menu 66 Name":"","Menu 66 Symbol":"","Menu 66 Show":"","Menu 66 Enabled":"","Menu 66 Ext":"","Menu 66 Main Bind":"","Menu 66 Actor Bind":"","---Menu 67---":"","Menu 67 Name":"","Menu 67 Symbol":"","Menu 67 Show":"","Menu 67 Enabled":"","Menu 67 Ext":"","Menu 67 Main Bind":"","Menu 67 Actor Bind":"","---Menu 68---":"","Menu 68 Name":"","Menu 68 Symbol":"","Menu 68 Show":"","Menu 68 Enabled":"","Menu 68 Ext":"","Menu 68 Main Bind":"","Menu 68 Actor Bind":"","---Menu 69---":"","Menu 69 Name":"","Menu 69 Symbol":"","Menu 69 Show":"","Menu 69 Enabled":"","Menu 69 Ext":"","Menu 69 Main Bind":"","Menu 69 Actor Bind":"","---Menu 70---":"","Menu 70 Name":"","Menu 70 Symbol":"","Menu 70 Show":"","Menu 70 Enabled":"","Menu 70 Ext":"","Menu 70 Main Bind":"","Menu 70 Actor Bind":"","---Menu 71---":"","Menu 71 Name":"","Menu 71 Symbol":"","Menu 71 Show":"","Menu 71 Enabled":"","Menu 71 Ext":"","Menu 71 Main Bind":"","Menu 71 Actor Bind":"","---Menu 72---":"","Menu 72 Name":"","Menu 72 Symbol":"","Menu 72 Show":"","Menu 72 Enabled":"","Menu 72 Ext":"","Menu 72 Main Bind":"","Menu 72 Actor Bind":"","---Menu 73---":"","Menu 73 Name":"","Menu 73 Symbol":"","Menu 73 Show":"","Menu 73 Enabled":"","Menu 73 Ext":"","Menu 73 Main Bind":"","Menu 73 Actor Bind":"","---Menu 74---":"","Menu 74 Name":"","Menu 74 Symbol":"","Menu 74 Show":"","Menu 74 Enabled":"","Menu 74 Ext":"","Menu 74 Main Bind":"","Menu 74 Actor Bind":"","---Menu 75---":"","Menu 75 Name":"","Menu 75 Symbol":"","Menu 75 Show":"","Menu 75 Enabled":"","Menu 75 Ext":"","Menu 75 Main Bind":"","Menu 75 Actor Bind":"","---Menu 76---":"","Menu 76 Name":"","Menu 76 Symbol":"","Menu 76 Show":"","Menu 76 Enabled":"","Menu 76 Ext":"","Menu 76 Main Bind":"","Menu 76 Actor Bind":"","---Menu 77---":"","Menu 77 Name":"","Menu 77 Symbol":"","Menu 77 Show":"","Menu 77 Enabled":"","Menu 77 Ext":"","Menu 77 Main Bind":"","Menu 77 Actor Bind":"","---Menu 78---":"","Menu 78 Name":"","Menu 78 Symbol":"","Menu 78 Show":"","Menu 78 Enabled":"","Menu 78 Ext":"","Menu 78 Main Bind":"","Menu 78 Actor Bind":"","---Menu 79---":"","Menu 79 Name":"","Menu 79 Symbol":"","Menu 79 Show":"","Menu 79 Enabled":"","Menu 79 Ext":"","Menu 79 Main Bind":"","Menu 79 Actor Bind":"","---Menu 80---":"","Menu 80 Name":"","Menu 80 Symbol":"","Menu 80 Show":"","Menu 80 Enabled":"","Menu 80 Ext":"","Menu 80 Main Bind":"","Menu 80 Actor Bind":"","---Menu 81---":"","Menu 81 Name":"'Common Event 1'","Menu 81 Symbol":"common event","Menu 81 Show":"false","Menu 81 Enabled":"true","Menu 81 Ext":"1","Menu 81 Main Bind":"this.callCommonEvent.bind(this)","Menu 81 Actor Bind":"","---Menu 82---":"","Menu 82 Name":"'Common Event 2'","Menu 82 Symbol":"common event","Menu 82 Show":"false","Menu 82 Enabled":"true","Menu 82 Ext":"2","Menu 82 Main Bind":"this.callCommonEvent.bind(this)","Menu 82 Actor Bind":"","---Menu 83---":"","Menu 83 Name":"'Common Event 3'","Menu 83 Symbol":"common event","Menu 83 Show":"false","Menu 83 Enabled":"true","Menu 83 Ext":"3","Menu 83 Main Bind":"this.callCommonEvent.bind(this)","Menu 83 Actor Bind":"","---Menu 84---":"","Menu 84 Name":"","Menu 84 Symbol":"","Menu 84 Show":"","Menu 84 Enabled":"","Menu 84 Ext":"","Menu 84 Main Bind":"","Menu 84 Actor Bind":"","---Menu 85---":"","Menu 85 Name":"","Menu 85 Symbol":"","Menu 85 Show":"","Menu 85 Enabled":"","Menu 85 Ext":"","Menu 85 Main Bind":"","Menu 85 Actor Bind":"","---Menu 86---":"","Menu 86 Name":"","Menu 86 Symbol":"","Menu 86 Show":"","Menu 86 Enabled":"","Menu 86 Ext":"","Menu 86 Main Bind":"","Menu 86 Actor Bind":"","---Menu 87---":"","Menu 87 Name":"","Menu 87 Symbol":"","Menu 87 Show":"","Menu 87 Enabled":"","Menu 87 Ext":"","Menu 87 Main Bind":"","Menu 87 Actor Bind":"","---Menu 88---":"","Menu 88 Name":"","Menu 88 Symbol":"","Menu 88 Show":"","Menu 88 Enabled":"","Menu 88 Ext":"","Menu 88 Main Bind":"","Menu 88 Actor Bind":"","---Menu 89---":"","Menu 89 Name":"","Menu 89 Symbol":"","Menu 89 Show":"","Menu 89 Enabled":"","Menu 89 Ext":"","Menu 89 Main Bind":"","Menu 89 Actor Bind":"","---Menu 90---":"","Menu 90 Name":"TextManager.options","Menu 90 Symbol":"options","Menu 90 Show":"this.needsCommand('options')","Menu 90 Enabled":"this.isOptionsEnabled()","Menu 90 Ext":"","Menu 90 Main Bind":"this.commandOptions.bind(this)","Menu 90 Actor Bind":"","---Menu 91---":"","Menu 91 Name":"","Menu 91 Symbol":"","Menu 91 Show":"","Menu 91 Enabled":"","Menu 91 Ext":"","Menu 91 Main Bind":"","Menu 91 Actor Bind":"","---Menu 92---":"","Menu 92 Name":"","Menu 92 Symbol":"","Menu 92 Show":"","Menu 92 Enabled":"","Menu 92 Ext":"","Menu 92 Main Bind":"","Menu 92 Actor Bind":"","---Menu 93---":"","Menu 93 Name":"","Menu 93 Symbol":"","Menu 93 Show":"","Menu 93 Enabled":"","Menu 93 Ext":"","Menu 93 Main Bind":"","Menu 93 Actor Bind":"","---Menu 94---":"","Menu 94 Name":"","Menu 94 Symbol":"","Menu 94 Show":"","Menu 94 Enabled":"","Menu 94 Ext":"","Menu 94 Main Bind":"","Menu 94 Actor Bind":"","---Menu 95---":"","Menu 95 Name":"TextManager.save","Menu 95 Symbol":"save","Menu 95 Show":"this.needsCommand('save')","Menu 95 Enabled":"this.isSaveEnabled()","Menu 95 Ext":"","Menu 95 Main Bind":"this.commandSave.bind(this)","Menu 95 Actor Bind":"","---Menu 96---":"","Menu 96 Name":"","Menu 96 Symbol":"","Menu 96 Show":"","Menu 96 Enabled":"","Menu 96 Ext":"","Menu 96 Main Bind":"","Menu 96 Actor Bind":"","---Menu 97---":"","Menu 97 Name":"","Menu 97 Symbol":"","Menu 97 Show":"","Menu 97 Enabled":"","Menu 97 Ext":"","Menu 97 Main Bind":"","Menu 97 Actor Bind":"","---Menu 98---":"","Menu 98 Name":"","Menu 98 Symbol":"","Menu 98 Show":"","Menu 98 Enabled":"","Menu 98 Ext":"","Menu 98 Main Bind":"","Menu 98 Actor Bind":"","---Menu 99---":"","Menu 99 Name":"'Debug'","Menu 99 Symbol":"debug","Menu 99 Show":"$gameTemp.isPlaytest()","Menu 99 Enabled":"true","Menu 99 Ext":"","Menu 99 Main Bind":"this.commandDebug.bind(this)","Menu 99 Actor Bind":"","---Menu 100---":"","Menu 100 Name":"TextManager.gameEnd","Menu 100 Symbol":"gameEnd","Menu 100 Show":"true","Menu 100 Enabled":"this.isGameEndEnabled()","Menu 100 Ext":"","Menu 100 Main Bind":"this.commandGameEnd.bind(this)","Menu 100 Actor Bind":""}}, {"name":"YEP_MapGoldWindow","status":true,"description":"v1.02 Allows you to display the gold window on your map.","parameters":{"Automatic Open":"true","Default Position":"9","Opacity":"255"}}, -{"name":"YEP_MusicMenu","status":true,"description":"v1.01 Access and play music from a menu! Players can unlock\nsongs from in the game as they play.","parameters":{"---General---":"","Music Icon":"80","Hidden Name":"? ? ? ? ?","Hidden Help":"This song hasn't been unlocked yet.","---Song List---":"","Song 1 Data":"Theme1; Title Theme; 90; 100; 0; Title theme for this game!","Song 2 Data":"Battle1; Let's Battle; 100; 100; 0; En garde!","Song 3 Data":"Field1; World of Fantasy; 90; 110; 0; The overworld theme!","Song 4 Data":"Town1; Calm, Peaceful Days; 90; 100; 0; Our town theme!","Song 5 Data":"Castle1; Castle Royalty; 90; 100; 0; Living a life of royalty!","Song 6 Data":"Dungeon1; Depths of Dungeon Diving; 90; 100; 0; So mysterious!","Song 7 Data":"Scene1; Day to Day; 90; 100; 0; Living life one day at a time!","Song 8 Data":"Ship1; Let's Set Sail!; 90; 100; 0; Ahoy! To open waters we go!","Song 9 Data":"","Song 10 Data":"","Song 11 Data":"","Song 12 Data":"","Song 13 Data":"","Song 14 Data":"","Song 15 Data":"","Song 16 Data":"","Song 17 Data":"","Song 18 Data":"","Song 19 Data":"","Song 20 Data":"","Song 21 Data":"","Song 22 Data":"","Song 23 Data":"","Song 24 Data":"","Song 25 Data":"","Song 26 Data":"","Song 27 Data":"","Song 28 Data":"","Song 29 Data":"","Song 30 Data":"","Song 31 Data":"","Song 32 Data":"","Song 33 Data":"","Song 34 Data":"","Song 35 Data":"","Song 36 Data":"","Song 37 Data":"","Song 38 Data":"","Song 39 Data":"","Song 40 Data":"","Song 41 Data":"","Song 42 Data":"","Song 43 Data":"","Song 44 Data":"","Song 45 Data":"","Song 46 Data":"","Song 47 Data":"","Song 48 Data":"","Song 49 Data":"","Song 50 Data":"","Song 51 Data":"","Song 52 Data":"","Song 53 Data":"","Song 54 Data":"","Song 55 Data":"","Song 56 Data":"","Song 57 Data":"","Song 58 Data":"","Song 59 Data":"","Song 60 Data":"","Song 61 Data":"","Song 62 Data":"","Song 63 Data":"","Song 64 Data":"","Song 65 Data":"","Song 66 Data":"","Song 67 Data":"","Song 68 Data":"","Song 69 Data":"","Song 70 Data":"","Song 71 Data":"","Song 72 Data":"","Song 73 Data":"","Song 74 Data":"","Song 75 Data":"","Song 76 Data":"","Song 77 Data":"","Song 78 Data":"","Song 79 Data":"","Song 80 Data":"","Song 81 Data":"","Song 82 Data":"","Song 83 Data":"","Song 84 Data":"","Song 85 Data":"","Song 86 Data":"","Song 87 Data":"","Song 88 Data":"","Song 89 Data":"","Song 90 Data":"","Song 91 Data":"","Song 92 Data":"","Song 93 Data":"","Song 94 Data":"","Song 95 Data":"","Song 96 Data":"","Song 97 Data":"","Song 98 Data":"","Song 99 Data":"","Song 100 Data":""}}, {"name":"YEP_PartySystem","status":true,"description":"v1.13 Replaces the default 'Formation' command with a new\nmenu for players to easily change party formations.","parameters":{"---General---":"","Max Battle Members":"4","Show Battle Command":"true","Enable Battle Command":"true","Battle Cooldown":"1","Maximum Followers":"4","EXP Distribution":"false","---Menu---":"","Help Window":"false","Text Alignment":"center","Change Command":"Change","Remove Command":"Remove","Revert Command":"Revert","Finish Command":"Finish","---Selection---":"","Empty Text":"- Empty -","Actor Face":"true","Actor Sprite":"true","---List---":"","Remove Icon":"16","Show Sprite":"true","Sprite Y Buffer":"16","In Party Text Color":"6","---Locking---":"","Lock First Actor":"false","Locked Icon":"195","Required Icon":"205","---Detail Window---":"","Enable Detail Window":"true","List Width":"300","Actor Parameters":"Parameters","Actor Equipment":"Equipment"}}, {"name":"YEP_RegionBattlebacks","status":true,"description":"v1.01 This lets you assign certain battlebacks to specific\nregion ID's when entering battle in that region.","parameters":{"---Default---":"","Default 1":"Grassland","Default 2":"Grassland","---Ship---":"","Ship 1":"Ship","Ship 2":"Ship","---Forest---":"","Forest 1":"There is none.","Forest 2":"Forest","---Cliff---":"","Cliff 1":"There is none.","Cliff 2":"Cliff","---Wasteland---":"","Wasteland 1":"Wasteland","Wasteland 2":"Wasteland","---Dirtfield---":"","Dirtfield 1":"Wasteland","Dirtfield 2":"There is none.","---Desert---":"","Desert 1":"Desert","Desert 2":"Desert","---Lava1---":"","Lava1 1":"Lava1","Lava1 2":"Lava","---Lava2---":"","Lava2 1":"Lava2","Lava2 2":"Lava","---Snowfield---":"","Snowfield 1":"Snowfield","Snowfield 2":"Snowfield","---Clouds---":"","Clouds 1":"Clouds","Clouds 2":"Clouds","---PoisonSwamp---":"","PoisonSwamp 1":"PoisonSwamp","PoisonSwamp 2":"PoisonSwamp"}}, {"name":"YEP_RegionEvents","status":true,"description":"v1.03 Make it so that whenever players step on certain\nRegion ID's, the game will play certain common events.","parameters":{"---Regions 1 to 20---":"","Region 1":"0","Region 2":"0","Region 3":"0","Region 4":"0","Region 5":"0","Region 6":"0","Region 7":"0","Region 8":"0","Region 9":"0","Region 10":"0","Region 11":"0","Region 12":"0","Region 13":"0","Region 14":"0","Region 15":"0","Region 16":"0","Region 17":"0","Region 18":"0","Region 19":"0","Region 20":"0","---Regions 21 to 40---":"","Region 21":"0","Region 22":"0","Region 23":"0","Region 24":"0","Region 25":"0","Region 26":"0","Region 27":"0","Region 28":"0","Region 29":"0","Region 30":"0","Region 31":"0","Region 32":"0","Region 33":"0","Region 34":"0","Region 35":"0","Region 36":"0","Region 37":"0","Region 38":"0","Region 39":"0","Region 40":"0","---Regions 41 to 60---":"","Region 41":"0","Region 42":"0","Region 43":"0","Region 44":"0","Region 45":"0","Region 46":"0","Region 47":"0","Region 48":"0","Region 49":"0","Region 50":"0","Region 51":"0","Region 52":"0","Region 53":"0","Region 54":"0","Region 55":"0","Region 56":"0","Region 57":"0","Region 58":"0","Region 59":"0","Region 60":"0","---Regions 61 to 80---":"","Region 61":"0","Region 62":"0","Region 63":"0","Region 64":"0","Region 65":"0","Region 66":"0","Region 67":"0","Region 68":"0","Region 69":"0","Region 70":"0","Region 71":"0","Region 72":"0","Region 73":"0","Region 74":"0","Region 75":"0","Region 76":"0","Region 77":"0","Region 78":"0","Region 79":"0","Region 80":"0","---Regions 81 to 100---":"","Region 81":"0","Region 82":"0","Region 83":"0","Region 84":"0","Region 85":"0","Region 86":"0","Region 87":"0","Region 88":"0","Region 89":"0","Region 90":"0","Region 91":"0","Region 92":"0","Region 93":"0","Region 94":"0","Region 95":"0","Region 96":"0","Region 97":"0","Region 98":"0","Region 99":"0","Region 100":"0","---Regions 101 to 120---":"","Region 101":"0","Region 102":"0","Region 103":"0","Region 104":"0","Region 105":"0","Region 106":"0","Region 107":"0","Region 108":"0","Region 109":"0","Region 110":"0","Region 111":"0","Region 112":"0","Region 113":"0","Region 114":"0","Region 115":"0","Region 116":"0","Region 117":"0","Region 118":"0","Region 119":"0","Region 120":"0","---Regions 121 to 140---":"","Region 121":"0","Region 122":"0","Region 123":"0","Region 124":"0","Region 125":"0","Region 126":"0","Region 127":"0","Region 128":"0","Region 129":"0","Region 130":"0","Region 131":"0","Region 132":"0","Region 133":"0","Region 134":"0","Region 135":"0","Region 136":"0","Region 137":"0","Region 138":"0","Region 139":"0","Region 140":"0","---Regions 141 to 160---":"","Region 141":"0","Region 142":"0","Region 143":"0","Region 144":"0","Region 145":"0","Region 146":"0","Region 147":"0","Region 148":"0","Region 149":"0","Region 150":"0","Region 151":"0","Region 152":"0","Region 153":"0","Region 154":"0","Region 155":"0","Region 156":"0","Region 157":"0","Region 158":"0","Region 159":"0","Region 160":"0","---Regions 161 to 180---":"","Region 161":"0","Region 162":"0","Region 163":"0","Region 164":"0","Region 165":"0","Region 166":"0","Region 167":"0","Region 168":"0","Region 169":"0","Region 170":"0","Region 171":"0","Region 172":"0","Region 173":"0","Region 174":"0","Region 175":"0","Region 176":"0","Region 177":"0","Region 178":"0","Region 179":"0","Region 180":"0","---Regions 181 to 200---":"","Region 181":"0","Region 182":"0","Region 183":"0","Region 184":"0","Region 185":"0","Region 186":"0","Region 187":"0","Region 188":"0","Region 189":"0","Region 190":"0","Region 191":"0","Region 192":"0","Region 193":"0","Region 194":"0","Region 195":"0","Region 196":"0","Region 197":"0","Region 198":"0","Region 199":"0","Region 200":"0","---Regions 201 to 220---":"","Region 201":"0","Region 202":"0","Region 203":"0","Region 204":"0","Region 205":"0","Region 206":"0","Region 207":"0","Region 208":"0","Region 209":"0","Region 210":"0","Region 211":"0","Region 212":"0","Region 213":"0","Region 214":"0","Region 215":"0","Region 216":"0","Region 217":"0","Region 218":"0","Region 219":"0","Region 220":"0","---Regions 221 to 240---":"","Region 221":"0","Region 222":"0","Region 223":"0","Region 224":"0","Region 225":"0","Region 226":"0","Region 227":"0","Region 228":"0","Region 229":"0","Region 230":"0","Region 231":"0","Region 232":"0","Region 233":"0","Region 234":"0","Region 235":"0","Region 236":"0","Region 237":"0","Region 238":"0","Region 239":"0","Region 240":"0","---Regions 241 to 255---":"","Region 241":"0","Region 242":"0","Region 243":"0","Region 244":"0","Region 245":"0","Region 246":"0","Region 247":"0","Region 248":"0","Region 249":"0","Region 250":"0","Region 251":"0","Region 252":"0","Region 253":"0","Region 254":"0","Region 255":"0"}}, {"name":"YEP_SaveCore","status":true,"description":"v1.06 Alter the save menu for a more aesthetic layout\nand take control over the file system's rules.","parameters":{"---General---":"","Max Files":"24","Saved Icon":"231","Empty Icon":"230","Return After Saving":"false","Auto New Index":"true","---Action Window---":"","Load Command":"Load","Save Command":"Save","Delete Command":"Delete","---Help Window---":"","Select Help":"Please select a file slot.","Load Help":"Loads the data from the saved game.","Save Help":"Saves the current progress in your game.","Delete Help":"Deletes all data from this save file.","---Delete---":"","Delete Filename":"Damage2","Delete Volume":"100","Delete Pitch":"150","Delete Pan":"0","---Info Window---":"","Show Game Title":"true","Invalid Game Text":"This save is for a different game.","Empty Game Text":"Empty","Map Display Name":"true","Party Display":"2","Party Y Position":"this.lineHeight() + Window_Base._faceHeight","Show Actor Names":"true","Name Font Size":"20","Show Actor Level":"true","Level Font Size":"20","Level Format":"\\c[16]%1 \\c[0]%3","Data Font Size":"20","Data Column 1":"empty, playtime, save count, gold count","Data Column 2":"location, variable 1, variable 2, variable 3","Data Column 3":"empty, variable 4, variable 5, variable 6","Data Column 4":"","---Vocabulary---":"","Map Location":"","Playtime":"Playtime:","Save Count":"Total Saves:","Gold Count":"%1:","---Technical---":"","Save Mode":"auto","Local Config":"config.rpgsave","Local Global":"global.rpgsave","Local Save":"file%1.rpgsave","Web Config":"RPG %1 Config","Web Global":"RPG %1 Global","Web Save":"RPG %1 File%2","---Confirmation---":"","Load Confirmation":"true","Load Text":"Do you wish to load this save file?","Save Confirmation":"true","Save Text":"Do you wish to overwrite this save file?","Delete Confirmation":"true","Delete Text":"Do you wish to delete this save file?","Confirm Yes":"Yes","Confirm No":"No"}}, {"name":"YEP_ShopMenuCore","status":true,"description":"v1.05 Revamps the shop menu appearance and provides the\nframework for many new shop options.","parameters":{"---General---":"","Command Order":"Buy Sell Equip Custom Cancel","Shop List Width":"Graphics.boxWidth / 2 + Graphics.boxWidth / 10","Command Alignment":"center","---Status Window---":"","Default Mode":"actor","Stat Switching":"true","Cannot Equip":"Can't Equip","Stat Font Size":"20","Cannot Equip Font Size":"20","---Info Window---":"","Show Icon":"true","Icon Size":"128","Font Size":"20","Recovery Format":"%1 Heal","Add State":"+State","Add Buff":"+Buff","Remove State":"-State","Remove Buff":"-Buff","Maximum Icons":"4"}}, {"name":"YEP_SkillLearnSystem","status":true,"description":"v1.17 Allows actors to learn skills from the skill menu\nthrough crafting them via items or otherwise.","parameters":{"---General---":"","Learn Command":"Learn Skills","Show Command":"true","Enable Command":"true","Integrate":"false","---Confirm Learn---":"","Confirm Window":"true","Confirm Text":"Have %1 learn %2?","Confirm Yes":"Yes","Confirm No":"No","---Skill Learn---":"","Learned Text":"Learned","Learned Size":"20","Learn Cost":"Learn Skill Cost","Cost Size":"20","Show Gold Window":"true","---Default---":"","Default Gold Cost":"1000","Default JP Cost":"100"}}, -{"name":"YEP_SkillMasteryLevels","status":true,"description":"v1.00 Using skills improves skill mastery. As skill mastery\nimproves, skill costs drop and/or skill damage rises!","parameters":{"---Settings---":"","Default Max Mastery":"10","Level Formula":"level * 5 // Increases by 5 each level","Damage Formula":"value * (1.00 + (level * 0.20)) // +20% per level","MP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum MP Cost":"1","TP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum TP Cost":"1","(YEP_SkillCore)":"","HP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum HP Cost":"1","(YEP_X_SkillCooldowns)":"","Cooldown Formula":"turns - (level * 1) // -1 turn per level","Minimum Cooldown":"1","---Visual---":"","Level Up Animation":"0","Mirror Actor":"true","Mirror Enemy":"false","Draw Gauge":"true","Gauge Color 1":"12","Gauge Color 2":"4","Gauge Height":"6","Gauge Outline":"true","Draw Level":"true","Show Level 0":"false","Text Color":"29","Text Align":"right","Text Format":"LV.%1","Text Size":"14","Text Y Offset":"-8"}}, +{"name":"YEP_SkillMasteryLevels","status":false,"description":"v1.00 Using skills improves skill mastery. As skill mastery\nimproves, skill costs drop and/or skill damage rises!","parameters":{"---Settings---":"","Default Max Mastery":"10","Level Formula":"level * 5 // Increases by 5 each level","Damage Formula":"value * (1.00 + (level * 0.20)) // +20% per level","MP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum MP Cost":"1","TP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum TP Cost":"1","(YEP_SkillCore)":"","HP Cost Formula":"cost * (1.00 + (level * 0.10)) // -10% per level","Minimum HP Cost":"1","(YEP_X_SkillCooldowns)":"","Cooldown Formula":"turns - (level * 1) // -1 turn per level","Minimum Cooldown":"1","---Visual---":"","Level Up Animation":"0","Mirror Actor":"true","Mirror Enemy":"false","Draw Gauge":"true","Gauge Color 1":"12","Gauge Color 2":"4","Gauge Height":"6","Gauge Outline":"true","Draw Level":"true","Show Level 0":"false","Text Color":"29","Text Align":"right","Text Format":"LV.%1","Text Size":"14","Text Y Offset":"-8"}}, {"name":"YEP_Taunt","status":true,"description":"v1.02 Adds a Taunt mechanic to battle. Battlers with a\ntaunt property become the target of enemy focus.","parameters":{}}, {"name":"YEP_VictoryAftermath","status":true,"description":"v1.07 Display an informative window after a battle is over\ninstead of message box text stating what the party earned.","parameters":{"---General---":"","Victory Order":"exp custom drops","---BGM---":"","Victory BGM":"Ship3","BGM Volume":"90","BGM Pitch":"100","BGM Pan":"0","---Battle Results---":"","Cheer Wait":"90","Battle Results Text":"Battle Results","Battle Drops Text":"Battle Spoils","---EXP Window---":"","Font Size":"28","Level Up Text":"LEVEL UP!","Max Level Text":"MAX LEVEL","Show Skills Learned":"false","Gained EXP Text":"Gained EXP","Gained EXP Format":"+%1","EXP Gauge Color 1":"30","EXP Gauge Color 2":"31","Level Gauge Color 1":"14","Level Gauge Color 2":"6","Gauge Ticks":"15","Tick SE":"Absorb2","Tick Volume":"90","Tick Pitch":"150","Tick Pan":"0"}}, {"name":"YEP_WeaponAnimation","status":true,"description":"v1.05 This plugin allows you to go past the standard\nweapon images and even using custom images.","parameters":{"Image Filepath":"img/weapons/","Image Smoothing":"false","Default Motion":"swing"}}, {"name":"YEP_X_ActSeqPack1","status":true,"description":"v1.13 (Requires YEP_BattleEngineCore.js) Basic functions are\nadded to the Battle Engine Core's action sequences.","parameters":{"Default Volume":"90","Default Pitch":"100","Default Pan":"0"}}, {"name":"YEP_X_ActSeqPack2","status":true,"description":"v1.12 (Requires YEP_BattleEngineCore.js) Visual functions\nare added to the Battle Engine Core's action sequences.","parameters":{}}, {"name":"YEP_X_ActSeqPack3","status":true,"description":"v1.05 (Requires YEP_BattleEngineCore.js) Camera control is\nadded to the Battle Engine Core's action sequences.","parameters":{"Camera Option":"Battle Camera"}}, -{"name":"YEP_X_ActorAutoBattleAI","status":true,"description":"v1.01 (Req YEP_BattleAICore) Give auto battle actors the same\ntype of A.I. that you can assign using the Battle AI Core's notetags.","parameters":{"Default AI Level":"100","Bypass Requirement":"[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\"]","Curate Skill List":"true","Undecided AI":"false"}}, +{"name":"YEP_X_ActorAutoBattleAI","status":false,"description":"v1.01 (Req YEP_BattleAICore) Give auto battle actors the same\ntype of A.I. that you can assign using the Battle AI Core's notetags.","parameters":{"Default AI Level":"100","Bypass Requirement":"[\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\"]","Curate Skill List":"true","Undecided AI":"false"}}, {"name":"YEP_X_AftermathLevelUp","status":true,"description":"v1.01 (Requires YEP_VictoryAftermath.js) Adds a level up\nportion to the Victory Aftermath sequences.","parameters":{"---General---":"","Level Up Title":"%1 has reached Level %2!","Enable Aftermath":"true","Font Size":"28","---Skill Learn---":"","Skill Text Singular":"Acquired Skill","Skill Text Plural":"Acquired Skills","Skill List Width":"200"}}, -{"name":"YEP_X_AnimatedSVEnemies","status":true,"description":"v1.20 (Requires YEP_BattleEngineCore.js) This plugin lets\nyou use Animated Sideview Actors for enemies!","parameters":{"---General---":"","Anchor X":"0.5","Anchor Y":"1.0","Sprite Smoothing":"true","Sprite Width":"auto","Sprite Height":"auto","Collapse":"false","Frame Speed":"12","Show State Overlay":"true","---Shadows---":"","Show Shadow":"false","Shadow Scale X":"auto","Shadow Scale Y":"auto","---Breathing---":"","Enable Breathing":"1","Breathing Speed":"20","Breathing X Rate":"0.001","Breathing Y Rate":"0.020","HP Link Breathing":"false","---Floating---":"","Floating Speed":"20","Floating Rate":"0.3","Floating Height":"50","Floating Death":"true","---Motions---":"","Attack Motion":"thrust","Idle Motion":"walk","Damage Motion":"damage","Evade Motion":"evade","Escape Motion":"escape","Guard Motion":"guard","Abnormal Motion":"abnormal","Sleep Motion":"sleep","Dying Motion":"dying","Dead Motion":"dead","---Weapons---":"","Weapon Image Index":"0","Weapon 1 Motion":"swing","Weapon 1 Animation":"6","Weapon 2 Motion":"swing","Weapon 2 Animation":"6","Weapon 3 Motion":"swing","Weapon 3 Animation":"1","Weapon 4 Motion":"swing","Weapon 4 Animation":"6","Weapon 5 Motion":"swing","Weapon 5 Animation":"6","Weapon 6 Motion":"swing","Weapon 6 Animation":"1","Weapon 7 Motion":"missile","Weapon 7 Animation":"11","Weapon 8 Motion":"missile","Weapon 8 Animation":"11","Weapon 9 Motion":"missile","Weapon 9 Animation":"111","Weapon 10 Motion":"thrust","Weapon 10 Animation":"16","Weapon 11 Motion":"thrust","Weapon 11 Animation":"1","Weapon 12 Motion":"thrust","Weapon 12 Animation":"11","Weapon 13 Motion":"swing","Weapon 13 Animation":"1","Weapon 14 Motion":"swing","Weapon 14 Animation":"1","Weapon 15 Motion":"swing","Weapon 15 Animation":"1","Weapon 16 Motion":"swing","Weapon 16 Animation":"6","Weapon 17 Motion":"swing","Weapon 17 Animation":"7","Weapon 18 Motion":"swing","Weapon 18 Animation":"1","Weapon 19 Motion":"missile","Weapon 19 Animation":"11","Weapon 20 Motion":"missile","Weapon 20 Animation":"111","Weapon 21 Motion":"missile","Weapon 21 Animation":"111","Weapon 22 Motion":"thrust","Weapon 22 Animation":"7","Weapon 23 Motion":"missile","Weapon 23 Animation":"15","Weapon 24 Motion":"thrust","Weapon 24 Animation":"15","Weapon 25 Motion":"swing","Weapon 25 Animation":"1","Weapon 26 Motion":"thrust","Weapon 26 Animation":"1","Weapon 27 Motion":"thrust","Weapon 27 Animation":"1","Weapon 28 Motion":"thrust","Weapon 28 Animation":"1","Weapon 29 Motion":"thrust","Weapon 29 Animation":"1","Weapon 30 Motion":"thrust","Weapon 30 Animation":"1"}}, +{"name":"YEP_X_AnimatedSVEnemies","status":false,"description":"v1.20 (Requires YEP_BattleEngineCore.js) This plugin lets\nyou use Animated Sideview Actors for enemies!","parameters":{"---General---":"","Anchor X":"0.5","Anchor Y":"1.0","Sprite Smoothing":"true","Sprite Width":"auto","Sprite Height":"auto","Collapse":"false","Frame Speed":"12","Show State Overlay":"true","---Shadows---":"","Show Shadow":"false","Shadow Scale X":"auto","Shadow Scale Y":"auto","---Breathing---":"","Enable Breathing":"1","Breathing Speed":"20","Breathing X Rate":"0.001","Breathing Y Rate":"0.020","HP Link Breathing":"false","---Floating---":"","Floating Speed":"20","Floating Rate":"0.3","Floating Height":"50","Floating Death":"true","---Motions---":"","Attack Motion":"thrust","Idle Motion":"walk","Damage Motion":"damage","Evade Motion":"evade","Escape Motion":"escape","Guard Motion":"guard","Abnormal Motion":"abnormal","Sleep Motion":"sleep","Dying Motion":"dying","Dead Motion":"dead","---Weapons---":"","Weapon Image Index":"0","Weapon 1 Motion":"swing","Weapon 1 Animation":"6","Weapon 2 Motion":"swing","Weapon 2 Animation":"6","Weapon 3 Motion":"swing","Weapon 3 Animation":"1","Weapon 4 Motion":"swing","Weapon 4 Animation":"6","Weapon 5 Motion":"swing","Weapon 5 Animation":"6","Weapon 6 Motion":"swing","Weapon 6 Animation":"1","Weapon 7 Motion":"missile","Weapon 7 Animation":"11","Weapon 8 Motion":"missile","Weapon 8 Animation":"11","Weapon 9 Motion":"missile","Weapon 9 Animation":"111","Weapon 10 Motion":"thrust","Weapon 10 Animation":"16","Weapon 11 Motion":"thrust","Weapon 11 Animation":"1","Weapon 12 Motion":"thrust","Weapon 12 Animation":"11","Weapon 13 Motion":"swing","Weapon 13 Animation":"1","Weapon 14 Motion":"swing","Weapon 14 Animation":"1","Weapon 15 Motion":"swing","Weapon 15 Animation":"1","Weapon 16 Motion":"swing","Weapon 16 Animation":"6","Weapon 17 Motion":"swing","Weapon 17 Animation":"7","Weapon 18 Motion":"swing","Weapon 18 Animation":"1","Weapon 19 Motion":"missile","Weapon 19 Animation":"11","Weapon 20 Motion":"missile","Weapon 20 Animation":"111","Weapon 21 Motion":"missile","Weapon 21 Animation":"111","Weapon 22 Motion":"thrust","Weapon 22 Animation":"7","Weapon 23 Motion":"missile","Weapon 23 Animation":"15","Weapon 24 Motion":"thrust","Weapon 24 Animation":"15","Weapon 25 Motion":"swing","Weapon 25 Animation":"1","Weapon 26 Motion":"thrust","Weapon 26 Animation":"1","Weapon 27 Motion":"thrust","Weapon 27 Animation":"1","Weapon 28 Motion":"thrust","Weapon 28 Animation":"1","Weapon 29 Motion":"thrust","Weapon 29 Animation":"1","Weapon 30 Motion":"thrust","Weapon 30 Animation":"1"}}, {"name":"YEP_X_AttachAugments","status":true,"description":"v1.11 (Requires YEP_ItemCore.js) Players can attach and\ndetach augments to independent equipment.","parameters":{"---Default---":"","Weapon Slots":"Glyph, Mark, Orb, Orb","Armor Slots":"Sphere, Orb, Orb, Orb","Enable Augments":"true","Show Augments":"true","---Command Window---":"","Augment Slot Format":"\\c[16]%1:\\c[0] %2","No Augment Text":"\\c[7]- None -","Remove Augment":"\\i[16]Detach Augment","---Info Window---":"","Show Augment Info":"true","Info Title":"Augments","Title Alignment":"center"}}, {"name":"YEP_X_Autosave","status":true,"description":"v1.00 (Req YEP_SaveCore.js) Adds Autosave functionality to your\nRPG Maker game.","parameters":{"---Automatic---":"","OnMapLoad":"false","OnMainMenu":"false","---Option Menu---":"","Show Option":"true","Option Name":"Autosave","Default":"true","---Visual---":"","ShowAutosave":"true","AutosaveMsgSave":"\\i[83]Autosave Complete!","AutosaveMsgLoad":"\\i[83]Autosave Loaded!","MsgGradient1":"rgba(0, 0, 0, 0)","MsgGradient2":"rgba(0, 0, 0, 0.6)","MsgGradientCode":"\"var textWidth = this.textWidthEx(this.message());\\nvar half = this.textPadding() + Math.ceil(textWidth / 2);\\nvar height = this.lineHeight();\\nvar color1 = Yanfly.Param.AutosaveMsgColor1;\\nvar color2 = Yanfly.Param.AutosaveMsgColor2;\\nthis.contents.gradientFillRect(0, 0, half, height, color1, color2);\\nthis.contents.gradientFillRect(half, 0, this.width - half, height, color2, color1);\"","MsgX":"Graphics.boxWidth - 180","MsgY":"Graphics.boxHeight - this.fittingHeight(1) * 2","MsgDuration":"120","FadeSpeed":"16"}}, -{"name":"YEP_X_BattleSysCTB","status":true,"description":"v1.17 (Requires YEP_BattleEngineCore.js) Add CTB (Charge\nTurn Battle) into your game using this plugin!","parameters":{"---CTB Settings---":"","Per Tick":"user.agi","Initial Speed":"0","Full Gauge":"Math.max(7000, BattleManager.highestBaseAgi() * 120)","Pre-Emptive Bonuses":"0.8","Surprise Bonuses":"0.8","---Escape---":"","Escape Ratio":"0.125 * $gameParty.agility() / $gameTroop.agility()","Fail Escape Boost":"0.025","---Turn---":"","Full Turn":"Math.min(200, BattleManager.lowestBaseAgi() * 8)","---Rubberband---":"","Enable Rubberband":"true","Minimum Speed":"0.5 * BattleManager.highestBaseAgi()","Maximum Speed":"1.5 * BattleManager.highestBaseAgi()","---Sound---":"","Ready Sound":"Decision1","Ready Volume":"90","Ready Pitch":"120","Ready Pan":"0","---Turn Order---":"","Show Turn Order":"true","Icon Size":"32","Position Y":"54","Position X":"right","Turn Direction":"left","Ally Border Color":"4","Ally Back Color":"22","Ally Icon":"0","Enemy Border Color":"2","Enemy Back Color":"19","Enemy Icon":"0","Enemy SV Battlers":"false"}}, {"name":"YEP_X_ChangeBattleEquip","status":true,"description":"v1.05 (Requires YEP_BattleEngineCore & YEP_EquipCore)\nAllow your actors to change equipment mid-battle.","parameters":{"Command Name":"Equip","Equip Cooldown":"1"}}, {"name":"YEP_X_CounterControl","status":true,"description":"v1.10 (Requires YEP_BattleEngineCore.js) Gives you more\ncontrol over how counters work in RPG Maker MV!","parameters":{"---General---":"","Queue Max":"20","---Default Traits---":"","Counter Skill":"1","Evade Counter":"false","Counter Name":"Counter-%1","Counter Icon":"78","Counter Total":"1","Ally Counter":"false","---Default Conditions---":"","Physical":"true","Single Target":"true","Not Counter":"false"}}, {"name":"YEP_X_DifficultySlider","status":true,"description":"v1.04 (Requires YEP_EnemyLevels.js) Give your players\naccess to an option that allows them to change difficulty.","parameters":{"---Options---":"","Command Text":"Difficulty","Default Show":"true","---Settings---":"","Default Difficulty":"100","Minimum Difficulty":"50","Maximum Difficulty":"200","Change Increment":"25","---Formulas---":"","Base Level Formula":"level * multiplier / 100","Maximum Level Formula":"level * multiplier / 100","Minimum Level Formula":"level * multiplier / 100"}}, {"name":"YEP_X_EquipRequirements","status":true,"description":"v1.09 (Requires YEP_EquipCore.js) Place requirements on\npieces of equipment before actors can use them!","parameters":{"---General---":"","Requirement Window":"true","Battle Test Ignore":"true","---Window---":"","Requirement Title":"Requirements","No Requirement":"No Requirements!","Positive Color":"24","Negative Color":"25","At Least Text":"\\c[16]Minimum %1:\\c[0] %2 (%3)","At Most Text":"\\c[16]Maximum %1:\\c[0] %2 (%3)","Draw Classes":"true","Class Style":"0","Class Text":"Class:","Draw Skills":"true","Skill Style":"2","Skill Text":"Skill:","Draw Switches":"true"}}, {"name":"YEP_X_ExtDoT","status":true,"description":"v1.04 (Req YEP_BattleEngineCore & YEP_BuffsStatesCore)\nCreate custom DoT formulas and effects with ease.","parameters":{"---Defaults---":"","Regen Animation":"46","DoT Animation":"59","Default Variance":"20","Default Element":"0"}}, -{"name":"YEP_X_InBattleStatus","status":true,"description":"v1.01 (Requires YEP_BattleEngineCore.js) Adds a 'Status'\noption in the Party Window in battle.","parameters":{"---General---":"","Command Text":"Status","Show Command":"true","Window X":"0","Window Y":"this.fittingHeight(2)","Window Width":"Graphics.boxWidth","Window Height":"Graphics.boxHeight - this.fittingHeight(2) - this.fittingHeight(4)","---Status List---":"","Status Width":"Math.max(312, Graphics.boxWidth / 4);","State Help Front":"\\i[%1]%2","State Help End":"","Healthy Icon":"127","Healthy Text":"Healthy","Healthy Help":"User is currently unaffected by status effects.","---Buffs List---":"","MaxHP Buff Text":"MaxHP Up","MaxHP Buff Help":"Raises Maximum Health to %1%.","MaxMP Buff Text":"MaxMP Up","MaxMP Buff Help":"Raises Maximum Mana to %1%.","ATK Buff Text":"ATK Up","ATK Buff Help":"Raises Attack to %1%.","DEF Buff Text":"DEF Up","DEF Buff Help":"Raises Defense to %1%.","MAT Buff Text":"MAT Up","MAT Buff Help":"Raises Magic Attack to %1%.","MDF Buff Text":"MDF Up","MDF Buff Help":"Raises Magic Defense to %1%.","AGI Buff Text":"AGI Up","AGI Buff Help":"Raises Agility to %1%.","LUK Buff Text":"LUK Up","LUK Buff Help":"Raises Luck to %1%.","---Debuffs List---":"","MaxHP Debuff Text":"MaxHP Down","MaxHP Debuff Help":"Lowers Maximum Health to %1%.","MaxMP Debuff Text":"MaxMP Down","MaxMP Debuff Help":"Lowers Maximum Mana to %1%.","ATK Debuff Text":"ATK Down","ATK Debuff Help":"Lowers Attack to %1%.","DEF Debuff Text":"DEF Down","DEF Debuff Help":"Lowers Defense to %1%.","MAT Debuff Text":"MAT Down","MAT Debuff Help":"Lowers Magic Attack to %1%.","MDF Debuff Text":"MDF Down","MDF Debuff Help":"Lowers Magic Defense to %1%.","AGI Debuff Text":"AGI Down","AGI Debuff Help":"Lowers Agility to %1%.","LUK Debuff Text":"LUK Down","LUK Debuff Help":"Lowers Luck to %1%."}}, +{"name":"YEP_X_InBattleStatus","status":false,"description":"v1.01 (Requires YEP_BattleEngineCore.js) Adds a 'Status'\noption in the Party Window in battle.","parameters":{"---General---":"","Command Text":"Status","Show Command":"true","Window X":"0","Window Y":"this.fittingHeight(2)","Window Width":"Graphics.boxWidth","Window Height":"Graphics.boxHeight - this.fittingHeight(2) - this.fittingHeight(4)","---Status List---":"","Status Width":"Math.max(312, Graphics.boxWidth / 4);","State Help Front":"\\i[%1]%2","State Help End":"","Healthy Icon":"127","Healthy Text":"Healthy","Healthy Help":"User is currently unaffected by status effects.","---Buffs List---":"","MaxHP Buff Text":"MaxHP Up","MaxHP Buff Help":"Raises Maximum Health to %1%.","MaxMP Buff Text":"MaxMP Up","MaxMP Buff Help":"Raises Maximum Mana to %1%.","ATK Buff Text":"ATK Up","ATK Buff Help":"Raises Attack to %1%.","DEF Buff Text":"DEF Up","DEF Buff Help":"Raises Defense to %1%.","MAT Buff Text":"MAT Up","MAT Buff Help":"Raises Magic Attack to %1%.","MDF Buff Text":"MDF Up","MDF Buff Help":"Raises Magic Defense to %1%.","AGI Buff Text":"AGI Up","AGI Buff Help":"Raises Agility to %1%.","LUK Buff Text":"LUK Up","LUK Buff Help":"Raises Luck to %1%.","---Debuffs List---":"","MaxHP Debuff Text":"MaxHP Down","MaxHP Debuff Help":"Lowers Maximum Health to %1%.","MaxMP Debuff Text":"MaxMP Down","MaxMP Debuff Help":"Lowers Maximum Mana to %1%.","ATK Debuff Text":"ATK Down","ATK Debuff Help":"Lowers Attack to %1%.","DEF Debuff Text":"DEF Down","DEF Debuff Help":"Lowers Defense to %1%.","MAT Debuff Text":"MAT Down","MAT Debuff Help":"Lowers Magic Attack to %1%.","MDF Debuff Text":"MDF Down","MDF Debuff Help":"Lowers Magic Defense to %1%.","AGI Debuff Text":"AGI Down","AGI Debuff Help":"Lowers Agility to %1%.","LUK Debuff Text":"LUK Down","LUK Debuff Help":"Lowers Luck to %1%."}}, {"name":"YEP_X_ItemDisassemble","status":true,"description":"v1.06 (Requires YEP_ItemCore.js) Grants the option to\nbreak down items in the item menu into other items.","parameters":{"---General---":"","Disassemble Command":"Disassemble %1","Disassemble List":"Disassemble Items","Item Quantity 1":"×%1 %2","Item Quantity 2":"×%1-×%2 %3","Rate Font Size":"20","---Disassemble Sound---":"","Disassemble Sound":"Break","Disassemble Volume":"100","Disassemble Pitch":"150","Disassemble Pan":"0","---Result Sound---":"","Result Sound":"Item1","Result Volume":"100","Result Pitch":"100","Result Pan":"0","---Empty Sound---":"","Empty Sound":"Buzzer2","Empty Volume":"100","Empty Pitch":"100","Empty Pan":"0"}}, {"name":"YEP_X_ItemDurability","status":true,"description":"v1.04 (Requires YEP_ItemCore.js) Independent equipment\nnow have durability, which when runs out, will break.","parameters":{"---Defaults---":"","Default Durability":"100","Durability Variance":"5","Durability Maximum":"200","---Durability Drop---":"","Physical Action":"-1","Magical Action":"0","Certain Action":"0","Damage All Armor":"false","Physical Damage":"-2","Magical Damage":"-1","Certain Damage":"-1","---Breaking---":"","Broken Text":"%1's %3%2 broke!","Broken Wait":"60","Break Sound":"Crash","Break Volume":"100","Break Pitch":"150","Break Pan":"0","---Repair---":"","Show Repair":"true","Enable Repair":"true","Repair Command":"Repair %1","Repair Sound":"Skill2","Repair Volume":"100","Repair Pitch":"150","Repair Pan":"0","---Window Info---":"","Show Durability":"true","Durability Text":"Durability","Durability Format":"%1","Show Unbreakable":"true","Unbreakable Text":"Unbreakable","---Durability Color---":"","Unbreakable":"23","Max Durability":"29","190% Durability":"29","175% Durability":"24","150% Durability":"24","120% Durability":"4","110% Durability":"0","100% Durability":"0","80% Durability":"0","50% Durability":"6","25% Durability":"17","10% Durability":"2","1% Durability":"18"}}, {"name":"YEP_X_ItemRename","status":true,"description":"v1.01 (Requires YEP_ItemCore.js) Allows the player to\nrename independent items in their inventory.","parameters":{"Rename Command":"Rename %1","Default Rename":"true","Max Length":"12","Rename Text":"...will be renamed to..."}}, diff --git a/RPG project 2019/js/plugins/YEP_X_BattleSysATB.js b/RPG project 2019/js/plugins/YEP_X_BattleSysATB.js new file mode 100644 index 0000000..02e1e10 --- /dev/null +++ b/RPG project 2019/js/plugins/YEP_X_BattleSysATB.js @@ -0,0 +1,2562 @@ +//============================================================================= +// Yanfly Engine Plugins - Battle System - Active Turn Battle +// YEP_X_BattleSysATB.js +//============================================================================= + +var Imported = Imported || {}; +Imported.YEP_X_BattleSysATB = true; + +var Yanfly = Yanfly || {}; +Yanfly.ATB = Yanfly.ATB || {}; +Yanfly.ATB.version = 1.28; + +//============================================================================= + /*: + * @plugindesc v1.28 (Requires YEP_BattleEngineCore.js) Add ATB (Active + * Turn Battle) into your game using this plugin! + * @author Yanfly Engine Plugins + * + * @param ---ATB Settings--- + * @default + * + * @param Per Tick + * @parent ---ATB Settings--- + * @desc This is how much speed is gained per tick. + * @default user.agi + * + * @param Initial Speed + * @parent ---ATB Settings--- + * @desc The speed position of the battler at the start of battle. + * This is a formula processed as an eval. + * @default 0 + * + * @param Full Gauge + * @parent ---ATB Settings--- + * @desc The target speed for an ATB gauge to be full. + * This is a formula processed as an eval. + * @default Math.max(5000, BattleManager.highestBaseAgi() * 100) + * + * @param Charge Gauge + * @parent ---ATB Settings--- + * @desc The wind-up time after selecting an action. + * This is a formula processed as an eval. + * @default Math.max(2000, BattleManager.highestBaseAgi() * 20) + * + * @param Pre-Emptive Bonuses + * @parent ---ATB Settings--- + * @type number + * @decimals 1 + * @desc How much of the ATB bar do you want filled up for an + * ATB pre-emptive bonus from 0 to 1. + * @default 0.8 + * + * @param Surprise Bonuses + * @parent ---ATB Settings--- + * @type number + * @decimals 1 + * @desc How much of the ATB bar do you want filled up for an + * ATB surprise bonus from 0 to 1. + * @default 0.8 + * + * @param ---Escape--- + * @default + * + * @param Escape Ratio + * @parent ---Escape--- + * @desc How ATB calculates escape ratios. + * Default: 0.5 * $gameParty.agility() / $gameTroop.agility() + * @default 0.125 * $gameParty.agility() / $gameTroop.agility() + * + * @param Fail Escape Boost + * @parent ---Escape--- + * @type number + * @decimals 3 + * @desc Each time the player fails escape, increase the success + * rate by this much. This is a formula. Default: 0.1 + * @default 0.025 + * + * @param ---Turn--- + * @default + * + * @param Full Turn + * @parent ---Escape--- + * @desc This is how many ticks to equal a full battle turn. + * This is a formula processed as an eval. + * @default Math.min(200, BattleManager.lowestBaseAgi() * 8) + * + * @param Flash Enemy + * @parent ---Escape--- + * @type boolean + * @on Flash + * @off Don't Flash + * @desc Flash enemies when they start charging their skills? + * NO - false YES - true + * @default true + * + * @param ---Rubberband--- + * @default + * + * @param Enable Rubberband + * @parent ---Rubberband--- + * @type boolean + * @on Enable + * @off Disable + * @desc This is an auto-balance mechanic for AGI. + * Disable - false Enable - true + * @default true + * + * @param Minimum Speed + * @parent ---Rubberband--- + * @desc If rubberbanding is enabled, what is the minimum + * speed increase? This is a formula. + * @default 0.5 * BattleManager.highestBaseAgi() + * + * @param Maximum Speed + * @parent ---Rubberband--- + * @desc If rubberbanding is enabled, what is the maximum + * speed increase? This is a formula. + * @default 1.5 * BattleManager.highestBaseAgi() + * + * @param ---Sound--- + * @default + * + * @param Ready Sound + * @parent ---Sound--- + * @type file + * @dir audio/se/ + * @require 1 + * @desc This is the sound played when the battler is ready. + * @default Decision1 + * + * @param Ready Volume + * @parent ---Sound--- + * @type number + * @min 0 + * @max 100 + * @desc This is the volume of the ready sound. + * @default 90 + * + * @param Ready Pitch + * @parent ---Sound--- + * @type number + * @min 0 + * @desc This is the pitch of the ready sound. + * @default 120 + * + * @param Ready Pan + * @parent ---Sound--- + * @type number + * @min -100 + * @max 100 + * @desc This is the pan of the ready sound. + * @default 0 + * + * @param ---Options--- + * @default + * + * @param ATB Speed Text + * @parent ---Options--- + * @desc Text used for ATB speed in options window. + * @default ATB Speed + * + * @param Default ATB Speed + * @parent ---Options--- + * @type number + * @min 0 + * @max 10 + * @desc Default speed at which the gauges fill up. + * 1 - slowest 10 - fastest + * @default 10 + * + * @param ---Windows--- + * @default + * + * @param Lock Status Window + * @parent ---Windows--- + * @type boolean + * @on Lock Status + * @off Don't Lock + * @desc While ATB is active, lock the status window from moving? + * OFF - false ON - true + * @default true + * + * @param Gauge Style + * @parent ---Windows--- + * @type select + * @option None + * @value 0 + * @option Under Name + * @value 1 + * @option Right Side + * @value 2 + * @desc This is the style of the ATB gauges: + * 0 - None 1 - Under Name 2 - Right Side + * @default 1 + * + * @param Gauge Text + * @parent ---Windows--- + * @desc If style 2 is used, this is the text displayed. + * @default Turn + * + * @param Gauge Text Align + * @parent ---Windows--- + * @type combo + * @option left + * @option center + * @option right + * @desc If style 2 is used, this is the text alignment. + * left center right + * @default center + * + * @param ATB Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 1st gauge color of the ATB gauge as it loads up. + * @default 13 + * + * @param ATB Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 2nd gauge color of the ATB gauge as it loads up. + * @default 5 + * + * @param Slow Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 1st gauge color of the ATB gauge if actor is slowed. + * @default 12 + * + * @param Slow Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 2nd gauge color of the ATB gauge if actor is slowed. + * @default 4 + * + * @param Fast Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 1st gauge color of the ATB gauge if actor is hasted. + * @default 26 + * + * @param Fast Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 2nd gauge color of the ATB gauge if actor is hasted. + * @default 27 + * + * @param Stop Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 1st gauge color of the ATB gauge if actor is stopped. + * @default 7 + * + * @param Stop Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc 2nd gauge color of the ATB gauge if actor is stopped. + * @default 8 + * + * @param Full Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 1st gauge color of the ATB gauge when full. + * @default 14 + * + * @param Full Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 2nd gauge color of the ATB gauge when full. + * @default 6 + * + * @param Charge Gauge Color 1 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 1st gauge color of the ATB gauge when charging. + * @default 2 + * + * @param Charge Gauge Color 2 + * @parent ---Windows--- + * @type number + * @min 0 + * @max 31 + * @desc The 2nd gauge color of the ATB gauge when charging. + * @default 10 + * + * @help + * ============================================================================ + * Introduction + * ============================================================================ + * + * The Battle System - Active Turn Battle plugin is an extension plugin for + * Yanfly Engine Plugins' Battle Engine Core. This extension plugin will not + * work without the main plugin. + * + * To use the ATB system, go to the Battle Engine Core plugin and change the + * 'Default System' setting in the parameters to 'atb'. + * + * The Active Turn Battle system functions in such where battlers will have a + * new gauge in battle functioning as their turn gauge. As time goes by without + * anything happening such as actions, menu selection, etc, the gauge fills up. + * Once it is full, the battler can commit to an action. + * + * After committing to an action, the battler charges the skill before using it + * in battle to either attack an enemy, heal an ally, etc. Upon finishing the + * action, the gauge drains to empty and the battler must charge it up again. + * + * This is a battle system where agility plays an important factor in the + * progress of battle where higher agility values give battlers more advantage + * and lower agility values give battlers less advantage. + * + * ============================================================================ + * Plugin Commands + * ============================================================================ + * + * To change your battle system to Active Turn Battle if it isn't the default + * battle system, you can use the following Plugin Command: + * + * Plugin Command: + * setBattleSys ATB Sets battle system to Active Turn Battle. + * setBattleSys DTB Sets battle system to Default Turn Battle. + * + * Using the above Plugin Commands, you can toggle between the Default Battle + * System and Active Turn Battle! + * + * ============================================================================ + * Notetags + * ============================================================================ + * + * The following are notetags that pertain to and affect the ATB system. + * + * Skill and Item Notetags: + * + * text + * text + * + * For those planning on using multiple battle systems, sometimes you may + * have your skills perform differently while using ATB. If so, using this + * notetag will allow skills and items to display different help text while + * ATB is enabled. + * + * + * + * + * Usable only during ATB. This sets the target's current speed or charge to + * x. If 'speed' or 'charge' is used, it will only affect those gauges while + * in the respective phase. If 'gauge' is used, it will affect either. + * + * + * + * + * Usable only during ATB. This sets the target's current speed or charge to + * x% of the whole gauge. If 'speed' or 'charge' is used, it will only affect + * those gauges while in the respective phase. If 'gauge' is used, it will + * affect either. + * + * or + * or + * or + * Usable only during ATB. This increases or decreases the target's current + * speed or charge by x. If 'speed' or 'charge' is used, it will only affect + * those gauges while in the respective phase. If 'gauge' is used, it will + * affect either. + * + * or + * or + * or + * Usable only during ATB. This increases or decreases the target's current + * speed or charge by x% of the whole gauge. If 'speed' or 'charge' is used, + * it will only affect those gauges while in the respective phase. If 'gauge' + * is used, it will affect either. + * + * + * + * This will set the skill/item user's ATB speed value to x or x%. If 'x' is + * used, this will be the exact ATB value. If x% is used, this will be the + * percentage of the ATB gauge that it will be at. + * + * + * + * This will give the skill the ability to interrupt and cancel out the + * target's current action while it is in the charging phase. If the 'x%' + * notetag version is used, it will have a x% chance of success. + * + * + * This causes the skill to be unable to be interrupted and prevent the + * battler's ATB to reset. + * + * Actor, Class, Enemy, Weapon, Armor, and State Notetags: + * + * + * Usable only during ATB. This will give the actor, class, enemy, weapon, + * armor, or state the property of starting battle with X ATB Speed or X% of + * the ATB gauge filled up. + * + * + * + * Usable only during ATB. This will give the actor, class, enemy, weapon, + * armor, or state the property of starting a turn with X ATB Speed or X% of + * the ATB gauge filled up. + * + * ============================================================================ + * Lunatic Mode - Conditional ATB Speed and Conditional ATB Charge + * ============================================================================ + * + * For those who have a bit of JavaScript experience and would like to have + * more unique ways of performing ATB speed and charge changes, you can use the + * following notetags: + * + * Skill and Item Notetags: + * + * speed = x; + * charge = x; + * + * You can omit speed and/or charge. Whatever you set 'speed' to will change + * the ATB speed of the target. If the target is charging, 'charge' will + * cause the target's charge to change to that value. To make things more + * simple, 'max' will be the full gauge value. + * + * Here is an example: + * + * + * speed = target.hp / target.mhp * max; + * charge = target.hp / target.mhp * max; + * + * The above code will set the user's current ATB gauge to position equal to + * the target's HP ratio. If the target has 25% HP, the ATB gauge will go to + * 25% full for the target. + * + * --- --- --- --- --- + * + * + * speed = x; + * + * This is the ATB set after the user has used the skill/item and the custom + * ATB amount you want the user to be at after. 'max' be the value of the + * full gauge value. Whatever you set 'speed', the user's ATB speed value + * will change to that much: + * + * Here is an example: + * + * + * speed = user.mp / user.mmp * max; + * + * The above code will set the user's ATB gauge after using the skill/item to + * equal the user's MP ratio. If the user has 25% MP, the ATB gauge will go + * to 25% full for the user. + * + * --- --- --- --- --- + * + * + * interrupt = true; + * + * This will allow you to set custom conditions for interrupting a target. + * Keep in mind that even though it is a custom condition, it still requires + * the target to be in the charging phase for the interrupt to work. By + * setting 'interrupt = true', the target will be interrupted. + * + * Here is an example: + * + * + * if (user.hp > target.hp) { + * interrupt = true; + * } + * + * The above code will state that if the user has more HP than the target, + * the target will be interrupted. + * + * ============================================================================ + * Yanfly Engine Plugins - Battle Engine Extension - Action Sequence Commands + * ============================================================================ + * + * You can make use of these extra ATB related action sequences. + * + *============================================================================= + * ATB CHARGE: target, X + * ATB CHARGE: target, X% + * ATB CHARGE: targets, +X + * ATB CHARGE: targets, +X% + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usable only for ATB. Sets the target's ATB charge to X or X%. This only + * applies when the target is in the ATB charge phase. This will not affect + * the user to prevent mechanical issues. + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usage Example: atb charge: targets, +5000 + * atb charge: target, -50% + *============================================================================= + * + *============================================================================= + * ATB GAUGE: target, X + * ATB GAUGE: target, X% + * ATB GAUGE: targets, +X + * ATB GAUGE: targets, +X% + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usable only for ATB. Sets the target's ATB speed or charge (whichever the + * user is currently filling up) to X or X%. This only. This will not affect + * the user to prevent mechanical issues. + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usage Example: atb gauge: targets, +5000 + * atb gauge: target, -50% + *============================================================================= + * + *============================================================================= + * ATB INTERRUPT: target + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usable only for ATB. If the target is in the charging phase, interrupt it. + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usage Example: atb interrupt: targets + *============================================================================= + * + *============================================================================= + * ATB SPEED: target, X + * ATB SPEED: target, X% + * ATB SPEED: targets, +X + * ATB SPEED: targets, +X% + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usable only for ATB. Sets the target's ATB speed to X or X%. This only + * applies when the target is filling up its ATB gauge. This will not affect + * the user to prevent mechanical issues. + *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * Usage Example: atb speed: targets, +5000 + * atb speed: target, -50% + *============================================================================= + * + * ============================================================================ + * Options Core Settings - Adding the New Options + * ============================================================================ + * + * If you are using YEP_OptionsCore.js, you can add a new Option using this + * plugin. Here's the following code/parameter settings you can use with it. + * + * --------- + * Settings: + * --------- + * + * Name: + * \i[87]ATB Speed + * + * Help Description: + * Determines how fast the ATB Gauge fills up during battle. + * + * Symbol: + * atbSpeed + * + * Show/Hide: + * if (Imported.YEP_X_BattleSysATB) { + * show = $gameSystem.getBattleSystem() === 'atb'; + * } else { + * show = false; + * } + * + * Enable: + * enabled = true; + * + * Ext: + * ext = 0; + * + * ---------- + * Functions: + * ---------- + * + * Make Option Code: + * this.addCommand(name, symbol, enabled, ext); + * + * Draw Option Code: + * var rect = this.itemRectForText(index); + * var statusWidth = this.statusWidth(); + * var titleWidth = rect.width - statusWidth; + * this.resetTextColor(); + * this.changePaintOpacity(this.isCommandEnabled(index)); + * this.drawOptionsName(index); + * var value = this.getConfigValue(symbol); + * var rate = value / 10; + * var gaugeColor1 = this.textColor(13); + * var gaugeColor2 = this.textColor(5); + * this.drawOptionsGauge(index, rate, gaugeColor1, gaugeColor2); + * this.drawText(this.statusText(index), titleWidth, rect.y, statusWidth, 'center'); + * + * Process OK Code: + * var index = this.index(); + * var symbol = this.commandSymbol(index); + * var value = this.getConfigValue(symbol); + * value += 1; + * if (value > 10) value = 1; + * this.changeValue(symbol, value); + * + * Cursor Right Code: + * var index = this.index(); + * var symbol = this.commandSymbol(index); + * var value = this.getConfigValue(symbol); + * value += 1; + * if (value > 10) value = 1; + * this.changeValue(symbol, value); + * + * Cursor Left Code: + * var index = this.index(); + * var symbol = this.commandSymbol(index); + * var value = this.getConfigValue(symbol); + * value -= 1; + * if (value < 1) value = 10; + * this.changeValue(symbol, value); + * + * Default Config Code: + * // Empty. Provided by this plugin. + * + * Save Config Code: + * // Empty. Provided by this plugin. + * + * Load Config Code: + * // Empty. Provided by this plugin. + * + * ============================================================================ + * Changelog + * ============================================================================ + * + * Version 1.28: + * - Bypass the isDevToolsOpen() error when bad code is inserted into a script + * call or custom Lunatic Mode code segment due to updating to MV 1.6.1. + * + * Version 1.27: + * - Compatibility update with YEP_OptionsCore.js. + * + * Version 1.26: + * - Updated for RPG Maker MV version 1.5.0. + * + * Version 1.25: + * - Lunatic Mode fail safes added. + * + * Version 1.24: + * - During action end, a single tick will be forced to occur to prevent clash + * amongst actors with similar AGI values and make tick values more unique. + * + * Version 1.23: + * - Timing has been changed for states that update turns at Turn Start. Now, + * the states will update prior to the actor's command box opening or the enemy + * make a decision on which action it will use. + * + * Version 1.22: + * - Updated for RPG Maker MV version 1.1.0. + * + * Version 1.21: + * - Counterattacks no longer cause interrupts if attack actions have interrupt + * functionality. + * + * Version 1.20: + * - Updated plugin to update the AI more accordingly with Battle AI Core. + * + * Version 1.19: + * - Fixed a bug where forced actions clear out an action's effects before the + * turn is over, making post-turn effects to not occur. + * + * Version 1.18: + * - Fixed a bug where changing back and forth between the Fight/Escape window + * would prompt on turn start effects. + * + * Version 1.17: + * - Made a mechanic change so that turn 0 ends immediately upon battle start + * rather than requiring a full turn to end. + * + * Version 1.16: + * - Added a fail safe setting up ATB Charges when the Cannot Move restriction + * is imposed upon an actor. + * + * Verison 1.15: + * - Implemented a Forced Action queue list. This means if a Forced Action + * takes place in the middle of an action, the action will resume after the + * forced action finishes rather than cancels it out like MV does. + * + * Version 1.14: + * - Added a speed position check for Instant Casts to maintain order position. + * + * Version 1.13: + * - Fixed a bug that doesn't update state turns properly. + * - Removed 'Turn Structure parameter' as it goes against the nature of a + * Tick-Based battle system. + * + * Version 1.12: + * - Added speed rebalance formulas for tick-based systems (innate). + * + * Version 1.11: + * - Fixed a bug that would still allow battlers to perform actions even if the + * actions got sealed midway through charging the action. + * + * Version 1.10: + * - Fixed a bug that would cause AutoBattlers to stall if they got added into + * the party mid-battle. + * + * Version 1.09: + * - Mechanic change for states that update on Action End to end at the end of + * a battler's turn instead of at the start. + * + * Version 1.08a: + * - Fixed a bug that crashed the game when enemies were confused. + * - Preparation for Enemy ATB Gauges. + * + * Version 1.07: + * - Added 'Flash Enemy' to plugin parameters to flash the enemy once when it + * starts charging a skill. + * + * Version 1.06: + * - Added pre-emptive and surprise attack mechanic plugin parameters! + * + * Version 1.05: + * - Fixed a bug with Forced Actions locking out the battle. + * + * Version 1.04: + * - Added the 'Per Tick' parameter for you to adjust the formula that governs + * the speed rate at which the ATB gauge fills up. + * + * Version 1.03: + * - Fixed a bug that caused the ATB Gauge appear slow with maxed AGI. + * + * Version 1.02c: + * - Fixed a bug with the ATB GAUGE and ATB CHARGE action sequences. + * - Fixed a bug with battlers still getting a turn after the battle is over. + * - Fixed a bug that prevented escaping. + * - Added math fail safes for calculating ATB charging. + * + * Version 1.01: + * - Fixed a bug with escaping causing battlers to go into infinite lock. + * - Fixed a bug with multiple victory messages. + * - Added fail safe to prevent infinite charging. + * - Added . + * + * Version 1.00: + * - It's doooooooone! + */ +//============================================================================= + +if (Imported.YEP_BattleEngineCore) { + +if (Yanfly.BEC.version && Yanfly.BEC.version >= 1.42) { + +//============================================================================= +// Parameter Variables +//============================================================================= + +Yanfly.Parameters = PluginManager.parameters('YEP_X_BattleSysATB'); +Yanfly.Param = Yanfly.Param || {}; + +Yanfly.Param.ATBPerTick = String(Yanfly.Parameters['Per Tick']); +Yanfly.Param.ATBInitSpeed = String(Yanfly.Parameters['Initial Speed']); +Yanfly.Param.ATBFullGauge = String(Yanfly.Parameters['Full Gauge']); +Yanfly.Param.ATBChargeGauge = String(Yanfly.Parameters['Charge Gauge']); +Yanfly.Param.ATBPreEmptive = Number(Yanfly.Parameters['Pre-Emptive Bonuses']); +Yanfly.Param.ATBSurprise = Number(Yanfly.Parameters['Surprise Bonuses']); +Yanfly.Param.ATBEscapeRatio = String(Yanfly.Parameters['Escape Ratio']); +Yanfly.Param.ATBEscapeBoost = String(Yanfly.Parameters['Fail Escape Boost']); +Yanfly.Param.ATBFullTurn = String(Yanfly.Parameters['Full Turn']); +Yanfly.Param.ATBTurnStructure = false; +Yanfly.Param.ATBFlashEnemy = eval(String(Yanfly.Parameters['Flash Enemy'])); +Yanfly.Param.ATBRubberband = String(Yanfly.Parameters['Enable Rubberband']); +Yanfly.Param.ATBMinSpeed = String(Yanfly.Parameters['Minimum Speed']); +Yanfly.Param.ATBMaxSpeed = String(Yanfly.Parameters['Maximum Speed']); +Yanfly.Param.ATBReadyName = String(Yanfly.Parameters['Ready Sound']); +Yanfly.Param.ATBReadyVol = Number(Yanfly.Parameters['Ready Volume']); +Yanfly.Param.ATBReadyPitch = Number(Yanfly.Parameters['Ready Pitch']); +Yanfly.Param.ATBReadyPan = Number(Yanfly.Parameters['Ready Pan']); +Yanfly.Param.ATBOptionSpeedTx = String(Yanfly.Parameters['ATB Speed Text']); +Yanfly.Param.ATBDefaultSpeed = Number(Yanfly.Parameters['Default ATB Speed']); +Yanfly.Param.ATBLockStatusWin = String(Yanfly.Parameters['Lock Status Window']); +Yanfly.Param.ATBGaugeStyle = Number(Yanfly.Parameters['Gauge Style']); +Yanfly.Param.ATBGaugeText = String(Yanfly.Parameters['Gauge Text']); +Yanfly.Param.ATBGaugeAlign = String(Yanfly.Parameters['Gauge Text Align']); +Yanfly.Param.ATBColorAtb1 = Number(Yanfly.Parameters['ATB Gauge Color 1']); +Yanfly.Param.ATBColorAtb2 = Number(Yanfly.Parameters['ATB Gauge Color 2']); +Yanfly.Param.ATBColorSlow1 = Number(Yanfly.Parameters['Slow Gauge Color 1']); +Yanfly.Param.ATBColorSlow2 = Number(Yanfly.Parameters['Slow Gauge Color 2']); +Yanfly.Param.ATBColorFast1 = Number(Yanfly.Parameters['Fast Gauge Color 1']); +Yanfly.Param.ATBColorFast2 = Number(Yanfly.Parameters['Fast Gauge Color 2']); +Yanfly.Param.ATBColorStop1 = Number(Yanfly.Parameters['Stop Gauge Color 1']); +Yanfly.Param.ATBColorStop2 = Number(Yanfly.Parameters['Stop Gauge Color 2']); +Yanfly.Param.ATBColorFull1 = Number(Yanfly.Parameters['Full Gauge Color 1']); +Yanfly.Param.ATBColorFull2 = Number(Yanfly.Parameters['Full Gauge Color 2']); +Yanfly.Param.ATBColorChar1 = Number(Yanfly.Parameters['Charge Gauge Color 1']); +Yanfly.Param.ATBColorChar2 = Number(Yanfly.Parameters['Charge Gauge Color 2']); + +//============================================================================= +// DataManager +//============================================================================= + +Yanfly.ATB.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; +DataManager.isDatabaseLoaded = function() { + if (!Yanfly.ATB.DataManager_isDatabaseLoaded.call(this)) return false; + if (!Yanfly._loaded_YEP_X_BattleSysATB) { + this.processATBNotetags1($dataSkills); + this.processATBNotetags1($dataItems); + this.processATBNotetags2($dataActors); + this.processATBNotetags2($dataClasses); + this.processATBNotetags2($dataEnemies); + this.processATBNotetags2($dataWeapons); + this.processATBNotetags2($dataArmors); + this.processATBNotetags2($dataStates); + Yanfly._loaded_YEP_X_BattleSysATB = true; + } + return true; +}; + +DataManager.processATBNotetags1 = function(group) { + var noteA1 = /<(?:ATB GAUGE):[ ](\d+)>/i; + var noteA2 = /<(?:ATB GAUGE):[ ]([\+\-]\d+)>/i; + var noteA3 = /<(?:ATB GAUGE):[ ](\d+)([%%])>/i; + var noteA4 = /<(?:ATB GAUGE):[ ]([\+\-]\d+)([%%])>/i; + var noteB1 = /<(?:ATB SPEED):[ ](\d+)>/i; + var noteB2 = /<(?:ATB SPEED):[ ]([\+\-]\d+)>/i; + var noteB3 = /<(?:ATB SPEED):[ ](\d+)([%%])>/i; + var noteB4 = /<(?:ATB SPEED):[ ]([\+\-]\d+)([%%])>/i; + var noteC1 = /<(?:ATB CHARGE):[ ](\d+)>/i; + var noteC2 = /<(?:ATB CHARGE):[ ]([\+\-]\d+)>/i; + var noteC3 = /<(?:ATB CHARGE):[ ](\d+)([%%])>/i; + var noteC4 = /<(?:ATB CHARGE):[ ]([\+\-]\d+)([%%])>/i; + var noteS1 = /<(?:AFTER ATB):[ ](\d+)>/i; + var noteS2 = /<(?:AFTER ATB):[ ](\d+)([%%])>/i; + var noteI1 = /<(?:ATB INTERRUPT)>/i; + var noteI2 = /<(?:ATB INTERRUPT):[ ](\d+)([%%])>/i; + var noteI3 = /<(?:CANNOT ATB INTERRUPT)>/i; + for (var n = 1; n < group.length; n++) { + var obj = group[n]; + var notedata = obj.note.split(/[\r\n]+/); + + obj.setATBGaugeFlat = undefined; + obj.addATBGaugeFlat = 0; + obj.setATBGaugeRate = undefined; + obj.addATBGaugeRate = 0.0; + obj.setATBSpeedFlat = undefined; + obj.addATBSpeedFlat = 0; + obj.setATBSpeedRate = undefined; + obj.addATBSpeedRate = 0.0; + obj.setATBChargeFlat = undefined; + obj.addATBChargeFlat = 0; + obj.setATBChargeRate = undefined; + obj.addATBChargeRate = 0.0; + obj.afterATBFlat = undefined; + obj.afterATBRate = undefined; + obj.atbInterruptRate = 0; + obj.cannotAtbInterrupt = false; + var evalMode = 'none'; + obj.atbEval = ''; + obj.atbAfterEval = ''; + obj.atbInterruptEval = ''; + obj.atbHelp = undefined; + + for (var i = 0; i < notedata.length; i++) { + var line = notedata[i]; + if (line.match(noteA1)) { + obj.setATBGaugeFlat = parseInt(RegExp.$1); + } else if (line.match(noteA2)) { + obj.addATBGaugeFlat = parseInt(RegExp.$1); + } else if (line.match(noteA3)) { + obj.setATBGaugeRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteA4)) { + obj.addATBGaugeRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteB1)) { + obj.setATBSpeedFlat = parseInt(RegExp.$1); + } else if (line.match(noteB2)) { + obj.addATBSpeedFlat = parseInt(RegExp.$1); + } else if (line.match(noteB3)) { + obj.setATBSpeedRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteB4)) { + obj.addATBSpeedRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteC1)) { + obj.setATBChargeFlat = parseInt(RegExp.$1); + } else if (line.match(noteC2)) { + obj.addATBChargeFlat = parseInt(RegExp.$1); + } else if (line.match(noteC3)) { + obj.setATBChargeRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteC4)) { + obj.addATBChargeRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteS1)) { + obj.afterATBFlat = parseInt(RegExp.$1); + } else if (line.match(noteS2)) { + obj.afterATBRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteI1)) { + obj.atbInterruptRate = 1; + } else if (line.match(noteI2)) { + obj.atbInterruptRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteI3)) { + obj.cannotAtbInterrupt = true; + } else if (line.match(/<(?:TARGET ATB EVAL)>/i)) { + evalMode = 'atb eval'; + } else if (line.match(/<\/(?:TARGET ATB EVAL)>/i)) { + evalMode = 'none'; + } else if (line.match(/<(?:AFTER ATB EVAL)>/i)) { + evalMode = 'after atb eval'; + } else if (line.match(/<\/(?:AFTER ATB EVAL)>/i)) { + evalMode = 'none'; + } else if (line.match(/<(?:ATB INTERRUPT EVAL)>/i)) { + evalMode = 'atb interrupt eval'; + } else if (line.match(/<\/(?:ATB INTERRUPT EVAL)>/i)) { + evalMode = 'none'; + } else if (line.match(/<(?:ATB HELP)>/i)) { + evalMode = 'atb help'; + obj.atbHelp = ''; + } else if (line.match(/<\/(?:ATB HELP)>/i)) { + evalMode = 'none'; + } else if (evalMode === 'atb help') { + obj.atbHelp = obj.atbHelp + line + '\n'; + } else if (evalMode === 'atb eval') { + obj.atbEval = obj.atbEval + line + '\n'; + } else if (evalMode === 'after atb eval') { + obj.atbAfterEval = obj.atbAfterEval + line + '\n'; + } else if (evalMode === 'atb interrupt eval') { + obj.atbInterruptEval = obj.atbInterruptEval + line + '\n'; + } + } + } +}; + +DataManager.processATBNotetags2 = function(group) { + var noteA1 = /<(?:ATB START):[ ]([\+\-]\d+)>/i; + var noteA2 = /<(?:ATB START):[ ]([\+\-]\d+)([%%])>/i; + var noteB1 = /<(?:ATB TURN):[ ]([\+\-]\d+)>/i; + var noteB2 = /<(?:ATB TURN):[ ]([\+\-]\d+)([%%])>/i; + for (var n = 1; n < group.length; n++) { + var obj = group[n]; + var notedata = obj.note.split(/[\r\n]+/); + + obj.atbStartFlat = 0; + obj.atbStartRate = 0; + obj.atbTurnFlat = 0; + obj.atbTurnRate = 0; + var evalMode = 'none'; + obj.atbHelp = undefined; + + for (var i = 0; i < notedata.length; i++) { + var line = notedata[i]; + if (line.match(noteA1)) { + obj.atbStartFlat = parseInt(RegExp.$1); + } else if (line.match(noteA2)) { + obj.atbStartRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(noteB1)) { + obj.atbTurnFlat = parseInt(RegExp.$1); + } else if (line.match(noteB2)) { + obj.atbTurnRate = parseFloat(RegExp.$1 * 0.01); + } else if (line.match(/<(?:ATB HELP)>/i)) { + evalMode = 'atb help'; + obj.atbHelp = ''; + } else if (line.match(/<\/(?:ATB HELP)>/i)) { + evalMode = 'none'; + } else if (evalMode === 'atb help') { + obj.atbHelp = obj.atbHelp + line + '\n'; + } + } + } +}; + +//============================================================================= +// ConfigManager +//============================================================================= + +ConfigManager.atbSpeed = Yanfly.Param.ATBDefaultSpeed; + +Yanfly.ATB.ConfigManager_makeData = ConfigManager.makeData; +ConfigManager.makeData = function() { + var config = Yanfly.ATB.ConfigManager_makeData.call(this); + config.atbSpeed = this.atbSpeed; + return config; +}; + +Yanfly.ATB.ConfigManager_applyData = ConfigManager.applyData; +ConfigManager.applyData = function(config) { + Yanfly.ATB.ConfigManager_applyData.call(this, config); + this.atbSpeed = this.readConfigATBSpeed(config, 'atbSpeed'); +}; + +ConfigManager.readConfigATBSpeed = function(config, name) { + var value = config[name]; + if (value !== undefined) { + return Number(value).clamp(1, 10); + } else { + return Yanfly.Param.ATBDefaultSpeed.clamp(1, 10); + } +}; + +//============================================================================= +// BattleManager +//============================================================================= + +BattleManager.isATB = function() { + return this.isBattleSystem('atb'); +}; + +Yanfly.ATB.BattleManager_isTurnBased = BattleManager.isTurnBased; +BattleManager.isTurnBased = function() { + if (this.isATB()) return false; + return Yanfly.ATB.BattleManager_isTurnBased.call(this); +}; + +Yanfly.ATB.BattleManager_tickRate = BattleManager.tickRate; +BattleManager.tickRate = function() { + var rate = Yanfly.ATB.BattleManager_tickRate.call(this); + if (this.isATB()) rate *= this.atbTickRate(); + return rate; +}; + +BattleManager.atbTickRate = function() { + var rate = 0.1 * ConfigManager.atbSpeed; + return rate; +}; + +Yanfly.ATB.BattleManager_makeEscapeRatio = BattleManager.makeEscapeRatio; +BattleManager.makeEscapeRatio = function() { + if (this.isATB()) { + var code = Yanfly.Param.ATBEscapeRatio; + try { + this._escapeRatio = eval(code); + } catch (e) { + this._escapeRatio = 0; + Yanfly.Util.displayError(e, code, 'ATB ESCAPE RATIO ERROR'); + } + var code = Yanfly.Param.ATBEscapeBoost; + try { + this._escapeFailBoost = eval(code); + } catch (e) { + this._escapeFailBoost = 0; + Yanfly.Util.displayError(e, code, 'ATB ESCAPE BOOST ERROR'); + } + } else { + this._escapeFailBoost = 0.1; + Yanfly.ATB.BattleManager_makeEscapeRatio.call(this); + } +}; + +Yanfly.ATB.BattleManager_startBattle = BattleManager.startBattle; +BattleManager.startBattle = function() { + Yanfly.ATB.BattleManager_startBattle.call(this); + if (this.isATB()) { + this._phase = null; + this._counterAttacking = false; + this.startATB(); + } +}; + +Yanfly.ATB.BattleManager_endBattle = BattleManager.endBattle; +BattleManager.endBattle = function(result) { + Yanfly.ATB.BattleManager_endBattle.call(this, result); + this.clearATBData(); +}; + +BattleManager.startATB = function() { + if (this._phase === 'battleEnd') return; + this.clearATBData(); + this._atbTarget = Math.max(1, eval(Yanfly.Param.ATBFullGauge)); + this._atbCharge = Math.max(1, eval(Yanfly.Param.ATBChargeGauge)); + this._atbFullTurn = Math.max(1, eval(Yanfly.Param.ATBFullTurn)); + this._atbRubberband = eval(Yanfly.Param.ATBRubberband); + if (this.atbRubberband()) { + this._atbMinimumSpeed = Math.max(1, eval(Yanfly.Param.ATBMinSpeed)); + this._atbMaximumSpeed = Math.max(1, eval(Yanfly.Param.ATBMaxSpeed)); + } + this._atbTicks = this._atbFullTurn; + this._atbReadySound = { + name: Yanfly.Param.ATBReadyName, + volume: Yanfly.Param.ATBReadyVol, + pitch: Yanfly.Param.ATBReadyPitch, + pan: Yanfly.Param.ATBReadyPan + } + $gameParty.onATBStart(); + $gameTroop.onATBStart(); + this._phase = 'start'; +}; + +BattleManager.clearATBData = function() { + this._highestBaseAgi = undefined; + this._averageBaseAgi = undefined; + this._lowestBaseAgi = undefined; + this._atbTarget = undefined; + this._atbCharge = undefined; + this._atbTarget = undefined; + this._atbCharge = undefined; + this._atbFullTurn = undefined; + this._atbRubberband = undefined; + this._atbMinimumSpeed = undefined; + this._atbMaximumSpeed = undefined; + this._atbTicks = 0; +}; + +BattleManager.atbTarget = function() { + if (!this._atbTarget) this.startATB(); + return this._atbTarget; +}; + +BattleManager.atbCharge = function() { + if (!this._atbCharge) this.startATB(); + return this._atbCharge; +}; + +BattleManager.atbRubberband = function() { + return this._atbRubberband; +}; + +BattleManager.atbMinimumSpeed = function() { + return this._atbMinimumSpeed; +}; + +BattleManager.atbMaximumSpeed = function() { + return this._atbMaximumSpeed; +}; + +BattleManager.highestBaseAgi = function() { + if (this._highestBaseAgi) return this._highestBaseAgi; + var agi = 0; + for (var i = 0; i < $gameParty.battleMembers().length; ++i) { + var battler = $gameParty.battleMembers()[i]; + if (battler) agi = Math.max(agi, battler.agi); + } + for (var i = 0; i < $gameTroop.members().length; ++i) { + var battler = $gameTroop.members()[i]; + if (battler) agi = Math.max(agi, battler.agi); + } + this._highestBaseAgi = agi; + return this._highestBaseAgi; +}; + +BattleManager.averageBaseAgi = function() { + if (this._averageBaseAgi) return this._averageBaseAgi; + var agi = 0; + for (var i = 0; i < $gameParty.battleMembers().length; ++i) { + var battler = $gameParty.battleMembers()[i]; + if (battler) agi += battler.agi; + } + for (var i = 0; i < $gameTroop.members().length; ++i) { + var battler = $gameTroop.members()[i]; + if (battler) agi += battler.agi; + } + var sum = $gameParty.battleMembers().length; + sum += $gameTroop.members().length; + this._averageBaseAgi = agi / sum; + return this._averageBaseAgi; +}; + +BattleManager.lowestBaseAgi = function() { + if (this._lowestBaseAgi) return this._lowestBaseAgi; + var agi = this.highestBaseAgi(); + for (var i = 0; i < $gameParty.battleMembers().length; ++i) { + var battler = $gameParty.battleMembers()[i]; + if (battler) agi = Math.min(agi, battler.agi); + } + for (var i = 0; i < $gameTroop.members().length; ++i) { + var battler = $gameTroop.members()[i]; + if (battler) agi = Math.min(agi, battler.agi); + } + this._lowestBaseAgi = agi; + return this._lowestBaseAgi; +}; + +Yanfly.ATB.BattleManager_update = BattleManager.update; +BattleManager.update = function() { + if (this.isATB()) { + if (this.isBusy()) return; + if (this.updateEvent()) return; + if (this._phase === 'battleEnd') { + return Yanfly.ATB.BattleManager_update.call(this); + } + if (this.checkBattleEnd()) return; + if (this._phase === 'atb') { + this.updateATBPhase(); + } else { + Yanfly.ATB.BattleManager_update.call(this); + } + } else { + Yanfly.ATB.BattleManager_update.call(this); + } +}; + +Yanfly.ATB.BattleManager_updateEventMain = BattleManager.updateEventMain; +BattleManager.updateEventMain = function() { + if (this.isATB()) { + $gameTroop.updateInterpreter(); + $gameParty.requestMotionRefresh(); + if ($gameTroop.isEventRunning()) { + return true; + } + $gameTroop.setupBattleEvent(); + if ($gameTroop.isEventRunning() || SceneManager.isSceneChanging()) { + return true; + } + return false; + } else { + return Yanfly.ATB.BattleManager_updateEventMain.call(this); + } +}; + +BattleManager.updateATBPhase = function() { + var chargedBattler = this.getChargedATBBattler(); + if (chargedBattler) return this.startATBAction(chargedBattler); + var readyBattler = this.getReadyATBBattler(); + if (readyBattler) { + return this.startATBInput(readyBattler); + } else { + this.updateATBTicks(); + this.updateBattlerATB(); + } +}; + +BattleManager.updateATBTicks = function() { + this._atbTicks += 1 * this.tickRate(); + if (this._atbTicks < this._atbFullTurn) return; + $gameTroop.increaseTurn(); + this._atbTicks = 0; + if (this.isTurnBased()) { + this.endTurn(); + } else { + this.endTurn(); + } +}; + +BattleManager.getChargedATBBattler = function() { + if ($gameParty.aliveMembers() <= 0 || $gameTroop.aliveMembers() <= 0) { + return false; + } + var fastest = false; + for (var i = 0; i < this.allBattleMembers().length; ++i) { + var battler = this.allBattleMembers()[i]; + if (!battler) continue; + if (!this.isBattlerATBCharged(battler)) continue; + if (!fastest) { + fastest = battler; + } else if (battler.atbCharge() > fastest.atbCharge()) { + fastest = battler; + } + } + return fastest; +}; + +BattleManager.isBattlerATBCharged = function(battler) { + if (!battler.isATBCharging()) return false; + if (battler.atbChargeRate() < 1) return false; + if (battler.isConfused()) { + battler.makeActions(); + if (battler.isActor()) battler.makeConfusionActions(); + } + return battler.currentAction() && battler.currentAction().item(); +}; + +BattleManager.getReadyATBBattler = function() { + var fastest = false; + for (var i = 0; i < this.allBattleMembers().length; ++i) { + var battler = this.allBattleMembers()[i]; + if (!battler) continue; + if (!this.isBattlerATBReady(battler)) continue; + if (!fastest) { + fastest = battler; + } else if (battler.atbSpeed() > fastest.atbSpeed()) { + fastest = battler; + } + } + return fastest; +}; + +BattleManager.isBattlerATBReady = function(battler) { + if (battler.atbRate() < 1) return false; + if (battler.isATBCharging()) return false; + if (battler.currentAction() && battler.currentAction().item()) { + battler.makeActions(); + battler.setupATBCharge(); + return false; + } + return true; +}; + +BattleManager.updateBattlerATB = function(ignore) { + $gameParty.updateTick(); + $gameTroop.updateTick(); + if (ignore) return; + if (this._statusWindow) this.statusUpdateATB(); +}; + +BattleManager.setATBPhase = function() { + this._phase = 'atb'; +}; + +Yanfly.ATB.BattleManager_startInput = BattleManager.startInput; +BattleManager.startInput = function() { + if (this.isATB()) { + this.setATBPhase(); + } else { + Yanfly.ATB.BattleManager_startInput.call(this); + } +}; + +Yanfly.ATB.BattleManager_selectNextCommand = BattleManager.selectNextCommand; +BattleManager.selectNextCommand = function() { + if (this.isATB()) { + if (!this.actor()) return this.setATBPhase(); + this.resetNonPartyActorATB(); + this.actor().setupATBCharge(); + this.actor().spriteStepBack(); + this.actor().requestMotionRefresh(); + this._actorIndex = undefined; + var chargedBattler = this.getChargedATBBattler(); + if (chargedBattler) { + this.startATBAction(chargedBattler); + } else { + this.setATBPhase(); + } + } else { + Yanfly.ATB.BattleManager_selectNextCommand.call(this); + } +}; + +BattleManager.resetNonPartyActorATB = function() { + for (var i = 0; i < $gameParty.allMembers().length; ++i) { + var actor = $gameParty.allMembers()[i]; + if (!actor) continue; + if ($gameParty.battleMembers().contains(actor)) continue; + actor.resetAllATB(); + } +}; + +Yanfly.ATB.BattleManager_selectPreviousCommand = + BattleManager.selectPreviousCommand; +BattleManager.selectPreviousCommand = function() { + if (this.isATB()) { + var actorIndex = this._actorIndex; + var scene = SceneManager._scene; + this._bypassAtbEndTurn = true; + scene.startPartyCommandSelection(); + this._actorIndex = actorIndex; + BattleManager.actor().setActionState('undecided'); + BattleManager.actor().requestMotionRefresh(); + this._bypassAtbEndTurn = undefined; + } else { + Yanfly.ATB.BattleManager_selectPreviousCommand.call(this); + } +}; + +Yanfly.ATB.BattleManager_startTurn = BattleManager.startTurn; +BattleManager.startTurn = function() { + if (this.isATB() && !this.isTurnBased()) return; + Yanfly.ATB.BattleManager_startTurn.call(this); +}; + +Yanfly.ATB.BattleManager_updateTurnEnd = BattleManager.updateTurnEnd; +BattleManager.updateTurnEnd = function() { + if (this.isATB()) { + this.setATBPhase(); + } else { + Yanfly.ATB.BattleManager_updateTurnEnd.call(this); + } +}; + +BattleManager.startATBInput = function(battler) { + if (battler.isDead()) return; + battler.onTurnStart(); + battler.makeActions(); + if (battler.isEnemy()) { + battler.setupATBCharge(); + if (Yanfly.Param.ATBFlashEnemy) battler.requestEffect('whiten'); + var chargedBattler = this.getChargedATBBattler(); + if (chargedBattler) this.startATBAction(chargedBattler); + } else if (battler.canInput()) { + this._actorIndex = battler.index(); + this.playATBReadySound(); + battler.setActionState('inputting'); + battler.spriteStepForward(); + this._phase = 'input'; + } else if (battler.isConfused()) { + battler.makeConfusionActions(); + battler.setupATBCharge(); + } else { + battler.makeAutoBattleActions(); + battler.setupATBCharge(); + } +}; + +BattleManager.playATBReadySound = function() { + AudioManager.playSe(this._atbReadySound); +}; + +BattleManager.startATBAction = function(battler) { + this._subject = battler; + var action = this._subject.currentAction(); + if (action && action.isValid()) { + this.startAction(); + } else { + this.endAction(); + } +}; + +Yanfly.ATB.BattleManager_processForcedAction = + BattleManager.processForcedAction; +BattleManager.processForcedAction = function() { + var forced = false; + if (this._actionForcedBattler && this.isATB()) { + var action = this._actionForcedBattler.currentAction(); + forced = true; + } + Yanfly.ATB.BattleManager_processForcedAction.call(this); + if (forced) this._subject.setAction(0, action); +}; + +Yanfly.ATB.BattleManager_endAction = BattleManager.endAction; +BattleManager.endAction = function() { + if (this.isATB()) { + this.endATBAction(); + } else { + Yanfly.ATB.BattleManager_endAction.call(this); + } +}; + +BattleManager.endATBAction = function() { + if (Imported.YEP_BattleEngineCore) { + if (this._processingForcedAction) this._phase = this._preForcePhase; + this._processingForcedAction = false; + } + if (this._subject) this._subject.onAllActionsEnd(); + if (this.updateEventMain()) return; + this._subject.endTurnAllATB(); + if (this.loadPreForceActionSettings()) return; + this.updateBattlerATB(true); + var chargedBattler = this.getChargedATBBattler(); + if (chargedBattler) { + this.startATBAction(chargedBattler); + } else { + this.setATBPhase(); + } +}; + +Yanfly.ATB.BattleManager_invokeCounterAttack = + BattleManager.invokeCounterAttack; +BattleManager.invokeCounterAttack = function(subject, target) { + if (this.isATB()) this._counterAttacking = true; + Yanfly.ATB.BattleManager_invokeCounterAttack.call(this, subject, target); + if (this.isATB()) this._counterAttacking = false; +}; + +BattleManager.isCounterAttacking = function() { + return this._counterAttacking; +}; + +BattleManager.statusUpdateATB = function() { + this._statusWindow.redrawATB(); +}; + +Yanfly.ATB.BattleManager_processEscape = BattleManager.processEscape; +BattleManager.processEscape = function() { + if (this.isATB()) { + return this.processEscapeATB(); + } else { + return Yanfly.ATB.BattleManager_processEscape.call(this); + } +}; + +BattleManager.processEscapeATB = function() { + $gameParty.performEscape(); + SoundManager.playEscape(); + var success = this._preemptive ? true : (Math.random() < this._escapeRatio); + if (success) { + $gameParty.removeBattleStates(); + $gameParty.performEscapeSuccess(); + this.displayEscapeSuccessMessage(); + this._escaped = true; + this.processAbort(); + } else { + this.actor().spriteStepBack(); + this.actor().clearActions(); + this.displayEscapeFailureMessage(); + this._escapeRatio += this._escapeFailBoost; + this.startTurn(); + this.processFailEscapeATB(); + } + return success; +}; + +BattleManager.processFailEscapeATB = function() { + var actor = $gameParty.members()[this._actorIndex]; + if (!actor) return; + actor.resetAllATB(); +}; + +Yanfly.ATB.BattleManager_processActionSequence = + BattleManager.processActionSequence; +BattleManager.processActionSequence = function(actionName, actionArgs) { + if (this.isATB()) { + // ATB CHARGE + if (actionName === 'ATB CHARGE') { + return this.actionATBCharge(actionArgs); + } + // ATB GAUGE + if (actionName === 'ATB GAUGE') { + return this.actionATBCharge(actionArgs) && this.actionATBSpeed(actionArgs); + } + // ATB INTERRUPT + if (actionName === 'ATB INTERRUPT') { + return this.actionATBInterrupt(actionArgs); + } + // ATB SPEED + if (actionName === 'ATB SPEED') { + return this.actionATBSpeed(actionArgs); + } + } + return Yanfly.ATB.BattleManager_processActionSequence.call(this, + actionName, actionArgs); +}; + +BattleManager.actionATBCharge = function(actionArgs) { + var targets = this.makeActionTargets(actionArgs[0]); + if (targets.length < 1) return true; + var cmd = actionArgs[1]; + if (cmd.match(/([\+\-]\d+)([%%])/i)) { + var rate = parseFloat(RegExp.$1 * 0.01); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (!target.isATBCharging()) continue; + var max = target.atbChargeDenom(); + var value = rate * max + target.atbCharge(); + target.setATBCharge(value); + target.refresh(); + } + } else if (cmd.match(/([\+\-]\d+)/i)) { + var plus = parseInt(RegExp.$1); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (!target.isATBCharging()) continue; + var value = plus + target.atbCharge(); + target.setATBCharge(value); + target.refresh(); + } + } else if (cmd.match(/(\d+)([%%])/i)) { + var rate = parseFloat(RegExp.$1 * 0.01); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (!target.isATBCharging()) continue; + var max = target.atbChargeDenom(); + var value = rate * max; + target.setATBCharge(value); + target.refresh(); + } + } else if (cmd.match(/(\d+)/i)) { + var value = parseInt(RegExp.$1); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (!target.isATBCharging()) continue; + target.setATBCharge(value); + target.refresh(); + } + } + return true; +}; + +BattleManager.actionATBInterrupt = function(actionArgs) { + var targets = this.makeActionTargets(actionArgs[0]); + if (targets.length < 1) return true; + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (!target.isATBCharging()) continue; + target.processATBInterrupt(); + } + return true; +}; + +BattleManager.actionATBSpeed = function(actionArgs) { + var targets = this.makeActionTargets(actionArgs[0]); + if (targets.length < 1) return true; + var cmd = actionArgs[1]; + if (cmd.match(/([\+\-]\d+)([%%])/i)) { + var rate = parseFloat(RegExp.$1 * 0.01); + var max = this.atbTarget(); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (target.isATBCharging()) continue; + var value = rate * max + target.atbSpeed(); + target.setATBSpeed(value); + target.refresh(); + } + } else if (cmd.match(/([\+\-]\d+)/i)) { + var plus = parseInt(RegExp.$1); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (target.isATBCharging()) continue; + var value = plus + target.atbSpeed(); + target.setATBSpeed(value); + target.refresh(); + } + } else if (cmd.match(/(\d+)([%%])/i)) { + var rate = parseFloat(RegExp.$1 * 0.01); + var max = this.atbTarget(); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (target.isATBCharging()) continue; + var value = rate * max; + target.setATBSpeed(value); + target.refresh(); + } + } else if (cmd.match(/(\d+)/i)) { + var value = parseInt(RegExp.$1); + for (var i = 0; i < targets.length; ++i) { + var target = targets[i]; + if (!target) continue; + if (target === this._subject) continue; + if (target.isATBCharging()) continue; + target.setATBSpeed(value); + target.refresh(); + } + } + return true; +}; + +//============================================================================= +// Game_Action +//============================================================================= + +Yanfly.ATB.Game_Action_applyItemUserEffect = + Game_Action.prototype.applyItemUserEffect; +Game_Action.prototype.applyItemUserEffect = function(target) { + Yanfly.ATB.Game_Action_applyItemUserEffect.call(this, target); + if (BattleManager.isATB() && $gameParty.inBattle()) { + this.applyItemATBEffect(target); + } +}; + +Game_Action.prototype.applyItemATBEffect = function(target) { + if (!target) return; + this.applyItemATBSetEffects(target); + this.applyItemATBAddEffects(target); + this.applyItemATBEvalEffect(target); + if (BattleManager.isCounterAttacking()) return; + this.applyItemATBInterrupt(target); + this.applyItemATBInterruptEval(target); +}; + +Game_Action.prototype.applyItemATBSetEffects = function(target) { + var item = this.item(); + if (!item) return; + var value = undefined; + if (target.isATBCharging()) { + var max = target.atbChargeDenom(); + if (item.setATBChargeFlat !== undefined) { + value = item.setATBChargeFlat; + } else if (item.setATBGaugeFlat !== undefined) { + value = item.setATBGaugeFlat; + } else if (item.setATBChargeRate !== undefined) { + value = item.setATBChargeRate * max; + } else if (item.setATBGaugeRate !== undefined) { + value = item.setATBGaugeRate * max; + } + if (value !== undefined) target.setATBCharge(value); + } else { + var max = BattleManager.atbTarget(); + if (item.setATBSpeedFlat !== undefined) { + value = item.setATBSpeedFlat; + } else if (item.setATBGaugeFlat !== undefined) { + value = item.setATBGaugeFlat; + } else if (item.setATBSpeedRate !== undefined) { + value = item.setATBSpeedRate * max; + } else if (item.setATBGaugeRate !== undefined) { + value = item.setATBGaugeRate * max; + } + if (value !== undefined) target.setATBSpeed(value); + } + if (value !== undefined && target.isActor()) BattleManager.statusUpdateATB(); +}; + +Game_Action.prototype.applyItemATBAddEffects = function(target) { + var item = this.item(); + if (!item) return; + if (target.isATBCharging()) { + var value = target.atbCharge(); + var max = target.atbChargeDenom(); + value += item.addATBChargeRate * max; + value += item.addATBGaugeRate * max; + value += item.addATBChargeFlat; + value += item.addATBGaugeFlat; + target.setATBCharge(value); + } else { + var value = target.atbSpeed(); + var max = BattleManager.atbTarget() + value += item.addATBSpeedRate * max; + value += item.addATBGaugeRate * max; + value += item.addATBSpeedFlat; + value += item.addATBGaugeFlat; + target.setATBSpeed(value); + } + if (value !== 0 && target.isActor()) BattleManager.statusUpdateATB(); +}; + +Game_Action.prototype.applyItemATBEvalEffect = function(target) { + var a = this.subject(); + var user = this.subject(); + var b = target; + var item = this.item(); + var skill = this.item(); + var s = $gameSwitches._data; + var v = $gameVariables._data; + var speed = target.atbSpeed(); + var charge = target.atbCharge(); + if (target.isATBCharging()) { + var max = target.atbChargeDenom(); + } else { + var max = BattleManager.atbTarget(); + } + var code = item.atbEval; + try { + eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'ATB EVAL ERROR'); + } + target.setATBSpeed(speed); + target.setATBCharge(charge); +}; + +Game_Action.prototype.applyItemATBInterrupt = function(target) { + var item = this.item(); + if (!item) return; + if (target === this.subject()) return; + if (!target.isATBCharging()) return; + if (item.atbInterruptRate <= 0) return; + var success = (Math.random() < item.atbInterruptRate); + if (success) target.processATBInterrupt(); +}; + +Game_Action.prototype.applyItemATBInterruptEval = function(target) { + var item = this.item(); + if (!item) return; + if (target === this.subject()) return; + if (!target.isATBCharging()) return; + if (item.atbInterruptEval === '') return; + var interrupt = false; + var a = this.subject(); + var user = this.subject(); + var b = target; + var item = this.item(); + var skill = this.item(); + var s = $gameSwitches._data; + var v = $gameVariables._data; + var speed = target.atbSpeed(); + var charge = target.atbCharge(); + var code = item.atbInterruptEval; + try { + eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'ATB INTERRUPT EVAL ERROR'); + } + if (interrupt) target.processATBInterrupt(); +}; + +Game_Action.prototype.rebalanceATBSpeed = function(target) { + var speed = this.subject().atbSpeed(); + var offset = 00000000001; + speed = Math.max(speed + offset, target.atbSpeed() + target.atbCharge()); + this.subject().setATBSpeed(speed); +}; + +//============================================================================= +// Game_Battlerbase +//============================================================================= + +Yanfly.ATB.Game_BattlerBase_refresh = Game_BattlerBase.prototype.refresh; +Game_BattlerBase.prototype.refresh = function() { + Yanfly.ATB.Game_BattlerBase_refresh.call(this); + if (BattleManager.isATB() && $gameParty.inBattle()) { + this._atbTickValue = undefined; + } +}; + +Yanfly.ATB.Game_BattlerBase_die = Game_BattlerBase.prototype.die; +Game_BattlerBase.prototype.die = function() { + Yanfly.ATB.Game_BattlerBase_die.call(this); + if (BattleManager.isATB() && $gameParty.inBattle()) this.resetAllATB(); +}; + +//============================================================================= +// Game_Battler +//============================================================================= + +Game_Battler.prototype.onATBStart = function() { + this._atbSpeed = eval(Yanfly.Param.ATBInitSpeed); + this._atbSpeed += BattleManager.atbTarget() * this.atbStartRate(); + this._atbSpeed += this.atbStartFlat(); + this._atbCharge = 0; + this._atbCharging = false; + this._atbChargeMod = 0; + this.applyPreemptiveBonusATB(); + this.applySurpriseBonusATB(); + this.refresh(); +}; + +Game_Battler.prototype.applyPreemptiveBonusATB = function() { + if (!BattleManager._preemptive) return; + if (!this.isActor()) return; + var rate = Yanfly.Param.ATBPreEmptive; + this._atbSpeed += rate * BattleManager.atbTarget(); +}; + +Game_Battler.prototype.applySurpriseBonusATB = function() { + if (!BattleManager._surprise) return; + if (!this.isEnemy()) return; + var rate = Yanfly.Param.ATBSurprise; + this._atbSpeed += rate * BattleManager.atbTarget(); +}; + +Yanfly.ATB.Game_Battler_onBattleEnd = Game_Battler.prototype.onBattleEnd; +Game_Battler.prototype.onBattleEnd = function() { + Yanfly.ATB.Game_Battler_onBattleEnd.call(this); + this._atbSpeed = 0; + this._atbCharge = 0; + this._atbCharging = false; + this._atbChargeMod = 0; +}; + +Game_Battler.prototype.atbSpeed = function() { + if (this._atbSpeed === undefined) this.onATBStart(); + return this._atbSpeed; +}; + +Game_Battler.prototype.atbRate = function() { + if (this._atbSpeed === undefined) this.onATBStart(); + var rate = this._atbSpeed / BattleManager.atbTarget(); + return rate.clamp(0, 1); +}; + +Game_Battler.prototype.isATBCharging = function() { + return this._atbCharging; +}; + +Game_Battler.prototype.setATBCharging = function(value) { + this._atbCharging = value; +}; + +Game_Battler.prototype.atbCharge = function() { + if (this._atbCharge === undefined) this.onATBStart(); + return this._atbCharge; +}; + +Game_Battler.prototype.atbChargeDenom = function() { + var denom = Math.max(1, BattleManager.atbCharge() - this._atbChargeMod); + return denom; +}; + +Game_Battler.prototype.atbChargeRate = function() { + if (this._atbCharge === undefined) this.onATBStart(); + if (!this.isATBCharging()) return 0; + var rate = this._atbCharge / this.atbChargeDenom(); + return rate.clamp(0, 1); +}; + +Game_Battler.prototype.setATBSpeed = function(value) { + this._atbSpeed = Math.max(0, value); +}; + +Game_Battler.prototype.setATBCharge = function(value) { + if (this.isATBCharging()) this._atbCharge = Math.max(0, value); +}; + +Game_Battler.prototype.setupATBCharge = function() { + if (this._bypassAtbEndTurn) return; + this.setATBCharging(true); + if (!this.currentAction()) this.makeActions(); + if (this.currentAction()) { + var item = this.currentAction().item(); + if (item) { + this._atbChargeMod = item.speed; + } else { + this._atbChargeMod = 0; + } + } else { + this._atbChargeMod = 0; + } + this.setATBCharge(0); + this.setActionState('waiting'); +}; + +Yanfly.ATB.Game_Battler_updateTick = Game_Battler.prototype.updateTick; +Game_Battler.prototype.updateTick = function() { + Yanfly.ATB.Game_Battler_updateTick.call(this); + if (BattleManager.isATB()) this.updateATB(); +}; + +Game_Battler.prototype.updateATB = function() { + if (this.isDead()) return this.resetAllATB(); + if (!this.canMove()) { + this.updateATBStates(); + return; + } + if (this.isATBCharging()) { + if (!this.currentAction()) this.resetAllATB(); + if (this.currentAction() && this.currentAction().item() === null) { + this.resetAllATB(); + } + } + if (this.isATBCharging()) { + var value = this.atbCharge() + this.atbSpeedTick(); + this.setATBCharge(value); + } else if (this.atbRate() < 1) { + var value = this.atbSpeed() + this.atbSpeedTick(); + this.setATBSpeed(value); + } +}; + +Game_Battler.prototype.updateATBStates = function() { + if (BattleManager.timeBasedBuffs()) return; + for (var i = 0; i < this._states.length; ++i) { + var stateId = this._states[i]; + var state = $dataStates[stateId]; + if (!state) continue; + if (!this._stateTurns[stateId]) continue; + if (state.restriction >= 4 && state.autoRemovalTiming !== 0) { + var value = BattleManager.tickRate() / Yanfly.Param.BECTurnTime; + this._stateTurns[stateId] -= value; + if (this._stateTurns[stateId] <= 0) this.removeState(stateId); + } + } +}; + +Game_Battler.prototype.resetAllATB = function() { + this._atbCharge = 0; + this._atbChargeMod = 0; + this._atbCharging = false; + this._atbSpeed = 0; + this.clearActions(); +}; + +Game_Battler.prototype.endTurnAllATB = function() { + this._atbCharge = 0; + this._atbChargeMod = 0; + this._atbCharging = false; + if (this.checkATBEndInstantCast()) return; + this.setEndActionATBSpeed(); + this.clearActions(); + this.setActionState('undecided'); + if (this.battler()) this.battler().refreshMotion(); + if (BattleManager.isTickBased()) this.onTurnEnd(); +}; + +Game_Battler.prototype.checkATBEndInstantCast = function() { + if (!Imported.YEP_InstantCast) return false; + var action = this.currentAction(); + if (!action) return false; + var item = action.item(); + if (!item) return false; + if (!this.isInstantCast(item)) return false; + var length = BattleManager.allBattleMembers().length; + for (var i = 0; i < length; ++i) { + var member = BattleManager.allBattleMembers()[i]; + if (!member) continue; + var max = member.atbSpeed() + member.atbCharge(); + this._atbSpeed = Math.max(this._atbSpeed, max); + } + this._atbSpeed = Math.max(this._atbSpeed, BattleManager.atbTarget()); + this._atbSpeed += 0.00000000001; + return true; +}; + +Game_Battler.prototype.atbSpeedRate = function() { + if (!this.canMove()) return 0; + var base = this.paramBase(6) + this.paramPlus(6); + if (base >= this.paramMax(6) && this.agi >= this.paramMax(6)) return 1; + var rate = this.agi / base; + return rate; +}; + +Game_Battler.prototype.atbSpeedTick = function() { + var value = this.atbTickValue(); + if (BattleManager.atbRubberband()) { + var min = BattleManager.atbMinimumSpeed(); + var max = BattleManager.atbMaximumSpeed(); + value = value.clamp(min, max); + } + return value * BattleManager.tickRate(); +}; + +Game_Battler.prototype.atbTickValue = function() { + if (this._atbTickValue !== undefined) return this._atbTickValue; + var a = this; + var user = this; + var subject = this; + this._atbTickValue = eval(Yanfly.Param.ATBPerTick); + return this._atbTickValue; +}; + +Game_Battler.prototype.setEndActionATBSpeed = function() { + this._atbSpeed = 0; + var action = this.currentAction(); + if (!action) return; + var item = action.item();; + if (item) { + if (item.afterATBFlat !== undefined) this.setATBSpeed(item.afterATBFlat); + if (item.afterATBRate !== undefined) { + this.setATBSpeed(item.afterATBRate * BattleManager.atbTarget()); + } + } + this._atbSpeed += BattleManager.atbTarget() * this.atbTurnRate(); + this._atbSpeed += this.atbTurnFlat(); + if (item) this.afterATBEval(item); +}; + +Game_Battler.prototype.afterATBEval = function(item) { + if (!item) return; + var a = this; + var user = this; + var skill = item; + var s = $gameSwitches._data; + var v = $gameVariables._data; + var speed = this._atbSpeed; + var max = BattleManager.atbTarget(); + eval(item.atbAfterEval); + this.setATBSpeed(speed); +}; + +Game_Battler.prototype.processATBInterrupt = function() { + if (this.currentAction()) { + var item = this.currentAction().item(); + if (item && item.cannotAtbInterrupt) return; + } + this.resetAllATB(); + this.refresh(); +}; + +Game_Battler.prototype.atbStartFlat = function() { + var value = 0; + for (var i = 0; i < this.states().length; ++i) { + var state = this.states()[i]; + if (state) value += state.atbStartFlat; + } + return value; +}; + +Game_Battler.prototype.atbStartRate = function() { + var value = 0; + for (var i = 0; i < this.states().length; ++i) { + var state = this.states()[i]; + if (state) value += state.atbStartRate; + } + return value; +}; + +Game_Battler.prototype.atbTurnFlat = function() { + var value = 0; + for (var i = 0; i < this.states().length; ++i) { + var state = this.states()[i]; + if (state) value += state.atbTurnFlat; + } + return value; +}; + +Game_Battler.prototype.atbTurnRate = function() { + var value = 0; + for (var i = 0; i < this.states().length; ++i) { + var state = this.states()[i]; + if (state) value += state.atbTurnRate; + } + return value; +}; + +Yanfly.ATB.Game_Battler_removeState = Game_Battler.prototype.removeState; +Game_Battler.prototype.removeState = function(stateId) { + if (BattleManager.isATB()) { + var confuseCondition = this.isConfused(); + } + Yanfly.ATB.Game_Battler_removeState.call(this, stateId); + if (BattleManager.isATB()) { + if (confuseCondition !== this.isConfused()) this.resetAllATB(); + } +}; + +//============================================================================= +// Game_Actor +//============================================================================= + +Game_Actor.prototype.atbStartFlat = function() { + var value = Game_Battler.prototype.atbStartFlat.call(this); + value += this.actor().atbStartFlat; + value += this.currentClass().atbStartFlat; + for (var i = 0; i < this.equips().length; ++i) { + var equip = this.equips()[i]; + if (equip && equip.atbStartFlat) value += equip.atbStartFlat; + } + return value; +}; + +Game_Actor.prototype.atbStartRate = function() { + var value = Game_Battler.prototype.atbStartRate.call(this); + value += this.actor().atbStartRate; + value += this.currentClass().atbStartRate; + for (var i = 0; i < this.equips().length; ++i) { + var equip = this.equips()[i]; + if (equip && equip.atbStartRate) value += equip.atbStartRate; + } + return value; +}; + +Game_Actor.prototype.atbTurnFlat = function() { + var value = Game_Battler.prototype.atbTurnFlat.call(this); + value += this.actor().atbTurnFlat; + value += this.currentClass().atbTurnFlat; + for (var i = 0; i < this.equips().length; ++i) { + var equip = this.equips()[i]; + if (equip && equip.atbTurnFlat) value += equip.atbTurnFlat; + } + return value; +}; + +Game_Actor.prototype.atbTurnRate = function() { + var value = Game_Battler.prototype.atbTurnRate.call(this); + value += this.actor().atbTurnRate; + value += this.currentClass().atbTurnRate; + for (var i = 0; i < this.equips().length; ++i) { + var equip = this.equips()[i]; + if (equip && equip.atbTurnRate) value += equip.atbTurnRate; + } + return value; +}; + +//============================================================================= +// Game_Enemy +//============================================================================= + +Game_Enemy.prototype.atbStartFlat = function() { + var value = Game_Battler.prototype.atbStartFlat.call(this); + value += this.enemy().atbStartFlat; + return value; +}; + +Game_Enemy.prototype.atbStartRate = function() { + var value = Game_Battler.prototype.atbStartRate.call(this); + value += this.enemy().atbStartRate; + return value; +}; + +Game_Enemy.prototype.atbTurnFlat = function() { + var value = Game_Battler.prototype.atbTurnFlat.call(this); + value += this.enemy().atbTurnFlat; + return value; +}; + +Game_Enemy.prototype.atbTurnRate = function() { + var value = Game_Battler.prototype.atbTurnRate.call(this); + value += this.enemy().atbTurnRate; + return value; +}; + +//============================================================================= +// Game_Unit +//============================================================================= + +Game_Unit.prototype.onATBStart = function() { + if (!BattleManager.isATB()) return; + for (var i = 0; i < this.members().length; ++i) { + var member = this.members()[i]; + if (member) member.onATBStart(); + } +}; + +Game_Unit.prototype.increaseTurnTimeBasedATB = function() { + for (var i = 0; i < this.members().length; ++i) { + var member = this.members()[i]; + if (!member) continue; + if (member.isDead()) continue; + if (member.isHidden()) continue; + if (member.canMove()) continue; + member.onTurnEnd(); + } +}; + +//============================================================================= +// Game_Party +//============================================================================= + +Yanfly.ATB.Game_Party_performEscape = Game_Party.prototype.performEscape; +Game_Party.prototype.performEscape = function() { + if (BattleManager.isATB()) return; + Yanfly.ATB.Game_Party_performEscape.call(this); +}; + +//============================================================================= +// Game_Troop +//============================================================================= + +Yanfly.ATB.Game_Troop_increaseTurn = Game_Troop.prototype.increaseTurn; +Game_Troop.prototype.increaseTurn = function() { + Yanfly.ATB.Game_Troop_increaseTurn.call(this); + if (BattleManager.isATB() && BattleManager.timeBasedStates()) { + $gameParty.increaseTurnTimeBasedATB(); + this.increaseTurnTimeBasedATB(); + } +}; + +//============================================================================= +// Window_Base +//============================================================================= + +Window_Base.prototype.atbGaugeStyle = function() { + return Yanfly.Param.ATBGaugeStyle +}; + +Window_Base.prototype.atbGaugeColor1 = function(actor) { + if (actor.atbRate() < 1) { + if (actor.atbSpeedRate() === 0) { + return this.textColor(Yanfly.Param.ATBColorStop1); + } else if (actor.atbSpeedRate() > 1) { + return this.textColor(Yanfly.Param.ATBColorFast1); + } else if (actor.atbSpeedRate() < 1) { + return this.textColor(Yanfly.Param.ATBColorSlow1); + } else { + return this.textColor(Yanfly.Param.ATBColorAtb1); + } + } else if (actor.atbRate() >= 1 && actor.atbChargeRate() >= 0) { + return this.textColor(Yanfly.Param.ATBColorFull1); + } else { + return this.gaugeBackColor(); + } +}; + +Window_Base.prototype.atbGaugeColor2 = function(actor) { + if (actor.atbRate() < 1) { + if (actor.atbSpeedRate() === 0) { + return this.textColor(Yanfly.Param.ATBColorStop2); + } else if (actor.atbSpeedRate() > 1) { + return this.textColor(Yanfly.Param.ATBColorFast2); + } else if (actor.atbSpeedRate() < 1) { + return this.textColor(Yanfly.Param.ATBColorSlow2); + } else { + return this.textColor(Yanfly.Param.ATBColorAtb2); + } + } else if (actor.atbRate() >= 1 && actor.atbChargeRate() >= 0) { + return this.textColor(Yanfly.Param.ATBColorFull2); + } else { + return this.gaugeBackColor(); + } +}; + +Window_Base.prototype.drawActorAtbGauge = function(actor, wx, wy, ww) { + ww = ww || 96; + if (!actor) return; + var color1 = this.atbGaugeColor1(actor); + var color2 = this.atbGaugeColor2(actor); + if (actor.atbRate() < 1) { + var rate = actor.atbRate(); + } else if (actor.atbRate() >= 1 && actor.atbChargeRate() >= 0) { + var rate = 1; + } else { + var rate = 0; + } + this.drawGauge(wx, wy, ww, rate, color1, color2); + if (actor.atbChargeRate() > 0) this.drawAtbChargeGauge(actor, wx, wy, ww); + if (this.atbGaugeStyle() === 2) { + var text = Yanfly.Param.ATBGaugeText; + var align =Yanfly.Param.ATBGaugeAlign; + if (actor.atbRate() >= 1) { + this.changeTextColor(this.normalColor()); + } else { + this.changeTextColor(this.systemColor()); + } + this.drawText(text, wx, wy, ww, align); + this.resetTextColor(); + } +}; + +Window_Base.prototype.drawAtbChargeGauge = function(actor, wx, wy, ww) { + var color1 = this.textColor(Yanfly.Param.ATBColorChar1); + var color2 = this.textColor(Yanfly.Param.ATBColorChar2); + var rate = actor.atbChargeRate(); + this.drawGauge(wx, wy, ww * rate, 1, color1, color2); +}; + +//============================================================================= +// Window_Help +//============================================================================= + +Yanfly.ATB.Window_Help_setItem = Window_Help.prototype.setItem; +Window_Help.prototype.setItem = function(item) { + if (this.meetATBConditions(item)) return this.setText(item.atbHelp); + Yanfly.ATB.Window_Help_setItem.call(this, item); +}; + +Window_Help.prototype.meetATBConditions = function(item) { + if (!item) return false; + if (!BattleManager.isATB()) return false; + return item.atbHelp !== undefined; +}; + +//============================================================================= +// Window_BattleStatus +//============================================================================= + +Window_BattleStatus.prototype.redrawATB = function() { + if (this.isATBGaugeStyle(0)) return; + var rect; + for (var i = 0; i < $gameParty.battleMembers().length; ++i) { + var actor = $gameParty.battleMembers()[i]; + if (this.isATBGaugeStyle(1)) { + rect = this.basicAreaRect(i); + this.contents.clearRect(rect.x - 1, rect.y, rect.width + 2, rect.height); + this.drawBasicArea(rect, actor); + } else if (this.isATBGaugeStyle(2)) { + this.redrawATBGaugeRect(i, actor); + } + } +}; + +Window_BattleStatus.prototype.redrawATBGaugeRect = function(index, actor) { + var rect = this.gaugeAreaRect(index); + var clrect = this.gaugeAreaRect(index); + var totalArea = this.gaugeAreaWidth(); + if ($dataSystem.optDisplayTp) { + var gw = totalArea / 4 - 15; + clrect.x = rect.x + gw * 3 + 44; + clrect.y = rect.y; + clrect.width = gw + 2; + this.contents.clearRect(clrect.x, clrect.y, clrect.width, clrect.height); + this.drawActorAtbGauge(actor, rect.x + gw * 3 + 45, rect.y, gw); + } else { + totalArea -= 30; + var hpW = parseInt(totalArea * 108 / 300); + var otW = parseInt(totalArea * 96 / 300); + clrect.x = rect.x + hpW + otW + 29; + clrect.y = rect.y; + clrect.width = otW + 2; + this.contents.clearRect(clrect.x, clrect.y, clrect.width, clrect.height); + this.drawActorAtbGauge(actor, rect.x + hpW + otW + 30, rect.y, otW); + } +}; + +Window_BattleStatus.prototype.isATBGaugeStyle = function(type) { + if (this.atbGaugeStyle() !== type) return false; + if (!BattleManager.isATB()) return false; + return (SceneManager._scene instanceof Scene_Battle); +}; + +Yanfly.ATB.Window_BattleStatus_drawBasicArea = + Window_BattleStatus.prototype.drawBasicArea; +Window_BattleStatus.prototype.drawBasicArea = function(rect, actor) { + if (this.isATBGaugeStyle(1)) { + this.drawActorAtbGauge(actor, rect.x, rect.y, rect.width); + } + Yanfly.ATB.Window_BattleStatus_drawBasicArea.call(this, rect, actor); +}; + +Yanfly.ATB.Window_BattleStatus_drawGaugeAreaWithTp = + Window_BattleStatus.prototype.drawGaugeAreaWithTp; +Window_BattleStatus.prototype.drawGaugeAreaWithTp = function(rect, actor) { + if (this.isATBGaugeStyle(2)) { + var totalArea = this.gaugeAreaWidth(); + var gw = totalArea / 4 - 15; + this.drawActorHp(actor, rect.x + 0, rect.y, gw); + this.drawActorMp(actor, rect.x + gw * 1 + 15, rect.y, gw); + this.drawActorTp(actor, rect.x + gw * 2 + 30, rect.y, gw); + this.drawActorAtbGauge(actor, rect.x + gw * 3 + 45, rect.y, gw); + } else { + Yanfly.ATB.Window_BattleStatus_drawGaugeAreaWithTp.call(this, rect, actor); + } +}; + +Yanfly.ATB.Window_BattleStatus_drawGaugeAreaWOTp = + Window_BattleStatus.prototype.drawGaugeAreaWithoutTp; +Window_BattleStatus.prototype.drawGaugeAreaWithoutTp = function(rect, actor) { + if (this.isATBGaugeStyle(2)) { + var totalArea = this.gaugeAreaWidth() - 30; + var hpW = parseInt(totalArea * 108 / 300); + var otW = parseInt(totalArea * 96 / 300); + this.drawActorHp(actor, rect.x + 0, rect.y, hpW); + this.drawActorMp(actor, rect.x + hpW + 15, rect.y, otW); + this.drawActorAtbGauge(actor, rect.x + hpW + otW + 30, rect.y, otW); + } else { + Yanfly.ATB.Window_BattleStatus_drawGaugeAreaWOTp.call(this, rect, actor); + } +}; + +//============================================================================= +// Window_Options +//============================================================================= + +Yanfly.ATB.Window_Options_addGeneralOptions = + Window_Options.prototype.addGeneralOptions; +Window_Options.prototype.addGeneralOptions = function() { + Yanfly.ATB.Window_Options_addGeneralOptions.call(this); + if (Imported.YEP_OptionsCore) return; + if ($gameSystem.getBattleSystem() === 'atb') this.addATBOptions(); +}; + +Window_Options.prototype.addATBOptions = function() { + var text = Yanfly.Param.ATBOptionSpeedTx; + this.addCommand(text, 'atbSpeed'); +}; + +Yanfly.ATB.Window_Options_statusText = Window_Options.prototype.statusText; +Window_Options.prototype.statusText = function(index) { + var symbol = this.commandSymbol(index); + if (symbol === 'atbSpeed') { + return this.getConfigValue('atbSpeed'); + } else { + return Yanfly.ATB.Window_Options_statusText.call(this, index); + } +}; + +if (!Imported.YEP_OptionsCore) { + +Yanfly.ATB.Window_Options_processOk = Window_Options.prototype.processOk; +Window_Options.prototype.processOk = function() { + var index = this.index(); + var symbol = this.commandSymbol(index); + if (symbol === 'atbSpeed') { + var value = this.getConfigValue(symbol); + value += 1; + if (value > 10) value = 1; + this.changeValue(symbol, value); + } else { + Yanfly.ATB.Window_Options_processOk.call(this); + } +}; + +Yanfly.ATB.Window_Options_cursorRight = Window_Options.prototype.cursorRight; +Window_Options.prototype.cursorRight = function(wrap) { + var index = this.index(); + var symbol = this.commandSymbol(index); + if (symbol === 'atbSpeed') { + var value = this.getConfigValue(symbol); + value += 1; + if (value > 10) value = 1; + this.changeValue(symbol, value); + } else { + Yanfly.ATB.Window_Options_cursorRight.call(this, wrap); + } +}; + +Yanfly.ATB.Window_Options_cursorLeft = Window_Options.prototype.cursorLeft; +Window_Options.prototype.cursorLeft = function(wrap) { + var index = this.index(); + var symbol = this.commandSymbol(index); + if (symbol === 'atbSpeed') { + var value = this.getConfigValue(symbol); + value -= 1; + if (value < 1) value = 10; + this.changeValue(symbol, value); + } else { + Yanfly.ATB.Window_Options_cursorLeft.call(this, wrap); + } +}; + +}; // Imported.YEP_OptionsCore + + +//============================================================================= +// Scene_Battle +//============================================================================= + +Yanfly.ATB.Scene_Battle_updateWindowPositions = + Scene_Battle.prototype.updateWindowPositions; +Scene_Battle.prototype.updateWindowPositions = function() { + if (BattleManager.isATB() && !this._atbLockStatusWin) { + this._atbLockStatusWin = eval(Yanfly.Param.ATBLockStatusWin); + } + if (BattleManager.isATB() && this._atbLockStatusWin) { + this.updateWindowPositionsATB(); + } else { + Yanfly.ATB.Scene_Battle_updateWindowPositions.call(this); + } +}; + +Yanfly.ATB.Scene_Battle_isStartActorCommand = + Scene_Battle.prototype.isStartActorCommand; +Scene_Battle.prototype.isStartActorCommand = function() { + if (BattleManager.isATB()) return true; + return Yanfly.ATB.Scene_Battle_isStartActorCommand.call(this); +}; + +Scene_Battle.prototype.updateWindowPositionsATB = function() { + var activeWin = null; + if (this._partyCommandWindow.active) activeWin = this._partyCommandWindow; + if (this._actorCommandWindow.active) activeWin = this._actorCommandWindow; + if (activeWin === null) return; + if (activeWin.x <= Graphics.boxWidth / 2) { + this._statusWindow.x = Graphics.boxWidth - this._statusWindow.width; + } else { + this._statusWindow.x = 0; + } +}; + +Yanfly.ATB.Scene_Battle_commandFight = Scene_Battle.prototype.commandFight; +Scene_Battle.prototype.commandFight = function() { + if (BattleManager.isATB()) { + this.startActorCommandSelection(); + BattleManager._phase = 'input'; + } else { + Yanfly.ATB.Scene_Battle_commandFight.call(this); + } +}; + +Yanfly.ATB.Scene_Battle_startActorCommandSelection = + Scene_Battle.prototype.startActorCommandSelection; +Scene_Battle.prototype.startActorCommandSelection = function() { + Yanfly.ATB.Scene_Battle_startActorCommandSelection.call(this); + if (BattleManager.isATB()) { + BattleManager._bypassAtbEndTurn = true; + BattleManager.actor().spriteStepForward(); + BattleManager.actor().setActionState('undecided'); + BattleManager.actor().requestMotionRefresh(); + BattleManager.actor().makeActions(); + BattleManager._bypassAtbEndTurn = undefined; + } +}; + +//============================================================================= +// Utilities +//============================================================================= + +Yanfly.Util = Yanfly.Util || {}; + +Yanfly.Util.displayError = function(e, code, message) { + console.log(message); + console.log(code || 'NON-EXISTENT'); + console.error(e); + if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.6.0") return; + if (Utils.isNwjs() && Utils.isOptionValid('test')) { + if (!require('nw.gui').Window.get().isDevToolsOpen()) { + require('nw.gui').Window.get().showDevTools(); + } + } +}; + +//============================================================================= +// End of File +//============================================================================= +} else { // Yanfly.BEC.version + +var text = '================================================================\n'; +text += 'YEP_X_AnimatedSVEnemies requires YEP_BattleEngineCore to be at the '; +text += 'latest version to run properly.\n\nPlease go to www.yanfly.moe and '; +text += 'update to the latest version for the YEP_BattleEngineCore plugin.\n'; +text += '================================================================\n'; +console.log(text); +require('nw.gui').Window.get().showDevTools(); + +} // Yanfly.BEC.version +}; // YEP_BattleEngineCore \ No newline at end of file diff --git a/RPG project 2019/js/plugins/YEP_X_BattleSysSTB.js b/RPG project 2019/js/plugins/YEP_X_BattleSysSTB.js new file mode 100644 index 0000000..16adb4b --- /dev/null +++ b/RPG project 2019/js/plugins/YEP_X_BattleSysSTB.js @@ -0,0 +1,728 @@ +//============================================================================= +// Yanfly Engine Plugins - Battle System - Standard Turn Battle +// YEP_X_BattleSysSTB.js +//============================================================================= + +var Imported = Imported || {}; +Imported.YEP_X_BattleSysSTB = true; + +var Yanfly = Yanfly || {}; +Yanfly.STB = Yanfly.STB || {}; +Yanfly.STB.version = 1.05; + +//============================================================================= + /*: + * @plugindesc v1.05 (Requires YEP_BattleEngineCore.js) Add STB (Standard + * Turn Battle) into your game using this plugin! + * @author Yanfly Engine Plugins + * + * @param ---General--- + * @default + * + * @param Action Speed + * @parent ---General--- + * @desc This is the formula used for an action's base speed. + * Default: agi + Math.randomInt(Math.floor(5 + agi / 4)) + * @default agi + * + * @param Delay Status Adjust + * @parent ---General--- + * @type boolean + * @on YES + * @off NO + * @desc Delay the time it takes for the Status Window to move towards + * the center. YES - true NO - false + * @default true + * + * @param ---Escape--- + * @default + * + * @param Escape Ratio + * @parent ---Escape--- + * @desc How STB calculates escape ratios. + * Default: 0.5 * $gameParty.agility() / $gameTroop.agility() + * @default 0.125 * $gameParty.agility() / $gameTroop.agility() + * + * @param Fail Escape Boost + * @parent ---Escape--- + * @desc Each time the player fails escape, increase the success + * rate by this much. Default: 0.1 + * @default 0.025 + * + * @param ---Turn Order--- + * @default + * + * @param Show Turn Window + * @parent ---Turn Order--- + * @type boolean + * @on Show + * @off Hide + * @desc Show the turn order window? + * YES - true NO - false + * @default false + * + * @param Turn Window X + * @parent ---Turn Order--- + * @desc The turn order window's x position. + * You can use a formula. + * @default Graphics.boxWidth - width + * + * @param Turn Window Y + * @parent ---Turn Order--- + * @desc The turn order window's y position. + * You can use a formula. + * @default this.fittingHeight(2) + * + * @param Turn Window Width + * @parent ---Turn Order--- + * @desc The turn order window's width. + * You can use a formula. + * @default 200 + * + * @param Turn Window Height + * @parent ---Turn Order--- + * @desc The turn order window's height. + * You can use a formula. + * @default Graphics.boxHeight - statusHeight - this.fittingHeight(2) + * + * @param Current Battler Color + * @parent ---Turn Order--- + * @type number + * @min 0 + * @max 31 + * @desc The text color used for the current battler. + * @default 6 + * + * @param Actor Battler Color + * @parent ---Turn Order--- + * @type number + * @min 0 + * @max 31 + * @desc The text color used for the actors. + * @default 4 + * + * @param Enemy Battler Color + * @parent ---Turn Order--- + * @type number + * @min 0 + * @max 31 + * @desc The text color used for the enemies. + * @default 2 + * + * @help + * ============================================================================ + * Introduction + * ============================================================================ + * + * This plugin requires YEP_BattleEngineCore. Make sure this plugin is located + * under YEP_BattleEngineCore in the plugin list. + * + * To use the STB system, go to the Battle Engine Core plugin and change the + * 'Default System' setting in the parameters to 'stb'. + * + * The Standard Turn Battle system functions off of the Default Turn Battle + * system's structure. Action orders are determined by the battlers' AGI values + * and they go from highest to lowest. However, actions are not selected at the + * start of the turn. Instead, the turn progresses and the actions are picked + * as each battler's turn appears, then proceeds to be executed immediately. + * + * Each battler is only allowed one action per battle turn, meaning a single + * battler cannot have twice the number of turns as another battler even if the + * battler's AGI value is double that of the other. This is to prevent any + * balancing issues that come from tick-based battle systems as they tend to be + * far more difficult to balance compared to turn-based battle systems. + * + * Because of the nature of the Standard Turn Battle System, an item or skill's + * action speed value found in the database will be disabled as it cannot push + * forward a battler's in the turn order. + * + * ============================================================================ + * Plugin Commands + * ============================================================================ + * + * To change your battle system to Standard Turn Battle if it isn't the default + * battle system, you can use the following Plugin Command: + * + * Plugin Command: + * setBattleSys STB Sets battle system to Standard Turn Battle. + * setBattleSys DTB Sets battle system to Default Turn Battle. + * + * Using the above Plugin Commands, you can toggle between the Default Battle + * System and Standard Turn Battle! + * + * ============================================================================ + * Notetags + * ============================================================================ + * + * The following are notetags that pertain to and affect the STB system. + * + * Skill and Item Notetags: + * + * + * text + * text + * + * For those planning on using multiple battle systems, sometimes you may + * have your skills perform differently while using STB. If so, using this + * notetag will allow skills and items to display different help text while + * STB is enabled. + * + * ============================================================================ + * Changelog + * ============================================================================ + * + * Version 1.05: + * - Fixed Forced Action endless bug and added compatibility with Instant Cast. + * + * Version 1.04: + * - Bypass the isDevToolsOpen() error when bad code is inserted into a script + * call or custom Lunatic Mode code segment due to updating to MV 1.6.1. + * + * Version 1.03: + * - Updated for RPG Maker MV version 1.5.0. + * + * Version 1.02: + * - Instant Cast compatibility update. + * + * Version 1.01: + * - Fixed a bug that caused escaping to crash the game if not using STB. + * + * Version 1.00: + * - Finished Plugin! + */ +//============================================================================= + +if (Imported.YEP_BattleEngineCore) { +if (Yanfly.BEC.version && Yanfly.BEC.version >= 1.42) { + +//============================================================================= +// Parameter Variables +//============================================================================= + +Yanfly.Parameters = PluginManager.parameters('YEP_X_BattleSysSTB'); +Yanfly.Param = Yanfly.Param || {}; + +Yanfly.Param.STBActionSpeed = String(Yanfly.Parameters['Action Speed']); +Yanfly.Param.STBDelayStatus = String(Yanfly.Parameters['Delay Status Adjust']); +Yanfly.Param.STBDelayStatus = eval(Yanfly.Param.STBDelayStatus); + +Yanfly.Param.STBEscapeRatio = String(Yanfly.Parameters['Escape Ratio']); +Yanfly.Param.STBEscapeBoost = String(Yanfly.Parameters['Fail Escape Boost']); + +Yanfly.Param.STBShowWindow = String(Yanfly.Parameters['Show Turn Window']); +Yanfly.Param.STBShowWindow = eval(Yanfly.Param.STBShowWindow); +Yanfly.Param.STBWindowX = String(Yanfly.Parameters['Turn Window X']); +Yanfly.Param.STBWindowY = String(Yanfly.Parameters['Turn Window Y']); +Yanfly.Param.STBWindowW = String(Yanfly.Parameters['Turn Window Width']); +Yanfly.Param.STBWindowH = String(Yanfly.Parameters['Turn Window Height']); +Yanfly.Param.STBWinSubject = Number(Yanfly.Parameters['Current Battler Color']); +Yanfly.Param.STBWinActor = Number(Yanfly.Parameters['Actor Battler Color']); +Yanfly.Param.STBWinEnemy = Number(Yanfly.Parameters['Enemy Battler Color']); + +//============================================================================= +// DataManager +//============================================================================= + +Yanfly.STB.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; +DataManager.isDatabaseLoaded = function() { + if (!Yanfly.STB.DataManager_isDatabaseLoaded.call(this)) return false; + + if (!Yanfly._loaded_YEP_X_BattleSysSTB) { + this.processSTBNotetags1($dataSkills); + this.processSTBNotetags1($dataItems); + Yanfly._loaded_YEP_X_BattleSysSTB = true; + } + + return true; +}; + +DataManager.processSTBNotetags1 = function(group) { + for (var n = 1; n < group.length; n++) { + var obj = group[n]; + var notedata = obj.note.split(/[\r\n]+/); + + var evalMode = 'none'; + obj.stbHelp = undefined; + + for (var i = 0; i < notedata.length; i++) { + var line = notedata[i]; + if (line.match(/<(?:STB HELP)>/i)) { + evalMode = 'stb help'; + obj.stbHelp = ''; + } else if (line.match(/<\/(?:STB HELP)>/i)) { + evalMode = 'none'; + } else if (evalMode === 'stb help') { + obj.stbHelp += line + '\n'; + } + } + } +}; + +//============================================================================= +// BattleManager +//============================================================================= + +BattleManager.isSTB = function() { + return this.isBattleSystem('stb'); +}; + +Yanfly.STB.BattleManager_isTurnBased = BattleManager.isTurnBased; +BattleManager.isTurnBased = function() { + if (this.isSTB()) return true; + return Yanfly.STB.BattleManager_isTurnBased.call(this); +}; + +Yanfly.STB.BattleManager_makeEscapeRatio = BattleManager.makeEscapeRatio; +BattleManager.makeEscapeRatio = function() { + if (this.isSTB()) { + var code = Yanfly.Param.STBEscapeRatio; + try { + this._escapeRatio = eval(code); + } catch (e) { + this._escapeRatio = 0; + Yanfly.Util.displayError(e, code, 'STB ESCAPE RATIO ERROR'); + } + var code = Yanfly.Param.STBEscapeBoost; + try { + this._escapeFailBoost = eval(code); + } catch (e) { + this._escapeFailBoost = 0; + Yanfly.Util.displayError(e, code, 'STB ESCAPE BOOST ERROR'); + } + } else { + this._escapeFailBoost = 0.1; + Yanfly.STB.BattleManager_makeEscapeRatio.call(this); + } +}; + +Yanfly.STB.BattleManager_startInput = BattleManager.startInput; +BattleManager.startInput = function() { + Yanfly.STB.BattleManager_startInput.call(this); + if (this.isSTB() && this._phase !== 'turn') this.startTurn(); +}; + +Yanfly.STB.BattleManager_startTurn = BattleManager.startTurn; +BattleManager.startTurn = function() { + if (this._stbFailedEscape) { + this.stbFailedEscape(); + } else { + Yanfly.STB.BattleManager_startTurn.call(this); + } +}; + +BattleManager.stbFailedEscape = function() { + this._stbFailedEscape = false; + $gameParty.requestMotionRefresh(); +}; + +Yanfly.STB.BattleManager_processTurn = BattleManager.processTurn; +BattleManager.processTurn = function() { + var subject = this._subject; + SceneManager._scene.refreshSTBTurnOrderWindow(); + if (this.isSTB() && subject.isActor()) { + this.startSTBInput(); + } else { + Yanfly.STB.BattleManager_processTurn.call(this); + } +}; + +BattleManager.startSTBInput = function() { + this._phase = 'input'; + var battler = this._subject; + BattleManager.changeActor(battler.index(), 'undecided'); + if (!battler.canInput()) { + battler.makeActions(); + this.startAction(); + } +}; + +Yanfly.STB.BattleManager_selectPreviousCommand = + BattleManager.selectPreviousCommand; +BattleManager.selectPreviousCommand = function() { + if (this.isSTB()) { + this._activeSTBActor = this._actorIndex; + this._subject = null; + this.changeActor(-1, 'undecided'); + } else { + Yanfly.STB.BattleManager_selectPreviousCommand.call(this); + } +}; + +Yanfly.STB.BattleManager_displayEscapeFailureMessage = + BattleManager.displayEscapeFailureMessage; +BattleManager.displayEscapeFailureMessage = function() { + Yanfly.STB.BattleManager_displayEscapeFailureMessage.call(this); + if (this.isSTB()) { + this.endAction(); + this._stbFailedEscape = true; + } +}; + +BattleManager.stbSetSubject = function() { + BattleManager.changeActor(this._activeSTBActor, 'undecided'); + this._subject = this.actor(); +}; + +Yanfly.STB.BattleManager_selectNextCommand = BattleManager.selectNextCommand; +BattleManager.selectNextCommand = function() { + if (this.isSTB()) { + if (this._subject) { + this.startAction(); + } else { + this.stbSetSubject(); + this.startSTBInput(); + } + } else { + Yanfly.STB.BattleManager_selectNextCommand.call(this); + } +}; + +Yanfly.STB.BattleManager_startAction = BattleManager.startAction; +BattleManager.startAction = function() { + if (Imported.YEP_InstantCast) this.detectStbInstantCast(); + Yanfly.STB.BattleManager_startAction.call(this); +}; + +Yanfly.STB.BattleManager_endAction = BattleManager.endAction; +BattleManager.endAction = function() { + if (this.isSTB()) { + this.endSTBAction(); + } else { + Yanfly.STB.BattleManager_endAction.call(this); + } +}; + +BattleManager.endSTBAction = function() { + this._phase = 'turn'; + if (this._stbInstantCast) { + this._stbInstantCast = false; + return Yanfly.BEC.BattleManager_endAction.call(this); + } + if (this._subject) { + this._performedBattlers.push(this._subject); + this._subject.spriteStepBack(); + this._subject.onAllActionsEnd(); + this._subject.removeCurrentAction(); + } + if (this._processingForcedAction) { + this._phase = this._preForcePhase; + this._processingForcedAction = false; + } + if (this.loadPreForceActionSettings()) return; + this._subject = null; + Yanfly.BEC.BattleManager_endAction.call(this); +}; + +BattleManager.detectStbInstantCast = function() { + this._stbInstantCast = false; + if (!this.isSTB()) return; + if (!this._subject) return; + if (!this._subject.currentAction()) return; + if (!this._subject.currentAction().item()) return; + var item = this._subject.currentAction().item(); + this._stbInstantCast = this._subject.isInstantCast(item); +}; + +//============================================================================= +// Game_Action +//============================================================================= + +Yanfly.STB.Game_Action_speed = Game_Action.prototype.speed; +Game_Action.prototype.speed = function() { + if (BattleManager.isSTB()) { + var user = this.subject(); var a = user; + var maxhp = user.mhp; var mhp = user.mhp; var hp = user.hp; + var maxmp = user.mmp; var mmp = user.mmp; var mp = user.mp; + var maxtp = user.maxTp(); var mtp = user.maxTp(); var tp = user.tp; + var atk = user.atk; var def = user.def; var mat = user.mat; + var int = user.mat; var mdf = user.mdf; var res = user.res; + var agi = user.agi; var luk = user.luk; + var code = Yanfly.Param.STBActionSpeed; + try { + var speed = eval(code); + } catch (e) { + var speed = agi; + Yanfly.Util.displayError(e, code, 'STB ACTION SPEED FORMULA ERROR'); + } + return speed; + } else { + return Yanfly.STB.Game_Action_speed.call(this); + } +}; + +//============================================================================= +// Scene_Battle +//============================================================================= + +Yanfly.STB.Scene_Battle_createHelpWindow = + Scene_Battle.prototype.createHelpWindow; +Scene_Battle.prototype.createHelpWindow = function() { + if (BattleManager.isSTB()) this.createSTBTurnOrderWindow(); + Yanfly.STB.Scene_Battle_createHelpWindow.call(this); +}; + +Scene_Battle.prototype.createSTBTurnOrderWindow = function() { + if (!Yanfly.Param.STBShowWindow) return; + var statusWindow = this._statusWindow; + this._stbTurnOrderWindow = new Window_STB_TurnOrder(statusWindow); + this.addWindow(this._stbTurnOrderWindow); +}; + +Scene_Battle.prototype.refreshSTBTurnOrderWindow = function() { + if (!this._stbTurnOrderWindow) return; + this._stbTurnOrderWindow.refresh(); +}; + +Yanfly.STB.Scene_Battle_commandFight = Scene_Battle.prototype.commandFight; +Scene_Battle.prototype.commandFight = function() { + if (BattleManager.isSTB()) { + BattleManager.stbSetSubject(); + BattleManager.startSTBInput(); + } else { + Yanfly.STB.Scene_Battle_commandFight.call(this); + } +}; + +Yanfly.STB.Scene_Battle_commandEscape = Scene_Battle.prototype.commandEscape; +Scene_Battle.prototype.commandEscape = function() { + if (BattleManager.isSTB()) { + BattleManager.processEscape(); + } else { + Yanfly.STB.Scene_Battle_commandEscape.call(this); + } +}; + +if (Yanfly.Param.STBDelayStatus) { + +Yanfly.STB.Scene_Battle_updateWindowPositions = + Scene_Battle.prototype.updateWindowPositions; +Scene_Battle.prototype.updateWindowPositions = function() { + if (BattleManager.isSTB()) return this.updateWindowPositionsSTB(); + Yanfly.STB.Scene_Battle_updateWindowPositions.call(this); +}; + +Scene_Battle.prototype.updateWindowPositionsSTB = function() { + if (this._STBWindowPosCount === undefined) this._STBWindowPosCount = 0; + if (this._partyCommandWindow.active) { + this._STBWindowPosCount = 16; + var statusX = 0; + statusX = this._partyCommandWindow.width; + if (this._statusWindow.x < statusX) { + this._statusWindow.x += 16; + if (this._statusWindow.x > statusX) this._statusWindow.x = statusX; + } + if (this._statusWindow.x > statusX) { + this._statusWindow.x -= 16; + if (this._statusWindow.x < statusX) this._statusWindow.x = statusX; + } + } else if (this._actorCommandWindow.active) { + this._STBWindowPosCount = 16; + Yanfly.STB.Scene_Battle_updateWindowPositions.call(this); + } else { + if (--this._STBWindowPosCount > 0) return; + Yanfly.STB.Scene_Battle_updateWindowPositions.call(this); + } +}; + +}; // Yanfly.Param.STBDelayStatus + +//============================================================================= +// Window_Help +//============================================================================= + +Yanfly.STB.Window_Help_setItem = Window_Help.prototype.setItem; +Window_Help.prototype.setItem = function(item) { + if (this.meetSTBConditions(item)) return this.setText(item.stbHelp); + Yanfly.STB.Window_Help_setItem.call(this, item); +}; + +Window_Help.prototype.meetSTBConditions = function(item) { + if (!item) return false; + if (!BattleManager.isSTB()) return false; + return item.stbHelp !== undefined; +}; + +//============================================================================= +// Window_STB_TurnOrder +//============================================================================= + +function Window_STB_TurnOrder() { + this.initialize.apply(this, arguments); +} + +Window_STB_TurnOrder.prototype = Object.create(Window_Base.prototype); +Window_STB_TurnOrder.prototype.constructor = Window_STB_TurnOrder; + +Window_STB_TurnOrder.prototype.initialize = function(statusWindow) { + if (statusWindow) { + var statusHeight = statusWindow.height; + } else { + statusHeight = this.fittingHeight(4); + } + var code = Yanfly.Param.STBWindowW; + try { + var width = eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'STB TURN ORDER WINDOW WIDTH ERROR'); + var width = 200; + } + var code = Yanfly.Param.STBWindowH; + try { + var height = eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'STB TURN ORDER WINDOW HEIGHT ERROR'); + var height = Graphics.boxHeight - statusHeight - this.fittingHeight(2); + } + var code = Yanfly.Param.STBWindowX; + try { + var x = eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'STB TURN ORDER WINDOW X ERROR'); + var x = Graphics.boxWidth - width; + } + var code = Yanfly.Param.STBWindowY; + try { + var y = eval(code); + } catch (e) { + Yanfly.Util.displayError(e, code, 'STB TURN ORDER WINDOW Y ERROR'); + var y = this.fittingHeight(2); + } + Window_Base.prototype.initialize.call(this, x, y, width, height); + this.opacity = 0; + this.refresh(); +}; + +Window_STB_TurnOrder.prototype.refresh = function() { + this.getTurnOrderData(); + this.drawTurnOrders(); +}; + +Window_STB_TurnOrder.prototype.getTurnOrderData = function() { + if (!BattleManager._actionBattlers) return; + if (!BattleManager._performedBattlers) return; + var array = BattleManager._actionBattlers; + this._actionBattlers = array.filter(Yanfly.Util.onlyUnique); + array = BattleManager._performedBattlers; + this._performedBattlers = array.filter(Yanfly.Util.onlyUnique); +}; + +Window_STB_TurnOrder.prototype.drawTurnOrders = function() { + if (!this._actionBattlers) return; + if (!this._performedBattlers) return; + this.contents.clear(); + var dy = 0; + dy = this.drawPerformedActors(dy); + dy = this.drawSubject(dy); + dy = this.drawActionActors(dy); +}; + +Window_STB_TurnOrder.prototype.drawPerformedActors = function(dy) { + var dx = this.textPadding(); + var dw = this.contents.width - this.textPadding() * 2; + this.resetFontSettings(); + this.changePaintOpacity(false); + var array = this._performedBattlers; + var length = array.length; + for (var i = 0; i < length; ++i) { + var battler = array[i]; + if (!battler) continue; + if (battler.isDead()) continue; + if (battler === BattleManager._subject) continue; + if (battler.isActor()) { + this.changeTextColor(this.textColor(Yanfly.Param.STBWinActor)); + } else { + this.changeTextColor(this.textColor(Yanfly.Param.STBWinEnemy)); + } + var text = this.getBattlerName(battler); + this.drawText(text, dx, dy, dw); + dy += this.lineHeight(); + } + return dy; +}; + +Window_STB_TurnOrder.prototype.drawSubject = function(dy) { + if (!BattleManager._subject) return dy; + if (BattleManager._subject.isDead()) return dy; + var dx = this.textPadding(); + var dw = this.contents.width - this.textPadding() * 2; + this.resetFontSettings(); + this.changePaintOpacity(true); + this.changeTextColor(this.textColor(Yanfly.Param.STBWinSubject)); + var battler = BattleManager._subject; + var text = this.getBattlerName(battler); + this.drawText(text, dx, dy, dw); + dy += this.lineHeight(); + return dy; +}; + +Window_STB_TurnOrder.prototype.drawActionActors = function(dy) { + var dx = this.textPadding(); + var dw = this.contents.width - this.textPadding() * 2; + this.resetFontSettings(); + this.changePaintOpacity(true); + var array = this._actionBattlers; + var length = array.length; + for (var i = 0; i < length; ++i) { + var battler = array[i]; + if (!battler) continue; + if (battler.isDead()) continue; + if (battler === BattleManager._subject) continue; + if (this._performedBattlers.contains(battler)) continue; + if (battler.isActor()) { + this.changeTextColor(this.textColor(Yanfly.Param.STBWinActor)); + } else { + this.changeTextColor(this.textColor(Yanfly.Param.STBWinEnemy)); + } + var text = this.getBattlerName(battler); + this.drawText(text, dx, dy, dw); + dy += this.lineHeight(); + } + return dy; +}; + +Window_STB_TurnOrder.prototype.getBattlerName = function(battler) { + if (Imported.YEP_EnemyLevels && battler.isEnemy()) { + var text = Yanfly.ELV.Game_Enemy_name.call(battler); + } else { + var text = battler.name(); + } + return text; +}; + +//============================================================================= +// Utilities +//============================================================================= + +Yanfly.Util = Yanfly.Util || {}; + +Yanfly.Util.displayError = function(e, code, message) { + console.log(message); + console.log(code || 'NON-EXISTENT'); + console.error(e); + if (Utils.RPGMAKER_VERSION && Utils.RPGMAKER_VERSION >= "1.6.0") return; + if (Utils.isNwjs() && Utils.isOptionValid('test')) { + if (!require('nw.gui').Window.get().isDevToolsOpen()) { + require('nw.gui').Window.get().showDevTools(); + } + } +}; + +Yanfly.Util.onlyUnique = function(value, index, self) { + return self.indexOf(value) === index; +}; + +//============================================================================= +// End of File +//============================================================================= +} else { // Yanfly.BEC.version + +var text = '================================================================\n'; +text += 'YEP_X_BattleSysSTB requires YEP_BattleEngineCore to be at the '; +text += 'latest version to run properly.\n\nPlease go to www.yanfly.moe and '; +text += 'update to the latest version for the YEP_BattleEngineCore plugin.\n'; +text += '================================================================\n'; +console.log(text); +require('nw.gui').Window.get().showDevTools(); + +} // Yanfly.BEC.version +}; // YEP_BattleEngineCore \ No newline at end of file diff --git a/RPG project 2019/js/plugins/YEP_X_TurnOrderDisplay.js b/RPG project 2019/js/plugins/YEP_X_TurnOrderDisplay.js new file mode 100644 index 0000000..4e27418 --- /dev/null +++ b/RPG project 2019/js/plugins/YEP_X_TurnOrderDisplay.js @@ -0,0 +1,1244 @@ +//============================================================================= +// Yanfly Engine Plugins - Battle Engine Extension - Turn Order Display +// YEP_X_TurnOrderDisplay.js +//============================================================================= + +var Imported = Imported || {}; +Imported.YEP_X_TurnOrderDisplay = true; + +var Yanfly = Yanfly || {}; +Yanfly.TOD = Yanfly.TOD || {}; +Yanfly.TOD.version = 1.03; + +//============================================================================= + /*: + * @plugindesc v1.03 Displays the turn order for turn-based battle systems + * and allows for various display options. + * @author Yanfly Engine Plugins + * + * @param ---Default--- + * @default + * + * @param Show Turn Order + * @parent ---Default--- + * @type boolean + * @on Show + * @off Hide + * @desc Show turn order by default? + * YES - true NO - false + * @default true + * + * @param ---Settings--- + * @default + * + * @param Icon Size + * @parent ---Settings--- + * @type number + * @min 0 + * @desc This is the size of the icons displayed for the turn order. + * Default: 32 + * @default 32 + * + * @param Position X + * @parent ---Settings--- + * @type combo + * @option left + * @option center + * @option right + * @desc Which side of the screen should the turn order appear? + * left center right + * @default right + * + * @param Position Y + * @parent ---Settings--- + * @type number + * @min 0 + * @desc Where do you want to align the Y turn order? + * @default 54 + * + * @param Turn Direction + * @parent ---Settings--- + * @type combo + * @option left + * @option right + * @desc Which way do you want the turn icons going? + * left right + * @default left + * + * @param Performed Spacing + * @parent ---Settings--- + * @type boolean + * @on YES + * @off NO + * @desc Add a space separating battlers that already performed actions? + * YES - true NO - false + * @default true + * + * @param ---Allies--- + * @default + * + * @param Ally Border Color + * @parent ---Allies--- + * @type number + * @min 0 + * @max 31 + * @desc Text Color used for the borders of allies. + * @default 4 + * + * @param Ally Back Color + * @parent ---Allies--- + * @type number + * @min 0 + * @max 31 + * @desc Text Color used for the ally background color. + * @default 22 + * + * @param Ally Icon + * @parent ---Allies--- + * @type number + * @min 0 + * @desc Default icon used for allies. If this value is 0, + * the icon will be the ally's face graphic instead. + * @default 0 + * + * @param ---Enemies--- + * @default + * + * @param Enemy Border Color + * @parent ---Enemies--- + * @type number + * @min 0 + * @max 31 + * @desc Text Color used for the borders of enemies. + * @default 2 + * + * @param Enemy Back Color + * @parent ---Enemies--- + * @type number + * @min 0 + * @max 31 + * @desc Text Color used for the ally background color. + * @default 19 + * + * @param Enemy Icon + * @parent ---Enemies--- + * @type number + * @min 0 + * @desc Default icon used for enemies. If this value is 0, + * the icon will be the enemy's drawn battler instead. + * @default 0 + * + * @param Enemy SV Battlers + * @parent ---Enemies--- + * @type boolean + * @on YES + * @off NO + * @desc If using Animated SV Enemies, draw their battlers if no icon + * is being used? This can become laggy. NO - false YES - true + * @default false + * + * @help + * ============================================================================ + * Introduction + * ============================================================================ + * + * This plugin requires YEP_BattleEngineCore. Make sure this plugin is located + * under YEP_BattleEngineCore in the plugin list. + * + * For Turn-Based Battle Systems like DTB (Default Turn Battle), letting the + * player see the turn order visually can add a whole lot more depth to the + * battle system. This plugin will add a display of icons showing the turn + * order of the player's party and the enemy party within a corner of the + * screen (modifiable). + * + * NOTE! This plugin does NOT work with tick-based Battle Systems like ATB or + * CTB! It is specifically made to work only with turn-based battle systems. + * + * ============================================================================ + * Notetags + * ============================================================================ + * + * Insert the following notetags to give your actors and enemies unique turn + * order icons. + * + * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * + * Actor and Enemy Notetags: + * + * + * - This sets the icon used for the actor/enemy to be x. + * + * + * - This sets the border color used for the actor/enemy to text color x. + * + * + * - This sets the background color used for the actor/enemy to text color x. + * + * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + * + * Actor Only Notetags: + * + * + * - This sets it so that if the actor is a specific class, the actor will + * get a specific icon used for the Turn Order Display. If the actor is class + * x, it will receive icon y. + * + * + * + * + * + * - If you prefer to use names instead of class ID's, you can use the above + * notetag format. If the actor is the named class, it will receive icon x. + * If you have multiple classes with the same name, priority will be given to + * the class with the highest ID. + * + * ============================================================================ + * Plugin Commands + * ============================================================================ + * + * Use the following plugin commands to control the Turn Order Display. + * + * Plugin Command: + * + * EnableTurnOrderDisplay + * - Turns on the Turn Order Display to be shown in battle if the battle is + * a turn-based battle system can support the Turn Order Display. + * + * DisableTurnOrderDisplay + * - Turns off the Turn Order Display to be hidden in battle. + * + * ============================================================================ + * Changelog + * ============================================================================ + * + * Version 1.03: + * - Updated for RPG Maker MV version 1.5.0. + * + * Version 1.02: + * - Fixed a bug that caused enemies to endlessly have turns if dynamic actions + * were enabled. + * + * Version 1.01: + * - Fixed some bugs that caused crashes when returning to the battle scene. + * - Fixed a bug that altered the order flow during a Surprise Attack or a + * Preemptive Attack for battle advantage. + * - Made turn order display not cover up certain windows. + * + * Version 1.00: + * - Finished Plugin! + */ +//============================================================================= + +if (Imported.YEP_BattleEngineCore) { +if (Yanfly.BEC.version && Yanfly.BEC.version >= 1.42) { + +//============================================================================= +// Parameter Variables +//============================================================================= + +Yanfly.Parameters = PluginManager.parameters('YEP_X_TurnOrderDisplay'); +Yanfly.Param = Yanfly.Param || {}; + +Yanfly.Param.TODShowDefault = String(Yanfly.Parameters['Show Turn Order']); +Yanfly.Param.TODShowDefault = eval(Yanfly.Param.TODShowDefault); + +Yanfly.Param.TODIconSize = Number(Yanfly.Parameters['Icon Size']); +Yanfly.Param.TODPositionX = String(Yanfly.Parameters['Position X']); +Yanfly.Param.TODPositionY = Number(Yanfly.Parameters['Position Y']); +Yanfly.Param.TODTurnDirection = String(Yanfly.Parameters['Turn Direction']); +Yanfly.Param.TODPerformedSpace = String(Yanfly.Parameters['Performed Spacing']); +Yanfly.Param.TODPerformedSpace = eval(Yanfly.Param.TODPerformedSpace); + +Yanfly.Param.TODColorAllyBr = Number(Yanfly.Parameters['Ally Border Color']); +Yanfly.Param.TODColorAllyBg = Number(Yanfly.Parameters['Ally Back Color']); +Yanfly.Param.TODAllyIcon = Number(Yanfly.Parameters['Ally Icon']); + +Yanfly.Param.TODColorEnemyBr = Number(Yanfly.Parameters['Enemy Border Color']); +Yanfly.Param.TODColorEnemyBg = Number(Yanfly.Parameters['Enemy Back Color']); +Yanfly.Param.TODEnemyIcon = Number(Yanfly.Parameters['Enemy Icon']); +Yanfly.Param.TODEnemySVBattler = String(Yanfly.Parameters['Enemy SV Battlers']); +Yanfly.Param.TODEnemySVBattler = eval(Yanfly.Param.TODEnemySVBattler); + +//============================================================================= +// DataManager +//============================================================================= + +Yanfly.TOD.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; +DataManager.isDatabaseLoaded = function() { + if (!Yanfly.TOD.DataManager_isDatabaseLoaded.call(this)) return false; + + if (!Yanfly._loaded_YEP_X_TurnOrderDisplay) { + this.processTODNotetagsC($dataClasses); + this.processTODNotetags1($dataActors, true); + this.processTODNotetags1($dataEnemies, false); + Yanfly._loaded_YEP_X_TurnOrderDisplay = true; + } + + return true; +}; + +DataManager.processTODNotetagsC = function(group) { + if (Yanfly.ClassIdRef) return; + Yanfly.ClassIdRef = {}; + for (var n = 1; n < group.length; n++) { + var obj = group[n]; + if (obj.name.length <= 0) continue; + Yanfly.ClassIdRef[obj.name.toUpperCase()] = n; + } +}; + +DataManager.processTODNotetags1 = function(group, isActor) { + for (var n = 1; n < group.length; n++) { + var obj = group[n]; + var notedata = obj.note.split(/[\r\n]+/); + + if (isActor) { + obj.turnOrderIcon = Yanfly.Param.TODAllyIcon; + obj.turnOrderBorderColor = Yanfly.Param.TODColorAllyBr; + obj.turnOrderBackgroundColor = Yanfly.Param.TODColorAllyBg; + obj.turnOrderClassIcon = {}; + } else { + obj.turnOrderIcon = Yanfly.Param.TODEnemyIcon; + obj.turnOrderBorderColor = Yanfly.Param.TODColorEnemyBr; + obj.turnOrderBackgroundColor = Yanfly.Param.TODColorEnemyBg; + } + + for (var i = 0; i < notedata.length; i++) { + var line = notedata[i]; + if (line.match(/<(?:TURN ORDER ICON|TURN ICON):[ ](\d+)>/i)) { + obj.turnOrderIcon = parseInt(RegExp.$1); + } else if (line.match(/<(?:TURN ORDER BORDER COLOR):[ ](\d+)>/i)) { + obj.turnOrderBorderColor = parseInt(RegExp.$1); + } else if (line.match(/<(?:TURN ORDER BACKGROUND COLOR):[ ](\d+)>/i)) { + obj.turnOrderBackgroundColor = parseInt(RegExp.$1); + } else if (line.match(//i)) { + var classId = parseInt(RegExp.$1); + var icon = parseInt(RegExp.$2); + obj.turnOrderClassIcon[classId] = icon; + } else if (line.match(/<(.*)[ ]TURN ORDER ICON:[ ](\d+)>/i)) { + var name = String(RegExp.$1).toUpperCase(); + var icon = parseInt(RegExp.$2); + var classId = Yanfly.ClassIdRef[name]; + if (classId) obj.turnOrderClassIcon[classId] = icon; + } + } + } +}; + +//============================================================================= +// BattleManager +//============================================================================= + +if (!Imported.YEP_BattleEngineCore) { + +BattleManager.isTurnBased = function() { + return true; +}; + +}; // Imported.YEP_BattleEngineCore + +BattleManager.isTurnOrderDisplayUseable = function() { + return this.isTurnBased(); +}; + +Yanfly.TOD.BattleManager_startBattle = BattleManager.startBattle; +BattleManager.startBattle = function() { + Yanfly.TOD.BattleManager_startBattle.call(this); + this.initializeTurnOrderDisplay(); +}; + +BattleManager.initializeTurnOrderDisplay = function() { + $gameParty._inBattle = true; + this._performedBattlers = []; + this.initializeBattlerActions(); + this.makeActionOrders(); +}; + +BattleManager.initializeBattlerActions = function() { + $gameParty.makeActions(); + $gameTroop.makeActions(); +}; + +BattleManager.isPreventUpdateTurnOrder = function() { + if (Imported.YEP_X_CounterControl && this.isCountering()) return true; + if (Imported.YEP_InstantCast && this._instantCasting) return true; + return false; +}; + +BattleManager.updateTurnOrderDisplayX = function() { + if ($gameParty.inBattle() && this.isTurnBased()) { + if (this.isPreventUpdateTurnOrder()) return; + if (SceneManager._scene instanceof Scene_Battle) { + SceneManager._scene.requestUpdateTurnOrderDisplayX(); + } + } +}; + +BattleManager.refreshTurnOrderDisplay = function() { + if ($gameParty.inBattle() && this.isTurnBased()) { + if (this.isPreventUpdateTurnOrder()) return; + if (SceneManager._scene instanceof Scene_Battle) { + SceneManager._scene.refreshTurnOrderDisplay(); + } + } +}; + +Yanfly.TOD.BattleManager_makeActionOrders = BattleManager.makeActionOrders; +BattleManager.makeActionOrders = function() { + Yanfly.TOD.BattleManager_makeActionOrders.call(this); + this.updateTurnOrderDisplayX(); +}; + +Yanfly.TOD.BattleManager_startInput = BattleManager.startInput; +BattleManager.startInput = function() { + Yanfly.TOD.BattleManager_startInput.call(this); + if (this.isDTB()) { + this._performedBattlers = []; + } + this.updateTurnOrderDisplayX(); +}; + +Yanfly.TOD.BattleManager_updateTurn = BattleManager.updateTurn; +BattleManager.updateTurn = function() { + Yanfly.TOD.BattleManager_updateTurn.call(this); + this.updateTurnOrderDisplayX(); +}; + +Yanfly.TOD.BattleManager_endTurn = BattleManager.endTurn; +BattleManager.endTurn = function() { + Yanfly.TOD.BattleManager_endTurn.call(this); + this.updateTurnOrderDisplayX(); +}; + +Yanfly.TOD.BattleManager_endAction = BattleManager.endAction; +BattleManager.endAction = function() { + this.updateTurnOrderDisplayX(); + Yanfly.TOD.BattleManager_endAction.call(this); +}; + +BattleManager.setTurnOrderDisplaySurprisePreemptiveDefault = function() { + var change = false; + if (this._surprise) { + var change = true; + this._performedBattlers = + this._performedBattlers.concat($gameParty.members()); + } else if (this._preemptive) { + var change = true; + this._performedBattlers = + this._performedBattlers.concat($gameTroop.members()); + } +}; + +//============================================================================= +// Game_System +//============================================================================= + +Yanfly.TOD.Game_System_initialize = Game_System.prototype.initialize; +Game_System.prototype.initialize = function() { + Yanfly.TOD.Game_System_initialize.call(this); + this.initTurnOrderDisplaySettings(); +}; + +Game_System.prototype.initTurnOrderDisplaySettings = function() { + this._showTurnOrderDisplay = Yanfly.Param.TODShowDefault; +}; + +Game_System.prototype.isShowTurnOrderDisplaySettings = function() { + if (this._showTurnOrderDisplay == undefined) { + this.initTurnOrderDisplaySettings(); + } + if (!this._showTurnOrderDisplay) return false; + return BattleManager.isTurnOrderDisplayUseable(); +}; + +Game_System.prototype.setTurnOrderDisplaySettings = function(value) { + this._showTurnOrderDisplay = value; +}; + +//============================================================================= +// Game_BattlerBase +//============================================================================= + +Yanfly.TOD.Game_BattlerBase_appear = Game_BattlerBase.prototype.appear; +Game_BattlerBase.prototype.appear = function() { + Yanfly.TOD.Game_BattlerBase_appear.call(this); + if ($gameParty.inBattle()) { + this.makeActions(); + $gameTroop.makeUniqueNames(); + BattleManager.makeActionOrders(); + BattleManager.refreshTurnOrderDisplay(); + } +}; + +//============================================================================= +// Game_Battler +//============================================================================= + +Yanfly.TOD.Game_Battler_performCollapse = + Game_Battler.prototype.performCollapse; +Game_Battler.prototype.performCollapse = function() { + Yanfly.TOD.Game_Battler_performCollapse.call(this); + BattleManager.refreshTurnOrderDisplay(); +}; + +Game_Battler.prototype.turnOrderDisplayBitmap = function() { + return ImageManager.loadSystem('IconSet'); +}; + +Game_Battler.prototype.turnOrderDisplayIcon = function() { + return 0; +}; + +Yanfly.TOD.Game_Battler_setAction = Game_Battler.prototype.setAction; +Game_Battler.prototype.setAction = function(index, action) { + Yanfly.TOD.Game_Battler_setAction.call(this, index, action); + BattleManager.makeActionOrders(); +}; + +//============================================================================= +// Game_Actor +//============================================================================= + +Game_Actor.prototype.turnOrderDisplayBitmap = function() { + if (this.actor().turnOrderClassIcon) { + if (this.actor().turnOrderClassIcon[this._classId]) { + return this.actor().turnOrderClassIcon[this._classId]; + } + } + if (this.turnOrderDisplayIcon() > 0) { + return ImageManager.loadSystem('IconSet'); + } + return ImageManager.loadFace(this.faceName()); +}; + +Game_Actor.prototype.turnOrderDisplayIcon = function() { + return this.actor().turnOrderIcon; +}; + +Game_Actor.prototype.turnOrderBorderColor = function() { + return this.actor().turnOrderBorderColor; +}; + +Game_Actor.prototype.turnOrderBackgroundColor = function() { + return this.actor().turnOrderBackgroundColor; +}; + +//============================================================================= +// Game_Enemy +//============================================================================= + +Game_Enemy.prototype.turnOrderDisplayBitmap = function() { + if (this.turnOrderDisplayIcon() > 0) { + return ImageManager.loadSystem('IconSet'); + } + var name = this.battlerName(); + var hue = this.battlerHue(); + if (Imported.YEP_X_AnimatedSVEnemies && this.hasSVBattler()) { + return ImageManager.loadSvActor(this.svBattlerName()); + } + if ($gameSystem.isSideView()) { + return ImageManager.loadSvEnemy(name, hue); + } else { + return ImageManager.loadEnemy(name, hue); + } +}; + +Game_Enemy.prototype.turnOrderDisplayIcon = function() { + return this.enemy().turnOrderIcon; +}; + +Game_Enemy.prototype.turnOrderBorderColor = function() { + return this.enemy().turnOrderBorderColor; +}; + +Game_Enemy.prototype.turnOrderBackgroundColor = function() { + return this.enemy().turnOrderBackgroundColor; +}; + +//============================================================================= +// Game_Action +//============================================================================= + +Yanfly.TOD.Game_Action_clear = Game_Action.prototype.clear; +Game_Action.prototype.clear = function() { + Yanfly.TOD.Game_Action_clear.call(this); + BattleManager.makeActionOrders(); +}; + +Yanfly.TOD.Game_Action_setSkill = Game_Action.prototype.setSkill; +Game_Action.prototype.setSkill = function(skillId) { + Yanfly.TOD.Game_Action_setSkill.call(this, skillId); + BattleManager.makeActionOrders(); +}; + +Yanfly.TOD.Game_Action_setItem = Game_Action.prototype.setItem; +Game_Action.prototype.setItem = function(itemId) { + Yanfly.TOD.Game_Action_setItem.call(this, itemId); + BattleManager.makeActionOrders(); +}; + +Yanfly.TOD.Game_Action_setItemObject = Game_Action.prototype.setItemObject; +Game_Action.prototype.setItemObject = function(object) { + Yanfly.TOD.Game_Action_setItemObject.call(this, object); + BattleManager.makeActionOrders(); +}; + +//============================================================================= +// Game_Troop +//============================================================================= + +Yanfly.TOD.Game_Troop_increaseTurn = Game_Troop.prototype.increaseTurn; +Game_Troop.prototype.increaseTurn = function() { + Yanfly.TOD.Game_Troop_increaseTurn.call(this); + BattleManager.updateTurnOrderDisplayX(); +}; + +//============================================================================= +// Game_Interpreter +//============================================================================= + +Yanfly.TOD.Game_Interpreter_pluginCommand = + Game_Interpreter.prototype.pluginCommand; +Game_Interpreter.prototype.pluginCommand = function(command, args) { + Yanfly.TOD.Game_Interpreter_pluginCommand.call(this, command, args); + if (command === 'EnableTurnOrderDisplay') { + $gameSystem.setTurnOrderDisplaySettings(true); + if ($gameParty.inBattle()) BattleManager.updateTurnOrderDisplayX(); + } else if (command === 'DisableTurnOrderDisplay') { + $gameSystem.setTurnOrderDisplaySettings(false); + if ($gameParty.inBattle()) BattleManager.updateTurnOrderDisplayX(); + } +}; + +//============================================================================= +// Scene_Battle +//============================================================================= + +Scene_Battle.prototype.createTurnOrderDisplay = function() { + this._turnOrderDisplay = []; + var length = $gameTroop.members().length; + for (var i = 0; i < length; ++i) { + this._turnOrderDisplay.push(new Window_TurnOrderIcon($gameTroop, i)); + } + var length = $gameParty.maxBattleMembers(); + for (var i = 0; i < length; ++i) { + this._turnOrderDisplay.push(new Window_TurnOrderIcon($gameParty, i)); + } + var length = this._turnOrderDisplay.length; + for (var i = 0; i < length; ++i) { + var win = this._turnOrderDisplay[i]; + this.setupTurnOrderDisplayWindow(win); + } +}; + +Scene_Battle.prototype.setupTurnOrderDisplayWindow = function(win) { + win._helpWindow = this._helpWindow; + win._windowLayer = this._windowLayer; + this.addChild(win); +}; + +Scene_Battle.prototype.requestUpdateTurnOrderDisplayX = function() { + this._turnOrderDisplayUpdateRequest = true; +}; + +Yanfly.TOD.Scene_Battle_update = Scene_Battle.prototype.update; +Scene_Battle.prototype.update = function() { + Yanfly.TOD.Scene_Battle_update.call(this); + if (this._turnOrderDisplayUpdateRequest) this.updateTurnOrderDisplayX(); +}; + +Scene_Battle.prototype.updateTurnOrderDisplayX = function() { + if (!this._turnOrderDisplay) this.createTurnOrderDisplay(); + var length = this._turnOrderDisplay.length; + for (var i = 0; i < length; ++i) { + this._turnOrderDisplay[i].updateDestinationX(); + this._turnOrderDisplay[i].updateTargetOpacity(); + } + this._turnOrderDisplayUpdateRequest = false; +}; + +Scene_Battle.prototype.refreshTurnOrderDisplay = function() { + if (!this._turnOrderDisplay) this.createTurnOrderDisplay(); + var length = this._turnOrderDisplay.length; + for (var i = 0; i < length; ++i) { + this._turnOrderDisplay[i].refresh(); + } +}; + +Yanfly.TOD.Scene_Battle_startActorCommandSelection = + Scene_Battle.prototype.startActorCommandSelection; +Scene_Battle.prototype.startActorCommandSelection = function() { + Yanfly.TOD.Scene_Battle_startActorCommandSelection.call(this); + this.updateTurnOrderDisplayX(); +}; + +Yanfly.TOD.Scene_Battle_startPartyCommandSelection = + Scene_Battle.prototype.startPartyCommandSelection; +Scene_Battle.prototype.startPartyCommandSelection = function() { + Yanfly.TOD.Scene_Battle_startPartyCommandSelection.call(this); + this.updateTurnOrderDisplayX(); +}; + +if (Imported.YEP_X_InBattleStatus) { + +Yanfly.TOD.Scene_Battle_commandInBattleStatus = + Scene_Battle.prototype.commandInBattleStatus; +Scene_Battle.prototype.commandInBattleStatus = function() { + Yanfly.TOD.Scene_Battle_commandInBattleStatus.call(this); + this.requestUpdateTurnOrderDisplayX(); +}; + +Yanfly.TOD.Scene_Battle_onInBattleStatusCancel = + Scene_Battle.prototype.onInBattleStatusCancel; +Scene_Battle.prototype.onInBattleStatusCancel = function() { + Yanfly.TOD.Scene_Battle_onInBattleStatusCancel.call(this); + this.requestUpdateTurnOrderDisplayX(); +}; + +} // Imported.YEP_X_InBattleStatus + +//============================================================================= +// Game_Temp +//============================================================================= + +Game_Temp.prototype.battleTurnOrder = function() { + this.makeBattleTurnOrderData(); + this._battleTurnOrder = []; + this.battleTurnOrderAddSubject(); + this.battleTurnOrderAddActionActors(); + if (Yanfly.Param.TODPerformedSpace && this._battleTurnOrder.length > 0) { + this._battleTurnOrder.push(undefined); + } + this.battleTurnOrderAddPerformedActors(); + return this._battleTurnOrder; +}; + +Game_Temp.prototype.battleTurnOrderIndex = function(battler) { + return this.battleTurnOrder().indexOf(battler); +}; + +Game_Temp.prototype.makeBattleTurnOrderData = function() { + var array = BattleManager._actionBattlers; + this._actionBattlers = array.filter(Yanfly.Util.onlyUnique); + array = BattleManager._performedBattlers; + this._performedBattlers = array.filter(Yanfly.Util.onlyUnique); +}; + +Game_Temp.prototype.battleTurnOrderAddSubject = function() { + if (!BattleManager._subject) return; + if (BattleManager._subject.isDead()) return; + if (BattleManager._surprise && BattleManager._subject.isActor()) return; + this._battleTurnOrder.push(BattleManager._subject); +}; + +Game_Temp.prototype.battleTurnOrderAddActionActors = function() { + var array = this._actionBattlers; + var length = array.length; + for (var i = 0; i < length; ++i) { + var battler = array[i]; + if (!battler) continue; + if (battler.isDead()) continue; + if (battler.isHidden()) continue; + if (BattleManager._surprise && battler.isActor()) continue; + if (BattleManager._preemptive && battler.isEnemy()) continue; + if (battler === BattleManager._subject) continue; + if (this._performedBattlers.contains(battler)) continue; + this._battleTurnOrder.push(battler); + } +}; + +Game_Temp.prototype.battleTurnOrderAddPerformedActors = function() { + var array = this._performedBattlers; + var length = array.length; + for (var i = 0; i < length; ++i) { + var battler = array[i]; + if (!battler) continue; + if (battler.isDead()) continue; + if (battler.isHidden()) continue; + if (BattleManager._surprise && battler.isActor()) continue; + if (BattleManager._preemptive && battler.isEnemy()) continue; + if (battler === BattleManager._subject) continue; + this._battleTurnOrder.push(battler); + } +}; + +//============================================================================= +// Window_TurnOrderIcon +//============================================================================= + +function Window_TurnOrderIcon() { + this.initialize.apply(this, arguments); +} + +Window_TurnOrderIcon.prototype = Object.create(Window_Base.prototype); +Window_TurnOrderIcon.prototype.constructor = Window_TurnOrderIcon; + +Window_TurnOrderIcon.prototype.initialize = function(unit, battlerIndex) { + this.initSettings(unit, battlerIndex); + var size = Yanfly.Param.TODIconSize + 8; + Window_Base.prototype.initialize.call(this, 0, 0, size, size); + this.updateDestinationX(); + this.updateTargetOpacity(); + this.x = this._destinationX; + this.setup(); + this.waitUntilLoaded(); +}; + +Window_TurnOrderIcon.prototype.initSettings = function(unit, battlerIndex) { + this._battlerUnit = unit; + this._battlerIndex = battlerIndex; + this._battler = this.battler(); + this._position = Yanfly.Param.TODPositionX.toLowerCase(); + this._direction = Yanfly.Param.TODTurnDirection.toLowerCase(); + this._lowerWindows = eval(Yanfly.Param.BECLowerWindows); +}; + +Window_TurnOrderIcon.prototype.standardPadding = function() { + return 0; +}; + +Window_TurnOrderIcon.prototype.battler = function() { + var battler = this._battlerUnit.members()[this._battlerIndex]; + if (!battler) battler = $gameActors.actor(1); + return battler; +}; + +Window_TurnOrderIcon.prototype.setup = function() { + this._requireRedraw = false; + this._image = this.battler().turnOrderDisplayBitmap(); + this._displayIcon = this.battler().turnOrderDisplayIcon(); + this.contentsOpacity = this._targetOpacity; + this.opacity = 0; + this.y = this.destinationY(); +}; + +Window_TurnOrderIcon.prototype.isBattlerVisible = function() { + var battler = this.battler(); + if (!battler) return false; + if (battler.isDead()) return false; + if (battler.isHidden()) return false; + if (battler.friendsUnit().deadMembers().contains(battler)) return false; + if (battler.isActor()) { + return battler.isBattleMember(); + } + return true; +}; + +Window_TurnOrderIcon.prototype.waitUntilLoaded = function() { + if (!this._image) return; + if (this._image.width <= 0) { + return setTimeout(this.waitUntilLoaded.bind(this), 5); + } + this.refresh(); +}; + +Window_TurnOrderIcon.prototype.refresh = function() { + this.contents.clear(); + this.drawBorder(); + this.drawBattler(); +}; + +Window_TurnOrderIcon.prototype.drawBorder = function() { + var width = this.contents.width; + var height = this.contents.height; + this.contents.fillRect(0, 0, width, height, this.gaugeBackColor()); + width -= 2; + height -= 2; + this.contents.fillRect(1, 1, width, height, this.battlerBorderColor()); + width -= 4; + height -= 4; + this.contents.fillRect(3, 3, width, height, this.gaugeBackColor()); + width -= 2; + height -= 2; + this.contents.fillRect(4, 4, width, height, this.battlerBackColor()); + return; +}; + +Window_TurnOrderIcon.prototype.battlerBorderColor = function() { + return this.textColor(this.battler().turnOrderBorderColor()); +}; + +Window_TurnOrderIcon.prototype.battlerBackColor = function() { + return this.textColor(this.battler().turnOrderBackgroundColor()); +}; + +Window_TurnOrderIcon.prototype.drawBattler = function() { + if (this.battler().turnOrderDisplayIcon() > 0) { + this.drawIcon(this.battler().turnOrderDisplayIcon(), 4, 4); + } else if (this.battler().isActor()) { + this.drawActorFace(); + } else if (this.battler().isEnemy()) { + this.drawEnemy(); + this.drawLetter(); + } +}; + +Window_TurnOrderIcon.prototype.iconWidth = function() { + return Yanfly.Param.TODIconSize; +}; + +Window_TurnOrderIcon.prototype.iconHeight = function() { + return Yanfly.Param.TODIconSize; +}; + +Window_TurnOrderIcon.prototype.drawIcon = function(iconIndex, x, y) { + var bitmap = ImageManager.loadSystem('IconSet'); + var pw = Window_Base._iconWidth; + var ph = Window_Base._iconHeight; + var sx = iconIndex % 16 * pw; + var sy = Math.floor(iconIndex / 16) * ph; + var ww = this.iconWidth(); + var wh = this.iconHeight(); + this.contents.blt(bitmap, sx, sy, pw, ph, x, y, ww, wh); +}; + +Window_TurnOrderIcon.prototype.drawActorFace = function() { + var width = Window_Base._faceWidth; + var height = Window_Base._faceHeight; + var faceIndex = this.battler().faceIndex(); + var bitmap = this._image; + var pw = Window_Base._faceWidth; + var ph = Window_Base._faceHeight; + var sw = Math.min(width, pw); + var sh = Math.min(height, ph); + var dx = Math.floor(Math.max(width - pw, 0) / 2); + var dy = Math.floor(Math.max(height - ph, 0) / 2); + var sx = faceIndex % 4 * pw + (pw - sw) / 2; + var sy = Math.floor(faceIndex / 4) * ph + (ph - sh) / 2; + var dw = this.contents.width - 8; + var dh = this.contents.height - 8; + this.contents.blt(bitmap, sx, sy, sw, sh, dx + 4, dy + 4, dw, dh); +}; + +Window_TurnOrderIcon.prototype.isUsingSVBattler = function() { + if (!Imported.YEP_X_AnimatedSVEnemies) return false; + if (!this.battler().hasSVBattler()) return false; + return Yanfly.Param.TODEnemySVBattler; +}; + +Window_TurnOrderIcon.prototype.drawEnemy = function() { + if (this.isUsingSVBattler()) return this.drawSVEnemy(); + var bitmap = this._image; + var sw = bitmap.width; + var sh = bitmap.height; + var dw = this.contents.width - 8; + var dh = this.contents.height - 8; + var dx = 0; + var dy = 0; + if (sw >= sh) { + var rate = sh / sw; + dh *= rate; + dy += this.contents.height - 8 - dh; + } else { + var rate = sw / sh; + dw *= rate; + dx += Math.floor((this.contents.width - 8 - dw) / 2); + } + this.contents.blt(bitmap, 0, 0, sw, sh, dx + 4, dy + 4, dw, dh); +}; + +Window_TurnOrderIcon.prototype.drawSVEnemy = function() { + var bitmap = this._image; + var sw = bitmap.width / 9; + var sh = bitmap.height / 6; + var dw = this.contents.width - 8; + var dh = this.contents.height - 8; + var dx = 0; + var dy = 0; + if (sw >= sh) { + var rate = sh / sw; + dh *= rate; + dy += this.contents.height - 8 - dh; + } else { + var rate = sw / sh; + dw *= rate; + dx += Math.floor((this.contents.width - 8 - dw) / 2); + } + this.contents.blt(bitmap, 0, 0, sw, sh, dx + 4, dy + 4, dw, dh); +}; + +Window_TurnOrderIcon.prototype.drawLetter = function() { + if (!this.battler().isEnemy()) return; + if (!this.battler()._plural) return; + var letter = this.battler()._letter; + var dy = this.contents.height - this.lineHeight(); + this.drawText(letter, 0, dy, this.contents.width - 4, 'right'); +}; + +Window_TurnOrderIcon.prototype.update = function() { + Window_Base.prototype.update.call(this); + this.updateBattler(); + this.updateRedraw(); + this.updatePosition(); + this.updateOpacity(); +}; + +Window_TurnOrderIcon.prototype.updateBattler = function() { + if (this._battler !== this.battler()) { + this._requireRedraw = true; + } +}; + +Window_TurnOrderIcon.prototype.updateRedraw = function() { + if (!this._requireRedraw) return; + this._requireRedraw = false; + this.setup(); + this.waitUntilLoaded(); +}; + +Window_TurnOrderIcon.prototype.updateDestinationX = function() { + if (!this.battler()) return; + if (this.battler().isDead()) return; + this._destinationX = 0; + this.calculateDestinationXAlign(); + this.calculateDestinationXIndex(); +}; + +Window_TurnOrderIcon.prototype.aliveMembersSize = function() { + var value = 0; + var members = $gameParty.battleMembers().concat($gameTroop.members()); + var length = members.length; + for (var i = 0; i < length; ++i) { + var member = members[i]; + if (!member) continue; + if (member.isAlive()) value += 1; + } + if (Yanfly.Param.TODPerformedSpace) value += 1; + return value; +}; + +Window_TurnOrderIcon.prototype.calculateDestinationXAlign = function() { + var size = this.width; + var buffer = Math.ceil(this.width / 4); + if (this._position === 'left') { + this._destinationX = this.width; + this._destinationX += buffer; + if (this._direction === 'left') { + this._destinationX += this.aliveMembersSize() * size; + } + } else if (this._position === 'center') { + this._destinationX = Math.floor(Graphics.boxWidth / 2); + this._destinationX -= Math.floor(this.width / 2); + if (this._direction === 'left') { + this._destinationX += Math.floor((this.aliveMembersSize() * size) / 2); + } else if (this._direction === 'right') { + this._destinationX -= Math.floor((this.aliveMembersSize() * size) / 2); + } + } else if (this._position === 'right') { + this._destinationX = Graphics.boxWidth - this.width; + this._destinationX -= buffer; + if (this._direction === 'right') { + this._destinationX -= this.aliveMembersSize() * size; + } + } +}; + +Window_TurnOrderIcon.prototype.calculateDestinationXIndex = function() { + var size = this.aliveMembersSize() - this.turnOrderDisplayIndex(); + var distance = this.width * size; + if (this._direction === 'left') { + this._destinationX -= distance; + } else if (this._direction === 'right') { + this._destinationX += distance; + } +}; + +Window_TurnOrderIcon.prototype.turnOrderDisplayIndex = function() { + var index = 0; + if (!BattleManager._actionBattlers) return index; + if (!BattleManager._performedBattlers) return index; + if (this.battler().isHidden()) return -1; + this._hiddenBattlers = this.getHiddenBattlers(); + index += this._hiddenBattlers.length; + if (!BattleManager._ignoreTurnOrderFirstIndex) { + if (this.isReturnFirstPossibleIndex()) { + return index; + } else if (this.isShiftFirstPossibleIndex()) { + index += 1; + } + } + var actionBattlers = this.getActionBattlers(); + var performedBattlers = this.getPerformedBattlers(); + if (performedBattlers.contains(this.battler())) { + index += actionBattlers.length; + index += performedBattlers.indexOf(this.battler()); + if (Yanfly.Param.TODPerformedSpace) index += 1; + return index; + } else { + return index + actionBattlers.indexOf(this.battler()); + } +}; + +Window_TurnOrderIcon.prototype.turnOrderDisplayIndex = function() { + return $gameTemp.battleTurnOrderIndex(this.battler()); +}; + +Window_TurnOrderIcon.prototype.isReturnFirstPossibleIndex = function() { + if (this.battler() !== BattleManager._subject) return false; + return true; +}; + +Window_TurnOrderIcon.prototype.isShiftFirstPossibleIndex = function() { + return BattleManager._subject; +}; + +Window_TurnOrderIcon.prototype.getHiddenBattlers = function() { + var result = []; + var members = $gameParty.battleMembers().concat($gameTroop.members()); + var length = members.length; + for (var i = 0; i < length; ++i) { + var member = members[i]; + if (!member) continue; + if (member.isHidden()) result.push(member); + } + return result; +}; + +Window_TurnOrderIcon.prototype.getActionBattlers = function() { + var result = []; + var battlers = Yanfly.Util.getUnique(BattleManager._actionBattlers); + var length = battlers.length; + for (var i = 0; i < length; ++i) { + var battler = battlers[i]; + if (!battler) continue; + if (battler.isDead()) continue; + if (battler.isHidden()) continue; + if (this._hiddenBattlers.contains(battler)) continue; + if (BattleManager._performedBattlers.contains(battler)) continue; + result.push(battler); + } + return result; +}; + +Window_TurnOrderIcon.prototype.getPerformedBattlers = function() { + var result = []; + var battlers = Yanfly.Util.getUnique(BattleManager._performedBattlers); + var length = battlers.length; + for (var i = 0; i < length; ++i) { + var battler = battlers[i]; + if (!battler) continue; + if (battler.isHidden()) continue; + if (battler.isDead()) continue; + if (this._hiddenBattlers.contains(battler)) continue; + result.push(battler); + } + return result; +}; + +Window_TurnOrderIcon.prototype.destinationY = function() { + var value = Yanfly.Param.TODPositionY; + if (this._helpWindow && this._helpWindow.visible) { + var cap = this._helpWindow.height; + this._selectHeight = this._selectHeight || + Math.round(this.contents.height / 4); + value = Math.max(value, cap + this._selectHeight); + } + if (!this.battler()) return value; + if (this.battler().isSelected()) { + value -= this._selectHeight; + } + return value; +}; + +Window_TurnOrderIcon.prototype.updatePosition = function() { + if (BattleManager._escaped) return; + if (this._destinationX !== this.x) { + var desX = this._destinationX; + var moveAmount = Math.max(1, Math.abs(desX - this.x) / 4); + if (this.x > desX) this.x = Math.max(this.x - moveAmount, desX); + if (this.x < desX) this.x = Math.min(this.x + moveAmount, desX); + var cap1 = this.destinationY() - this.contents.height / 2; + var cap2 = this.destinationY() + this.contents.height / 2; + var moveAmount = Math.max(1, Math.abs(cap2 - this.y) / 4); + if (this.x > desX) this.y = Math.max(this.y - moveAmount, cap1); + if (this.x < desX) this.y = Math.min(this.y + moveAmount, cap2); + } else if (this.destinationY() !== this.y) { + var desY = this.destinationY(); + var moveAmount = Math.max(1, Math.abs(desY - this.y) / 4); + if (this.y > desY) this.y = Math.max(this.y - moveAmount, desY); + if (this.y < desY) this.y = Math.min(this.y + moveAmount, desY); + } +}; + +Window_TurnOrderIcon.prototype.opacityFadeRate = function() { + return 8; +}; + +Window_TurnOrderIcon.prototype.updateOpacity = function() { + if (BattleManager._victoryPhase) this._targetOpacity = 0; + var rate = this.opacityFadeRate(); + if (this.contentsOpacity > this._targetOpacity) { + this.contentsOpacity = Math.max(this.contentsOpacity - rate, + this._targetOpacity); + } else if (this.contentsOpacity < this._targetOpacity) { + this.contentsOpacity = Math.min(this.contentsOpacity + rate, + this._targetOpacity); + } +}; + +Window_TurnOrderIcon.prototype.updateTargetOpacity = function() { + if (!this.isBattlerVisible() || this.isReduceOpacity()) { + this._targetOpacity = 0; + } else { + this._targetOpacity = 255; + } +}; + +Window_TurnOrderIcon.prototype.isReduceOpacity = function() { + if (!$gameSystem.isShowTurnOrderDisplaySettings()) return true; + var scene = SceneManager._scene; + if (BattleManager._victoryPhase) return true; + if (!this._lowerWindows) { + if (this.isLargeWindowShowing()) return true; + } + if (Imported.YEP_X_InBattleStatus && scene._inBattleStatusWindow.visible) { + return true; + } + if (BattleManager._surprise && this.battler().isActor()) return true; + if (BattleManager._preemptive && this.battler().isEnemy()) return true; + return this._windowLayer && this._windowLayer.x !== 0; +}; + +Window_TurnOrderIcon.prototype.isLargeWindowShowing = function() { + var scene = SceneManager._scene; + if (scene._itemWindow.visible) return true; + if (scene._skillWindow.visible) return true; + return false; +}; + +//============================================================================= +// Utilities +//============================================================================= + +Yanfly.Util = Yanfly.Util || {}; + +Yanfly.Util.getUnique = function(array) { + var result = []; + var length = array.length; + for (var i = 0; i < length; ++i) { + var element = array[i]; + if (result.contains(element)) continue; + result.push(element); + } + return result; +}; + +//============================================================================= +// Compatibility Check +//============================================================================= +} else { // Yanfly.BEC.version + +var text = '================================================================\n'; +text += 'YEP_X_TurnOrderDisplay requires YEP_BattleEngineCore to be at the '; +text += 'latest version to run properly.\n\nPlease go to www.yanfly.moe and '; +text += 'update to the latest version for the YEP_BattleEngineCore plugin.\n'; +text += '================================================================\n'; +console.log(text); +require('nw.gui').Window.get().showDevTools(); + +} // Yanfly.BEC.version +}; // YEP_BattleEngineCore + +//============================================================================= +// End of File +//============================================================================= diff --git a/RPG project 2019/save/file1.rpgsave b/RPG project 2019/save/file1.rpgsave index ec4e00a..e5a34da 100644 --- a/RPG project 2019/save/file1.rpgsave +++ b/RPG project 2019/save/file1.rpgsave @@ -1 +1 @@ -N4IgzgnmAuCmC2IBcoD6YCGA3WBRAdhgEYA2sAJstAE4CusANCKvLPrQcWZUjfU6jYBjAPa18cap1IUqdRswBmI6vAzQAliPzTuc/syLroZAMJiJyAAwCA7hvznx0awNhghGAA6wnlpDbMmDh+LkgAjAI41GBa+ACSPOEAHADMAKwAnJkZAorUGKxgAPL4AMrYsMjhAEx1NQJEAObwpRU4yKCErMggAGIasCTk4SBMWCIktD1ImYFeGtBCABbVVvMY+K4gXiJgyFkAdKnh4dnnF5nJTAACQsipAL6NTSXllZ0g3VVIIGMgEymM3mixW2zuyAALM9mPZ8OQRLYACraH7sEgkRrGMgAIRayHRmOYWA0QmgKggAFk0bQMQJyLBFLB1NSCbSiehKuQ8YgkIS7BgSABrBxNHlsumGbGwMpQOC8kDkaBEf4sbwAcUm5AA6g4EbYAIK0cnFHxbXjyARqLya4a6+GIgAKe0WcWQmQE4hIIiEQoolNosSE1PYZW0r0+EKQ6VuGGQAG1UgBdGGoL0+oUGjEBoMh2hh/ARpCKQVgBToZaInHSvoqNSabT6ctGaAmWC11TqOK6WQWgwVxEAGWZ1HKIoxTbchBkw4wo7K45Ik6CIq8ADVSeTqBADYpJPXVsXS+WwKuN2SKTnScgSyQywIMHvYJ3oMthzgSABVLzL1AYWgtGw0BgD2PB8OW/6ARIYBlJWti/oK3qGsaewfH2J5wQAIhoiiKKStLQBAZQkBoDLUL+YBwfE+DVq2ZBlNA6iBhRVHythmBgGW8AyCxiIAEqwF4GAaNQmG0AURAaCRhG/mwXCwAJQkiWJElSYsEC8bYDHqFm3pCJ4cCydO9GMdAuk+uoPzgQIlH8bA0RmRiFmGehU7yQJDnmQZVmWiAUYNH5vTqoUsCoLKMAICAMIeNQsBsJ8qBENQGhNMs0D4O4+xIDU6QxkoGAMsUxoqV2jYBHkBWwNRJUNuagSoOSGWRvcSAAOyxgmNhdQwVgpgIjWwEic5NLAYSgFG1x+XGSDxt1XV9cwA01W65VKCQGCUeY3rkSgfktR6U2dT1x29amijrZRy1lfVlEYH6zq2M+2wVndMo+L2N3LK9V11TZX1+thsVkitkRBP9Pz1QAXiIIjwAAGs90OwwAmojMPwGUnhkNUAhIxjWODcNo048weM/c9nisAU5Oragj3qMsz5IhAPi9PgqKqvTr7Pg9T201zjPULz1BDdQI1hPVAvPjT9ULGS4nuM1awdTNC1RgAbLcQUhWFQixfFMKaFTCX5CFWWSyoIqFjex63C1pxa78wWsKgSIaMb0X2EsjNZWg5DqNN4326kKvxmr9sBTc2su2UXsrIrMJYHOGjyb7zD+4xSsRHlNzTWHMJRuEkKOyAzuhWuyep1FTBliQiix6CPsJRngd7dUrUF/bmuBU7OtlEM9dx03MIYBeMTNwHWdnKH/JoMsP5IJC6T1fAC9zP1C/1cspEMuat73swQkFPAjpTGn/mg7nR1zSdJ0LegpmK7t/mR3n98wJZSLifg58tTUTw2UfgxQSv9kA1GhI0WguFQHZRznnG+CCer3yIFAxQX9RwwJqN3K+M1EEIPfo/UIfMg5gI7jZRclINqSAgO+IYmDkiplPFJEglCIrbk/GWTBmRGEUKoc+CAHCMAjUoQADyzqkKwqZR61RgScUO793o8HqrFMABFPiBl7PvBQ8ANCcU0bbEA9lKo8C0UwLwywoCkkFDbO8ChyAFAcDYg+etXRYycQoVR+lMruKYPPXcTIyT6Nsb4rwmFChCIhkwVeYS1AjW2NAUJ4S4mrQKgycg2k4CyJDodVWMJYrwBEDgdJj9ZHFxyfnJgqSKA4lQbIuBCYFpVPIJhWAKDoHiOwW/PJCBCnVNqeI9q5Tw4PEjtHUKBpgbaAEqokgLgpGTPKI/XoqoLrQFFuLaiDIxG002O7UqP9xGTRwRU9OSTYDOi8LQBepjmCMgCWslmNJJQsBELVZmrM+TsjsMyXYCRYlVSUVaV5cQBL5HcIeG56AhiwECSYgxf4x6JBJqgb4vQAASc4tSqnwKSIUqLfiqiEBdMASKIgCDIB+ZFKw5zSOfAAORCr0CZW5RgCGpQUQJ1BNmwG2fVEsQhYAMpmCAZlKhWX5QFdy3lWI6L0sZb8UV1BwioHFYIERC9QCjFWlGVI3DyHMJgZCQIxzIgNCLvfWAABHWgGgvCGsvnnP2AdTDEt6PTX5qpFgIFJRIqwl8WqQlGb3F28R5TVydYxF1G0sogDnAU8iAgvXwB9esf1UJslR2DaFUNkVngRowFGzivQ40qE9fKFNVhI4BrKZm0uOsc2IDzacyNrrfgloTcwJNFaM0BpzmM1ADbw3NoLa2v4iby2ArbovbB/bB1NtQC3QtMay3esnVGSEgza1lwHWG+di7R0ruTWugNRzZ27oYPmpdyzx2rvBAGg6W763nsvQem9R670HGNWe3NF7h1XoJW+0lxqWrpEvt+xt99pFxGopc6AUrnqrLzAuZhE8W3RuvZ2idH7oxBrrSG89zBVm0TbMhicu0F3OtfZh292qQMZvA9XQjVDzDwDUPCWU3FJgYdQEfQoXl9luyKJ8LVJDoz1NwbfPBwzowQOYOqml8B+NvPdk/TVWd0ibvgZJ7Tc1pPpHVow3jimnIGTiIJ1TU70gMMaNoQMSm4jOgcMBYT2GsiGaAvZ7QjnoIudo8gdWkiBBeGoCIPC2MAPME8PHR0Cmam4T4pZT4VgSZarTUgdW4RUx6T9HC4JzBYrWpEkEg+/kv1ZtQIqodqB55QmXlaNe9UEnPW3uQXePjD4KdPsxZ+LV1YZq03gu+jCSlZ3VjWrpgDP7fxgerdIw3LLALtaNgzkD2k9f85p6+OmhurbQdN0bRyBvbfmvNuARCdqifVnqlczDWHUNoXeLOrVAs3ezHw9hnCnuZf1W9thAjMDCIwNs0TrUajzJkU9/rDT3MfQECotRu0NG5YPjovRyOFBGLSe18xli3FHjy/Y4Se8DEuM0Hjm5niBVFvxwfPxuEYVwHRyEmJETtjRLOfExJ/zthNIyRZqMrVxMnPyb04plkYGtU6dDyprW+lrZB5t3JMu0ktLaYoCXh3pcgBF0UuL6unsPom1O1qNb+3MpBe4NR4O4h8+46s9Zo14M7JxfWOIMDkjGqNxR/5FyrntcEPTsk7ynkcgKW8x5EoOTuu0PEf5QGgW1VBSoiF8La4M+KxBRFPAAoovlSAJEgt3BVAEDi30+Kx2ReJaSnPFKhhUq+hyyQQqfgirHqq9ltKuXwh5cgQZqB+WCrz4q1VA+nd95bG2agzemVt9QMkVUPKNUgBqNh5I33XuPfW0gZIr8EymotYVpbW+0ihxfeh340etiAZ4L6qtyBkim/K3O39FG0PU9jaoUt1+HjrBrS1ZIfaT+z6f6o67ah6FaOc/+M6QBP6Z+7+YB3+SAvq2C/+m6DGe6lG5+FeqAXax69+p6MBjaL++6WB4BeB2+D66BxBmB7+ZB2G68PceG2awBr+I6pBiBwG7oYGhBVWJBtBHBds7ouG26z+cBy6AhU6OQJcIhu6kGCyMGxoTu9UiGbA+Yi4qGbB/B1G76fmswj+TBO6P6TGMAxG9E6h5GfB4h2h8ekhgBBhz+xh0ALGbG6SEAnGS4EWPGCmnm+A5macK+W+mQius0x2O2khK2cmRmPhfhnwARom2Qocg2Umnc7o1mQQURJmAmKmMC4Q6wqYRAtmYAPh3mzmu0ARnBEQfq7mEgxRIgTm/h2GuRYOQWIWYWLehKo8jMMWx8euCWLkoAyWZKIAqWTAARoMqQJMkIJM6QJM6sJMrUJMhcVgACzATQIWVyLSTI6g/u2WGecOVqNqsUTOU66swhOslW86NWi8dWzAq87ojWm8AgLWbWNO5YRmXWORVgQuSRYRD84uU8VgUuSuQQj86CByW+uRZCIJC2cAR+omuRaRiU/SEJVghuW2SRyCqCYJORuRiRoRJ2k2Z2FgkgU8pwPCt272NC9kdCpJzRG+d2/CHC/O9s4QKx6AvCf2gigOwOU6pwsmCKEOEJ4QQuCicUk6qA8Osy6iZYxxqOMp7WmOexOwFiQY1irxTAhOji6pIApOViHhFOtAXi1ONydO9ySp88LOySgQ7O3Oq0CSlpkSsasuYumSpJwRC0OuFAfOOJmuwJTSeuOJaJfpzpquyJ8JNQnuWunp3IYZvJNQDqWuhc4Q0BBh5uUyluUp1u2gtunh9uRMcG3e0qzAuyru2gORdQ8iqY/sPuIgly1y8KdyDOwekeCeZmEenyzyl+seESNhLyiejIye/uaesK/u0iKgPqJeeelCMQX02KuK5ehKVeN+5K1JHhoMqAHenK0+CqY8ExbKDeneY+FUAq25reW4e5EqVUhZveMqk+p5iqqQc+C+6qnwExuhtQbJTCGI5Z42CY7UpwB+NqcJcZQuYhbqPyjYiBvqPa1QWC0hT6sBIB7B1h5BtQaBPBGBb+VhOBWG75NQBB9hLBlh3GuBjRNQlBGF1BWFJFuFFRrJZWhFiFrB/62BpF75cijBMhTFxFnhbFdFqQZx+G3FNB2FfFghEQqQ9GlFYFvFtF4lrJ+hXFRBMlrFclvJuQnFCFEGWZCQ+AsGSh5KVCSG5hKldB7FKZSljGqARG0opGHhplEhhcqQ6FjFRBjhzhmwrh7h3GGRekWRQmu0b58JuqeJPxp08lqQiJ8mx80R2Rr5U8kICZEmYVYRhcRqhm3hmRymAV8Jga+RhRtR9R8V75kIn5ZojkfltUJRacb5dFkI/JwWoWUk7RbKnR5ysWqCfRPwAxKWJMYxTAb5oMUxQxMxQxcxQxCxQxaVc2AgaxYgoSjIzIYQkKuxxxEpBxRWxxSxil5xY8VWVxS8K8DWG8zWO88U2pXhx8HxCVwRKV4V0JrpEJkIvpJyfxcA2JCV12b1MosJORy8+RsZhcoGoV+JmJuEH1EJ6Qu+yVoNp2vgxJxCvJ6Qn5HJ92q5f1/JX5LClJTJf1M19JONAOsAoiU8+mOlf17pMO4pkpY0IASO7WcpSpipxxOOqp+pBimpxOeWup5OBilO3i2ppp6exxFpHOq0NprOdpXOktgQvOI2kNQZwuPSRS3pU8AWlZyucu+uEJGWGtTpKurSgNXc0NStBSuuRt1QfWetQNBF26aZ+A0yVuD4CyOZ2BeZYsju15zueygp8JY2et3uESvu9ZeWAe9yzZHZoewK2gEd/IsIEFfyPZ4pYeFuYKlEQ50KI5F1Y5XKPAZSuewqg4hpGgzEJe85eei50apK+dtea5+5NKW5Q+Y8K+9djez4Tu2S/eo8g+wqD5qoo+XtndE+ZAU+TdW4NQqAUxbgL5u0w1dFs25J35atQJ8Y7UyQgFtqOR6swRDlKFjR6sttWlvBIlNFNG89FFrlx91FslZ98lz28FQlylSFWhOFt9vJrU3Bl9mFmholalhcoOD9zBwl19qlb9/9UlX9VFP9p9OhdFJugDhhT9zFVGr9sDd9dhll39LFZlcDFlR9WDKDYl79LlmDchtUChBZWyCGRlqhdlGh2Djl9srUh9j9VlNlsqdDFhJ9N9aD79F9mDhlMAHl7GbhBRHh2BvlzkZmcVs9U8a+INGJKREQHuqY0VfGWV0jOVIAw18JJ+5Sd1qV9sO+GVMVGjMdMjuj/JBR7ARRZj+A1Vnwc98lAB1RFVUjXmdRPmsj75yQERPGrRzV3GUWXRHV8WiWu0gxoMIxvJyQUJqAc1Gxi12xF1q1/uBWhxSpaVeDLsFx0mKQCDiq+wMIR8Mk5GDgphPwkKTQWKtMEUR+mQ3c1lVCg6XDIDODzj/D+DVoqhiqpK65jEHtZkWeYCztW4ORDBJqDADQIckI98Sa4z6+dMCd4zdJf4n+48EJOQqYFToiZQGgkMPw+dw9xNCARAz44zv5M0pqDAMzeTyQLDoU3RMkMI1oCUTmz4wWo0iNC6gkr4z01ovZ1JEgvZJEMALZnaXtkswkThxJz0tg0LlIIgDIQTsMrAXj2Bm5JJkd+5Uk5A1EkgnzWLcdiUBQ+AYIETjRQRqYRm4zL1cz3e/gfKx88NzgveO+ndYKsABzpgjMvofMkB1QDTCD+LHzsUJJqYAL2e/UzVZYcGPAk0ggOAXj8JCR5Ss8cmyKGk6W+xgoCMQx61goqM2rtxvSZQiiDwQKOAfQ6TwgWrndtZo86kYCuUjQZA8IiLyLtM5ARWCyIzHWrYz4v0h8yUKg6kEd/TzVvZmLcqwqiLP8JJrdh5XteUOBJQRAAAVgzjyw3US18rCIKJmC7pU6nrCQaEW/7t60DLVAMNspCq+OsalP7jQJsGAEfEBP7igpdL84ePVCWfsr2UYE5DHuKX21VetBAKKB24hDDPY+O5O9nS7vsqEM9DALWcu21EEQIOm9MF4Ou/VNu6vI6MyEKP870mi9AGUIaVTllNZJ2qIDRNO2VKJhGUla9WbQpGIHAB2EIPO5Cu+3xJ+91SAKC7TaVlDjNKAKIJ6xsMy5IJgl8dbX/FYNCB6YJEtcuEwl4EJDxNqfC4sO1qVqs/+4BwZcwKG00A4IKIizgAB8aCHgIOR5Rywr0rR3AKR3TNC3u5a4NO2Y1slE0CNDtDdAM5oNbBdc+BtEqV4SNOx4x4QCQDFgG6OM9HJ4KIDAzitDnp89lup767TKkxdZK364q0BH04mhIKK18ztHHaVgxdurgEq3Mi/tsuEH3lq8KTqyQHq65550ax5yazgGa2KRawF+2Da2S3awx0JD+6UzlCmzIO60i46Quj67VMZ0JEp0G/41oMlIROG9K2QFGweY3bG2WQm5FsV5IE7im7osUBm1m5V3zMS/C8KGWypkOaW+WxdZWxp9oDW028sA2ynqHc2z/G2/4JCp28sC0l4H897aWQkOKYO96MO89KOw5nO2J5N4+7OxgBO1t/Cut9oFxyCWu7Cxu33ge7u+d/uzu0e3dKezgOe5e0aTe75Dgfe9WEO+aM+1YJTdx6x+2CoD+wd6HcR3R58CB1nBGYrZB0l9sEZlZ5gg7EMko/GZIqhz4Mk7e5h9h+Fjcnh8tQYqVoieD2x5Cwx/x0x9Rx+xD9i2R1T/JzT4D+x4Tydy8jgBHXxylIJyuyJ7+w2QUPKRdUJDJxTwzylEx4p5IFl6pyQLp2l9lC0UMBmArytMoRmFJ0Z0r7co59XuZwS2K013m6Vtk6FA5+2/OtsuAgIFqym7FLq2AvnQ7yQEaym++0F72J3e+9awcbayF6gA6zF1q3F662wOQB68lz13p1p8YIG89MFjl2G+2RG4V+KdG6PaV/G09Im5ytV4mmm5m2SNm23dZ3mxx61115CnU21zMJCtH9WxoLW/CvW2II2xdaN623OO2xdVNzN3N724u+Q0tzt72Ud7t/t00FO996fHtwL6HeP+z6u9d6y9vpdzu+z1d/dye7TO+891ewLbex99oF9ytz91OvGeB2+yx4B9+/PwfBz7T/0cB7oqB3/P58cnD9B2Ygpkj9Dz56j3ErxkDMmPdDq5HACrg8exbPLITwI7v9+SZPK8lQ1phy9megHcFoH0Z5Ucb+dHVnpxxu7ccue/Ufjrz1qb89QeD/CTsL0hSi8kBPeFAVgIU5x9lODAyXvJzV5lQtOsUHTql007kpNea1bXjniBZysA+7zagIS2N6SgL4glc3o52rjqtUALnTulq2UTMgvO1QTui7yNYrxTW5rJAtx197Wp/eBgsjtFydawJ4ubrCPvDy9a8DOBQWZgeaHXKJ9Q2eXFPgVwBQUxGumfFvAAEJMIMMJVISh8Hsdau9XYvj4N/AtdC27XC6jXyr7woG+cQfrh30G5t9huD/TvuNyJ6h0++3bNbkP2gwj9vuY/IoV5k25T9e+O3WfpP1HLlDHABA07iv38CtRN2zAK7pvzu7HtHuCAICC92va/hSQJ/Hbv/0Vr3xEBd/CgeWEQGQ9X+0PeMqfh1K2CYOIUODgsKv7SZ6gjwUAdj18i495I7WWAdqRfgvZH+LPcXpgLYHYCaO6A+nlcIo5M8cB5PZAVC0WDs932RAxaCQL5jrkP41AUTlUMhRUCpOtA2TowOl7x99WcvDgeaC4Eq9fQsIhDAIP9xCC3AevHgDVws4SCjeZfaQe/weaoALelgHYamFECsZtAxI0os+xt6ADiQsAbeESmZJgIcoSwpQc9FUGec9Wagw1r0M9551DB4XIQFq0aZB8LBofQwNYMj7PRkhZUfOhlxl7IpXBuXCAPl0WiRt0+Pg08muAZGkhsYufKrpcPCFF8nCUQ+4TENr7QCH+CQuIfX3sH4BUhdbdIQBEyHlhsh3ffwEf3yGzce2D4BoQO1H4jsGhtQ+/s2BqGVD6hPtOIEv3JAtCwg/8JeFuw35NDUAW/HobvzPb9CD+1OI/sMIfbfcFh/3ULoDymFAj4Usw+4YgPBHXDmOtwunsS1QHPC6BRZDju8JTGEQPkIAAotsStDeAx+syRYLQG/7pxkoJIaYS8F5A2c/4cFTSi7B1GMjsYVvDkc9Bd7cjfOfI/Qe716RGD6AEXfzFF0daxcXWko8PtKLsFVsVo8opwUqJDYqi1RDUDUd4JzYxsW884vUcXgq7Piu8yA9csaIa5fiMBFoxIaHRtF18kh9ox0S32dHt862pLLvrFE9HvdvRA/P0VGNW60xluM7MoWhIn6hisQM/CMQuxwkxizuq/BMSm06Epi0xD3DMU9yzGvchhn3UYVvjqDjCJWTY0saiKbEYCqxlwxsXWJcgNjGBaA3AZcLZ7tj2y4AbeD+F7FeB+xmgaAEOKj6ji8JhgfEPTxfiEi3xTIqrC2M5H5Z1Ba4gybyNolvRguxrR/juJMGijzBR4qwaeJWH0h7RUIRwZlxvFJ93BHyRrI+NpgZ9tRuonSQaPbqD0C+dXE0SX07yASC2lojroJBindcIJTfAbkNybZwSchv4ZCb6OLL+iShZ/bCQtxDHjipQBEufkVL/ANCSJcYsBKkETEdDkxq/W7oe3TG6C6JEgAYYf3e55jT+M7aHhxWOQTCOJwPVSecLuHEteJrwynjWJEmCTy+/Ep/s2Lhb4CGp/USScJBnK2pVQ2vXtgOMUnDiF0Kksqc0EnEm8/4EiBBtpMXH3xvWrbcdt507rXSvA47I1jnm+DsRHpe3CiHrEmDy9nJOvdAF9IxDTIJYNkAGSQH5EuSOsBQDEEDlPKqheM0MkRAAC1nwIgf3PDPWgiJBwMMLwHqxoE0oEZWM2skazxlQyMZZQFsejKByygE++MjGXdMcGkygcz028mQCMC+hwgp5akAVERCqhjmbMoUDUFPIdh3ALgJgJoDIBUjMEAlAOhlAoBgAk84KZcJVTiBvTx2p5ZQNQBUSizeSmQDBjrEoQ/him47b5tbxTZasFWq451uuO3zcdwZi8QUX7z3EWSxRdksPolz2myjzQjTBUVCJcG3jk+HyVPl4N8laix6YqEIV+LCGF9/xpfKKZXziFH9QJVo8sJ7MgkjdoJro4gS23Sm99Aw03AofN37a5SsJQYnCYVLLF5DwxpUiuQ/0X4pjl+67A6KmPqmMskxTUmiS1L6FtTsxb3fsF1OYnPsapAdSYUNLKkVixpTY6sY8JuHzSMBc0i4RNPzZtjlp9IhcTx07ExDVQOANeeqFGiAjSg/ubee+N3mthRQxQXCBWw2jbwypss8gGAANkCRvQBUVKS2yZCazhpGUWwAbN7KfyjJKKWALYB0El4AFSI2mCWAZBfD+830xEOcwSgkhYgOHI/k0AZjPhhpLcXqSvTQDW9865srkU72tkKsPe+g/Oj7yFEiiDxwfZ1vZPdlR9fpsfNyfq2VEByfgQcorl+PvJt4I5pfI8p2mjmRCAJ5o6KV10TmddbR4Ei8X1ySlpCUp4AhqGlI9G5CH+mUwoThIDGlDS5BUwidtxKl1CiJC3ddq1EOApsG553JuZRJXnNz25O/TufvwYmyL+5BYliZFWHmDTqAIPGuTMO4mVjJ5fE4SV4qElTSfFi81sTCwsWsBuIwUn8UAOcoINawTkR6ORCXHZQcFN5YyRoOSXWy+8RC8ySQu3FkL9xZgw8SH2PGJQpRjk9OHQtcmKjGF/szySws8FsLS+HC88lwqTbIC+8f4/hbHMEXxyZgIiuKcBIf6pypFTomRUf3dEITFFzYPOf3yynlTVFxc9CYPzLlaL4UmEiodXMjH6Lzuhi4xbGMbltyqptMaidYu462LBh9ipiY4ufZGoXFAkoHm4uGnjzy+40+gfVHnmjTZpfi+5XgOXmtzbipzSJfQLvzZQQqs40KHEqQhPQkltI1AOQrSV6tYV2ggpY/ztm5KrW+S52bZOKXUKbBHs36d7OvGmDsubg1UR4PVFp8nxTSsOdQBbqfjuFIU3hWFJjmRSelsQvpe9yTkVtEpzfdOWMve4TKe+k3GZQXOWULc1FeUjRfsnLnT8z+MqvRUux2VGLAEpE/wGYpbnAy6pVi3oeco6l9yrlZ/aHoGjuXzTOJhnfxS8qCVvLJp082sbPPuEfLRJwS8SWEsBXfj6BMFZJZ/W3SQqYFiSrYRpUfQuxfVCSoplOFEDOBnw67fJhf0koINah0KpgPMyNWbCYQl+TBPVSWGkQf8fqSpDlIKUMgYotqRXhXlGiPIzOIAZtosAzWYLlhnrDii3ArVJwpgjpfyBuibRQcfgFZRUAHBsLNr6A2GcBAwgWh5inc7Q8vLHBUCUAmA7MFyBXhpZGrFa3UXEskTMTJQBUawQILYA7HByAorATOCxP+pRIgcLTVVrFHOgM5a+Rc7YK21y6+BNgs6mngzSBx65oewNfRviSQQvMgcoZC+YepNp3UFoiPSQA5zVIV5SWCIeABXGSibAN1dpHlDC22jbB2YulBkGaF3hTKa4o0R0LUogDbkbkDgZQKBvEb/BCNIgJEAhpRALwK8ZGijSImgA4hXk5IBUP8GO4O9aoxGjDCRCZDAI1SoAeeI6BVJ6kuq2weeJQgo5YwRNq0eeKYGfCMQHAUmwIAJqE1Yw+g60TVWJqER6k1NyTJTbuzk1E4dNmqw9ipsFCKaokXgcTcJvCbWl9NAIonOZpAAmbccgoIzWzks1abVN6m9zbJvs0OA3NKSDEOqFoBzgRaNoELdQFlLhbQt7WRCHSnZDtZ548WsjDclXjJb2aeWfyMjRhCeB8As6/uClpJybACtGWg+KzSGir9UtnmirRNxJwGaHANWzDV8HZCCaoAjW9rISCs1CB2t2pQkL5vk2+F/wtWvLClHZixRWtYAHrQRqaBjbia1WobU1tG0qBfA9WwbZVoMRdk484vS/FeuH484AIz3b0NSIv7pBLm8YUuCQBZirAmA05E9kwGKDUAVQ92x7SAEaQHagIweTBMeP6kjx3tEgMJIxANCthOib6iIpBHPYA6MALSRiOS2fYaZftUEaAMRqB0w7DwcOtIuDqAjEbodIOw9ddjJBEBtIAIgLYEAJ1E7oAjmgnWCRJ1MAqd38SnV9ELCwAKmuAQ/OYC1CIgg210+SNmyZ0s7D87WCNdiLsqYJ1adIoXZIBRCMQPCgQAZuLHOxSbQYcu0aOdhp2GIk4DIc7Ilr+VYsbkEupmK8kFCcaIs+u6gCLuN0V5ldoS7EV1Qt3/ANqXgASIVnyRAQ046gWcGCxYmnEFGsNSpNAERae7n2VtD9YBpy3EpmR2Uf2nSKxqi6RSnsRuBHqwQr0Fo4gDQMYLgFgIMsOWwMMxtZ1AUnddGsIBXiEA57YYee21E7vMDwhXQZUCvNzr0TcQR6n26HtvT1r16uIMgagF1VF10sYQ7e05oV3lCi78dmwdiNGgH0+QDA/exvTKAsA8AugeeHEA7zu0AhJg0wFhesDMSNxqgNxISEG38jPZs9q7eAGPob0yByAdu2naXpP26Jx9M+qQM2owzkBxIxANSKU1yKBBn91AaDSnDJY/A8oX+kmtlE31djl9YYcQPPq+B55TAQva7avqBAb6QQ3sHfRsH31/wP6MIJKMe0v3a5BIa07UAnQjrPsAG+jTHmtINDrMiDF/VqFf3uqxQlIZuufZ8AnWLg6VgIdfZuq33IHs4qBwdSbm6QMGCD3gbQJ+HwBYG7ohwliYLlDhaIyDIkCg/GlEPiGhQkh4gyvVkMCG1pJUSSNJAgA4HctAkfFLeyMBlgG0Fakw1VHlCnlJ1kW/4BYYbQ4bSQiBpgPYfLT3sx1gyb4DhsZBSKK83wS9rhF8P/AmFhEWGS4ZhhCMmhbamaqAGzVIF1gAUcfqSm7iFqXEs3FaKWp3UVqq1x2g/S9S/4/AG1vapIOMEFADrdCNQNoR2tsHdrG1k6fta2r/gqMR17hr2qq3LwGgREH42dS1R2AKZ6Er7ZdYozXVOHODIAbdeWoFFObRorcfyMY2PUiJT1B0c9WQDJC7bihN6xPmdgfWvIn12pNQCIlfUsS9GxyUPQsd/WKBoeD+H3aur6OwdnwOBiDbDB/2wbHScAejVtFLSrQUN3KdDUKr5rYbcN+GgxGRpwO0bKNtZDDOCfo2MbWwsMDDGxqWrdhH9EWbjT9XUGfBlNLmkgI5s00SazNNmkJP1oc2EmQAWJtmmrrxPabvN0muzQNrV3Oa2ajm1eF1oJMuRbNxJhTaScZPUndNFm1kyQAZN0nDNNJ2WkFoi1hbgtMW/Y9FtsPak4tCWwWl4HS0M1lTipm5HMfxq5b8tQwUrQoFy0lbscKpKbQYliSkgTT3NVbRaYPiEgJt1phQJ1vm3ra8sfWq0wtvaxLbxtxp909qU9NzaJN9ppNTNuW2cm1tw2g+Jtp7LbaE66xpZZUj+0Xsjt9CFehdqu3/Bbt/wB7U9pABZnXtCO89s3uONFjMd/2gOCjtx3Pt7m+ZoCJDpx2w6L+yQa7CWaR3Nryz9Z/yHMGrMSBsdMx9s3/EyDr4ydInNXUObnAU7STdO0cCOeVBgkGdmwEaPzqArs7hgnO7YNzpkC86Fz0ocvSHWcQI0zdi4LhCbQWim6pdapWXfmQV3hMldl5/c2rsVJa7BaOuvmHrv3NnmSA+h/c+bpROW7bzkarvZZBwMO6ndGTc9m7ugAe63+YCTIGdoMb3UWQewKC9lF1k3HjsJ58PVwmT3RRDz0PdoT9prhDxE9VwPWqnvT0nD+zKxEvcfp3MF6ENGGKi7nsPyV7tA3rEtf8Gn2d7Czz7VVvhcVC36z9I9bveIhAO8WOLg+hALIiqK07R9/FjveFlvZiXZ9EB5g4vuX3/B2DMwD/VwfJbCleDuhCRHSQYuwxT9cligPoev0mWJ9D+sDexZf06GLBWlxUOJBeN/6DgGpcSEAYjKBBlD4B+ECpeFQwGr56ltfZpZAMLBuDuln/mgZ/wrFlDjxvAyJCEO/IqDOqZDokTkPUAFDKgFKy1AkTfEMrvlyAyweYRsGQrzhnYNvp4NRXsMEiCIvQfwMJ0lDy+1Q1OgkTBENDTAeq/IfWZNXj2LV1Ky9Q6u4GGD2ht/XoZ/P/ADDckDlQYFcM0YAoc1+APeS6N2HJODh9deVcWvxBWjyA9oyFG8N4RtkfhkKAEcOsYYQjeGiuuEcQsndmzxEV5D2GEuK1rIL1y0OBDe2I77rcGIfeIlxLlIvgHMGdYDYBtNQgbTULYa1DISxGb86wbJEkZKOKh3AaRti0wDLU+BsjDiXI7ldqBLDO1DwUGHUZJgNGarrJao561qPFHtgxN/S0XFJFJqdr9A3IqDHLymBNg3R15L0YXVb4Tg3xY6Cup0xAaNrYxiY+jZ4Ddx91sx7GxEQONLHOrjIVY2ZHzWrRb1XqVm3lt2O9Jn1hx1BL9duqfr7qBxi479ZepnG7jawh4xNc6ueVnjlcVy/Bo+OTAvjgQH493j+PhmPEgJjyZdbAkjb8ARGy2yAGhNrJITEWIO7CeY0InHA7G5EzZaYBoneN9lMk14Am3Wb2TISAU7ieFNcm07SdlO15r5NJ2BTlJrOw6NFMWa87bJx0iyc82V2fNq25k8ndM2Cmy7TmjzfiebsF3V4oZtXYhClNymTSspqLX3eOIKnCteWJLeqdNNqmx7JWbGyPvVsXtdTgu4rUve1LlafTVWgMxvbq1+awzTW2096edM2n2QXWwM81oxChmz7fpu09vZG3BnYop92+wfD9OX2n7CgSM2L0Xk7albstBM19dkQRlQ4qZ8xOmbnAr7czz2lUB9YLOPIAHr7aBzWbLPA6+zIyOks2drO9m0drV/+F2ZbOCg2zWDnVOAlwc9nUd4iHKDluVDk7pzhOkTpTpnPfwaHs5ic4zq3Oyodzy5/UFztv0bnWHzO7cwLu1Km6Rd5DrC7TrfOG6ZdYsv8zbuvPSPBmquluw+f3Pa7rduuknBI+l2fn/z352O5WpkeSBbdAd4CxtRd3KtY0EF5kIHuwcm39bX6v3QHqQsCUl1dj+6kSnH1ZJIywJGPeIj6lG4wAhFrJMeZhCkXyjGp3K5UaP2MX89VqQvfRev00WrUVe1ixkfYuyWrLXF1q3GrpGKWALj1UTJJTO0LRFLDaLJFqZkscRTLy4RS4Vf8st4l9PQ8YGVbGPhWdLu+zYDVdSAREjLN+ypxPov0B2enll+/Tga/2v7dDYxr/S5bg0AGPLQOMBCAZ8tMHdoLN2A8FYQMtPKrkVvo9FaQLOVMDy++K4IcIPtkCnzi0g5oe6vxocrDwMFacYKvLOF9wqOyqVY2eVEkDbTvSxURqkvYur1AJKyIbEPNWcOBTxKjIePAZWsr1AXqxIZBetXjV5SIa389Gu6H9DmwQw/KmMNrXcK2SRa6eTVsfjFrjhuDY5a2sM2XOuaqA6wAOtBGZ1J11BLS52BAmrrXYiI2o5JuZZGk6zUpFf2hs5rQY6gSY25cRtFr0jte+3VkalaVrMbpSUCnWq7UBRCbQxam988hAgCYQo6r2rUEmgTrt4QwadQDbnXBH+j4iDdD7v5u6ZimQt+I9aRmOmu0iMtsNLMGWPy3L1P9muFsfvUL29jVW7W3+tBcuOwqC0Q24bX9etWbipx/W0Bt/4gaA7TxqDbbbg2y6ENnxoTmDd+Ph9/jeWWVo4dJXAnfb/tvR0Hao1Qm/b5GhDeHfhMRZET+yHA/HbgB8bc7TdzOxndJMyb67bbxu9ieLtF2W77b3e0KYrs4nuTbd1O1XZLsN2h3Qp3t53ZLs93xT0pge8PdVPLv5TGIFU0qY3epbp7ep8ShkEHM7HF7M9/UyvePdmJD77t49VvaPv6m3TN7mdS1ovf72T7Tpy9+fZICv373gd+++cifcemf3j9r9y/bvdvuP7C01aN/YWX7bPrSZ8RFDSAdmtC8mZl7ZA+Q9QPcHmTnVMjT1roOkHZD7m6dtwcYP8PBT3KCQ9bPIPCHuVsmvGcR2kOKz4bqEqOeJ0t3mP45nO5OdLsF3OPc5vnQI6XMwwVztgbh5gF4fzn+H7DwR6+Z0c4WCPve8R/+ffPxIDHz4RXfI/l13mlHGulltiNUePnpP2I989o+F2HmcDVuq83ACAtMXTHXc47e7qsdOOxdkb02whesc6pdaIeqN2Ho8cdJgnNcWTwU+D28WAnCe2RFHt4uhPk5e7tzFfuovWfLUcTk3Qk/i/JOa95oOvek/v2Yfcrs2NvZl871CXub6sMR3xb6cz7SnHSJjxU7v2ILfINTx51S/qdqWmnbzxy608PDbO99NVg+lE+Mv5fuA5l4/cM872jO7LY1yZ85cTf/73L1ATy4s7AMNfVnQVlrxwfefaWOv7T3Z10+uxxW43CV/5yc4+QFP76FzuWwwahc3OkCH9dK5c8YPKWVneeF5+s9W9tetnm3mq6Dlu8Av8AMLlQ3C51Q0HwXtiSFz1aBd9X/vuV+Boi4he3eUX6kNFw7WmuT6FAW1hG3i8e96vhgq10w/KGJeFHFn2L71OS9go6v9r56xl/4YZdHXgjzL4VHYbZcncdU9VJtHEdvx+6hXQxVI8lDFfpeJXHP7JDkdkSS5cbNRxV5TeVdlHGjDwSG3TcDvE+JKztvPBim1k9HzrJr7m8w3Ne3HE+cG31FEjtca/rsjryKM67lsXq1j7r8AJ67VuPrNb+xl9Tre5se5UL+Cb9SIiNtO/BjXnn/vcesskarbDoBNzBrtvJuHbSG74zHlduZu33Ob2n1F8DtluwTZbwvSW9DvJ+K3TGqtxXhrccaA79bjE7tHJNjvRNo7yTZ29DOZ2p3fb0v65ur/d2W7PJsvznervt2G7Ffkd1X9nczvjNc7lu73YlOJbB7K7gf2u5IBbuDEE9s963fH+Zbcr8xnUoe8NNCPT3u75Um1rftXvzTG/nUiB+fcYgb7X7x09e7feund7V9n9wf7fd+nAPV/n95+9A8J1uyn961eMZjOW+7rsHp31fxACIfnwH4iBzmYoegAeh60eMDj4CyI1xnSK4egOpR6HI+NNAFQ6mDochg6CZsjqwBTvlCTNm9Hig5IEVZrTpUOw5qx4EBY5vQ5EA1OkQFkB9Oiw7iei5raicOq5qtDrmZgHw60Bu5vqZfmAXq1aNmetKeaSOyngo77manvo4CB/5vebae+nhP7PmO0AZ6S6kjsZ6SAujv77CBGnv+ZGOejiY7O6tnuBaQW4iAOYu+AtiPD+6iFroEAarjuhY+e3NlITR6nATqgwWetCF7ewEerqhx6TAJF4Z6SBJ2axe0ThXqxOdFkl5xeMTpaipeKNqV41eTerA66BJXrk6FeBTnhZG4JTj9aWBaRLlrDe8lnV79eSln5YPewqA04PcK3qFYfOG3l857u2QL169OYQWZaDOFlhkF++T+mN4TOa3k5bf6U3sK6AG8zsAbeWC3vd5POLeIFbp0+QeVbteKBtVa6ERqC9i7eejn87fel3kaiDGIPtc6nOU6EagAaDzt0GNevQE94DBmzhFbveowcsRfejVmD6wu4WKJhGoZ2ki77eULr979WAaAhzQ+wPrD71B8PoM7ouSPsuCo+frOj7Coyvtj6WGCAHj45qLhoT7Jo8vvRR0u1LuT7U+4ITKBU+51nH4YYBRDdZRGkPjEaB2MNssTs+otiTBc+xaqk6o2krhDKC+WcEag708riyIak4vqDAqu4lEajDqGrqCEaULNkdpwGqvhFhc2pwaiRa+BgSMa6+IBhLbEhuRG76y2uBub6K2UHsrbW+h7j66mmDvmG7roKPM56+6Tmj+qhulxlviJUpgUG7FMMbhbaTB1tkH6/6SbmLIpujtmm4g2GbgyxNasfl7b5uz9on4B2xbiHY0a6fjCaZ+LGkwA5+MdkoH5+jbkX5N+jpFSb+hJfu3452fobX4F2gYeGEaavfrO5DuDdq27N+E7h35N207jXYd2PfvX4F2/fou4T+Q/jKaruNyKPar+k/qv5pak9rP5QgpNtJYL2S/nror+Rpuv5fuZpt1rb+AqGf7b+B9o2En+L7sf57+H7rv7/us2pf6LaAHq+4jhs2vf5NaYHqRyQe4qpOgf+ryPahnaP/uYh/+aHuuGoeCDhIDZelYS4GxoCZpDoEOAoSgGI6xHgx7yhmAagEUeJHksEpA5HmpxIB6oWcCUOtDmOY0O5OqQHkB3Hgw6jgvHmw5tgHDoJ5cOa5jw7MBNAfx4bSQjhwEGoxIYA7i6mjuebqeKuoIFyOygchGiBWnpVASB49lIGC6CER+aDO0Ed+RmeKnnk54AxjvF6gWrup8D2eVCLBGah3vhY6OOsEbQZmB3nnoiGotIsF42BAaKyLR6gTrBElebgeRZQg8ZGUGJOCXn4HF6yXoEHBBeIaEECWTMBEHqhlRnl5leBXv8QqR8ngpGmWFXipHz2qQcj4akGQbU7ZBTXo07wGL3mFZvexQUsESIZQYZEDOejkM41Bo3qpANBjllM4tB0YDN5zenQceymRPQb0B9BcBhpaDBNkSMEVEpVOvgTBSgVMGHeQHOujSyp3sNbkGlBosFJRtBqsFZBQUb8CbBlkQUHrewwTs7YYpVLJjxRwhj95HBf3icF2RQuBcHneoPsoY3B6aOoYw+Z3loZPBhEAj4YuM1ij7AhE5F2LAh+LsyG/B61qMY2uQITj5E+kfj+KMhZPj4ZQhjXqdaMuF1mEasuSISvLrogJCz7ohZSIK5YhPkSK7I28kWja7qYsjK7Eh5zp/xkh2UGL6MQTapL6lRuqLL6auP4vhTQhGwZj4GurIfOrq+pwbcqeeNgBa5hEOvvj62uB6gDHr4xvryBnqrrhb7ihgQCrbbG3rnb6+uRxgDEMRwxsqHu+qocSGlU+gZa4++5trUERY8btM5vGJoeH7O2s0WhyWh7WNaF5u8qARr2hRbi6HB21GqRrsxlbu6EgAnoZSJ5+OEOia+hXbkyaduCYQGFJhoYaLG8m0Yd37Bhq2oO7NuI7hLF12u9pO4phDfjX7phasfSZ9+C7v3a5hBYVPbGxeWEWGD+M/ijg7u7gfVSyY2pq8i1hRWuUCr2NyOvZNhY4YLoDhvWo+5dhfYTf59hk4YOHLaw4UHEP2Hsb6Z3+XsQTyP+W2l/Zv+iMaAH9Cn/gDFC4K4Uh6oeGccAF5micduHKRAMSV4IBR4eqHtqOcdABnhOAfVQY6V4fg7oBAMU2bVx8vI+GnBR6jqTEBLHt+GvhAIp+GMOFAcw4ceLARBHXcHOsJ4gRonmBF8eknkBR4RMnjBHqh76rxa8B0uvwEqBsji5A3mIgdiJiBWESo5Pmaji+YaOinnIGERM8cREB25nihGWeFEYEFUR5jrRFuevaKxEueRgffG1YsFmxG06GFsSHfa/jjxG1YJXg4HxwhqBpgkWOKGRbhOtWIZYyRPgZJH0a8TgEHQJckeK7GR6keEHgBX8dpHRBmkc3FsSyCRUF6RpwQFg5a1XopHVOJkYt6qWFkWFHbBnzpFE0hWel4F9eKCZUHOR1QUwmkxdel1HucIBl5HB+Mzr5HtBXli4ZdBOUesG/AIUc96FRFVjsG2R66KcQHO2Bnt7HOlUTMFBe8CPMHZWGUQGjheaibd6BRoiT/6sGEieFHSJtCUsEL0HUYlaHBzURD5QgxXkD5lg6idC7VRLUdOjtW7UalHKQnCT1FvB4Ah8FDEXwS3iwQgwFj5TRfwSfDWuevkNHTRIIbTEucH0Y140uS0ZT6BGS0WtEsuiIZEZbRAaPs6/orPusB5QB0cHIE2SNtz4hBZ0YNFEh6oVdgi+5NvdEYAj0S2qlRh+i0axJmgor7fBPYoa6c2/0UsHXeQMQwAgxBJEy4TRkSfyHqhn3gsbChKxm64JxVvneo2+Gth0D2+frmqGnBgPv0m3GIbmrjEhUPoqHYxwGrqFxR+oRTHxIVMU7bpuUfvTHakjMSqK2hCgKCYOh7Man7OhygIXo8xkdjAZImAsXo4+hidmGHDu0sarG0mIYZLGd+csWmHF2mYT35xhKsWmFt+HbomFgp7mvLHi0MYZqrZhhsePZ5h27qbEHw5sZu7lhVsZbEKA66ILhEJNYS7FOxjsXlhuxb7s2Fn2bYQNpn2nYZNodhPYVv6H+7IIHERxQ4X+48py2v7GhxK2u2Ffu04dGaVRsZotzQeh2ouE7JKZr/6xQG4VnGbhGHnnG9JxZgeF4e54QGjMMRHgHB1mVHlCBVGpcWgE3h66CowmpzaganEha+C+HUOFAR+ETmP4Vx6aqPHtQETxAEWzpARDAZ/qgRvgAPGTxkETIHPgIjuqE74PAfhHLx6EavH1KaEXvHUAW8Zro7xJpLhFQRh8Vo7HxJngagkRG8YY6AWV8dAk3xdnpY50RYaW/FPxzEWGm82ptu44cRNqf/G/xi8LEz2BAkWGnaRwkeAlNplFlAmO6vgbAn+B3gb2lBBLFml5P6NQTuFNpOCTpFWWMQUsETM8QRkH4Jc6Qe74AhkaQlMJeieXi5BK+lQmNBQwVVYlRowZkCQJQ3hkFORSgS5FsJbkeM4OW3CZN68J03k0F+RQiQFHkJAVms5bBe6RFGHpUUVswvpd0Ec4NWyiZolQgdgSlF/OF3iBmLwKFuBn7em6Y96GJn6a94mJP6TSENMBwZVHXBNidBluJDwRYmZWTUcC61R66MRb3BDiY8HuRzwc5GvBRhr5B+JC1sNFK+nSUS4RJBPtEnbWrSQr7QhiSRhjJJZ1myHwhEWBknsuowT165J6Id3CFJFajiE8+GGOUlTGlSaJjLwXjvGAFG5IT2oPRCNtSGWYVRC0moajNvNEBWo0UDZGuxMfAAwIy8FjEDJ2vqxkQxktp+grEMMe6AuuooZKk2EyMV662+SyejGO+SmWlYbJ3ITjEe+fmdWlKhByewn/A5Md5Gh+iGucnmhlyRhoMxntkzE+2doYW5KBjoZzFJq3MW6EfJ0dt8nehQsQnaYmMsUGG0mQKXpogpJfkinlZEKXX6KxWsTCmJhFWRZpVZqKTVm2aKKRyYNZWYQbGSmI/jikDZBiPikD2xKRZpjZOmd06L+lKdzT1ha9nymb2HKW+6MpROMyk+xrKZylvYvYR1pcpUcSCYX+C2ftmzagqfymxQ3KdHGVRT/uB5bq8cXOHSpScbKlb4y8MERpxa4ZnEABuZluEPIaCU9lWA2kYXG1xOmfXGnh+qU3GWYgoZak1xZqSBhkkkOY3HQ5BwLUB2phAR3GOpHHs6lMOVAf3HgRgaUPFCeInjzoBpnqVPFppWaUvRPZrJBGnppiEXGkWesaefEYRBdso7/mensmkHxhnkfHORREXeA5pK8XmmXx6gZRFFYYFjRElpL8dGAf8R2FqEOOxgRTkr0cFuYF1pFOUWI+OFOdpEAJTcBTlTpHacTww5dsT2m0W/adJHwJQ6Ygm8+uCYpEiwaqVGBQ0KmcU41Bs6TbmLCOToumJBSmXUDkpa6eAL1eawVunNeBUcYk0JqGZZg4ODCeUGKR56XAnMahkRFkzeN6e/p3pzQQ+mtBcztbzzer6b7nQGH6QHnUJRQaYlO5smLFEYYFUclZQZUNPla3ekGUd4h58udlFFWCGSVZGJuecVFdeuhFDRQkJeYC7WJxGSBjxJxyA1FpRihs4nYZUNIrQD5niZRndRLwYj60Zs1gNHLkUSWEkjRryHAYsZIyWxlhJHGfpnKCeUF4aQhvGfS4pJcITaHpJDPsiGgZ3CHkyPAQAAA \ No newline at end of file +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 \ No newline at end of file diff --git a/RPG project 2019/save/global.rpgsave b/RPG project 2019/save/global.rpgsave index ab31298..3306c3e 100644 --- a/RPG project 2019/save/global.rpgsave +++ b/RPG project 2019/save/global.rpgsave @@ -1 +1 @@ -NoOwrgNhA0DeBEBzCB7ARgQwgSQCbwC54AlABQHEBZANXmngBcBLBiAU0JIoAIAHAJxQArNgGMG3AEwAGAIwBOOvFEALDPwzi2/AM6FgweAEFxKfrLrSAutEMmGZi9ADsNu6f4BmOq9vGPknSeVjbwAGaabHoEBv4O5pZucY4+SfZm3i5pHpnBobwQGACezAC2HETS0gTSngSSmYxM5ToMGKW8hLIArM6yABwALIOyg/IAbNLjAL5WQA \ No newline at end of file +NoOwrgNhA0DeBEBzCB7ARgQwgSQCbwC54AlABQHEBZANXmngBcBLBiAU0JIoAIAHAJxQArNgGMG3AEwAGAIwBOOvFEALDPwzi2/AM6FgweAEFxKfrLrSAutEMmGZi9ADsNu6f4BmOq9vGPknSeVjbwAGaabHoEBv4O5pZucY4+SfZm3i5pHpnBobwQGACezAC2HETS0gTSngQALIH0ZVEMGKW8hLIArM6S8vXOAGwKQ90AHAC+VkAA== \ No newline at end of file