/*: * @plugindesc v1.08 FieldBless 领域加护 * @author 流逝的岁月 * * @help * ============================================================================ * 介绍 * ============================================================================ * * * * 这个插件赋予一个额外的卡槽,可以用于添加'加护'效果,可以在这个'加护'卡槽中,添加你想拥有的增益效果 * * * * *------------------------------------------------------------------- * *使用条例:本插件完全免费,随意魔改 * *------------------------------------------------------------------- * * * * * * 注意:关于公式,可用以下的内容信息,当然如果对js不熟悉,也可以直接输入数字 * * actor //角色 * a //角色,与actor相同 * target //目标(如果有,则可以使用) * b //目标,与target相同 * variables[ID] //全局变量 * v[ID] //全局变量,与variables相同 * V[ID] //全局变量,与variables相同 * switchs[ID] //全局开关 * s[ID] //全局开关,与switchs相同 * S[ID] //全局开关,与switchs相同 * level //角色等级 * usecount //角色所使用的加护容量(并非加护数量) * nullcount //角色剩余加护容量 * * * * * * * * 比如想要实现HP通过人物等级*100点的效果,做出'成长形'的加护,那么可以在物品备注中这样写: * * * * * * * *以下是一些插件用到的插件指令 *---------------------Plugin Command-------------------- * * * ZzyFBF EnableMenu x(true/false) //是否激活菜单'加护'选项 * ZzyFBF InsertMenu x(true/false) //是否隐藏菜单'加护'选项 * ZzyFBF CommandName x //这会改变命令的文本内容 * * ZzyFBF EnableSMenu x(true/false) //是否激活角色技能菜单'加护'选项 * ZzyFBF InsertSMenu x(true/false) //是否隐藏角色技能菜单'加护'选项 * ZzyFBF SCommandName x //这会改变角色技能命令的文本内容 * * * ZzyFBF OpenActor x //这将会打开数据库x号角色的守护窗口界面 * ZzyFBF OpenParty x //这将会打开队伍中x号角色的守护窗口面板,请注意队长代表0号 * * * * ZzyFBF EnableActorFB x(true/false) //则会开启或是关闭角色拥有的领域效果,注意这不包含自定义设定 * ZzyFBF MaxCount x //角色默认的最大加护槽数量,角色的加护槽不会超过这个值,这可以是一个公式,也可以输入Infinite代表无上限 * ZzyFBF CurrentCount x //角色目前的加护槽数量,这个值可通过角色的属性进行调整,这可以是一个公式 * ZzyFBF MemoryCount x //这会设置道具的默认占用格子量 * * ZzyFBF ForceUnInstallAll x //这会强制卸载一位角色所有的加护 * x:输入角色的ID值 * * * * *以下是一些插件用到的脚本函数 *---------------------Script Function-------------------- * * * Zzy.FBF.EnableMenu(enable) //是否激活菜单'加护'选项 * Zzy.FBF.InsertMenu(enable) //是否隐藏菜单'加护'选项 * Zzy.FBF.CommandName(commandText) //这会改变命令的文本内容 * Zzy.FBF.EnableSMenu(enable) //是否激活角色技能菜单'加护'选项 * Zzy.FBF.InsertSMenu(enable) //是否隐藏角色技能菜单'加护'选项 * Zzy.FBF.SCommandName(commandText) //这会改变角色技能命令的文本内容 * Zzy.FBF.OpenActor(actorId) //这将会打开数据库x号角色的守护窗口界面 * Zzy.FBF.OpenParty(index) //这将会打开队伍中x号角色的守护窗口面板,请注意队长代表0号 * Zzy.FBF.EnableActorFB(enable) //则会开启或是关闭角色拥有的领域效果,注意这不包含自定义设定 * Zzy.FBF.MaxCount(formula) //角色默认的最大加护槽数量,角色的加护槽不会超过这个值,这可以是一个公式,也可以输入Infinite代表无上限 * Zzy.FBF.CurrentCount(formula) //角色目前的加护槽数量,这个值可通过角色的属性进行调整,这可以是一个公式 * Zzy.FBF.MemoryCount(count) //这会设置道具的默认占用格子量 * Zzy.FBF.ForceUnInstallAll(actorId) //这会强制卸载一位角色所有的加护 * * * * *以下是一些插件用到的便签信息 *---------------------Data Case-------------------- *可以在 数据库 物品 备注 中添加以下内容: * //将此道具视为拥有'加护'效果,使用以下指令必须先为物品添加这条备注信息 * --文字颜色-- //这将会修改显示加护文字的色彩,填写#000000~#ffffff 或是 rpga(0~255,0~255,0~255,0~1) * --文字边框宽度-- //这将会修改显示文字边框的宽度,请填写整数 * --文字边框颜色-- //这将会修改显示文字边框的颜色,填写#000000~#ffffff 或是 rpga(0~255,0~255,0~255,0~1) * --文字字体大小-- //这将会修改显示文字的字体大小,请填写整数 * * * //注意标签中公式不可以存在空格 * * * ----生命---- //装备加护时增加HP,这可以是一个公式 * //装备加护时增加HP百分比,这可以是一个公式 * * ----魔法---- //装备加护时增加MP,这可以是一个公式 * //装备加护时增加MP百分比,这可以是一个公式 * * ----攻击---- //装备加护时增加ATK,这可以是一个公式 * //装备加护时增加ATK百分比,这可以是一个公式 * * ----防御---- //装备加护时增加DEF,这可以是一个公式 * //装备加护时增加DEF百分比,这可以是一个公式 * * ----魔攻---- //装备加护时增加MAT,这可以是一个公式 * //装备加护时增加MAT百分比,这可以是一个公式 * * ----魔抗---- //装备加护时增加MDF,这可以是一个公式 * //装备加护时增加MDF百分比,这可以是一个公式 * * ----速度---- //装备加护时增加AGI,这可以是一个公式 * //装备加护时增加AGI百分比,这可以是一个公式 * * ----幸运---- //装备加护时增加LUK,这可以是一个公式 * //装备加护时增加LUK百分比,这可以是一个公式 * * --命中-- //装备加护时增加HIT,这可以是一个公式 * --命中-- //装备加护时增加HIT百分比,这可以是一个公式 * * --闪避-- //装备加护时增加EVA,这可以是一个公式 * --闪避-- //装备加护时增加EVA百分比,这可以是一个公式 * * --暴击-- //装备加护时增加CRI,这可以是一个公式 * --暴击-- //装备加护时增加CRI百分比,这可以是一个公式 * * --暴击回避-- //装备加护时增加CEV,这可以是一个公式 * --暴击回避-- //装备加护时增加CEV百分比,这可以是一个公式 * * --魔法回避-- //装备加护时增加MEV,这可以是一个公式 * --魔法回避-- //装备加护时增加MEV百分比,这可以是一个公式 * * --魔法反射-- //装备加护时增加MRF,这可以是一个公式 * --魔法反射-- //装备加护时增加MRF百分比,这可以是一个公式 * * --反击-- //装备加护时增加CNT,这可以是一个公式 * --反击-- //装备加护时增加CNT百分比,这可以是一个公式 * * --HP自动恢复-- //装备加护时增加HRG,这可以是一个公式 * --HP自动恢复-- //装备加护时增加HRG百分比,这可以是一个公式 * * --MP自动恢复-- //装备加护时增加MRG,这可以是一个公式 * --MP自动恢复-- //装备加护时增加MRG百分比,这可以是一个公式 * * --TP自动恢复-- //装备加护时增加TRG,这可以是一个公式 * --TP自动恢复-- //装备加护时增加TRG百分比,这可以是一个公式 * * --受到攻击几率-- //装备加护时增加TGR,这可以是一个公式 * --受到攻击几率-- //装备加护时增加TGR百分比,这可以是一个公式 * * --防御效果-- //装备加护时增加GRD,这可以是一个公式 * --防御效果-- //装备加护时增加GRD百分比,这可以是一个公式 * * --恢复效果-- //装备加护时增加REC,这可以是一个公式 * --恢复效果-- //装备加护时增加REC百分比,这可以是一个公式 * * --药理知识-- //装备加护时增加PHA,这可以是一个公式 * --药理知识-- //装备加护时增加PHA百分比,这可以是一个公式 * * --MP消耗率-- //装备加护时增加MCR,这可以是一个公式 * --MP消耗率-- //装备加护时增加MCR百分比,这可以是一个公式 * * --TP消耗率-- //装备加护时增加TCR,这可以是一个公式 * --TP消耗率-- //装备加护时增加TCR百分比,这可以是一个公式 * * --物理伤害-- //装备加护时增加PDR,这可以是一个公式 * --物理伤害-- //装备加护时增加PDR百分比,这可以是一个公式 * * --魔法伤害-- //装备加护时增加MDR,这可以是一个公式 * --魔法伤害-- //装备加护时增加MDR百分比,这可以是一个公式 * * * --地板伤害-- //装备加护时增加FDR,这可以是一个公式 * --地板伤害-- //装备加护时增加FDR百分比,这可以是一个公式 * * --经验值-- //装备加护时增加战斗结算EXP,这可以是一个公式 * --经验值-- //装备加护时增加战斗结算EXP百分比,这可以是一个公式 * * --金币-- //装备加护时增加战斗结算GOLD,这可以是一个公式 * --金币-- //装备加护时增加战斗结算GOLD百分比,这可以是一个公式 * * --伤害减免-- //装备加护时战斗受到伤害DAR,这可以是一个公式 * --伤害减免-- //装备加护时战斗受到伤害DAR百分比,这可以是一个公式 * * --元素伤害-- //拥有战斗时技能元素造成伤害额外值,x1是元素ID,x2是伤害值,这可以是一个公式 * --元素伤害-- //增加元素的百分比,x1是元素ID,x2是伤害值,这可以是一个公式 * * --逃跑概率-- //装备加护时增加或者减少逃跑的概率,x填写20就代表增加20%,这可以是一个公式 * --偷袭概率-- //装备加护时遭遇战斗增加或减少先发制人的概率,x填写20就代表增加20%,这可以是一个公式 * --被偷袭概率-- //装备加护时遭遇战斗增加或减少被偷袭的的概率,x填写20就代表增加20%,这可以是一个公式 * * * --遇敌步数-- //装备加护时遭遇敌人所需要的倍数增加或减少,x填写10就代表额外10步后才有概率遭遇敌人 * --遇敌步数-- //装备加护时遭遇敌人所需要的倍数增加或减少,x填写10就代表额外10%步后才有概率遭遇敌人 * * * //修改加护的占用量 * //这会使安装的加护无法通过界面方式进行拆卸 * * //限定可以使用这个加护的职业ID,设置后则会限制在这个范围中 * //限定可以使用这个加护的职业ID,可输入多个ID值 * //限定可以使用这个加护的角色ID,设置后则会限制在这个范围中,此优先级高于职业设置 * //限定可以使用这个加护的角色ID,可输入多个ID值 * //限定不可以使用这个加护的职业ID * //限定不可以使用这个加护的职业ID,可输入多个ID值 * //限定不可以使用这个加护的角色ID,此优先级高于职业设置 * //限定不可以使用这个加护的角色ID,可输入多个ID值 * * //限定是否可以使用这个加护的公式,返回值为true代表可以使用,返回值为false不可使用,此优先级最高 * * * * * *可以在 数据库 角色 备注 中添加以下内容: * //这将控制这个角色是否拥有加护的能力,优先级高于插件参数设置 * //这将设置角色的加护槽最多为x,x可以是一个公式,也可以输入Infinite代表无上限 * //通过目前的角色属性,来获得当前的加护槽,这可以是一个公式 * * * * *可以在 数据库 护甲 武器 技能 职业 角色 添加以下内容: * //这将对相关这个角色的当前加护槽开放更多,注意x可以是一个公式 * //这将对相关这个角色的最大加护槽开放的上限,注意x可以是一个公式 * * * * *---------------------------------------------------------- * * * 我叫坂本:v1.08 拓展脚本函数 * 我叫坂本:v1.07 修复一个bug,导致了与YEP独立物品以及部分插件无法兼容的问题 * 我叫坂本:v1.06 添加与旧存档兼容 * 我叫坂本:v1.05 优化,减少不必要的指令 * 我叫坂本:v1.04 添加呼叫界面的插件指令,添加技能界面出现加护选项 * 我叫坂本:v1.03 修复读档时,拆卸领域异常的bug,添加额外便签设置 * 我叫坂本:v1.02 修复无法增加经验值bug,添加额外便签设置 * 我叫坂本:v1.01 更新了元素相关的便签信息,更新了对于公式中更多的变量 * 我叫坂本:v1.00 完成插件功能 * *---------------------------------------------------------- * * * @param ---菜单--- * @default * @param EnableMenu * @text 激活菜单项 * @parent ---菜单--- * @type boolean * @on YES * @off NO * @desc 在菜单栏中'加护'是否是激活状态 * YES - true NO - false * @default true * @param InsertMenu * @text 添加菜单项 * @parent ---菜单--- * @type boolean * @on YES * @off NO * @desc 在菜单栏中是否添加'加护' * YES - true NO - false * @default true * @param MenuCommandName * @text 主菜单显示名称 * @parent ---菜单--- * @type text * @desc 在主菜单上显示选项的名称,默认名称'加护' * @default 加护 * * * @param ---技能菜单--- * @default * * @param EnableSMenu * @text 激活角色技能菜单项 * @parent ---技能菜单--- * @type boolean * @on YES * @off NO * @desc 在技能菜单栏中'加护'是否是激活状态 * YES - true NO - false * @default false * @param InsertSMenu * @text 添加角色技能菜单项 * @parent ---技能菜单--- * @type boolean * @on YES * @off NO * @desc 在角色技能菜单栏中是否添加'加护'选项 * YES - true NO - false * @default false * @param SMenuCommandName * @text 角色技能菜单显示名称 * @parent ---技能菜单--- * @type text * @desc 在角色技能菜单上显示选项的名称,默认名称'加护' * @default 加护 * * @param ---帮助窗口--- * @default * * * @param HelpWindowX * @text 帮助窗口x位置 * @parent ---帮助窗口--- * @type text * @desc 出现帮助窗口x的位置,这可以是一段代码 * @default 0 * * @param HelpWindowY * @text 帮助窗口y位置 * @parent ---帮助窗口--- * @type text * @desc 出现帮助窗口y的位置,这可以是一段代码 * @default 0 * * @param HelpWindowW * @text 帮助窗口宽度 * @parent ---帮助窗口--- * @type text * @desc 出现帮助窗口宽度,这可以是一段代码 * @default Graphics.boxWidth * * @param HelpWindowH * @text 帮助窗口行数 * @parent ---帮助窗口--- * @type number * @desc 出现帮助窗口行数,这决定出现帮助窗口的高度 * @default 2 * * * * @param ---加护窗口--- * @default * * * @param FieldWindowX * @text 加护窗口x位置 * @parent ---加护窗口--- * @type text * @desc 出现加护窗口x的位置,这可以是一段代码 * @default 0 * * @param FieldWindowY * @text 加护窗口y位置 * @parent ---加护窗口--- * @type text * @desc 出现加护窗口y的位置,这可以是一段代码 * @default this._helpWindow.height * * @param FieldWindowW * @text 加护窗口宽度 * @parent ---加护窗口--- * @type text * @desc 出现加护窗口宽度,这可以是一段代码 * @default Graphics.boxWidth / 3 * * @param FieldWindowH * @text 加护窗口高度 * @parent ---加护窗口--- * @type text * @desc 出现加护窗口行数,这决定出现加护窗口的高度 * @default Graphics.boxHeight - this._helpWindow.height * * * @param UnlockText * @text 未解锁文字 * @parent ---加护窗口--- * @type text * @desc 未解锁是出现的文字内容 * @default ---未解锁--- * * * @param MemoryText * @text 占用文字 * @parent ---加护窗口--- * @type text * @desc 未解锁是出现的文字内容 * @default ---占用--- * * * * @param UnlockTextColor * @text 未解锁文字颜色 * @parent ---加护窗口--- * @type text * @desc 未解锁是出现的文字颜色 * @default #cc2222 * * * @param MemoryTextColor * @text 占用文字颜色 * @parent ---加护窗口--- * @type text * @desc 加护占用超过1格时,显示的占用文字的颜色 * @default #888888 * * * * @param NoUnInstallColor * @text 不可拆卸顔色 * @parent ---加护窗口--- * @type text * @desc 不可拆卸的领域的文字颜色 * @default #999999 * * @param UnlockHelpText * @text 未解锁帮助文字 * @parent ---加护窗口--- * @type text * @desc 选中未解锁文字时出现的帮助文本 * @default 封印中暂未解锁 * * @param LockHelpText * @text 解锁帮助文字 * @parent ---加护窗口--- * @type text * @desc 选中解锁文字时出现的帮助文本 * @default 可添加加护 * * @param FieldRectColor * @text 底矩形框颜色 * @parent ---加护窗口--- * @type text * @desc 底色框的颜色可以用rgba(x,x,x,x)或是#xxxxxx的方式来设置颜色 * @default rgba(30,30,90,0.4) * * * * * * * * @param ---加护道具窗口--- * @default * * * @param FieldItemWindowX * @text 加护道具窗口x位置 * @parent ---加护道具窗口--- * @type text * @desc 出现加护道具窗口x的位置,这可以是一段代码 * @default Graphics.boxWidth / 3 * * @param FieldItemWindowY * @text 加护道具窗口y位置 * @parent ---加护道具窗口--- * @type text * @desc 出现加护道具窗口y的位置,这可以是一段代码 * @default this._helpWindow.height * * @param FieldItemWindowW * @text 加护道具窗口宽度 * @parent ---加护道具窗口--- * @type text * @desc 出现加护道具窗口宽度,这可以是一段代码 * @default Graphics.boxWidth * 2 / 3 * * @param FieldItemWindowH * @text 加护道具窗口高度 * @parent ---加护道具窗口--- * @type text * @desc 出现加护道具窗口行数,这决定出现加护道具窗口的高度 * @default Graphics.boxHeight - this._helpWindow.height * * * * * @param ---数据信息--- * @default * * * @param EnableActorFB * @text 角色是否具备加护 * @parent ---数据信息--- * @type boolean * @on YES * @off NO * @desc 设置角色是否默认具有加护能力 * YES - true NO - false * @default true * * * @param MaxFieldCount * @text 最大加护槽数量 * @parent ---数据信息--- * @type text * @desc 默认拥有的最大槽数量,请输入公式或是Infinite(无限),默认值为Infinite * @default Infinite * * @param CurrentFieldCount * @text 目前加护槽数量 * @parent ---数据信息--- * @type text * @desc 角色通过自身属性,获取的目前加护槽的数量,这可以是一个公式 * @default Math.max(1,Math.min(Math.round(level/2),30)); * * @param MemoryCount * @text 占用量 * @parent ---数据信息--- * @type number * @desc 这是加护道具占用的卡槽数量,输入整数,默认值为1 * @default 1 * * * * * * * @param ---音效--- * @default * * * @param NoFieldSound * @text 不存在加护音效 * @parent ---音效--- * @dir audio/se * @type file * @desc 不存在加护产生的声音,请填写audio/se文件夹中的文件名,不包含m4a.ogg的后缀名 * @default Cancel2 * * @param NoFieldVolume * @text 不存在加护音量 * @parent ---音效--- * @type number * @min 0 * @desc 不存在加护产生的音量,默认值100 * @default 100 * * @param NoFieldPitch * @text 不存在加护音调 * @parent ---音效--- * @type number * @min 0 * @desc 不存在加护产生的音调,默认值100 * @default 100 * * @param NoFieldPan * @text 不存在加护声道 * @parent ---音效--- * @type number * @desc 不存在加护产生的声道,默认值0 * @default 0 * * * @param UnableSound * @text 无法卸载加护音效 * @parent ---音效--- * @dir audio/se * @type file * @desc 无法卸载加护产生的声音,请填写audio/se文件夹中的文件名,不包含m4a.ogg的后缀名 * @default Knock * * @param UnableVolume * @text 无法卸载加护音量 * @parent ---音效--- * @type number * @min 0 * @desc 无法卸载加护产生的音量,默认值100 * @default 100 * * @param UnablePitch * @text 无法卸载加护音调 * @parent ---音效--- * @type number * @min 0 * @desc 无法卸载加护产生的音调,默认值100 * @default 100 * * @param UnablePan * @text 无法卸载加护声道 * @parent ---音效--- * @type number * @desc 无法卸载加护产生的声道,默认值0 * @default 0 * * * * @param NoInstallSound * @text 无法安装加护音效 * @parent ---音效--- * @dir audio/se * @type file * @desc 无法安装加护产生的声音,请填写audio/se文件夹中的文件名,不包含m4a.ogg的后缀名 * @default Buzzer1 * * @param NoInstallVolume * @text 无法安装加护音量 * @parent ---音效--- * @type number * @min 0 * @desc 无法安装加护产生的音量,默认值100 * @default 100 * * @param NoInstallPitch * @text 无法安装加护音调 * @parent ---音效--- * @type number * @min 0 * @desc 无法安装加护产生的音调,默认值100 * @default 100 * * @param NoInstallPan * @text 无法安装加护声道 * @parent ---音效--- * @type number * @desc 无法安装加护产生的声道,默认值0 * @default 0 * * * @param InSuccessSound * @text 安装成功加护音效 * @parent ---音效--- * @dir audio/se * @type file * @desc 安装成功加护产生的声音,请填写audio/se文件夹中的文件名,不包含m4a.ogg的后缀名 * @default Equip1 * * @param InSuccessVolume * @text 安装成功加护音量 * @parent ---音效--- * @type number * @min 0 * @desc 安装成功加护产生的音量,默认值100 * @default 100 * * @param InSuccessPitch * @text 安装成功加护音调 * @parent ---音效--- * @type number * @min 0 * @desc 安装成功加护产生的音调,默认值100 * @default 100 * * @param InSuccessPan * @text 安装成功加护声道 * @parent ---音效--- * @type number * @desc 安装成功加护产生的声道,默认值0 * @default 0 * * * @param UnSuccessSound * @text 卸载成功加护音效 * @parent ---音效--- * @dir audio/se * @type file * @desc 卸载成功加护产生的声音,请填写audio/se文件夹中的文件名,不包含m4a.ogg的后缀名 * @default Equip2 * * @param UnSuccessVolume * @text 卸载成功加护音量 * @parent ---音效--- * @type number * @min 0 * @desc 卸载成功加护产生的音量,默认值100 * @default 100 * * @param UnSuccessPitch * @text 卸载成功加护音调 * @parent ---音效--- * @type number * @min 0 * @desc 卸载成功加护产生的音调,默认值100 * @default 100 * * @param UnSuccessPan * @text 卸载成功加护声道 * @parent ---音效--- * @type number * @desc 卸载成功加护产生的声道,默认值0 * @default 0 * */ var LiuYue = LiuYue || {}; LiuYue.LiuYue_FieldBless = true; //插件启动 var Zzy = Zzy || {}; Zzy.FBF = Zzy.FBF || {}; Zzy.FBF.version = 1.08; Zzy.Parameters = PluginManager.parameters("LiuYue_FieldBless"); Zzy.Param = Zzy.Param || {}; Zzy.Param.FBFEnableMenu = eval(String(Zzy.Parameters["EnableMenu"])); Zzy.Param.FBFInsertMenu = eval(String(Zzy.Parameters["InsertMenu"])); Zzy.Param.FBFMenuCommandName = String(Zzy.Parameters["MenuCommandName"]); Zzy.Param.FBFEnableSMenu = eval(String(Zzy.Parameters["EnableSMenu"])); Zzy.Param.FBFInsertSMenu = eval(String(Zzy.Parameters["InsertSMenu"])); Zzy.Param.FBFSMenuCommandName = String(Zzy.Parameters["SMenuCommandName"]); Zzy.Param.FBFHelpWindowX = String(Zzy.Parameters["HelpWindowX"]); //帮助窗口x位置 Zzy.Param.FBFHelpWindowY = String(Zzy.Parameters["HelpWindowY"]); //帮助窗口y位置 Zzy.Param.FBFHelpWindowW = String(Zzy.Parameters["HelpWindowW"]); //帮助窗口宽度 Zzy.Param.FBFHelpWindowH = parseInt(Zzy.Parameters["HelpWindowH"]); //帮助窗口行数 Zzy.Param.FBFFieldWindowX = String(Zzy.Parameters["FieldWindowX"]); //加护窗口x位置 Zzy.Param.FBFFieldWindowY = String(Zzy.Parameters["FieldWindowY"]); //加护窗口y位置 Zzy.Param.FBFFieldWindowW = String(Zzy.Parameters["FieldWindowW"]); //加护窗口宽度 Zzy.Param.FBFFieldWindowH = String(Zzy.Parameters["FieldWindowH"]); //加护窗口高度 Zzy.Param.FBFFieldItemWindowX = String(Zzy.Parameters["FieldItemWindowX"]); //加护道具窗口x位置 Zzy.Param.FBFFieldItemWindowY = String(Zzy.Parameters["FieldItemWindowY"]); //加护道具窗口y位置 Zzy.Param.FBFFieldItemWindowW = String(Zzy.Parameters["FieldItemWindowW"]); //加护道具窗口宽度 Zzy.Param.FBFFieldItemWindowH = String(Zzy.Parameters["FieldItemWindowH"]); //加护道具窗口高度 Zzy.Param.FBFUnlockText = String(Zzy.Parameters["UnlockText"]); //未解锁文字 Zzy.Param.FBFUnlockTextColor = String(Zzy.Parameters["UnlockTextColor"]); //未解锁文字颜色 Zzy.Param.FBFMemoryText = String(Zzy.Parameters["MemoryText"]); //占用文字 Zzy.Param.FBFMemoryTextColor = String(Zzy.Parameters["MemoryTextColor"]); //占用文字颜色 Zzy.Param.FBFNoUnInstallColor = String(Zzy.Parameters["NoUnInstallColor"]); //不可拆卸的领域的文字颜色 Zzy.Param.FBFUnlockHelpText = String(Zzy.Parameters["UnlockHelpText"]); //未解锁帮助文字 Zzy.Param.FBFLockHelpText = String(Zzy.Parameters["LockHelpText"]); //解锁帮助文字 Zzy.Param.FBFFieldRectColor = String(Zzy.Parameters["FieldRectColor"]); //底矩形框颜色 Zzy.Param.FBFEnableActorFB = eval(String(Zzy.Parameters["EnableActorFB"])); //角色是否具备加护 Zzy.Param.FBFMaxFieldCount = String(Zzy.Parameters["MaxFieldCount"]); //最大加护槽数量 Zzy.Param.FBFCurrentFieldCount = String(Zzy.Parameters["CurrentFieldCount"]); //目前加护槽数量 Zzy.Param.FBFMemoryCount = parseInt(Zzy.Parameters["MemoryCount"]); //帮助窗口行数 //----------------------------------------------------声音---------------------------------------------------------- Zzy.FBF.MakeSE = function (seName, seVolume, sePitch, sePan) { if (!seName) return undefined; var se = { name: seName, volume: seVolume ? seVolume : 100, pitch: sePitch ? sePitch : 100, pan: sePan ? sePan : 0, }; return se; }; //SE Zzy.Param.FBFNoFieldSound = String(Zzy.Parameters["NoFieldSound"]); //FBF音效 Zzy.Param.FBFNoFieldVolume = parseInt(Zzy.Parameters["NoFieldVolume"]); //FBF音量 Zzy.Param.FBFNoFieldPitch = parseInt(Zzy.Parameters["NoFieldPitch"]); //FBF音调 Zzy.Param.FBFNoFieldPan = parseInt(Zzy.Parameters["NoFieldPan"]); //FBF声道 Zzy.Param.FBFNoFieldSE = Zzy.FBF.MakeSE( Zzy.Param.FBFNoFieldSound, Zzy.Param.FBFNoFieldVolume, Zzy.Param.FBFNoFieldPitch, Zzy.Param.FBFNoFieldPan ); Zzy.Param.FBFUnableSound = String(Zzy.Parameters["UnableSound"]); //FBF音效 Zzy.Param.FBFUnableVolume = parseInt(Zzy.Parameters["UnableVolume"]); //FBF音量 Zzy.Param.FBFUnablePitch = parseInt(Zzy.Parameters["UnablePitch"]); //FBF音调 Zzy.Param.FBFUnablePan = parseInt(Zzy.Parameters["UnablePan"]); //FBF声道 Zzy.Param.FBFUnableSE = Zzy.FBF.MakeSE( Zzy.Param.FBFUnableSound, Zzy.Param.FBFUnableVolume, Zzy.Param.FBFUnablePitch, Zzy.Param.FBFUnablePan ); Zzy.Param.FBFNoInstallSound = String(Zzy.Parameters["NoInstallSound"]); //FBF音效 Zzy.Param.FBFNoInstallVolume = parseInt(Zzy.Parameters["NoInstallVolume"]); //FBF音量 Zzy.Param.FBFNoInstallPitch = parseInt(Zzy.Parameters["NoInstallPitch"]); //FBF音调 Zzy.Param.FBFNoInstallPan = parseInt(Zzy.Parameters["NoInstallPan"]); //FBF声道 Zzy.Param.FBFNoInstallSE = Zzy.FBF.MakeSE( Zzy.Param.FBFNoInstallSound, Zzy.Param.FBFNoInstallVolume, Zzy.Param.FBFNoInstallPitch, Zzy.Param.FBFNoInstallPan ); Zzy.Param.FBFInSuccessSound = String(Zzy.Parameters["InSuccessSound"]); //FBF音效 Zzy.Param.FBFInSuccessVolume = parseInt(Zzy.Parameters["InSuccessVolume"]); //FBF音量 Zzy.Param.FBFInSuccessPitch = parseInt(Zzy.Parameters["InSuccessPitch"]); //FBF音调 Zzy.Param.FBFInSuccessPan = parseInt(Zzy.Parameters["InSuccessPan"]); //FBF声道 Zzy.Param.FBFInSuccessSE = Zzy.FBF.MakeSE( Zzy.Param.FBFInSuccessSound, Zzy.Param.FBFInSuccessVolume, Zzy.Param.FBFInSuccessPitch, Zzy.Param.FBFInSuccessPan ); Zzy.Param.FBFUnSuccessSound = String(Zzy.Parameters["UnSuccessSound"]); //FBF音效 Zzy.Param.FBFUnSuccessVolume = parseInt(Zzy.Parameters["UnSuccessVolume"]); //FBF音量 Zzy.Param.FBFUnSuccessPitch = parseInt(Zzy.Parameters["UnSuccessPitch"]); //FBF音调 Zzy.Param.FBFUnSuccessPan = parseInt(Zzy.Parameters["UnSuccessPan"]); //FBF声道 Zzy.Param.FBFUnSuccessSE = Zzy.FBF.MakeSE( Zzy.Param.FBFUnSuccessSound, Zzy.Param.FBFUnSuccessVolume, Zzy.Param.FBFUnSuccessPitch, Zzy.Param.FBFUnSuccessPan ); Zzy.Param.FBFAllSE = []; Zzy.Param.FBFAllSE = [ undefined, Zzy.Param.FBFNoFieldSE, Zzy.Param.FBFUnableSE, Zzy.Param.FBFNoInstallSE, Zzy.Param.FBFInSuccessSE, Zzy.Param.FBFUnSuccessSE, ]; //============================================================================= //Game_System_initialize //============================================================================= Zzy.FBF.Game_System_initialize = Game_System.prototype.initialize; Game_System.prototype.initialize = function () { Zzy.FBF.Game_System_initialize.call(this); this.ZzyFBFInitData(); //初始化数据 this.ZzyFBFSetData(); //设置数据 }; Game_System.prototype.ZzyFBFInitData = function () { this._ZzyFBFEnableMenu = Zzy.Param.FBFEnableMenu; this._ZzyFBFInsertMenu = Zzy.Param.FBFInsertMenu; this._ZzyFBFMenuCommandName = Zzy.Param.FBFMenuCommandName; this._ZzyFBFEnableSMenu = Zzy.Param.FBFEnableSMenu; this._ZzyFBFInsertSMenu = Zzy.Param.FBFInsertSMenu; this._ZzyFBFSMenuCommandName = Zzy.Param.FBFSMenuCommandName; this._ZzyFBFEnableActorFB = Zzy.Param.FBFEnableActorFB; //角色是否具备加护 this._ZzyFBFMaxFieldCount = Zzy.Param.FBFMaxFieldCount; //最大加护槽数量 this._ZzyFBFCurrentFieldCount = Zzy.Param.FBFCurrentFieldCount; //目前加护槽数量 this._ZzyFBFMemoryCount = Zzy.Param.FBFMemoryCount; //占用量 this._ZzyFBFFieldItemIdArr = []; //存在的加护 this._ZzyFBFActorsUseArr = []; //使用中的加护 this._ZzyFBFSelectActorIndex = 0; //选择角色的下标 this._ZzyFBFActorsMaxCountArr = []; //角色未使用容量计数 }; Game_System.prototype.GetZzyFBFEnableMenu = function () { if (this._ZzyFBFEnableMenu === undefined) { this._ZzyFBFEnableMenu = Zzy.Param.FBFEnableMenu; } return this._ZzyFBFEnableMenu; }; Game_System.prototype.SetZzyFBFEnableMenu = function (value) { this._ZzyFBFEnableMenu = value; }; Game_System.prototype.GetZzyFBFInsertMenu = function () { if (this._ZzyFBFInsertMenu === undefined) { this._ZzyFBFInsertMenu = Zzy.Param.FBFInsertMenu; } return this._ZzyFBFInsertMenu; }; Game_System.prototype.SetZzyFBFInsertMenu = function (value) { this._ZzyFBFInsertMenu = value; }; Game_System.prototype.GetZzyFBFMenuCommandName = function () { if (this._ZzyFBFMenuCommandName === undefined) { this._ZzyFBFMenuCommandName = Zzy.Param.FBFMenuCommandName; } return this._ZzyFBFMenuCommandName; }; Game_System.prototype.SetZzyFBFMenuCommandName = function (value) { this._ZzyFBFMenuCommandName = value; }; Game_System.prototype.GetZzyFBFEnableSMenu = function () { if (this._ZzyFBFEnableSMenu === undefined) { this._ZzyFBFEnableSMenu = Zzy.Param.FBFEnableSMenu; } return this._ZzyFBFEnableSMenu; }; Game_System.prototype.SetZzyFBFEnableSMenu = function (value) { this._ZzyFBFEnableSMenu = value; }; Game_System.prototype.GetZzyFBFInsertSMenu = function () { if (this._ZzyFBFInsertSMenu === undefined) { this._ZzyFBFInsertSMenu = Zzy.Param.FBFInsertSMenu; } return this._ZzyFBFInsertSMenu; }; Game_System.prototype.SetZzyFBFInsertSMenu = function (value) { this._ZzyFBFInsertSMenu = value; }; Game_System.prototype.GetZzyFBFSMenuCommandName = function () { if (this._ZzyFBFSMenuCommandName === undefined) { this._ZzyFBFSMenuCommandName = Zzy.Param.FBFSMenuCommandName; } return this._ZzyFBFSMenuCommandName; }; Game_System.prototype.SetZzyFBFSMenuCommandName = function (value) { this._ZzyFBFSMenuCommandName = value; }; Game_System.prototype.GetZzyFBFEnableActorFB = function () { if (this._ZzyFBFEnableActorFB === undefined) { this._ZzyFBFEnableActorFB = Zzy.Param.FBFEnableActorFB; } return this._ZzyFBFEnableActorFB; }; Game_System.prototype.SetZzyFBFEnableActorFB = function (value) { this._ZzyFBFEnableActorFB = value; }; Game_System.prototype.GetZzyFBFMaxFieldCount = function () { if (this._ZzyFBFMaxFieldCount === undefined) { this._ZzyFBFMaxFieldCount = Zzy.Param.FBFMaxFieldCount; } return this._ZzyFBFMaxFieldCount; }; Game_System.prototype.SetZzyFBFMaxFieldCount = function (value) { this._ZzyFBFMaxFieldCount = value; }; Game_System.prototype.GetZzyFBFCurrentFieldCount = function () { if (this._ZzyFBFCurrentFieldCount === undefined) { this._ZzyFBFCurrentFieldCount = Zzy.Param.FBFCurrentFieldCount; } return this._ZzyFBFCurrentFieldCount; }; Game_System.prototype.SetZzyFBFCurrentFieldCount = function (value) { this._ZzyFBFCurrentFieldCount = value; }; Game_System.prototype.GetZzyFBFMemoryCount = function () { if (this._ZzyFBFMemoryCount === undefined) { this._ZzyFBFMemoryCount = Zzy.Param.FBFMemoryCount; } return this._ZzyFBFMemoryCount; }; Game_System.prototype.SetZzyFBFMemoryCount = function (value) { this._ZzyFBFMemoryCount = value; }; Game_System.prototype.GetZzyFBFFieldItemIdArr = function () { if (this._ZzyFBFFieldItemIdArr === undefined) { this._ZzyFBFFieldItemIdArr = []; this.ZzyFBFSetData(); //设置初始化的数据信息 } return this._ZzyFBFFieldItemIdArr; }; Game_System.prototype.GetZzyFBFActorsUseArr = function () { if (this._ZzyFBFActorsUseArr === undefined) { this._ZzyFBFActorsUseArr = []; } return this._ZzyFBFActorsUseArr; }; Game_System.prototype.GetZzyFBFSelectActorIndex = function () { if (this._ZzyFBFSelectActorIndex === undefined) { this._ZzyFBFSelectActorIndex = 0; } return this._ZzyFBFSelectActorIndex; }; Game_System.prototype.SetZzyFBFSelectActorIndex = function (value) { this._ZzyFBFSelectActorIndex = value; }; Game_System.prototype.GetZzyFBFActorsMaxCountArr = function () { if (this._ZzyFBFActorsMaxCountArr === undefined) { this._ZzyFBFActorsMaxCountArr = []; } return this._ZzyFBFActorsMaxCountArr; }; Game_System.prototype.SetZzyFBFActorsMaxCountArr = function (actorId, count) { this.GetZzyFBFActorsMaxCountArr()[actorId] = count; }; Game_System.prototype.getZzyFBFActorsMaxCountArr = function (actorId) { var arr = this.GetZzyFBFActorsMaxCountArr(); return arr[actorId]; }; Game_System.prototype.GetZzyFBFActorUseArr = function ( actorId //角色的加护 ) { if (!this.GetZzyFBFActorsUseArr()[actorId]) { this._ZzyFBFActorsUseArr[actorId] = []; } return this._ZzyFBFActorsUseArr[actorId]; }; Game_System.prototype.GetZzyFBFActorFieldUseArr = function ( actorId //返回包括卡牌在内的存在值 ) { var arr = this.GetZzyFBFActorUseArr(actorId); var reArr = []; for (var i = 0; i < arr.length; i++) { if (arr[i]) { var item = $dataItems[arr[i]]; reArr.push(item); } } return reArr; }; Game_System.prototype.UpdateZzyFBFActorUseArr = function ( actorId //更新角色的加护 ) { var surplusArr = []; surplusArr = this.KeepZzyFBFCurrentMax(actorId); //超标卸载 //重新放回背包中 if (surplusArr && surplusArr.length) { for (var i = 0; i < surplusArr.length; i++) { $gameParty.gainItem(surplusArr[i], 1); //存储 } } }; Game_System.prototype.UpdateAllZzyFBFActorUseArr = function () //更新全部的角色加护 { var arr = $gameParty._actors; for (var i = 0; i < arr.length; i++) { this.UpdateZzyFBFActorUseArr(arr[i]); } }; Game_System.prototype.KeepZzyFBFCurrentMax = function ( actorId //保持小于最大长度 ) { var tMax = this.GetZzyFBFActorFinalMaxCount(actorId); if (tMax === -1) return undefined; //计算目前卡片是否有超越 var surplusArr = []; var fArr = this.GetZzyFBFActorUseArr(actorId); var len = fArr.length; if (len > tMax) { //超过位数 //在位数位置向前遍历并t掉内容 var len2 = tMax - 1; for (var i = len2; i >= 0; i--) { if (fArr[i]) { //并非undefined null false var item = $dataItems[fArr[i]]; var count = this.GetZzyFBFFieldBlessMemory(item); //获取占用量 if (count > tMax - i) { //超过了占用量 surplusArr.push(this.UninstallZzyFBFField(fArr, i)); //卸载 } } } } for (var i = tMax; i <= len - 1; i++) { if (fArr[i]) { surplusArr.push(this.UninstallZzyFBFField(fArr, i)); //卸载 } } return surplusArr; }; Game_System.prototype.UninstallZzyFBFField = function ( arr, index //卸载指定下标 ) { if (arr[index] === undefined || arr[index] === null || arr[index] === false || arr[index] === 0) { return; } var item = $dataItems[arr[index]]; var count = this.GetZzyFBFFieldBlessMemory(item); for (var i = 0; i < count; i++) { arr[i + index] = undefined; } return item; }; Game_System.prototype.ZzyFBFSetData = function () { var len = $dataItems.length; for (var i = 0; i < len; i++) { var item = $dataItems[i]; if (item && item.zzyFBF && item.zzyFBF.enable) { this.PushZzyFBFFieldArr(item.id); } } }; Game_System.prototype.PushZzyFBFFieldArr = function (itemId) { this.GetZzyFBFFieldItemIdArr().push(itemId); }; Game_System.prototype.IsZzyFBFActorHaveFieldBless = function ( actorId //通过角色ID返回角色是否具备加护能力 ) { //判断角色是否拥有加护能力 var data = $dataActors[actorId]; if (data && data.zzyFBF) { if (data.zzyFBF.enable === true) { return true; } else if (data.zzyFBF.enable === false) { return false; } } return this.GetZzyFBFEnableActorFB(); }; Game_System.prototype.GetZzyFBFActorMaxCount = function ( actorId //通过角色ID返回角色最大领域数量 ) { var data = $dataActors[actorId]; var maxCount = 0; if (data && data.zzyFBF) { if (data.zzyFBF.maxCount) { if (data.zzyFBF.maxCount === "Infinite") return -1; var actor = $gameActors.actor(actorId); maxCount = this.EvalZzyFBFFormula1(data.zzyFBF.maxCount, actor); maxCount = Zzy.FBF.KeepNumber(maxCount); return maxCount; } } var fieldCount = this.GetZzyFBFMaxFieldCount(); if (fieldCount === "Infinite") { return -1; } //无限标记 maxCount = this.EvalZzyFBFFormula1(fieldCount, undefined); maxCount = Zzy.FBF.KeepNumber(maxCount); return maxCount; }; Game_System.prototype.GetZzyFBFActorFinalMaxCount = function ( actorId //计算最终值-最大加护槽 ) { var tempMaxCount = this.GetZzyFBFActorMaxCount(actorId); if (tempMaxCount === -1) return tempMaxCount; var actorData = $dataActors[actorId]; var actor = $gameActors.actor(actorId); var actors = actorData; //角色加层 var classs = $dataClasses[actors.classId]; //职业加层 var equipsArr = actor.equips(); //武器,护甲加层 var skillsArr = actor.skills(); //技能加层 var tArr = [[actors], [classs], equipsArr, skillsArr]; var totalMax = 0; for (var i = 0; i < tArr.length; i++) { totalMax += this.ZzyFBFCalculationMaxCount(tArr[i], actorId); } var result = Math.max(0, totalMax + tempMaxCount); //防止小于0 return result; }; Game_System.prototype.GetZzyFBFActorFinalCurrentCount = function ( actorId //计算最终值-开启的加护槽 ) { var tempCurrentCount = this.GetZzyFBFActorCurrentCount(actorId); //本身 var maxCount = this.GetZzyFBFActorFinalMaxCount(actorId); var actorData = $dataActors[actorId]; var actor = $gameActors.actor(actorId); var actors = actorData; //角色加层 var classs = $dataClasses[actors.classId]; //职业加层 var equipsArr = actor.equips(); //武器,护甲加层 var skillsArr = actor.skills(); //技能加层 var tArr = [[actors], [classs], equipsArr, skillsArr]; var extraCount = 0; for (var i = 0; i < tArr.length; i++) { extraCount += this.ZzyFBFCalculationCurrentCount(tArr[i], actorId); } var result = 0; if (maxCount === -1) { result = Math.max(0, tempCurrentCount + extraCount); this.SetZzyFBFActorsMaxCountArr(actorId, result); return result; } result = Math.min(maxCount, Math.max(0, tempCurrentCount + extraCount)); this.SetZzyFBFActorsMaxCountArr(actorId, result); return result; }; Game_System.prototype.ZzyFBFCalculationCurrentCount = function (arr, actorId) { var len = arr.length; var totalValue = 0; var actor = $gameActors.actor(actorId); var count = 0; for (var i = 0; i < len; i++) { if (arr[i] && arr[i].zzyFBF) { if (arr[i].zzyFBF.eCount) { count = this.EvalZzyFBFFormula1(arr[i].zzyFBF.eCount, actor); totalValue += Zzy.FBF.KeepNumber(count); } } } return totalValue; }; Game_System.prototype.ZzyFBFCalculationMaxCount = function (arr, actorId) { var len = arr.length; var totalValue = 0; var actor = $gameActors.actor(actorId); var count = 0; for (var i = 0; i < len; i++) { if (arr[i] && arr[i].zzyFBF) { if (arr[i].zzyFBF.emCount) { count = this.EvalZzyFBFFormula1(arr[i].zzyFBF.emCount, actor); totalValue += Zzy.FBF.KeepNumber(count); } } } return totalValue; }; Game_System.prototype.GetZzyFBFActorCurrentCount = function ( actorId //通过角色ID返回角色目前领域数量 ) { var data = $dataActors[actorId]; var actor = $gameActors.actor(actorId); //首先获取最大领域 var maxCount = this.GetZzyFBFActorFinalMaxCount(actorId); var count = 0; if (data && data.zzyFBF) { if (data.zzyFBF.currentCount) { count = this.EvalZzyFBFFormula1(data.zzyFBF.maxCount, actor); count = Zzy.FBF.KeepNumber(count); if (maxCount !== 1) { count = count > maxCount ? maxCount : count; } return count; } } count = this.EvalZzyFBFFormula1(this.GetZzyFBFCurrentFieldCount(), actor); count = Zzy.FBF.KeepNumber(count); if (maxCount !== -1) { count = count > maxCount ? maxCount : count; } return count; }; Game_System.prototype.EvalZzyFBFFormula1 = function ( formula, infor, infor2 //转换 ) { var actor = infor; //角色 var a = actor; var target = infor2 ? infor2 : undefined; //目标 var b = target; var variables = $gameVariables._data; //全局变量 var switchs = $gameSwitches._data; //全局开关 var v = variables; var V = variables; var s = switchs; var S = switchs; var level = actor ? actor.level : undefined; //等级 var usecount = actor ? this.ZzyFBFUseFieldCount(actor.actorId()) : undefined; var nullcount = actor ? this.ZzyFBFNullFieldCount(actor.actorId()) : undefined; return eval(formula); }; Game_System.prototype.GetZzyFBFFieldBlessMemory = function ( item //返回对应的占用量 ) { if (item && item.zzyFBF) { if (item.zzyFBF.memory !== undefined) { return item.zzyFBF.memory; } } return this.GetZzyFBFMemoryCount(); }; Game_System.prototype.GetZzyFBFFieldBlessNoInstall = function (item) { if (item && item.zzyFBF) { if (item.zzyFBF.noInstall) { return true; } } return false; }; Game_System.prototype.EnableZzyFBFFieldOfActor = function ( actorId, item //判断是否对这个角色有效 ) { if (item && item.zzyFBF) { var actor = $gameActors.actor(actorId); var classId = actor._classId; if (item.zzyFBF.canUseEval) { return this.EvalZzyFBFFormula1(item.zzyFBF.canUseEval, actor); } //判断角色包含名单 if (item.zzyFBF.canUseA) { if (item.zzyFBF.canUseA.contains(actorId)) { return true; } else { return false; } } if (item.zzyFBF.noCanUseA) { if (item.zzyFBF.noCanUseA.contains(actorId)) { return false; } else { return true; } } //判断职业包含名单 if (item.zzyFBF.canUseC) { if (item.zzyFBF.canUseC.contains(classId)) { return true; } else { return false; } } if (item.zzyFBF.noCanUseC) { if (item.zzyFBF.noCanUseC.contains(classId)) { return false; } else { return true; } } return true; } return false; }; Game_System.prototype.InstallZzyFBFField = function ( actorId, index, item //安装加护 ) { var actArr = this.GetZzyFBFActorUseArr(actorId); var memory = this.GetZzyFBFFieldBlessMemory(item); actArr[index] = item.id; if (memory > 1) { for (var i = 1; i < memory; i++) { actArr[index + i] = false; } } }; Game_System.prototype.UnInstallZzyFBFField = function ( actorId, index //卸载加护 ) { var actArr = this.GetZzyFBFActorUseArr(actorId); var item = $dataItems[actArr[index]]; var memory = this.GetZzyFBFFieldBlessMemory(item); actArr[index] = undefined; if (memory > 1) { for (var i = 1; i < memory; i++) { actArr[index + i] = undefined; } } }; Game_System.prototype.ZzyFBFForceUnInstallAll = function ( actorId //强制卸载所有加护 ) { var items = this.GetZzyFBFActorFieldUseArr(actorId); for (var i = 0; i < items.length; i++) { var item = items[i]; $gameParty.gainItem(item, 1); } var sarr = this.GetZzyFBFActorUseArr(actorId); for (var i = 0; i < sarr.length; i++) { if (sarr[i] || sarr[i] === false) { sarr[i] = undefined; } } }; Game_System.prototype.ZzyFBFUseFieldCount = function ( actorId //使用中槽数量 ) { var items = this.GetZzyFBFActorFieldUseArr(actorId); var len = items.length; var count = 0; for (var i = 0; i < len; i++) { if (items[i]) { var memory = this.GetZzyFBFFieldBlessMemory(items[i]); count += memory; } } return count; }; Game_System.prototype.ZzyFBFNullFieldCount = function ( actorId //未使用中槽数量 ) { var useCount = this.ZzyFBFUseFieldCount(actorId); var maxCount = this.getZzyFBFActorsMaxCountArr(actorId); maxCount = maxCount ? maxCount : 0; var count = maxCount - useCount; count = count > 0 ? count : 0; return count; }; //============================================================================= //Game_Interpreter //============================================================================= Zzy.FBF.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function ( command, args //插件命令 ) { Zzy.FBF.Game_Interpreter_pluginCommand.call(this, command, args); if (command === "ZzyFBF") { this.ZzyFBFCommand(args); } }; Game_Interpreter.prototype.ZzyFBFCommand = function ( args //命令大全 ) { var command = String(args[0]); switch (command) { case "EnableMenu": var enable = eval(String(args[1])); Zzy.FBF.EnableMenu(enable); //$gameSystem.SetZzyFBFEnableMenu(enable); break; case "InsertMenu": var enable = eval(String(args[1])); Zzy.FBF.InsertMenu(enable); //$gameSystem.SetZzyFBFInsertMenu(enable); break; case "CommandName": var commandText = String(args[1]); Zzy.FBF.CommandName(commandText); //$gameSystem.SetZzyFBFMenuCommandName(commandText); break; case "EnableSMenu": var enable = eval(String(args[1])); Zzy.FBF.EnableSMenu(enable); //$gameSystem.SetZzyFBFEnableSMenu(enable); break; case "InsertSMenu": var enable = eval(String(args[1])); Zzy.FBF.InsertSMenu(enable); //$gameSystem.SetZzyFBFInsertSMenu(enable); break; case "SCommandName": var commandText = String(args[1]); Zzy.FBF.SCommandName(commandText); //$gameSystem.SetZzyFBFSMenuCommandName(commandText); break; case "OpenActor": var actorId = parseInt(args[1]); Zzy.FBF.OpenActor(actorId); //Zzy.FBF.OpenFieldOfActor(actorId); break; case "OpenParty": var index = parseInt(args[1]); Zzy.FBF.OpenParty(index); //Zzy.FBF.OpenFieldOfParty(index); break; case "EnableActorFB": var enable = eval(String(args[1])); Zzy.FBF.EnableActorFB(enable); //$gameSystem.SetZzyFBFEnableActorFB(enable); break; case "MaxCount": var formula = String(args[1]); Zzy.FBF.MaxCount(formula); //$gameSystem.SetZzyFBFMaxFieldCount(formula); break; case "CurrentCount": var formula = String(args[1]); Zzy.FBF.CurrentCount(formula); //$gameSystem.SetZzyFBFCurrentFieldCount(formula); break; case "MemoryCount": var count = parseInt(args[1]); Zzy.FBF.MemoryCount(count); //$gameSystem.SetZzyFBFMemoryCount(count); break; case "ForceUnInstallAll": var actorId = parseInt(args[1]); Zzy.FBF.ForceUnInstallAll(actorId); //$gameSystem.ZzyFBFForceUnInstallAll(actorId); break; } }; //================================================================= //Window_MenuCommand //================================================================= Zzy.FBF.Window_MenuCommand_addOriginalCommands = Window_MenuCommand.prototype.addOriginalCommands; Window_MenuCommand.prototype.addOriginalCommands = function () { Zzy.FBF.Window_MenuCommand_addOriginalCommands.call(this); var isEnable = $gameSystem.GetZzyFBFEnableMenu(); var isInsert = $gameSystem.GetZzyFBFInsertMenu(); if (isInsert) { this.addCommand($gameSystem.GetZzyFBFMenuCommandName(), "ZzyFBFBless", isEnable); } }; //================================================================= //Window_SkillType //================================================================= Zzy.FBF.Window_SkillType_makeCommandList = Window_SkillType.prototype.makeCommandList; Window_SkillType.prototype.makeCommandList = function () { Zzy.FBF.Window_SkillType_makeCommandList.call(this); if (this._actor) { if (!!$gameSystem.GetZzyFBFInsertSMenu()) { var isEnable = $gameSystem.GetZzyFBFEnableSMenu(); this.addCommand($gameSystem.GetZzyFBFSMenuCommandName(), "ZzyFBFBless", isEnable); } } }; //================================================================= //Scene_Skill //================================================================= Zzy.FBF.Scene_Skill_createSkillTypeWindow = Scene_Skill.prototype.createSkillTypeWindow; Scene_Skill.prototype.createSkillTypeWindow = function () { Zzy.FBF.Scene_Skill_createSkillTypeWindow.call(this); this._skillTypeWindow.setHandler("ZzyFBFBless", this.ZzyFBFCallField.bind(this)); }; Scene_Skill.prototype.ZzyFBFCallField = function () { if (this.JudgZzyFBFHaveFieldBless()) { //判断角色是否具备领域 this.setZzyFBFSelectActorId(); //选择中ID SceneManager.push(Scene_ZzyFBF); return; //压入场景 } else { this.ReturnZzyFBFSkillWindow(); //返回技能场景 } }; Scene_Skill.prototype.JudgZzyFBFHaveFieldBless = function () { return $gameSystem.IsZzyFBFActorHaveFieldBless(this._actor.actorId()); }; Scene_Skill.prototype.ReturnZzyFBFSkillWindow = function () { this._skillTypeWindow.activate(); }; Scene_Skill.prototype.setZzyFBFSelectActorId = function () { $gameSystem.SetZzyFBFSelectActorIndex(this._actor.actorId()); }; //================================================================= //Scene_Menu //================================================================= Zzy.FBF.Scene_Menu_createCommandWindow = Scene_Menu.prototype.createCommandWindow; Scene_Menu.prototype.createCommandWindow = function () { Zzy.FBF.Scene_Menu_createCommandWindow.call(this); this._commandWindow.setHandler("ZzyFBFBless", this.commandPersonal.bind(this)); }; Zzy.FBF.Scene_Menu_onPersonalOk = Scene_Menu.prototype.onPersonalOk; Scene_Menu.prototype.onPersonalOk = function () { if (this._commandWindow.currentSymbol() === "ZzyFBFBless") { if (this.JudgZzyFBFHaveFieldBless()) { this.setZzyFBFSelectIndex(); SceneManager.push(Scene_ZzyFBF); return; //压入场景 } else { this.ReturnZzyFBFStatusWindow(); } } Zzy.FBF.Scene_Menu_onPersonalOk.call(this); }; Scene_Menu.prototype.setZzyFBFSelectIndex = function () { var index = this._statusWindow.index(); $gameSystem.SetZzyFBFSelectActorIndex($gameParty._actors[index]); }; Scene_Menu.prototype.JudgZzyFBFHaveFieldBless = function () { var index = this._statusWindow.index(); var actorId = $gameParty._actors[index]; return $gameSystem.IsZzyFBFActorHaveFieldBless(actorId); }; Scene_Menu.prototype.ReturnZzyFBFStatusWindow = function () { this._statusWindow.activate(); }; //================================================================= //Window_MenuStatus //================================================================= Zzy.FBF.Window_MenuStatus_processOk = Window_MenuStatus.prototype.processOk; Window_MenuStatus.prototype.processOk = function () { if (this.isCurrentItemEnabled()) { if (SceneManager._scene instanceof Scene_Menu) { var pointer = SceneManager._scene._commandWindow; var index = SceneManager._scene._commandWindow._index; if (pointer.commandName(index) === $gameSystem.GetZzyFBFMenuCommandName()) { //处于加护内容 if (!this.JudgZzyFBFHaveFieldBless()) { //判断角色是否拥有加护能力 Zzy.FBF.PlaySE(1); return; } } } } Zzy.FBF.Window_MenuStatus_processOk.call(this); }; Window_MenuStatus.prototype.JudgZzyFBFHaveFieldBless = function () { var index = this.index(); var actorId = $gameParty._actors[index]; return $gameSystem.IsZzyFBFActorHaveFieldBless(actorId); }; //================================================================= //Scene_ZzyFBF //================================================================= //Scene_ZzyFBF场景,用于承载加护相关的窗口 function Scene_ZzyFBF() { this.initialize.apply(this, arguments); } Scene_ZzyFBF.prototype = Object.create(Scene_MenuBase.prototype); Scene_ZzyFBF.prototype.constructor = Scene_ZzyFBF; Scene_ZzyFBF.prototype.initialize = function () { Scene_MenuBase.prototype.initialize.call(this); }; Scene_ZzyFBF.prototype.create = function () //创造窗口 { Scene_MenuBase.prototype.create.call(this); this.createHelpWindow(); this.CreateFieldWindow(); this.CreateFieldItemWindow(); this._fieldWindow.setFieldItemWindow(this._fieldItemWindow); this._fieldItemWindow.setFieldWindow(this._fieldWindow); }; Scene_ZzyFBF.prototype.createHelpWindow = function () { this._helpWindow = new Window_ZzyFBFHelp(2); this._helpWindow.setText(""); this.addWindow(this._helpWindow); }; Scene_ZzyFBF.prototype.CreateFieldWindow = function () { this._fieldWindow = new Window_ZzyFBFField(); this._fieldWindow.setHelpWindow(this._helpWindow); this._fieldWindow.InitPosition(); this._fieldWindow.deactivate(); this._fieldWindow.deselect(); this._fieldWindow.setHandler("cancel", this.ZzyFBFPopField.bind(this)); this._fieldWindow.setHandler("ok", this.OnZzyFBFSelectFieldBless.bind(this)); this.addWindow(this._fieldWindow); }; Scene_ZzyFBF.prototype.CreateFieldItemWindow = function () { this._fieldItemWindow = new Window_ZzyFBFItemField(); this._fieldItemWindow.setHelpWindow(this._helpWindow); this._fieldItemWindow.InitPosition(); this._fieldItemWindow.activate(); this._fieldItemWindow.select(0); this._fieldItemWindow.setHandler("cancel", this.popScene.bind(this)); this._fieldItemWindow.setHandler("ok", this.OnZzyFBFAddFieldBless.bind(this)); this.addWindow(this._fieldItemWindow); }; Scene_ZzyFBF.prototype.ZzyFBFPopField = function () { this._fieldWindow.deactivate(); this._fieldWindow.deselect(); this._fieldItemWindow.activate(); }; Scene_ZzyFBF.prototype.OnZzyFBFAddFieldBless = function () { var pointer = this._fieldItemWindow; if (pointer.active) { //保持活跃 pointer.OnSelectField(); } //触发选择 this._fieldItemWindow.activate(); //保持活跃 this._fieldWindow.deactivate(); //失去活跃 }; Scene_ZzyFBF.prototype.OnZzyFBFSelectFieldBless = function () { var pointer = this._fieldWindow; if (pointer.active) { //保持活跃 pointer.OnSelectField(); } //触发选择 this._fieldWindow.activate(); //保持活跃 this._fieldItemWindow.deactivate(); //失去活跃 }; //================================================================= //Window_ZzyFBFField //================================================================= function Window_ZzyFBFField() { this.initialize.apply(this, arguments); } Window_ZzyFBFField.prototype = Object.create(Window_Selectable.prototype); Window_ZzyFBFField.prototype.constructor = Window_ZzyFBFField; Window_ZzyFBFField.prototype.initialize = function () { Window_Selectable.prototype.initialize.call(this, 0, 0); this._list = []; //列表 this._fieldItemWindow = undefined; }; Window_ZzyFBFField.prototype.InitPosition = function () { this.x = eval(Zzy.Param.FBFFieldWindowX); this.y = eval(Zzy.Param.FBFFieldWindowY); this.width = eval(Zzy.Param.FBFFieldWindowW); this.height = eval(Zzy.Param.FBFFieldWindowH); this.RefreshActorField(); //刷新角色加护 this.refresh(); }; Window_ZzyFBFField.prototype.maxCols = function () { return 1; }; Window_ZzyFBFField.prototype.drawItem = function (index) { var item = this._list[index]; var rect = this.itemRect(index); this.drawDeepFillRect(rect, 2); var srcInfo = {}; this.SaveZzyFBFContents(srcInfo); if (item) { //存在道具 rect.width -= this.textPadding(); if ($gameSystem.GetZzyFBFFieldBlessNoInstall(item)) { //未安装 this.changeTextColor(Zzy.Param.FBFNoUnInstallColor); } else { if (item.zzyFBF) { if (item.zzyFBF.textColor) { //存在设置的文字 this.changeTextColor(item.zzyFBF.textColor); } if (item.zzyFBF.borderColor) { this.contents.outlineColor = item.zzyFBF.borderColor; } if (item.zzyFBF.borderWidth) { this.contents.outlineWidth = item.zzyFBF.borderWidth; } if (item.zzyFBF.textSize) { //字体大小 this.contents.fontSize = item.zzyFBF.textSize; } } } this.drawItemName(item, rect.x, rect.y, rect.width); } else if (item === null) { //不存在 this.changeTextColor(Zzy.Param.FBFUnlockTextColor); this.drawText(Zzy.Param.FBFUnlockText, rect.x, rect.y, rect.width, "center"); } else if (item === false) { this.changeTextColor(Zzy.Param.FBFMemoryTextColor); this.drawText(Zzy.Param.FBFMemoryText, rect.x, rect.y, rect.width, "center"); } this.LoadZzyFBFContents(srcInfo); }; Window_ZzyFBFField.prototype.SaveZzyFBFContents = function (srcInfo) { srcInfo.textColor = this.contents.textColor; srcInfo.outlineColor = this.contents.outlineColor; srcInfo.outlineWidth = this.contents.outlineWidth; srcInfo.fontSize = this.contents.fontSize; }; Window_ZzyFBFField.prototype.LoadZzyFBFContents = function (srcInfo) { this.contents.textColor = srcInfo.textColor; this.contents.outlineColor = srcInfo.outlineColor; this.contents.outlineWidth = srcInfo.outlineWidth; this.contents.fontSize = srcInfo.fontSize; }; Window_ZzyFBFField.prototype.drawItemName = function (item, x, y, width) { width = width || 312; if (item) { var iconBoxWidth = Window_Base._iconWidth + 4; //this.resetTextColor(); this.drawIcon(item.iconIndex, x + 2, y + 2); this.drawText(item.name, x + iconBoxWidth, y, width - iconBoxWidth); } }; Window_ZzyFBFField.prototype.drawDeepFillRect = function (rect, dis) { this.contents.fillRect(rect.x + dis, rect.y + dis, rect.width - dis * 2, rect.height - dis * 2, this.deepColor()); }; Window_ZzyFBFField.prototype.deepColor = function () { return Zzy.Param.FBFFieldRectColor; }; Window_ZzyFBFField.prototype.processTouch = function () { if (!this.active && this.checkActive()) { this.activate(); //设置为活跃 this._fieldItemWindow.deactivate(); return; } Window_Selectable.prototype.processTouch.call(this); }; Window_ZzyFBFField.prototype.checkActive = function () { if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) { return true; } return false; }; Window_ZzyFBFField.prototype.setFieldItemWindow = function (pointer) { this._fieldItemWindow = pointer; }; Window_ZzyFBFField.prototype.refresh = function () { this.createContents(); this.drawAllItems(); }; Window_ZzyFBFField.prototype.drawAllItems = function () { var topIndex = this.topIndex(); for (var i = 0; i < this.maxPageItems(); i++) { var index = topIndex + i; if (index < this.maxItems()) { this.drawItem(index); } } }; Window_ZzyFBFField.prototype.item = function () { var index = this.index(); return this._list && index >= 0 ? this._list[index] : false; }; Window_ZzyFBFField.prototype.updateHelp = function () { this.setHelpWindowItem(this.item()); }; Window_ZzyFBFField.prototype.maxItems = function () { return this._list ? this._list.length : 0; }; Window_ZzyFBFField.prototype.RefreshActorField = function () //刷新槽 { //判断角色领域是否为无限 var actorId = $gameSystem.GetZzyFBFSelectActorIndex(); $gameSystem.UpdateZzyFBFActorUseArr(actorId); //更新角色的加护 var tMax = $gameSystem.GetZzyFBFActorFinalMaxCount(actorId); //最大格子数 var currentCount = $gameSystem.GetZzyFBFActorFinalCurrentCount(actorId); if (tMax !== -1) { currentCount = currentCount > tMax ? tMax : currentCount; } for ( var i = 0; i < currentCount; i++ //拷贝 ) { this._list[i] = undefined; } //计算拥有的加护格子数 var arr = $gameSystem.GetZzyFBFActorUseArr(actorId); var arrLen = arr.length; arrLen = arrLen > currentCount ? currentCount : arrLen; for ( var i = 0; i < arrLen; i++ //拷贝 ) { this._list[i] = $dataItems[arr[i]]; } var addLen = 0; if (tMax === -1) { addLen = this.maxPageRows(); } else { addLen = tMax - currentCount; } //添加额外 var last = this._list.length; for ( var i = 0; i < addLen; i++ //添加到_list列表中 ) { this._list[last + i] = null; } //赋予内容 var useArr = $gameSystem.GetZzyFBFActorUseArr(actorId); for (var i = 0; i < useArr.length; i++) { if (this._list[i] === null) continue; if (useArr[i] === false) { this._list[i] = false; } else { this._list[i] = $dataItems[useArr[i]]; } } }; Window_ZzyFBFField.prototype.maxPageRows = function () { var pageHeight = this.height - this.padding * 2; return Math.floor(pageHeight / this.itemHeight()); }; Window_ZzyFBFField.prototype.IsCanInstall = function (index, installItem) { var max = this._list.length - 1; if (index > max) return false; if (this._list[index] === false || this._list[index] === null) { return false; } if ($gameSystem.GetZzyFBFFieldBlessNoInstall(this._list[index])) { return false; } var count = $gameSystem.GetZzyFBFFieldBlessMemory(this._list[index]); //检测容量是否超标 var iCount = $gameSystem.GetZzyFBFFieldBlessMemory(installItem); if (this._list[index]) { if (iCount > count) { for (var i = count; i < iCount; i++) { if (this._list[index + i] !== undefined) { return false; } } } } if (this._list[index] === undefined) { for (var i = 1; i < iCount; i++) { if (this._list[index + i] || this._list[index + i] === false || this._list[index + i] === null) { return false; } } } return true; }; Window_ZzyFBFField.prototype.IsCanUnInstall = function (index, installItem) { var max = this._list.length - 1; if (index > max) return true; if (this._list[index] === false || this._list[index] === null) { return true; } if ($gameSystem.GetZzyFBFFieldBlessNoInstall(this._list[index])) { return true; } //不可卸载 var count = $gameSystem.GetZzyFBFFieldBlessMemory(this._list[index]); //检测容量是否超标 var iCount = $gameSystem.GetZzyFBFFieldBlessMemory(installItem); if (this._list[index]) { if (iCount > count) { for (var i = count; i < iCount; i++) { if (this._list[index + i] !== undefined) { return true; } } } } if (this._list[index] === undefined) { for (var i = 1; i < iCount; i++) { if (this._list[index + i] || this._list[index + i] === false || this._list[index + i] === null) { return true; } } } return false; }; Window_ZzyFBFField.prototype.processOk = function () { if (this.isCurrentItemEnabled()) { //this.playOkSound(); this.updateInputData(); //this.deactivate(); this.callOkHandler(); } else { this.playBuzzerSound(); } }; Window_ZzyFBFField.prototype.OnSelectField = function () { if (this.IsSatisfyUnInstall(this.index())) { //满足拆卸 this.ExecuteUnInstallField(); } else { //不满足拆卸 Zzy.FBF.PlaySE(2); } }; Window_ZzyFBFField.prototype.ExecuteUnInstallField = function () //卸载领域 { this._fieldItemWindow.ProcessGainItem(this.item()); this._fieldItemWindow.refresh(); var actorId = $gameSystem.GetZzyFBFSelectActorIndex(); var fArr = $gameSystem.GetZzyFBFActorUseArr(actorId); var item = $dataItems[fArr[this.index()]]; var memory = $gameSystem.GetZzyFBFFieldBlessMemory(item); for (var i = 0; i < memory; i++) { var index = this.index() + i; fArr[index] = undefined; this._list[index] = undefined; } Zzy.FBF.PlaySE(5); this.refresh(); }; Window_ZzyFBFField.prototype.IsSatisfyUnInstall = function (index) { var max = this._list.length - 1; if (index > max) return false; if (this._list[index] === false || this._list[index] === null || this._list[index] === undefined) { return false; } if ($gameSystem.GetZzyFBFFieldBlessNoInstall(this._list[index])) { return false; } if (this._list[index]) { return true; } return false; }; Window_ZzyFBFField.prototype.ExecuteInstallItem = function (index, item) { //首先拆卸原来 var memory = $gameSystem.GetZzyFBFFieldBlessMemory(item); if (this._list[index]) { //存在内容 var oldItem = this._list[index]; //卸载旧的 var oldMemory = $gameSystem.GetZzyFBFFieldBlessMemory(oldItem); for (var i = 0; i < oldMemory; i++) { this._list[index + i] = undefined; } this._list[index] = item; //安装新的 for (var i = 1; i < memory; i++) { this._list[index + i] = false; //占位 } this.refresh(); return oldItem; } else { this._list[index] = item; for (var i = 1; i < memory; i++) { this._list[index + i] = false; //占位 } this.refresh(); return undefined; } }; //================================================================= //Window_ZzyFBFItemField //================================================================= function Window_ZzyFBFItemField() { this.initialize.apply(this, arguments); } Window_ZzyFBFItemField.prototype = Object.create(Window_Selectable.prototype); Window_ZzyFBFItemField.prototype.constructor = Window_ZzyFBFItemField; Window_ZzyFBFItemField.prototype.initialize = function () { Window_Selectable.prototype.initialize.call(this, 0, 0); //创建完成后,读取有效的内容 this._list = []; this._fieldWindow = undefined; this.EarnFieldItemList(); this.refresh(); }; Window_ZzyFBFItemField.prototype.EarnFieldItemList = function () { var items = $gameParty.items(); var enableArr = $gameSystem.GetZzyFBFFieldItemIdArr(); var len = items.length; for (var i = 0; i < len; i++) { var item = items[i]; if (enableArr.contains(item.id)) { this._list.push(item); } } //asd }; Window_ZzyFBFItemField.prototype.InitPosition = function () { this.x = eval(Zzy.Param.FBFFieldItemWindowX); this.y = eval(Zzy.Param.FBFFieldItemWindowY); this.width = eval(Zzy.Param.FBFFieldItemWindowW); this.height = eval(Zzy.Param.FBFFieldItemWindowH); this.refresh(); }; Window_ZzyFBFItemField.prototype.maxCols = function () { return 2; }; Window_ZzyFBFItemField.prototype.drawItem = function (index) { var item = this._list[index]; if (item) { var numberWidth = this.numberWidth(); var rect = this.itemRect(index); rect.width -= this.textPadding(); if (this.IsEnable(item)) { var srcInfo = {}; this.SaveZzyFBFContents(srcInfo); if (item.zzyFBF) { if (item.zzyFBF.textColor) { //存在设置的文字 this.changeTextColor(item.zzyFBF.textColor); } if (item.zzyFBF.borderColor) { this.contents.outlineColor = item.zzyFBF.borderColor; } if (item.zzyFBF.borderWidth) { this.contents.outlineWidth = item.zzyFBF.borderWidth; } if (item.zzyFBF.textSize) { //字体大小 this.contents.fontSize = item.zzyFBF.textSize; } } this.drawItemName(item, rect.x, rect.y, rect.width - numberWidth); this.drawItemNumber(item, rect.x, rect.y, rect.width); this.LoadZzyFBFContents(srcInfo); } else { this.changePaintOpacity(false); this.drawItemName(item, rect.x, rect.y, rect.width - numberWidth); this.drawItemNumber(item, rect.x, rect.y, rect.width); } this.changePaintOpacity(1); } }; Window_ZzyFBFItemField.prototype.drawItemName = function (item, x, y, width) { width = width || 312; var iconBoxWidth = Window_Base._iconWidth + 4; this.drawIcon(item.iconIndex, x + 2, y + 2); this.drawText(item.name, x + iconBoxWidth, y, width - iconBoxWidth); }; Window_ZzyFBFItemField.prototype.drawItemNumber = function (item, x, y, width) { this.drawText(":", x, y, width - this.textWidth("00"), "right"); this.drawText($gameParty.numItems(item), x, y, width, "right"); }; Window_ZzyFBFItemField.prototype.SaveZzyFBFContents = function (srcInfo) { srcInfo.textColor = this.contents.textColor; srcInfo.outlineColor = this.contents.outlineColor; srcInfo.outlineWidth = this.contents.outlineWidth; srcInfo.fontSize = this.contents.fontSize; }; Window_ZzyFBFItemField.prototype.LoadZzyFBFContents = function (srcInfo) { this.contents.textColor = srcInfo.textColor; this.contents.outlineColor = srcInfo.outlineColor; this.contents.outlineWidth = srcInfo.outlineWidth; this.contents.fontSize = srcInfo.fontSize; }; Window_ZzyFBFItemField.prototype.IsEnable = function (item) { var actorId = $gameSystem.GetZzyFBFSelectActorIndex(); var enable = $gameSystem.EnableZzyFBFFieldOfActor(actorId, item); return enable; }; Window_ZzyFBFItemField.prototype.IsEnableOfIndex = function (index) { var item = this.item(); return this.IsEnable(item); }; Window_ZzyFBFItemField.prototype.numberWidth = function () { return this.textWidth("000"); }; Window_ZzyFBFItemField.prototype.maxItems = function () { return this._list ? this._list.length : 0; }; Window_ZzyFBFItemField.prototype.refresh = function () { this.createContents(); this.drawAllItems(); }; Window_ZzyFBFItemField.prototype.item = function () { var index = this.index(); return this._list && index >= 0 ? this._list[index] : null; }; Window_ZzyFBFItemField.prototype.updateHelp = function () { this.setHelpWindowItem(this.item()); }; Window_ZzyFBFItemField.prototype.setFieldWindow = function (pointer) { this._fieldWindow = pointer; }; Window_ZzyFBFItemField.prototype.processTouch = function () { if (!this.active && this.checkActive()) { this.activate(); //设置为活跃 this._fieldWindow.deactivate(); return; } Window_Selectable.prototype.processTouch.call(this); }; Window_ZzyFBFItemField.prototype.checkActive = function () { if (TouchInput.isTriggered() && this.isTouchedInsideFrame()) { return true; } return false; }; Window_ZzyFBFItemField.prototype.processOk = function () { if (this.isCurrentItemEnabled()) { //this.playOkSound(); this.updateInputData(); //this.deactivate(); this.callOkHandler(); } else { this.playBuzzerSound(); } }; Window_ZzyFBFItemField.prototype.OnSelectField = function () { //激活 var index = this.index(); var isValid = this.IsEnableOfIndex(index); if (isValid) { this.ExecuteInstallField(); } else { Zzy.FBF.PlaySE(3); } }; Window_ZzyFBFItemField.prototype.ExecuteInstallField = function () //执行安装加护 { var installItem = this.item(); var index = this._fieldWindow.index(); var tList = this._fieldWindow._list; if (index >= 0) { //防止-1 if (this._fieldWindow.IsCanUnInstall(index, installItem)) { Zzy.FBF.PlaySE(3); return false; } } //遍历 else { var len = tList.length; var isCan = false; for (var i = 0; i < len; i++) { if (this._fieldWindow.IsCanInstall(i, installItem)) { //可以安装 index = i; isCan = true; break; } } if (!isCan) { Zzy.FBF.PlaySE(3); return false; } } var oldItem = this._fieldWindow.ExecuteInstallItem(index, installItem); //执行安装 //目标向后跳跃 var memory = $gameSystem.GetZzyFBFFieldBlessMemory(installItem); //获取内存大小 this._fieldWindow.select(index + memory); //减少道具 this.ProcessLoseItem(installItem); this.ProcessGainItem(oldItem); var actorId = $gameSystem.GetZzyFBFSelectActorIndex(); if (oldItem) { $gameSystem.UnInstallZzyFBFField(actorId, index); } $gameSystem.InstallZzyFBFField(actorId, index, installItem); Zzy.FBF.PlaySE(4); this.refresh(); return true; }; Window_ZzyFBFItemField.prototype.ProcessGainItem = function (item) { if (!item) return; //获取道具 //item = $dataItems[6]; $gameParty.gainItem(item, 1); //判断卸下来的是否拥有 if (!this.IsListHaveOfItem(item)) { this._list.push(item); } }; Window_ZzyFBFItemField.prototype.ProcessLoseItem = function (item) { if (!item) return; $gameParty.loseItem(item, 1); //减少道具 for (var i = 0; i < this._list.length; i++) { if (this._list[i].id === item.id) { var count = $gameParty._items[item.id]; if (!count) { //不存在数量,需要移除这个内容 this.DeleteListOfIndex(i); //移除元素 return; } } } }; Window_ZzyFBFItemField.prototype.DeleteListOfIndex = function (index) { var len = this._list.length; for (var i = index; i < len; i++) { this._list[i] = this._list[i + 1]; } this._list[len - 1] = undefined; this._list.length--; }; Window_ZzyFBFItemField.prototype.IsListHaveOfItem = function (item) { for (var i = 0; i < this._list.length; i++) { if (this._list[i].id === item.id) { return true; } } return false; }; //================================================================= //Window_ZzyFBFHelp //================================================================= function Window_ZzyFBFHelp() { this.initialize.apply(this, arguments); } Window_ZzyFBFHelp.prototype = Object.create(Window_Help.prototype); Window_ZzyFBFHelp.prototype.constructor = Window_ZzyFBFHelp; Window_ZzyFBFHelp.prototype.initialize = function (numLines) { numLines = this.DefaultNumLines(); Window_Help.prototype.initialize.call(this, numLines); this.x = eval(Zzy.Param.FBFHelpWindowX); this.y = eval(Zzy.Param.FBFHelpWindowY); this.width = eval(Zzy.Param.FBFHelpWindowW); }; Window_ZzyFBFHelp.prototype.DefaultNumLines = function () { return Zzy.Param.FBFHelpWindowH; }; Window_ZzyFBFHelp.prototype.setText = function (text) { if (this._text !== text) { this._text = text; this.refresh(); } }; Window_ZzyFBFHelp.prototype.clear = function () { this.setText(""); }; Window_ZzyFBFHelp.prototype.setItem = function (item) { if (item === null) { this.setText(Zzy.Param.FBFUnlockHelpText); } else if (item === undefined) { this.setText(Zzy.Param.FBFLockHelpText); } else { this.setText(item ? item.description : ""); } }; Window_ZzyFBFHelp.prototype.refresh = function () { this.contents.clear(); this.drawTextEx(this._text, this.textPadding(), 0); }; //================================================================ //DataManager //================================================================ Zzy.FBF.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded; DataManager.isDatabaseLoaded = function () { if (!Zzy.FBF.DataManager_isDatabaseLoaded.call(this)) return false; //添加标签内容 this.ZzyFBFLoadNoteCase1($dataItems); //物品 this.ZzyFBFLoadNoteCase2($dataActors); //角色 this.ZzyFBFLoadNoteCase3($dataArmors); //护甲 this.ZzyFBFLoadNoteCase3($dataWeapons); //武器 this.ZzyFBFLoadNoteCase3($dataSkills); //技能 this.ZzyFBFLoadNoteCase3($dataClasses); //职业 this.ZzyFBFLoadNoteCase3($dataActors); //角色 return true; }; DataManager.ZzyFBFLoadNoteCase3 = function (objArr) { for (var i = 1; i < objArr.length; i++) { var obj = objArr[i]; var noteData = obj.note.split(/[\r\n]+/); obj.zzyFBF = obj.zzyFBF || {}; for (var j = 0; j < noteData.length; j++) { var lineStr = noteData[j]; if (lineStr.match(//i)) { //增添卡槽 var count = String(RegExp.$1); obj.zzyFBF["eCount"] = count; } else if (lineStr.match(//i)) { //增添最大卡槽 var count = String(RegExp.$1); obj.zzyFBF["emCount"] = count; } } } }; DataManager.ZzyFBFLoadNoteCase2 = function ( objArr //加载标签 ) { for (var i = 1; i < objArr.length; i++) { var obj = objArr[i]; var noteData = obj.note.split(/[\r\n]+/); obj.zzyFBF = obj.zzyFBF || {}; for (var j = 0; j < noteData.length; j++) { var lineStr = noteData[j]; if (lineStr.match(//i)) { //作为卡片 var enable = eval(String(RegExp.$1)); obj.zzyFBF["enable"] = enable; } else if (lineStr.match(//i)) { var count = String(RegExp.$1); obj.zzyFBF["maxCount"] = count; } else if (lineStr.match(//i)) { var count = String(RegExp.$1); obj.zzyFBF["currentCount"] = count; } } } }; DataManager.ZzyFBFLoadNoteCase1 = function ( objArr //加载标签 ) { for (var i = 1; i < objArr.length; i++) { var obj = objArr[i]; var noteData = obj.note.split(/[\r\n]+/); obj.zzyFBF = obj.zzyFBF || {}; //基本参数 obj.zzyFBF["param"] = []; obj.zzyFBF["paramPer"] = []; //额外参数 obj.zzyFBF["exParam"] = []; obj.zzyFBF["exParamPer"] = []; //特殊参数 obj.zzyFBF["spParam"] = []; obj.zzyFBF["spParamPer"] = []; //元素参数 obj.zzyFBF["elParam"] = []; obj.zzyFBF["elParamPer"] = []; //0生命 1魔法 2攻击 3防御 4魔攻 5魔抗 6速度 7幸运 //0命中 1闪避 2暴击 3暴击回避 4魔法回避 5魔法反射 //6反击 7HP自动回复 8MP自动回复 9TP自动恢复 //1受击几率 2防御效果 3恢复效果 4药理知识 5MP消耗率 6TP消耗率 //7物理伤害 8魔法伤害 9地形伤害 10经验值 11金币概率 12伤害减免 //13逃跑概率 14先发制人概率 15被偷袭概率 16遇敌步数 for (var j = 0; j < noteData.length; j++) { var lineStr = noteData[j]; if (lineStr.match(//i)) { //作为卡片 obj.zzyFBF["enable"] = true; } else if (lineStr.match(//i)) { obj.zzyFBF["textColor"] = String(RegExp.$1); } else if (lineStr.match(//i)) { obj.zzyFBF["borderWidth"] = parseInt(RegExp.$1); } else if (lineStr.match(//i)) { obj.zzyFBF["borderColor"] = String(RegExp.$1); } else if (lineStr.match(//i)) { obj.zzyFBF["textSize"] = parseInt(RegExp.$1); } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][0] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][0] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][1] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][1] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][2] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][2] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][3] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][3] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][4] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][4] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][5] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][5] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][6] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][6] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["param"][7] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["paramPer"][7] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][0] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][0] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][1] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][1] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][2] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][2] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][3] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][3] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][4] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][4] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][5] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][5] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][6] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][6] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][7] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][7] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][8] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][8] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParam"][9] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["exParamPer"][9] = value; } else if (lineStr.match(//i)) { var memory = parseInt(RegExp.$1); obj.zzyFBF["memory"] = memory; } else if (lineStr.match(//i)) { obj.zzyFBF["noInstall"] = true; } else if (lineStr.match(//i)) { var str = String(RegExp.$1); var intArr = Zzy.FBF.StringToIntArr(str); obj.zzyFBF["canUseC"] = intArr; } else if (lineStr.match(//i)) { var str = String(RegExp.$1); var intArr = Zzy.FBF.StringToIntArr(str); obj.zzyFBF["canUseA"] = intArr; } else if (lineStr.match(//i)) { var str = String(RegExp.$1); var intArr = Zzy.FBF.StringToIntArr(str); obj.zzyFBF["noCanUseC"] = intArr; } else if (lineStr.match(//i)) { var str = String(RegExp.$1); var intArr = Zzy.FBF.StringToIntArr(str); obj.zzyFBF["noCanUseA"] = intArr; } else if (lineStr.match(//i)) { var evalStr = String(RegExp.$1); obj.zzyFBF["canUseEval"] = evalStr; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][1] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][1] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][2] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][2] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][3] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][3] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][4] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][4] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][5] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][5] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][6] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][6] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][7] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][7] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][8] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][8] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][9] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][9] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][10] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][10] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][11] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][11] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][12] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][12] = value; } else if (lineStr.match(//i)) { var elId = parseInt(RegExp.$1); var value = String(RegExp.$2); obj.zzyFBF["elParam"][elId] = value; } else if (lineStr.match(//i)) { var elId = parseInt(RegExp.$1); var value = String(RegExp.$2); obj.zzyFBF["elParamPer"][elId] = value; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["spParam"][13] = per; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["spParam"][14] = per; } else if (lineStr.match(//i)) { var per = String(RegExp.$1); obj.zzyFBF["spParam"][15] = per; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParam"][16] = value; } else if (lineStr.match(//i)) { var value = String(RegExp.$1); obj.zzyFBF["spParamPer"][16] = value; } } } }; //============================================================================= //Game_Actor //============================================================================= Zzy.FBF.Game_Actor_paramPlus = Game_Actor.prototype.paramPlus; Game_Actor.prototype.paramPlus = function (paramId) { var value = Zzy.FBF.Game_Actor_paramPlus.call(this, paramId); var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(this.actorId()); value += this.ZzyFBFCalculationValue(useArr, paramId); //计算增益数值 return Math.floor(value); }; Game_Actor.prototype.ZzyFBFCalculationValue = function ( itemArr, paramId //增益 ) { var formula = undefined; var value = 0; var valuePer = 0; var srcValue = this.paramBase(paramId); for ( var i = 0; i < itemArr.length; i++ //计算拥有的实量和百分比 ) { var item = itemArr[i]; if (item.zzyFBF.param[paramId] !== undefined) { formula = item.zzyFBF.param[paramId]; value += $gameSystem.EvalZzyFBFFormula1(formula, this); value = value ? value : 0; } if (item.zzyFBF.paramPer[paramId] !== undefined) { formula = item.zzyFBF.paramPer[paramId]; valuePer += $gameSystem.EvalZzyFBFFormula1(formula, this); valuePer = valuePer ? valuePer : 0; } } return value + srcValue * valuePer * 0.01; }; //经验值 Zzy.FBF.Game_Actor_finalExpRate = Game_Actor.prototype.finalExpRate; Game_Actor.prototype.finalExpRate = function () { var expRate = Zzy.FBF.Game_Actor_finalExpRate.call(this); var exExpRate = Zzy.FBF.SpParamPerValueOfActor(this, 10, expRate); return expRate + exExpRate; }; Zzy.FBF.Game_Actor_gainExp = Game_Actor.prototype.gainExp; Game_Actor.prototype.gainExp = function (exp) { var exExp = Zzy.FBF.SpParamValueOfActor(this, 10); exp += exExp; //添加额外经验值 Zzy.FBF.Game_Actor_gainExp.call(this, exp); }; //地板伤害 Zzy.FBF.Game_Actor_basicFloorDamage = Game_Actor.prototype.basicFloorDamage; Game_Actor.prototype.basicFloorDamage = function () { var damage = Zzy.FBF.Game_Actor_basicFloorDamage.call(this); var exDamage = Zzy.FBF.SpParamPerValueOfActor(this, 9, damage); return Math.floor(damage + exDamage); }; Zzy.FBF.Game_Actor_executeFloorDamage = Game_Actor.prototype.executeFloorDamage; Game_Actor.prototype.executeFloorDamage = function () { Zzy.FBF.Game_Actor_executeFloorDamage.call(this); var exDamage = Zzy.FBF.SpParamValueOfActor(this, 9); //地板额外伤害 exDamage = Math.min(exDamage, this.maxFloorDamage()); this.gainHp(-exDamage); if (exDamage > 0) { this.performMapDamage(); } }; //=========================================================================== //Game_Action //=========================================================================== Zzy.FBF.Game_Action_calcElementRate = Game_Action.prototype.calcElementRate; Game_Action.prototype.calcElementRate = function ( target //元素概率 ) { var srcRate = Zzy.FBF.Game_Action_calcElementRate.call(this, target); var exRate = 0; if (target.isEnemy()) { var actor = this.subject(); if (actor && actor.isActor()) { var elementId = this.item().damage.elementId; exRate = BattleManager.ZzyFBFElParamPerValueOfActor(elementId, actor, target); } } return srcRate + exRate; }; Zzy.FBF.Game_Action_itemHit = Game_Action.prototype.itemHit; Game_Action.prototype.itemHit = function (target) { var value = Zzy.FBF.Game_Action_itemHit.call(this, target); var exValue = 0; if (this.isPhysical() && this.subject() && this.subject().isActor()) { //物理命中 exValue = BattleManager.ZzyFBFSetExParamValueOfActor(0, this.subject(), value, target); } return value + exValue; }; Zzy.FBF.Game_Action_itemEva = Game_Action.prototype.itemEva; Game_Action.prototype.itemEva = function (target) { var value = Zzy.FBF.Game_Action_itemEva.call(this, target); var exValue = 0; if (target && target.isActor()) { if (this.isPhysical()) { //物理闪避 exValue = BattleManager.ZzyFBFSetExParamValueOfActor(1, target, value, this.subject()); } else if (this.isMagical()) { //魔法闪避 exValue = BattleManager.ZzyFBFSetExParamValueOfActor(4, target, value, this.subject()); } } return value + exValue; }; Zzy.FBF.Game_Action_itemCri = Game_Action.prototype.itemCri; Game_Action.prototype.itemCri = function (target) { var value = Zzy.FBF.Game_Action_itemCri.call(this, target); var exValue = 0; if (this.item().damage.critical) { //存在暴击 if (this.subject() && this.subject().isActor()) { //攻击者 exValue = BattleManager.ZzyFBFSetExParamValueOfActor(2, this.subject(), value, target); return value + exValue; } else if (target && target.isActor()) { //防御者 exValue = BattleManager.ZzyFBFSetExParamValueOfActor(3, target, value, target); return Math.max(0, value - exValue); } } else { return value; } return value; }; Zzy.FBF.Game_Action_itemMrf = Game_Action.prototype.itemMrf; Game_Action.prototype.itemMrf = function (target) { var value = Zzy.FBF.Game_Action_itemMrf.call(this, target); var exValue = 0; if (this.isMagical() && target && target.isActor()) { exValue = BattleManager.ZzyFBFSetExParamValueOfActor(5, target, value, this.subject()); } return value + exValue; }; Zzy.FBF.Game_Action_itemCnt = Game_Action.prototype.itemCnt; Game_Action.prototype.itemCnt = function (target) { var value = Zzy.FBF.Game_Action_itemCnt.call(this, target); var exValue = 0; if (this.isPhysical() && target.canMove() && target && target.isActor()) { exValue = BattleManager.ZzyFBFSetExParamValueOfActor(6, target, value, this.subject()); } return value + exValue; }; //恢复效果 物理伤害 魔法伤害 Zzy.FBF.Game_Action_makeDamageValue = Game_Action.prototype.makeDamageValue; Game_Action.prototype.makeDamageValue = function (target, critical) { var value = Zzy.FBF.Game_Action_makeDamageValue.call(this, target, critical); var item = this.item(); var isRecover = false; if (target.isActor()) { var baseValue = this.evalDamageFormula(target); if (this.isPhysical()) { var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 7, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 7, value, this.subject()); value += exValue1 + exValue2; } if (this.isMagical()) { var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 8, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 8, value, this.subject()); value += exValue1 + exValue2; } if (baseValue < 0) { isRecover = true; var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 3, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 3, value, this.subject()); value -= exValue1 + exValue2; } if (!isRecover) { //计算伤害减免 var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 12, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 12, value, this.subject()); value -= exValue1 + exValue2; value = value > 0 ? value : 0; } //value = this.applyVariance(value, item.damage.variance); //value = this.applyGuard(value, target); } else if (target.isEnemy()) { var actor = this.subject(); if (actor && actor.isActor()) { //插入元素直接伤害 var baseValue = this.evalDamageFormula(actor); var elementId = this.item().damage.elementId; var exValue = BattleManager.ZzyFBFElParamValueOfActor(elementId, actor); if (baseValue < 0) { value -= exValue; value = value < 0 ? value : 0; } else { value += exValue; value = value > 0 ? value : 0; } } } value = Math.round(value); return value; }; //TP补充率 Zzy.FBF.Game_Action_applyItemUserEffect = Game_Action.prototype.applyItemUserEffect; Game_Action.prototype.applyItemUserEffect = function (target) { Zzy.FBF.Game_Action_applyItemUserEffect.call(this, target); if (target.isActor()) { var value = Math.floor(this.item().tpGain * this.subject().tcr); var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 6, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 6, value, this.subject()); this.subject().gainSilentTp(exValue1 + exValue2); } }; Zzy.FBF.Game_Action_itemEffectRecoverHp = Game_Action.prototype.itemEffectRecoverHp; Game_Action.prototype.itemEffectRecoverHp = function (target, effect) { Zzy.FBF.Game_Action_itemEffectRecoverHp.call(this, target, effect); if (target.isActor() && this.isItem()) { var value = (target.mhp * effect.value1 + effect.value2) * target.rec; var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 4, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 4, value, this.subject()); value += exValue1 + exValue2; } value = Math.floor(value); if (value !== 0) { target.gainHp(value); this.makeSuccess(target); } }; Zzy.FBF.Game_Action_itemEffectRecoverMp = Game_Action.prototype.itemEffectRecoverMp; Game_Action.prototype.itemEffectRecoverMp = function (target, effect) { Zzy.FBF.Game_Action_itemEffectRecoverMp.call(this, target, effect); if (target.isActor() && this.isItem()) { var value = (target.mmp * effect.value1 + effect.value2) * target.rec; var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 4, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 4, value, this.subject()); value += exValue1 + exValue2; } value = Math.floor(value); if (value !== 0) { target.gainMp(value); this.makeSuccess(target); } }; Zzy.FBF.Game_Action_applyGuard = Game_Action.prototype.applyGuard; Game_Action.prototype.applyGuard = function (damage, target) { if (target.isActor()) { var exValue1 = Zzy.FBF.SpParamValueOfActor(target, 2, this.subject()); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(target, 2, target.grd, this.subject()); var result = exValue1 + exValue2 + target.grd; return damage / (damage > 0 && target.isGuard() ? 2 * result : 1); } return Zzy.FBF.Game_Action_applyGuard.call(this, damage, target); }; //============================================================================= //Game_Unit //============================================================================= Game_Unit.prototype.tgrSum = function () { return this.aliveMembers().reduce(function (r, member) { var exValue1 = Zzy.FBF.SpParamValueOfActor(member, 1); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(member, 1, member.tgr); return r + member.tgr + exValue1 + exValue2; }, 0); }; Game_Unit.prototype.randomTarget = function () { var tgrRand = Math.random() * this.tgrSum(); var target = null; this.aliveMembers().forEach(function (member) { var exValue1 = Zzy.FBF.SpParamValueOfActor(member, 1); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(member, 1, member.tgr); tgrRand -= member.tgr + exValue1 + exValue2; if (tgrRand <= 0 && !target) { target = member; } }); return target; }; //============================================================================= //Game_Player //============================================================================= Zzy.FBF.Game_Player_makeEncounterCount = Game_Player.prototype.makeEncounterCount; Game_Player.prototype.makeEncounterCount = function () //遇敌人步数 { Zzy.FBF.Game_Player_makeEncounterCount.call(this); var totalV1 = 0; var totalV2 = 0; for (var i = 0; i < $gameParty._actors.length; i++) { var actorId = $gameParty._actors[i]; var actor = $gameActors.actor(actorId); totalV1 += Zzy.FBF.SpParamValueOfActor(actor, 16); totalV2 += Zzy.FBF.SpParamPerValueOfActor(actor, 16, this._encounterCount); } this._encounterCount += totalV1; this._encounterCount += totalV2; }; //============================================================================= //BattleManager //============================================================================= BattleManager.ZzyFBFElParamPerValueOfActor = function (elementId, target, enemy) { var actor = target; //遍历所有领域 var formula = undefined; var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(actor.actorId()); var exPer = 0; for (var i = 0; i < useArr.length; i++) { var item = useArr[i]; if (item.zzyFBF.elParamPer[elementId] !== undefined) { formula = item.zzyFBF.elParamPer[elementId]; exPer += $gameSystem.EvalZzyFBFFormula1(formula, actor, enemy); exPer = exPer ? exPer : 0; } } return exPer * 0.01; }; BattleManager.ZzyFBFElParamValueOfActor = function (elementId, target) { var actor = target; //遍历所有领域 var formula = undefined; var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(actor.actorId()); var exValue = 0; for (var i = 0; i < useArr.length; i++) { var item = useArr[i]; if (item.zzyFBF.elParam[elementId] !== undefined) { formula = item.zzyFBF.elParam[elementId]; exValue += $gameSystem.EvalZzyFBFFormula1(formula, actor); exValue = exValue ? exValue : 0; } } return exValue; }; //增加金币 Zzy.FBF.BattleManager_gainGold = BattleManager.gainGold; BattleManager.gainGold = function () { Zzy.FBF.BattleManager_gainGold.call(this); var gold = this._rewards.gold; //原始金币 var totalV1 = 0; var totalV2 = 0; for (var i = 0; i < $gameParty._actors.length; i++) { var actorId = $gameParty._actors[i]; var actor = $gameActors.actor(actorId); totalV1 += Zzy.FBF.SpParamValueOfActor(actor, 11); totalV2 += Zzy.FBF.SpParamPerValueOfActor(actor, 11, gold); } $gameParty.gainGold(totalV1 + totalV2); }; BattleManager.ZzyFBFSetExParamValueOfActor = function (exParamId, target, exSrcValue, enemy) { exSrcValue = exSrcValue ? exSrcValue : 0; var actor = target; //遍历所有领域 var formula = undefined; var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(actor.actorId()); var exValue = 0; var exValuePer = 0; for (var i = 0; i < useArr.length; i++) { var item = useArr[i]; if (item.zzyFBF.exParam[exParamId] !== undefined) { formula = item.zzyFBF.exParam[exParamId]; exValue += $gameSystem.EvalZzyFBFFormula1(formula, actor, enemy); exValue = exValue ? exValue : 0; } if (item.zzyFBF.exParamPer[exParamId] !== undefined) { formula = item.zzyFBF.exParamPer[exParamId]; exValuePer += $gameSystem.EvalZzyFBFFormula1(formula, actor, enemy); exValuePer = exValuePer ? exValuePer : 0; } } return exValue + exSrcValue * exValuePer * 0.01; }; //逃跑 Zzy.FBF.BattleManager_BattleManager = BattleManager.makeEscapeRatio; BattleManager.makeEscapeRatio = function () { Zzy.FBF.BattleManager_BattleManager.call(this); //改变逃跑概率 var actorArr = $gameParty.battleMembers(); for (var i = 0; i < actorArr.length; i++) { var value = Zzy.FBF.SpParamValueOfActor(actorArr[i], 13); this._escapeRatio += value * 0.01; } }; //先发制人 Zzy.FBF.BattleManager_ratePreemptive = BattleManager.ratePreemptive; BattleManager.ratePreemptive = function () //先发制人概率 { var rate = Zzy.FBF.BattleManager_ratePreemptive.call(this); var exRate = 0; var actorArr = $gameParty.battleMembers(); for (var i = 0; i < actorArr.length; i++) { var value = Zzy.FBF.SpParamValueOfActor(actorArr[i], 14); exRate += value * 0.01; } return rate + exRate; }; //被偷袭 Zzy.FBF.BattleManager_rateSurprise = BattleManager.rateSurprise; BattleManager.rateSurprise = function () { var rate = Zzy.FBF.BattleManager_rateSurprise.call(this); var exRate = 0; var actorArr = $gameParty.battleMembers(); for (var i = 0; i < actorArr.length; i++) { var value = Zzy.FBF.SpParamValueOfActor(actorArr[i], 15); exRate += value * 0.01; } return rate + exRate; }; //============================================================================= //Game_BattlerBase //============================================================================= Zzy.FBF.Game_BattlerBase_skillMpCost = Game_BattlerBase.prototype.skillMpCost; Game_BattlerBase.prototype.skillMpCost = function (skill) { var value = Zzy.FBF.Game_BattlerBase_skillMpCost.call(this, skill); if (this.isActor() && skill.id !== 1 && skill.id !== 2) { //排除攻击和防御 var exValue1 = Zzy.FBF.SpParamValueOfActor(this, 5); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(this, 5, value); return Math.floor(value + exValue1 + exValue2); } return value; }; //============================================================================= //Game_Battler //============================================================================= //TP补充率 Zzy.FBF.Game_Battler_chargeTpByDamage = Game_Battler.prototype.chargeTpByDamage; Game_Battler.prototype.chargeTpByDamage = function (damageRate) { Zzy.FBF.Game_Battler_chargeTpByDamage.call(this, damageRate); if (this.isActor()) { var value = Math.floor(50 * damageRate * this.tcr); var exValue1 = Zzy.FBF.SpParamValueOfActor(this, 6); var exValue2 = Zzy.FBF.SpParamPerValueOfActor(this, 6, value); this.gainSilentTp(exValue1 + exValue2); } }; Zzy.FBF.Game_Battler_regenerateHp = Game_Battler.prototype.regenerateHp; //HP自动恢复 Game_Battler.prototype.regenerateHp = function () { Zzy.FBF.Game_Battler_regenerateHp.call(this); var exValue = 0; var exSrcValue = Math.floor(this.mhp); if (this.isActor()) { exValue = BattleManager.ZzyFBFSetExParamValueOfActor(7, this, exSrcValue); if (exValue !== 0) { this.gainHp(exValue); } } }; Zzy.FBF.Game_Battler_regenerateMp = Game_Battler.prototype.regenerateMp; //MP自动恢复 Game_Battler.prototype.regenerateMp = function () { Zzy.FBF.Game_Battler_regenerateMp.call(this); var exValue = 0; var exSrcValue = Math.floor(this.mmp); if (this.isActor()) { exValue = BattleManager.ZzyFBFSetExParamValueOfActor(8, this, exSrcValue); if (exValue !== 0) { this.gainMp(exValue); } } }; Zzy.FBF.Game_Battler_regenerateTp = Game_Battler.prototype.regenerateTp; //TP自动恢复 Game_Battler.prototype.regenerateTp = function () { Zzy.FBF.Game_Battler_regenerateTp.call(this); var exValue = 0; var exSrcValue = Math.floor(100); if (this.isActor()) { exValue = BattleManager.ZzyFBFSetExParamValueOfActor(9, this, exSrcValue); if (exValue !== 0) { this.gainSilentTp(exValue); } } }; //-----------------------------------------------Zzy.FBF.Function------------------------------------------ Zzy.FBF.OpenFieldOfActor = function ( actorId //调用打开一个角色的领域 ) { if (!$gameActors.actor(actorId)) { console.log("Error:来自LiuYue_FileBless,检查Open指令填写角色ID是否正确"); return; } if (!(SceneManager._scene instanceof Scene_Map)) { console.log("Error:来自LiuYue_FileBless,请在地图界面使用Open指令"); return; } $gameSystem.SetZzyFBFSelectActorIndex(actorId); SceneManager.push(Scene_ZzyFBF); //压入场景 }; Zzy.FBF.OpenFieldOfParty = function (index) { var actorId = $gameParty._actors[index]; if (!actorId) { console.log("Error:来自LiuYue_FileBless,检查Open指令填写队伍队员ID是否正确"); return; } Zzy.FBF.OpenFieldOfActor(actorId); }; Zzy.FBF.PlaySE = function ( soundID //播放声音 ) { var se = Zzy.Param.FBFAllSE[soundID]; if (se && se.name) { AudioManager.playSe(se); } }; Zzy.FBF.KeepNumber = function (num) { if (num === undefined || num === NaN) { return 0; } return num; }; Zzy.FBF.StringToIntArr = function (str) { var strArr = str.split("str"); var len = strArr.length; var intArr = []; for (var i = 0; i < len; i++) { intArr[i] = parseInt(strArr[i]); } return intArr; }; Zzy.FBF.SpParamValueOfActor = function (actor, spParamId, target) { var formula = undefined; var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(actor.actorId()); var spValue = 0; for (var i = 0; i < useArr.length; i++) { var item = useArr[i]; if (item.zzyFBF.spParam[spParamId] !== undefined) { formula = item.zzyFBF.spParam[spParamId]; spValue += $gameSystem.EvalZzyFBFFormula1(formula, actor, target); spValue = spValue ? spValue : 0; } } return spValue; }; Zzy.FBF.SpParamPerValueOfActor = function (actor, spParamId, srcParam, target) { srcParam = srcParam ? srcParam : 0; var formula = undefined; var useArr = $gameSystem.GetZzyFBFActorFieldUseArr(actor.actorId()); var spValuePer = 0; for (var i = 0; i < useArr.length; i++) { var item = useArr[i]; if (item.zzyFBF.spParamPer[spParamId] !== undefined) { formula = item.zzyFBF.spParamPer[spParamId]; spValuePer += $gameSystem.EvalZzyFBFFormula1(formula, actor, target); spValuePer = spValuePer ? spValuePer : 0; } } return srcParam * spValuePer * 0.01; }; //-----------------------------------------------Zzy.FBF.Function------------------------------------------ Zzy.FBF.EnableMenu = function (enable) { $gameSystem.SetZzyFBFEnableMenu(enable); }; Zzy.FBF.InsertMenu = function (enable) { $gameSystem.SetZzyFBFInsertMenu(enable); }; Zzy.FBF.CommandName = function (commandText) { $gameSystem.SetZzyFBFMenuCommandName(commandText); }; Zzy.FBF.EnableSMenu = function (enable) { $gameSystem.SetZzyFBFEnableSMenu(enable); }; Zzy.FBF.InsertSMenu = function (enable) { $gameSystem.SetZzyFBFInsertSMenu(enable); }; Zzy.FBF.SCommandName = function (commandText) { $gameSystem.SetZzyFBFSMenuCommandName(commandText); }; Zzy.FBF.OpenActor = function (actorId) { Zzy.FBF.OpenFieldOfActor(actorId); }; Zzy.FBF.OpenParty = function (index) { Zzy.FBF.OpenFieldOfParty(index); }; Zzy.FBF.EnableActorFB = function (enable) { $gameSystem.SetZzyFBFEnableActorFB(enable); }; Zzy.FBF.MaxCount = function (formula) { $gameSystem.SetZzyFBFMaxFieldCount(formula); }; Zzy.FBF.CurrentCount = function (formula) { $gameSystem.SetZzyFBFCurrentFieldCount(formula); }; Zzy.FBF.MemoryCount = function (count) { $gameSystem.SetZzyFBFMemoryCount(count); }; Zzy.FBF.ForceUnInstallAll = function (actorId) { $gameSystem.ZzyFBFForceUnInstallAll(actorId); };