From e5e565b3be8b841a29ebeebb22c480c3183983b7 Mon Sep 17 00:00:00 2001 From: lzr <1838979562@qq.com> Date: Sat, 30 Dec 2023 19:53:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=88=98=E6=96=97=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/Actors.json | 2 +- data/System.json | 2 +- js/plugins.js | 1 + js/plugins/YEP_X_BattleStatistics.js | 532 +++++++++++++++++++++++++++ 4 files changed, 535 insertions(+), 2 deletions(-) create mode 100644 js/plugins/YEP_X_BattleStatistics.js diff --git a/data/Actors.json b/data/Actors.json index 38d39e9..a0792ae 100644 --- a/data/Actors.json +++ b/data/Actors.json @@ -1,6 +1,6 @@ [ null, -{"id":1,"battlerName":"","characterIndex":0,"characterName":"郝仁行走图改","classId":1,"equips":[6,0,0,0,0],"faceIndex":0,"faceName":"主角团","traits":[{"code":14,"dataId":34,"value":1},{"code":14,"dataId":63,"value":1},{"code":43,"dataId":3,"value":1}],"initialLevel":1,"maxLevel":15,"name":"郝仁","nickname":"","note":"\n\n","profile":"似乎是个平平无奇的普通人"}, +{"id":1,"battlerName":"","characterIndex":0,"characterName":"郝仁行走图改","classId":1,"equips":[6,0,0,0,0],"faceIndex":0,"faceName":"主角团","traits":[{"code":14,"dataId":34,"value":1},{"code":14,"dataId":63,"value":1}],"initialLevel":1,"maxLevel":15,"name":"郝仁","nickname":"","note":"\n\n","profile":"似乎是个平平无奇的普通人"}, {"id":2,"battlerName":"","characterIndex":0,"characterName":"vva","classId":2,"equips":[0,0,0,0,0],"faceIndex":1,"faceName":"主角团","traits":[{"code":14,"dataId":34,"value":1}],"initialLevel":1,"maxLevel":15,"name":"薇薇安","nickname":"","note":"\n\n","profile":"最古血族、最穷血族、估计也是厨艺最好的血族(PS:\n她的血魔法血量消耗和效果都会随着血量下降而下降)"}, {"id":3,"battlerName":"","characterIndex":0,"characterName":"五月","classId":8,"equips":[0,0,0,0,0],"faceIndex":2,"faceName":"主角团","traits":[],"initialLevel":1,"maxLevel":15,"name":"南宫五月","nickname":"","note":"\n\n","profile":"陆生海妖,亲爸是个猎魔人,\n原本是不会任何攻击法术的"}, {"id":4,"battlerName":"","characterIndex":2,"characterName":"People1","classId":5,"equips":[0,0,0,0,0],"faceIndex":3,"faceName":"主角团","traits":[],"initialLevel":1,"maxLevel":15,"name":"南宫三八","nickname":"","note":"\n\n","profile":"亲妈是个海妖的半吊子猎魔人,只能选择精进符卡技艺"}, diff --git a/data/System.json b/data/System.json index 10e22f8..6c1b257 100644 --- a/data/System.json +++ b/data/System.json @@ -1 +1 @@ -{"airship":{"bgm":{"name":"Kan R Gao - Floating By","pan":0,"pitch":100,"volume":90},"characterIndex":0,"characterName":"$巨龟岩台号","startMapId":0,"startX":0,"startY":0},"armorTypes":["","轻甲","重甲","魔法护甲","普通饰品","魔法饰品","魔法球","副手匕首","副手枪械","左手爪","莉莉的冰爪"],"attackMotions":[{"type":0,"weaponImageId":0},{"type":1,"weaponImageId":2},{"type":1,"weaponImageId":12},{"type":1,"weaponImageId":1},{"type":1,"weaponImageId":4},{"type":1,"weaponImageId":10},{"type":1,"weaponImageId":7},{"type":2,"weaponImageId":21},{"type":1,"weaponImageId":14},{"type":1,"weaponImageId":10},{"type":0,"weaponImageId":2},{"type":0,"weaponImageId":11},{"type":0,"weaponImageId":2}],"battleBgm":{"name":"Battle1","pan":0,"pitch":100,"volume":90},"battleback1Name":"DecorativeTile","battleback2Name":"Temple","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":"经费","defeatMe":{"name":"Defeat1","pan":0,"pitch":100,"volume":90},"editMapId":73,"elements":["","物理","地","风","水","火","电","冰","圣","暗","精神","力场","混沌","幽能","毒","生命治疗","生命吸取","真实"],"equipTypes":["","武器","副手","头饰","甲衣","靴子","项链","手饰"],"gameTitle":"异常生物见闻录","gameoverMe":{"name":"Gameover1","pan":0,"pitch":100,"volume":90},"locale":"zh_CN","magicSkills":[2,4],"menuCommands":[true,true,true,true,true,true],"optDisplayTp":true,"optDrawTitle":true,"optExtraExp":false,"optFloorDeath":false,"optFollowers":true,"optSideView":false,"optSlipDeath":true,"optTransparent":false,"partyMembers":[1],"ship":{"bgm":{"name":"Kan R Gao - Floating By","pan":0,"pitch":100,"volume":100},"characterIndex":1,"characterName":"Vehicle","startMapId":31,"startX":174,"startY":58},"skillTypes":["","特技","魔法","专属技能","神术/天赋","各种普通攻击"],"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":65,"startX":18,"startY":31,"switches":["","吃完饭","水管爆了","薇薇安出现","蝙蝠出现","海妖现身","五月海妖形态","出现水泡","水塔剧情借宿","去地下室","治疗海妖","准备出发","苏哈白火出现","击败幽灵船","不明海妖出现","丧尸出现","发现丧尸","击败人鱼","对战冰系怪物","对战老鼠怪","对战蝙蝠怪","","飞砖对话","豆豆星彩蛋完成","熔岩巨蝎出现","击败巨蝎","收集素材","对战魔族","第一次狗炮时的对话","狗炮彩蛋剧情结束","","怪物秒杀开关","阿拉曼达开局剧情完成","希尔妲对话完成","水泵站门前的对话","出发调查水泵站","小纸条对话","冰之鼠王被击杀","郝籽相关的对话","鸡神已死","神鹅被打败","击败巨蟹海妖","巴文特任务已领取","巴文特任务01开启","水兵安息","额外的收集任务","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","偷看","尝试交互","触碰脑和容器","完成研究红球","击败伊娃","出现水花","水花伤害","增加火球1","增加火球2","增加火球3","增加背球","增加左球","增加右球","进入纳萨托恩","进入管道","海妖消失","丧尸复苏","水晶破碎","打败守门海妖哨兵","被海妖围了","击败脑怪","密室","击败密室门卫","支援老王","击败海妖女王","发现大漩涡","前往水涌之核","关闭大护壁","豆豆出现","清理皇宫","清理完成","莎奇拉水泡开","点击w","能召唤飞船","初次进入研究炸","游戏开始","点击Q","","发现艾欧","","老王幸存者","进入大门","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"terms":{"basic":["等级","Lv","HP","HP","MP","MP","TP","TP","经验值","EXP"],"commands":["战斗","逃跑","攻击","防御","物品","技能","装备","状态","整队","保存","游戏结束","设置","武器","护甲","随身杂物","装备","最强装备","清空","开始游戏","继续游戏",null,"回到标题","取消",null,"购买","出售"],"params":["最大 HP","最大 MP","攻击力","防御力","魔法攻击","魔法防御","敏捷","幸运","命中率","回避率"],"messages":{"actionFailure":"对%1没有效果!","actorDamage":"%1受到了 %2 点伤害!","actorDrain":"%1被吸收了 %3 点 %2!","actorGain":"%1的 %2 增加了 %3 点!","actorLoss":"%1的 %2 减少了 %3 点!","actorNoDamage":"%1没有受到伤害!","actorNoHit":"Miss! %1没有受到伤害!","actorRecovery":"%1恢复了 %3 点 %2!","alwaysDash":"始终跑步","bgmVolume":"BGM 音量","bgsVolume":"BGS 音量","buffAdd":"%1的%2上升了!","buffRemove":"%1的%2恢复正常了!","commandRemember":"记住指令","counterAttack":"%1的反击!","criticalToActor":"痛恨一击!","criticalToEnemy":"会心一击!","debuffAdd":"%1的%2下降了!","defeat":"%1被击败了。","emerge":"%1出现了!","enemyDamage":"%1受到了 %2 点伤害!","enemyDrain":"%1被吸收了 %3 点 %2!","enemyGain":"%1的 %2 增加了 %3 点!","enemyLoss":"%1的 %2 减少了 %3 点!","enemyNoDamage":"没有对%1造成伤害!","enemyNoHit":"Miss!没有对%1造成伤害!","enemyRecovery":"%1恢复了 %3 点 %2!","escapeFailure":"但是没有逃跑成功!","escapeStart":"%1开始逃跑了!","evasion":"%1躲开了攻击!","expNext":"距离下一%1","expTotal":"现在的%1","file":"文件","levelUp":"%1升到了 %2 %3!","loadMessage":"读取哪个文件?","magicEvasion":"%1躲避了魔法!","magicReflection":"%1反射了魔法!","meVolume":"ME 音量","obtainExp":"获得了 %1 点%2!","obtainGold":"获得了 %1\\G!","obtainItem":"获得了%1!","obtainSkill":"学会了%1!","partyName":"%1的队伍","possession":"持有数","preemptive":"%1先发制人!","saveMessage":"保存到哪个文件?","seVolume":"SE 音量","substitute":"%1保护了%2!","surprise":"%1被偷袭了!","useItem":"%1使用了%2!","victory":"%1胜利了!"}},"testBattlers":[{"actorId":2,"equips":[5,0,0,0,0],"level":13},{"actorId":0,"equips":[11,21,0,0,0],"level":1},{"actorId":0,"equips":[6,0,0,0,0],"level":13},{"actorId":0,"equips":[11,0,0,0,0],"level":1}],"testTroopId":17,"title1Name":"Plain","title2Name":"","titleBgm":{"name":"猫耳开关","pan":0,"pitch":100,"volume":90},"variables":["","技能数值","数据判断","掉落概率随机数","泛用随机数","通用怪物击杀数量","时间推进","计算","鸡的数量","海妖碰撞伤害","火位置X","火位置Y","玩家方向","火距离","BGM编号记录","清理废墟","鸡的死亡数","鹅的击杀数","地图精英猎杀数量","需要收集的炼金素材数量","","地图ID","玩家位置X","玩家位置Y","图片移动X","图片移动Y","随机数","火1位置X","火1位置Y","火1距离","火2位置X","火2位置Y","火2距离","火3位置X","火3位置Y","火3距离","背火位置X","背火位置Y","背火距离","右火位置X","右火位置Y","右火距离","左火位置X","左火位置Y","左火距离","海妖碰撞伤害1","海妖碰撞伤害2","海妖碰撞伤害3","海妖碰撞伤害背","海妖碰撞伤害右","海妖碰撞伤害左","玩家方向1","玩家方向2","玩家方向3","玩家方向4","玩家方向5","玩家方向6","伊娃血量","","","","史莱姆核心结晶数量","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","熔浆积淀刷新计时","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"versionId":45054475,"victoryMe":{"name":"Victory1","pan":0,"pitch":100,"volume":90},"weaponTypes":["","剑","长柄武器","匕首","斧","爪","弓弩","枪炮","法杖","莉莉的火爪","魔王佩剑","魔导工作手套","宇宙碎片长剑"],"windowTone":[0,0,0,0]} \ No newline at end of file +{"airship":{"bgm":{"name":"Kan R Gao - Floating By","pan":0,"pitch":100,"volume":90},"characterIndex":0,"characterName":"$巨龟岩台号","startMapId":0,"startX":0,"startY":0},"armorTypes":["","轻甲","重甲","魔法护甲","普通饰品","魔法饰品","魔法球","副手匕首","副手枪械","左手爪","莉莉的冰爪"],"attackMotions":[{"type":0,"weaponImageId":0},{"type":1,"weaponImageId":2},{"type":1,"weaponImageId":12},{"type":1,"weaponImageId":1},{"type":1,"weaponImageId":4},{"type":1,"weaponImageId":10},{"type":1,"weaponImageId":7},{"type":2,"weaponImageId":21},{"type":1,"weaponImageId":14},{"type":1,"weaponImageId":10},{"type":0,"weaponImageId":2},{"type":0,"weaponImageId":11},{"type":0,"weaponImageId":2}],"battleBgm":{"name":"Battle1","pan":0,"pitch":100,"volume":90},"battleback1Name":"DecorativeTile","battleback2Name":"Temple","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":"经费","defeatMe":{"name":"Defeat1","pan":0,"pitch":100,"volume":90},"editMapId":65,"elements":["","物理","地","风","水","火","电","冰","圣","暗","精神","力场","混沌","幽能","毒","生命治疗","生命吸取","真实"],"equipTypes":["","武器","副手","头饰","甲衣","靴子","项链","手饰"],"gameTitle":"异常生物见闻录","gameoverMe":{"name":"Gameover1","pan":0,"pitch":100,"volume":90},"locale":"zh_CN","magicSkills":[2,4],"menuCommands":[true,true,true,true,true,true],"optDisplayTp":true,"optDrawTitle":true,"optExtraExp":false,"optFloorDeath":false,"optFollowers":true,"optSideView":false,"optSlipDeath":true,"optTransparent":false,"partyMembers":[1],"ship":{"bgm":{"name":"Kan R Gao - Floating By","pan":0,"pitch":100,"volume":100},"characterIndex":1,"characterName":"Vehicle","startMapId":31,"startX":174,"startY":58},"skillTypes":["","特技","魔法","专属技能","神术/天赋","各种普通攻击"],"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":65,"startX":18,"startY":31,"switches":["","吃完饭","水管爆了","薇薇安出现","蝙蝠出现","海妖现身","五月海妖形态","出现水泡","水塔剧情借宿","去地下室","治疗海妖","准备出发","苏哈白火出现","击败幽灵船","不明海妖出现","丧尸出现","发现丧尸","击败人鱼","对战冰系怪物","对战老鼠怪","对战蝙蝠怪","","飞砖对话","豆豆星彩蛋完成","熔岩巨蝎出现","击败巨蝎","收集素材","对战魔族","第一次狗炮时的对话","狗炮彩蛋剧情结束","","怪物秒杀开关","阿拉曼达开局剧情完成","希尔妲对话完成","水泵站门前的对话","出发调查水泵站","小纸条对话","冰之鼠王被击杀","郝籽相关的对话","鸡神已死","神鹅被打败","击败巨蟹海妖","巴文特任务已领取","巴文特任务01开启","水兵安息","额外的收集任务","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","偷看","尝试交互","触碰脑和容器","完成研究红球","击败伊娃","出现水花","水花伤害","增加火球1","增加火球2","增加火球3","增加背球","增加左球","增加右球","进入纳萨托恩","进入管道","海妖消失","丧尸复苏","水晶破碎","打败守门海妖哨兵","被海妖围了","击败脑怪","密室","击败密室门卫","支援老王","击败海妖女王","发现大漩涡","前往水涌之核","关闭大护壁","豆豆出现","清理皇宫","清理完成","莎奇拉水泡开","点击w","能召唤飞船","初次进入研究炸","游戏开始","点击Q","","发现艾欧","","老王幸存者","进入大门","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"terms":{"basic":["等级","Lv","HP","HP","MP","MP","TP","TP","经验值","EXP"],"commands":["战斗","逃跑","攻击","防御","物品","技能","装备","状态","整队","保存","游戏结束","设置","武器","护甲","随身杂物","装备","最强装备","清空","开始游戏","继续游戏",null,"回到标题","取消",null,"购买","出售"],"params":["最大 HP","最大 MP","攻击力","防御力","魔法攻击","魔法防御","敏捷","幸运","命中率","回避率"],"messages":{"actionFailure":"对%1没有效果!","actorDamage":"%1受到了 %2 点伤害!","actorDrain":"%1被吸收了 %3 点 %2!","actorGain":"%1的 %2 增加了 %3 点!","actorLoss":"%1的 %2 减少了 %3 点!","actorNoDamage":"%1没有受到伤害!","actorNoHit":"Miss! %1没有受到伤害!","actorRecovery":"%1恢复了 %3 点 %2!","alwaysDash":"始终跑步","bgmVolume":"BGM 音量","bgsVolume":"BGS 音量","buffAdd":"%1的%2上升了!","buffRemove":"%1的%2恢复正常了!","commandRemember":"记住指令","counterAttack":"%1的反击!","criticalToActor":"痛恨一击!","criticalToEnemy":"会心一击!","debuffAdd":"%1的%2下降了!","defeat":"%1被击败了。","emerge":"%1出现了!","enemyDamage":"%1受到了 %2 点伤害!","enemyDrain":"%1被吸收了 %3 点 %2!","enemyGain":"%1的 %2 增加了 %3 点!","enemyLoss":"%1的 %2 减少了 %3 点!","enemyNoDamage":"没有对%1造成伤害!","enemyNoHit":"Miss!没有对%1造成伤害!","enemyRecovery":"%1恢复了 %3 点 %2!","escapeFailure":"但是没有逃跑成功!","escapeStart":"%1开始逃跑了!","evasion":"%1躲开了攻击!","expNext":"距离下一%1","expTotal":"现在的%1","file":"文件","levelUp":"%1升到了 %2 %3!","loadMessage":"读取哪个文件?","magicEvasion":"%1躲避了魔法!","magicReflection":"%1反射了魔法!","meVolume":"ME 音量","obtainExp":"获得了 %1 点%2!","obtainGold":"获得了 %1\\G!","obtainItem":"获得了%1!","obtainSkill":"学会了%1!","partyName":"%1的队伍","possession":"持有数","preemptive":"%1先发制人!","saveMessage":"保存到哪个文件?","seVolume":"SE 音量","substitute":"%1保护了%2!","surprise":"%1被偷袭了!","useItem":"%1使用了%2!","victory":"%1胜利了!"}},"testBattlers":[{"actorId":2,"equips":[5,0,0,0,0],"level":13},{"actorId":0,"equips":[11,21,0,0,0],"level":1},{"actorId":0,"equips":[6,0,0,0,0],"level":13},{"actorId":0,"equips":[11,0,0,0,0],"level":1}],"testTroopId":17,"title1Name":"Plain","title2Name":"","titleBgm":{"name":"猫耳开关","pan":0,"pitch":100,"volume":90},"variables":["","技能数值","数据判断","掉落概率随机数","泛用随机数","通用怪物击杀数量","时间推进","计算","鸡的数量","海妖碰撞伤害","火位置X","火位置Y","玩家方向","火距离","BGM编号记录","清理废墟","鸡的死亡数","鹅的击杀数","地图精英猎杀数量","需要收集的炼金素材数量","","地图ID","玩家位置X","玩家位置Y","图片移动X","图片移动Y","随机数","火1位置X","火1位置Y","火1距离","火2位置X","火2位置Y","火2距离","火3位置X","火3位置Y","火3距离","背火位置X","背火位置Y","背火距离","右火位置X","右火位置Y","右火距离","左火位置X","左火位置Y","左火距离","海妖碰撞伤害1","海妖碰撞伤害2","海妖碰撞伤害3","海妖碰撞伤害背","海妖碰撞伤害右","海妖碰撞伤害左","玩家方向1","玩家方向2","玩家方向3","玩家方向4","玩家方向5","玩家方向6","伊娃血量","","","","史莱姆核心结晶数量","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","熔浆积淀刷新计时","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"versionId":99252296,"victoryMe":{"name":"Victory1","pan":0,"pitch":100,"volume":90},"weaponTypes":["","剑","长柄武器","匕首","斧","爪","弓弩","枪炮","法杖","莉莉的火爪","魔王佩剑","魔导工作手套","宇宙碎片长剑"],"windowTone":[0,0,0,0]} \ No newline at end of file diff --git a/js/plugins.js b/js/plugins.js index e0dd6ca..cad1726 100644 --- a/js/plugins.js +++ b/js/plugins.js @@ -43,6 +43,7 @@ var $plugins = {"name":"--------------------","status":true,"description":"------------------------------------------------------------","parameters":{}}, {"name":"YEP_EventChasePlayer","status":true,"description":"v1.05 事件追逐☁️","parameters":{"Sight Lock":"300","See Player":"true","Alert Timer":"10","Alert Balloon":"1","Alert Sound":"Attack1","Alert Common Event":"0","Return After":"true","Return Wait":"60"}}, {"name":"--------------------","status":true,"description":"------------------------------------------------------------","parameters":{}}, +{"name":"YEP_X_BattleStatistics","status":true,"description":"v1.01 战斗统计☁️","parameters":{"Command Name":"战斗统计","Battle Count Text":"开始战斗","Battle Count Format":"%1 (参战率%3%)","Kill Count Text":"总击杀数","Kill Count Format":"场均击杀%1","Death Count Text":"总阵亡数","Death Count Format":"场均阵亡%1","Damage Dealt":"造成伤害总量","Damage Taken":"受到伤害总量","Healing Dealt":"造成治疗总量"}}, {"name":"YEP_Taunt","status":true,"description":"v1.01 嘲讽★","parameters":{}}, {"name":"YEP_X_CounterControl","status":true,"description":"v1.07 反击控制","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_SkillCooldowns","status":true,"description":"v1.11 技能冷却☁️","parameters":{"---冷却时间---":"","Cooldown Format":"%1CD","Cooldown Font Size":"20","Cooldown Text Color":"6","Cooldown Icon":"75","Cooldown After Battle":"0","Cooldown Steps":"5","Cooldown Bypass":"1, 2","---热身---":"","Warmup Format":"%1WU","Warmup Font Size":"20","Warmup Text Color":"4","Warmup Icon":"75","---战斗核心---":"","Time Based":"false","Turn Time":"100"}}, diff --git a/js/plugins/YEP_X_BattleStatistics.js b/js/plugins/YEP_X_BattleStatistics.js new file mode 100644 index 0000000..dde0d5a --- /dev/null +++ b/js/plugins/YEP_X_BattleStatistics.js @@ -0,0 +1,532 @@ +//============================================================================= +// Yanfly Engine Plugins - Status Menu Extension - Battle Statistics +// YEP_X_BattleStatistics.js +//============================================================================= + +var Imported = Imported || {}; +Imported.YEP_X_BattleStatistics = true; + +var Yanfly = Yanfly || {}; +Yanfly.BStats = Yanfly.BStats || {}; +Yanfly.BStats.version = 1.01; + +//============================================================================= + /*: + * @plugindesc v1.01 战斗统计☁️ + * @author Yanfly Engine Plugins + * + * @param Command Name + * @text 命令名称 + * @desc This is the text used for the command name in the Status + * Menu command list. + * @default 统计 + * + * @param Battle Count Text + * @text 战斗计数文本 + * @desc This is the category text for Battle Count. + * @default 开始战斗 + * + * @param Battle Count Format + * @text 战斗计数格式 + * @desc This is how the text format will appear. + * %1 - Actor Battles %2 - Party Battles %3 - Percentage + * @default %1 out of %2 Battles (%3%) + * + * @param Kill Count Text + * @text 击杀计数文本 + * @desc This is the category text for Kill Count. + * @default 杀敌数 + * + * @param Kill Count Format + * @text 击杀计数格式 + * @desc This is how the text format will appear. + * %1 - Kill Ratio + * @default %1每场战斗的死亡人数 + * + * @param Death Count Text + * @text 死亡计数文本 + * @desc This is the category text for Death Count. + * @default 死亡数 + * + * @param Death Count Format + * @text 死亡计数格式 + * @desc This is how the text format will appear. + * %1 - Death Ratio + * @default %1 每场战斗死亡 + * + * + * @param Damage Dealt + * @text 造成的伤害 + * @desc This is the category text for Damage Dealt. + * @default 造成伤害数 + * + * @param Damage Taken + * @text 受到的伤害 + * @desc This is the category text for Damage Taken. + * @default 受到伤害数 + * + * @param Healing Dealt + * @text 治疗成功 + * @desc This is the category text for Healing Dealt. + * @default 造成治疗数 + * + * + * @help + * + * 魔改作者: 流逝的岁月 + * 魔改版本: v1.00 + * + * 魔改内容: v1.00 移除受到治疗数,移除助攻数 + * + * + * + * ============================================================================ + * Introduction + * ============================================================================ + * + * 想要你玩家战斗记录统计吗?现在你可以了 + * 这个插件需要身份菜单核心插件 + * 这个插件需要YEP_StatusMenuCore,确保它在YEP_StatusMenuCore下面。 + * + * 如果你想把战斗记录栏放在菜单,请把‘Statistics‘放入身份菜单核心 + * 命令顺序参数里。如果没有设置,将会自动出现在‘Custom’栏。 + * + * ============================================================================ + * Instructions + * ============================================================================ + * + * 这个插件是即插即用。所以战斗信息将会记录在战斗统计栏。这个信息如下: + * + * Battles Initiated + * 战斗场数记录 + * + * Kills/Deaths/Assists + * 显示杀敌数、死亡数和助攻数。杀敌数是玩家击败敌方个数。 + * 死亡数是玩家战斗死亡数。助攻数是敌方死亡时玩家在场的个数。 + * + * Damage Dealt + * 造成伤害数 + * + * Damage Taken + * 遭受伤害数 + * + * Healing Dealt + * 造成治疗数 + * + * Healing Taken + * 受到治疗数 + * + * ============================================================================ + * Changelog + * ============================================================================ + * + * Version 1.01: + * - Calculations for recorded HP damage dealt are now calculated based on the + * actual HP damage taken as per the results rather than based off of the raw + * incoming value (in the event that raw value gets modified as per the effects + * of other plugins). + * + * Version 1.00: + * - Finished Plugin! + */ +//============================================================================= + +if (Imported.YEP_StatusMenuCore) { + +//============================================================================= +// Parameter Variables +//============================================================================= + + +var Zzy = Zzy || {}; +Zzy.CXBS = Zzy.CXBS || {}; + + + // * @param Assist Count Text + // * @text 辅助计数文本 + // * @desc This is the category text for Assist Count. + // * @default 助攻数 + // * + // * @param Assist Count Format + // * @text 辅助计数格式 + // * @desc This is how the text format will appear. + // * %1 - Assist Ratio + // * @default %1 每战助攻数 + // * + // * @param Healing Taken + // * @text 正在治疗 + // * @desc This is the category text for Healing Taken. + // * @default 受到治疗数 + + + + +Yanfly.Parameters = PluginManager.parameters('YEP_X_BattleStatistics'); +Yanfly.Param = Yanfly.Param || {}; + +Yanfly.Param.BStatsCmdName = String(Yanfly.Parameters['Command Name']); +Yanfly.Param.BStatsBCountText = String(Yanfly.Parameters['Battle Count Text']); +Yanfly.Param.BStatsBCountFmt = String(Yanfly.Parameters['Battle Count Format']); +Yanfly.Param.BStatsKCountText = String(Yanfly.Parameters['Kill Count Text']); +Yanfly.Param.BStatsKCountFmt = String(Yanfly.Parameters['Kill Count Format']); +Yanfly.Param.BStatsDCountText = String(Yanfly.Parameters['Death Count Text']); +Yanfly.Param.BStatsDCountFmt = String(Yanfly.Parameters['Death Count Format']); +Yanfly.Param.BStatsACountText = String(Yanfly.Parameters['Assist Count Text']); +Yanfly.Param.BStatsACountFmt = String(Yanfly.Parameters['Assist Count Format']); +Yanfly.Param.BStatsDmgDealt = String(Yanfly.Parameters['Damage Dealt']); +Yanfly.Param.BStatsDmgTaken = String(Yanfly.Parameters['Damage Taken']); +Yanfly.Param.BStatsHealDealt = String(Yanfly.Parameters['Healing Dealt']); +Yanfly.Param.BStatsHealTaken = String(Yanfly.Parameters['Healing Taken']); + +//============================================================================= +// Game_BattlerBase +//============================================================================= + +Yanfly.BStats.Game_BattlerBase_addNewState = + Game_BattlerBase.prototype.addNewState; +Game_BattlerBase.prototype.addNewState = function(stateId) { + if (stateId === this.deathStateId()) this.updateBattleStats(); + Yanfly.BStats.Game_BattlerBase_addNewState.call(this, stateId); +}; + +Game_BattlerBase.prototype.updateBattleStats = function() { + if (!$gameParty.inBattle()) return; + if (this.isActor()) this.increaseDeathCount(); + if (this.isEnemy()) { + for (var i = 0; i < $gameParty.battleMembers().length; ++i) { + var actor = $gameParty.battleMembers()[i]; + if (!actor) continue; + if (actor === BattleManager._subject) { + actor.increaseKillCount(); + } else { + actor.increaseAssistCount(); + } + } + } +}; + +//============================================================================= +// Game_Battler +//============================================================================= + +Yanfly.BStats.Game_Battler_onBattleStart = Game_Battler.prototype.onBattleStart; +Game_Battler.prototype.onBattleStart = function() { + Yanfly.BStats.Game_Battler_onBattleStart.call(this); + if (!this.isActor()) return; + if (this._battleCount === undefined) this.initBattleStatistics(); + if (this.isBattleMember()) this._battleCount++; +}; + +//============================================================================= +// Game_Actor +//============================================================================= + +Yanfly.BStats.Game_Actor_setup = Game_Actor.prototype.setup; +Game_Actor.prototype.setup = function(actorId) { + Yanfly.BStats.Game_Actor_setup.call(this, actorId); + this.initBattleStatistics(); +}; + +Game_Actor.prototype.initBattleStatistics = function() { + this._battleCount = 0; + this._killCount = 0; + this._deathCount = 0; + this._assistCount = 0; + this._totalDamageDealt = 0; + this._totalDamageTaken = 0; + this._totalHealingDealt = 0; + this._totalHealingTaken = 0; +}; + +Game_Actor.prototype.battleCount = function() { + if (this._battleCount === undefined) this.initBattleStatistics(); + return this._battleCount; +}; + +Game_Actor.prototype.killCount = function() { + if (this._killCount === undefined) this.initBattleStatistics(); + return this._killCount; +}; + +Game_Actor.prototype.killCountRatio = function() { + if (this._killCount === undefined) this.initBattleStatistics(); + return this._killCount / Math.max(this._battleCount, 1); +}; + +Game_Actor.prototype.increaseKillCount = function(value) { + value = value || 1; + if (this._killCount === undefined) this.initBattleStatistics(); + this._killCount += value; +}; + +Game_Actor.prototype.deathCount = function() { + if (this._deathCount === undefined) this.initBattleStatistics(); + return this._deathCount; +}; + +Game_Actor.prototype.deathCountRatio = function() { + if (this._deathCount === undefined) this.initBattleStatistics(); + return this._deathCount / Math.max(this._battleCount, 1); +}; + +Game_Actor.prototype.increaseDeathCount = function(value) { + value = value || 1; + if (this._deathCount === undefined) this.initBattleStatistics(); + this._deathCount += value; +}; + +Game_Actor.prototype.assistCount = function() { + if (this._assistCount === undefined) this.initBattleStatistics(); + return this._assistCount; +}; + +Game_Actor.prototype.assistCountRatio = function() { + if (this._assistCount === undefined) this.initBattleStatistics(); + return this._assistCount / Math.max(this._battleCount, 1); +}; + +Game_Actor.prototype.increaseAssistCount = function(value) { + value = value || 1; + if (this._assistCount === undefined) this.initBattleStatistics(); + this._assistCount += value; +}; + +Game_Actor.prototype.totalDamageDealt = function() { + if (this._totalDamageDealt === undefined) this.initBattleStatistics(); + return this._totalDamageDealt; +}; + +Game_Actor.prototype.increaseTotalDamageDealt = function(value) { + value = value || 1; + if (this._totalDamageDealt === undefined) this.initBattleStatistics(); + this._totalDamageDealt += value; +}; + +Game_Actor.prototype.totalDamageTaken = function() { + if (this._totalDamageTaken === undefined) this.initBattleStatistics(); + return this._totalDamageTaken; +}; + +Game_Actor.prototype.increaseTotalDamageTaken = function(value) { + value = value || 1; + if (this._totalDamageTaken === undefined) this.initBattleStatistics(); + this._totalDamageTaken += value; +}; + +Game_Actor.prototype.totalHealingDealt = function() { + if (this._totalHealingDealt === undefined) this.initBattleStatistics(); + return this._totalHealingDealt; +}; + +Game_Actor.prototype.increaseTotalHealingDealt = function(value) { + value = value || 1; + if (this._totalHealingDealt === undefined) this.initBattleStatistics(); + this._totalHealingDealt += value; +}; + +Game_Actor.prototype.totalHealingTaken = function() { + if (this._totalHealingTaken === undefined) this.initBattleStatistics(); + return this._totalHealingTaken; +}; + +Game_Actor.prototype.increaseTotalHealingTaken = function(value) { + value = value || 1; + if (this._totalHealingTaken === undefined) this.initBattleStatistics(); + this._totalHealingTaken += value; +}; + +//============================================================================= +// Game_Action +//============================================================================= + +Yanfly.BStats.Game_Action_executeHpDamage = + Game_Action.prototype.executeHpDamage; +Game_Action.prototype.executeHpDamage = function(target, value) { + Yanfly.BStats.Game_Action_executeHpDamage.call(this, target, value); + var dmg = target.result().hpDamage; + if (this.subject().isActor()) { + if (dmg > 0) this.subject().increaseTotalDamageDealt(dmg); + if (dmg < 0) this.subject().increaseTotalHealingDealt(-dmg); + } + if (target.isActor()) { + if (dmg > 0) target.increaseTotalDamageTaken(dmg); + if (dmg < 0) target.increaseTotalHealingTaken(-dmg); + } +}; + +//============================================================================= +// Window_StatusCommand +//============================================================================= + +Yanfly.BStats.Window_StatusCommand_createCommand = + Window_StatusCommand.prototype.createCommand; +Window_StatusCommand.prototype.createCommand = function(command) { + if (command.toUpperCase() === 'STATISTICS') { + var text = Yanfly.Param.BStatsCmdName; + this.addCommand(text, 'battleStatistics', true); + } else { + Yanfly.BStats.Window_StatusCommand_createCommand.call(this, command); + } +}; + +Yanfly.BStats.Window_StatusCommand_addCustomCommands = + Window_StatusCommand.prototype.addCustomCommands; +Window_StatusCommand.prototype.addCustomCommands = function() { + Yanfly.BStats.Window_StatusCommand_addCustomCommands.call(this); + if (this.findSymbol('battleStatistics') > -1) return; + var text = Yanfly.Param.BStatsCmdName; + this.addCommand(text, 'battleStatistics', true); +}; + +//============================================================================= +// Window_StatusInfo +//============================================================================= + +Yanfly.BStats.Window_StatusInfo_drawInfoContents = + Window_StatusInfo.prototype.drawInfoContents; +Window_StatusInfo.prototype.drawInfoContents = function(symbol) { + if (symbol === 'battleStatistics') { + this.drawBattleStatistics(); + } else { + Yanfly.BStats.Window_StatusInfo_drawInfoContents.call(this, symbol); + } +}; + +Window_StatusInfo.prototype.drawBattleStatistics = function() { + this.resetFontSettings(); + this.drawBattleCount(); + this.drawKDACount(); + this.drawKDARatios(); + this.drawTotalDamageHealing(); +}; + +Window_StatusInfo.prototype.drawBattleCount = function() { + this.drawDarkRect(0, 0, this.contents.width, this.lineHeight()); + this.changeTextColor(this.systemColor()); + var p = this.textPadding(); + var text = Yanfly.Param.BStatsBCountText; + this.drawText(text, p, 0, this.contents.width - p * 2); + this.changeTextColor(this.normalColor()); + var fmt = Yanfly.Param.BStatsBCountFmt; + var n1 = Yanfly.Util.toGroup(this._actor.battleCount()); + var n2 = Yanfly.Util.toGroup($gameSystem.battleCount()); + var n3 = parseInt(100 * this._actor.battleCount() / Math.max(1, + $gameSystem.battleCount())); + text = fmt.format(n1, n2, n3); + this.drawText(text, p, 0, this.contents.width - p * 2, 'right'); +}; + +Window_StatusInfo.prototype.drawKDACount = function() { + var p = this.textPadding(); + var lh = this.lineHeight(); + var dw = this.contents.width / 2; + + //---魔改--- v1.00 绘制黑色底框 + + this.drawDarkRect(0, lh * 1, dw, lh); + this.drawDarkRect(0, lh * 2, dw, lh); + //this.drawDarkRect(0, lh * 3, dw, lh); + this.changeTextColor(this.systemColor()); + var text = Yanfly.Param.BStatsKCountText; + this.drawText(text, p, lh * 1, this.contents.width - p * 2); + text = Yanfly.Param.BStatsDCountText; + this.drawText(text, p, lh * 2, this.contents.width - p * 2); + + //---魔改--- v1.00 取消绘制 辅助 + // text = Yanfly.Param.BStatsACountText; + // this.drawText(text, p, lh * 3, this.contents.width - p * 2); + + this.changeTextColor(this.powerUpColor()); + text = Yanfly.Util.toGroup(this._actor.killCount()); + this.drawText(text, p, lh * 1, dw - p * 2, 'right'); + this.changeTextColor(this.powerDownColor()); + text = Yanfly.Util.toGroup(this._actor.deathCount()); + this.drawText(text, p, lh * 2, dw - p * 2, 'right'); + this.changeTextColor(this.normalColor()); + + + //---魔改--- v1.00 隐藏辅助 + //text = Yanfly.Util.toGroup(this._actor.assistCount()); + //this.drawText(text, p, lh * 3, dw - p * 2, 'right'); +}; + +Window_StatusInfo.prototype.drawKDARatios = function() { + var p = this.textPadding(); + var lh = this.lineHeight(); + var dw = this.contents.width / 2; + this.drawDarkRect(dw, lh * 1, dw, lh); + this.drawDarkRect(dw, lh * 2, dw, lh); + //this.drawDarkRect(dw, lh * 3, dw, lh); + this.changeTextColor(this.normalColor()); + var fmt = Yanfly.Param.BStatsKCountFmt; + var ratio = Yanfly.Util.toGroup(this._actor.killCountRatio().toFixed(2)); + var text = fmt.format(ratio); + this.drawText(text, dw + p, lh * 1, dw - p * 2, 'right'); + fmt = Yanfly.Param.BStatsDCountFmt; + ratio = Yanfly.Util.toGroup(this._actor.deathCountRatio().toFixed(2)); + text = fmt.format(ratio); + this.drawText(text, dw + p, lh * 2, dw - p * 2, 'right'); + fmt = Yanfly.Param.BStatsACountFmt; + ratio = Yanfly.Util.toGroup(this._actor.assistCountRatio().toFixed(2)); + text = fmt.format(ratio); + this.drawText(text, dw + p, lh * 3, dw - p * 2, 'right'); +}; + +Window_StatusInfo.prototype.drawTotalDamageHealing = function() { + var lh = this.lineHeight(); + var p = this.textPadding(); + + + + //此处改动将修改向上一层 + + var layerY = 1; + + + this.drawDarkRect(0, lh * (4-layerY), this.contents.width, lh); + this.drawDarkRect(0, lh * (5-layerY), this.contents.width, lh); + this.drawDarkRect(0, lh * (6-layerY), this.contents.width, lh); + //this.drawDarkRect(0, lh * 7, this.contents.width, lh); + this.changeTextColor(this.systemColor()); + var text = Yanfly.Param.BStatsDmgDealt; + this.drawText(text, p, lh * (4-layerY), this.contents.width - p * 2); + text = Yanfly.Param.BStatsDmgTaken; + this.drawText(text, p, lh * (5-layerY), this.contents.width - p * 2); + text = Yanfly.Param.BStatsHealDealt; + this.drawText(text, p, lh * (6-layerY), this.contents.width - p * 2); + + + //---魔改--- v1.00 取消绘制 治疗术 + // text = Yanfly.Param.BStatsHealTaken; + // this.drawText(text, p, lh * 7, this.contents.width - p * 2); + + + this.changeTextColor(this.normalColor()); + text = Yanfly.Util.toGroup(this._actor.totalDamageDealt()); + this.drawText(text, p, lh * (4-layerY), this.contents.width - p * 2, 'right'); + text = Yanfly.Util.toGroup(this._actor.totalDamageTaken()); + this.drawText(text, p, lh * (5-layerY), this.contents.width - p * 2, 'right'); + text = Yanfly.Util.toGroup(this._actor.totalHealingDealt()); + this.drawText(text, p, lh * (6-layerY), this.contents.width - p * 2, 'right'); + + //---魔改--- v1.00 取消绘制 治疗术 + // text = Yanfly.Util.toGroup(this._actor.totalHealingTaken()); + // this.drawText(text, p, lh * 7, this.contents.width - p * 2, 'right'); +}; + +//============================================================================= +// Utilities +//============================================================================= + +Yanfly.Util = Yanfly.Util || {}; + +if (!Yanfly.Util.toGroup) { + Yanfly.Util.toGroup = function(inVal) { + return inVal; + } +}; + +//============================================================================= +// End of File +//============================================================================= +};