赞 | 6 |
VIP | 22 |
好人卡 | 15 |
积分 | 13 |
经验 | 97563 |
最后登录 | 2022-11-26 |
在线时间 | 831 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1323
- 在线时间
- 831 小时
- 注册时间
- 2007-12-25
- 帖子
- 1558
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
XP的默认战斗公式有点夸张,不过也没什么
该脚本对武器有了命中修正,会心率,角色本身有了防御力,跟魔防,敌人也有会心率
跟命中率(这些都可以直接填写,不过要放弃些不是很实用的属性)
对技能有了会心率,以及更改了下计算公式
大致跟火焰之文章的类同吧
- #============================================================================
- #
- # ●●作为XP的整核心战斗公式重新整理,很多东西不再是默认的使用前请看懂说明
- # 否则会莫名奇妙
- # 该脚本与装备扩充,不兼容不过稍作协调即可,另外属性扩从也需要协调
- #
- # ---------------------------------------------------------------------------
- # 新的装备属性设定
- # ●武器的会心几率 = 武器的灵巧
- # ●武器命中修正 = 武器的力量
- # ●实际攻击 = 力量 + 装备攻击
- #
- # 那么所有的防具的力量都改成攻击力了
- # 考虑到有些人希望升级有防御力
- # 为了方便设定,把灵巧改为防御(魔法防御的话,不同人的意见很不同,把魔力基础跟魔防基础)
- # ●实际防御 = 基础灵巧 + 装备防御力
- # ●实际魔防 = 基础魔力 + 装备魔防 (基础就是本身的,不加装备的属性)
- # 如果还需要防具如首饰也有会心几率的话
- # ●防具的会心几率 = 防具的灵巧
- # 关于怪物的相关属性,由于怪物没有装备,所以就设为默认
- # ●怪物的:命中 = 速度 + 力量,会心率 = 灵巧,躲闪 = 速度 + 回避修正(力量是干什么的?)
- # 最后战斗公式
- # ●攻击力 = 攻击 + 力量
-
- # ●伤害 = 攻击力 - 防御力
- # ●会心几率 = 会心几率(怪物,主角不一样啊)
- # ●命中率% = 武器命中 + 速度 - 敌方速度 -敌方回避修正
- #-------------------------------------------------------------------------------
- # 新的技能属性设定
- # 技能灵巧为技能会心率
- # 关于技能命中你可以做如下设定;
- # 当技能命中设定为0时,该技能没有自身命中,其命中与主角普通攻击时命中相同
- # 最终技能公式
- # ●伤害 = 技能威力 + (主角能力)* 相关度 - 敌人守备 * 相关度
- # ●会心率 = 技能灵巧
- #----------------暂时这样吧,大概跟火纹相似--------------------------------------------------------
- class Game_Actor < Game_Battler
- #--------是否为主角----------------------------------------------------
- def actor?
- true
- end
- #--------------------------------------------------------------------------
- # ● 获取基本力量
- #--------------------------------------------------------------------------
- def base_str
- n = $data_actors[@actor_id].parameters[2, @level]
- #weapon = $data_weapons[@weapon_id]
- #armor1 = $data_armors[@armor1_id]
- #armor2 = $data_armors[@armor2_id]
- #armor3 = $data_armors[@armor3_id]
- #armor4 = $data_armors[@armor4_id]
- #n += weapon != nil ? weapon.str_plus : 0
- #n += armor1 != nil ? armor1.str_plus : 0
- #n += armor2 != nil ? armor2.str_plus : 0
- #n += armor3 != nil ? armor3.str_plus : 0
- #n += armor4 != nil ? armor4.str_plus : 0
- return [[n, 1].max, 999].min
- end
- #--------------------------------------------------------------------------
- # ● 获取基本灵巧 — 这个是会心率啦!
- #--------------------------------------------------------------------------
- def base_dex
- #n = $data_actors[@actor_id].parameters[3, @level]
- weapon = $data_weapons[@weapon_id]
- armor1 = $data_armors[@armor1_id]
- armor2 = $data_armors[@armor2_id]
- armor3 = $data_armors[@armor3_id]
- armor4 = $data_armors[@armor4_id]
- armor5 = $data_armors[@armor5_id] if @armor5_id != nil
- armor6 = $data_armors[@armor6_id] if @armor6_id != nil
- n = weapon != nil ? weapon.dex_plus : 0
- n += armor1 != nil ? armor1.dex_plus : 0
- n += armor2 != nil ? armor2.dex_plus : 0
- n += armor3 != nil ? armor3.dex_plus : 0
- n += armor4 != nil ? armor4.dex_plus : 0
- n += armor5 != nil ? armor5.dex_plus : 0
- n += armor6 != nil ? armor6.dex_plus : 0
- return [[n, 1].max, 999].min
- end
- #--------------------------------------------------------------------------
- # ● 获取基本攻击力
- #--------------------------------------------------------------------------
- def base_atk
- n = $data_actors[@actor_id].parameters[2, @level]
- weapon = $data_weapons[@weapon_id]
- armor1 = $data_armors[@armor1_id]
- armor2 = $data_armors[@armor2_id]
- armor3 = $data_armors[@armor3_id]
- armor4 = $data_armors[@armor4_id]
- armor5 = $data_armors[@armor5_id] if @armor5_id != nil
- armor6 = $data_armors[@armor6_id] if @armor6_id != nil
- n += weapon != nil ? weapon.atk : 0
- n += armor1 != nil ? armor1.str_plus : 0
- n += armor2 != nil ? armor2.str_plus : 0
- n += armor3 != nil ? armor3.str_plus : 0
- n += armor4 != nil ? armor4.str_plus : 0
- n += armor5 != nil ? armor5.str_plus : 0
- n += armor6 != nil ? armor6.str_plus : 0
- return [[n, 1].max, 999].min
- end
- #--------------------------------------------------------------------------
- # ● 获取基本物理防御
- #--------------------------------------------------------------------------
- def base_pdef
- n = $data_actors[@actor_id].parameters[3, @level]
- weapon = $data_weapons[@weapon_id]
- armor1 = $data_armors[@armor1_id]
- armor2 = $data_armors[@armor2_id]
- armor3 = $data_armors[@armor3_id]
- armor4 = $data_armors[@armor4_id]
- armor5 = $data_armors[@armor5_id] if @armor5_id != nil
- armor6 = $data_armors[@armor6_id] if @armor5_id != nil
- pdef1 = weapon != nil ? weapon.pdef : 0
- pdef2 = armor1 != nil ? armor1.pdef : 0
- pdef3 = armor2 != nil ? armor2.pdef : 0
- pdef4 = armor3 != nil ? armor3.pdef : 0
- pdef5 = armor4 != nil ? armor4.pdef : 0
- pdef6 = armor5 != nil ? armor5.pdef : 0
- pdef7 = armor6 != nil ? armor6.pdef : 0
- return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 + pdef6 + pdef7 + n
- end
- #--------------------------------------------------------------------------
- # ● 获取基本魔法防御
- #--------------------------------------------------------------------------
- def base_mdef
- n = $data_actors[@actor_id].parameters[5, @level]
- weapon = $data_weapons[@weapon_id]
- armor1 = $data_armors[@armor1_id]
- armor2 = $data_armors[@armor2_id]
- armor3 = $data_armors[@armor3_id]
- armor4 = $data_armors[@armor4_id]
- armor5 = $data_armors[@armor5_id] if @armor5_id != nil
- armor6 = $data_armors[@armor6_id] if @armor5_id != nil
- mdef1 = weapon != nil ? weapon.mdef : 0
- mdef2 = armor1 != nil ? armor1.mdef : 0
- mdef3 = armor2 != nil ? armor2.mdef : 0
- mdef4 = armor3 != nil ? armor3.mdef : 0
- mdef5 = armor4 != nil ? armor4.mdef : 0
- mdef6 = armor5 != nil ? armor5.mdef : 0
- mdef7 = armor6 != nil ? armor6.mdef : 0
- return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 + mdef6 + mdef7 + n
- end
- #--------------------------------------------------------------------------
- # ● 获取修正命中率
- #--------------------------------------------------------------------------
- def base_hit
- weapon = $data_weapons[@weapon_id]
- return weapon != nil ? weapon.str_plus : 0
- end
- end
- #==============================================================================
- # ■ Game_Enemy
- #------------------------------------------------------------------------------
- # 处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
- # 内部使用。
- #==============================================================================
- class Game_Enemy < Game_Battler
- def actor?
- false
- end
- def base_hit
- return $data_enemies[@enemy_id].str
- end
- end
- #==============================================================================
- # ■ Game_Battler (分割定义 1)
- #------------------------------------------------------------------------------
- # 处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
- # 超级类来使用。
- #==============================================================================
- class Game_Battler
- #--------------------------------------------------------------------------
- # ● 获取命中修正
- #--------------------------------------------------------------------------
- def eva
- return base_hit
- end
- #--------------------------------------------------------------------------
- # ● 应用通常攻击效果
- # attacker : 攻击者 (battler)
- #--------------------------------------------------------------------------
- def attack_effect(attacker)
- # 清除会心一击标志
- self.critical = false
- # 第一命中判定
- hit_result = (rand(100) < attacker.hit + attacker.agi - self.agi - self.eva)
- # 命中的情况下
- if hit_result == true
- # 计算基本伤害
- self.damage = [attacker.atk - self.pdef , 0].max
- # 属性修正
- self.damage *= elements_correct(attacker.element_set)
- self.damage /= 100
- # 伤害符号正确的情况下
- if self.damage > 0
- # 会心一击修正
- if rand(100) < attacker.dex
- self.damage *= 3
- self.critical = true
- end
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- end
- # 分散
- if self.damage.abs > 0
- amp = [self.damage.abs * 15 / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
- # 第二命中判定
- end
- # 命中的情况下
- if hit_result == true
- # 状态冲击解除
- remove_states_shock
- # HP 的伤害计算
- self.hp -= self.damage
- # 状态变化
- @state_changed = false
- states_plus(attacker.plus_state_set)
- states_minus(attacker.minus_state_set)
- # Miss 的情况下
- else
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- # 清除会心一击标志
- self.critical = false
- end
- # 过程结束
- return true
- end
- #--------------------------------------------------------------------------
- # ● 应用特技效果
- # user : 特技的使用者 (battler)
- # skill : 特技
- #--------------------------------------------------------------------------
- def skill_effect(user, skill)
- # 清除会心一击标志
- self.critical = false
- # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
- # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
- if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
- ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
- # 过程结束
- return false
- end
- # 清除有效标志
- effective = false
- # 公共事件 ID 是有效的情况下,设置为有效标志
- effective |= skill.common_event_id > 0
- # 第一命中判定
- if skill.hit !=0
- hit = skill.hit
- else
- hit = user.hit + user.agi - self.agi - self.eva
- end
- if skill.atk_f > 0
- hit *= user.hit / 100
- end
- hit_result = (rand(100) < hit)
- # 不确定的特技的情况下设置为有效标志
- effective |= hit < 100
- # 命中的情况下
- if hit_result == true
- # 计算威力
- power = skill.power #+ user.atk * skill.atk_f / 100
- if power > 0
- power -= self.pdef * skill.pdef_f / 100
- power -= self.mdef * skill.mdef_f / 100
- power += (user.int * skill.int_f / 100)
- power += (user.atk * skill.atk_f / 100)
- else
- power -= (user.int * skill.int_f / 100)
- power -= (user.atk * skill.atk_f / 100)
- end
- # 计算倍率
- # rate = 20
- # rate += (user.str * skill.str_f / 100)
- # rate += (user.dex * skill.dex_f / 100)
- # rate += (user.agi * skill.agi_f / 100)
-
- # 计算基本伤害
- self.damage = power
- # 属性修正
- self.damage *= elements_correct(skill.element_set)
- self.damage /= 100
- # 伤害符号正确的情况下
- if self.damage > 0
- #h会心修正
- if rand(100) < skill.dex_f
- self.damage *= 3
- self.critical = true
- end
- # 防御修正
- if self.guarding?
- self.damage /= 2
- end
- end
- # 分散
- if skill.variance > 0 and self.damage.abs > 0
- amp = [self.damage.abs * skill.variance / 100, 1].max
- self.damage += rand(amp+1) + rand(amp+1) - amp
- end
-
- # 不确定的特技的情况下设置为有效标志
- effective |= hit < 100
- end
- # 命中的情况下
- if hit_result == true
- # 威力 0 以外的物理攻击的情况下
- if skill.power != 0 and skill.atk_f > 0
- # 状态冲击解除
- remove_states_shock
- # 设置有效标志
- effective = true
- end
- # HP 的伤害减法运算
- last_hp = self.hp
- self.hp -= self.damage
- effective |= self.hp != last_hp
- # 状态变化
- @state_changed = false
- effective |= states_plus(skill.plus_state_set)
- effective |= states_minus(skill.minus_state_set)
- # 威力为 0 的场合
- if skill.power == 0
- # 伤害设置为空的字串
- self.damage = ""
- # 状态没有变化的情况下
- unless @state_changed
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- end
- # Miss 的情况下
- else
- # 伤害设置为 "Miss"
- self.damage = "Miss"
- end
- # 不在战斗中的情况下
- unless $game_temp.in_battle
- # 伤害设置为 nil
- self.damage = nil
- end
- # 过程结束
- return effective
- end
- end
-
-
-
-
-
-
复制代码
1.01更新版本,支持装备扩充到 6 个
如果一大堆说明看不懂的话就把最基本的几个更改记住就好了
可能的冲突,与装备系统有关的吧!不过调节下就可以了
|
|