设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3640|回复: 30
打印 上一主题 下一主题

重定义战斗计算内容(部分)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
142
在线时间
70 小时
注册时间
2006-5-14
帖子
882
跳转到指定楼层
1
发表于 2008-5-2 18:39:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
因为本人脚本是文盲级别的,所以要求高人最好给出独立脚(一个或一组)没办法,不得不求教了!(也是为了以后能方便修改)
具体内容如下(重定义了部分计算方式,主要目的弱化速度对CP制游戏的影响,强化其他能力对游戏的影响,免得让玩家在分配点上只加速度就可无敌的问题.其他没提到的内容就都按默认的算):

第二命中率判定
伤害值为正数
B 为正常状态
回避力 = (B的灵巧-A的灵巧) ÷ B 的灵巧×50 + B 的回避修正 (当结果为负时,回避力=0)
普通攻击
第二命中率 = 100 - 回避力
技能攻击
第二命中率 = (100 -回避力) ×120% - 技能的回避 F
(纯魔法技能命中率=100-技能的回避 F)
使用物品
第二命中率 = 100
B 附加有「不能回避攻击」状态
第二命中率 = 100
伤害值为负数(回复)
第二命中率 = 100
必杀机率判定
普通攻击
必杀率 = 8 × B 的灵巧 ÷ A 的灵巧
技能攻击
必杀率 = 15 × B 的灵巧 ÷ A 的灵巧
(纯魔法技能必杀率 = 20 × B 的灵巧 ÷ A 的灵巧)
(回复系技能必杀率 =0)
使用物品
必杀率 = 0
•        必杀率即奋力一击(通常会使敌方常受到较大的损伤)发生的机率,如果必杀率为 8 则表示每 8 个回合就出现一次奋力一击。
会心一击伤害计算
普通攻击会心一击
     普通攻击伤害×2
技能攻击会心一击
技能攻击伤害最大化(就是默认计算方式中受分散度影响而能打出的最大伤害值)
纯魔法攻击会心一击
技能攻击伤害最大化(就是默认计算方式中受分散度影响而能打出的最大伤害值)×125%
其他设定
A物理防御力=装备物防+(A力量 ÷ 10)(小数点后面无视)
A魔法防御力=装备魔防+(A魔力 ÷ 10)(小数点后面无视)






Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
2
发表于 2008-5-2 18:45:04 | 只看该作者
LZ改为 悬赏 光顾的人教多哦~~
[url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg]http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg[/url][FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png[/url][/FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
142
在线时间
70 小时
注册时间
2006-5-14
帖子
882
3
 楼主| 发表于 2008-5-2 18:47:38 | 只看该作者
马上改
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
27 小时
注册时间
2008-2-13
帖子
1740
4
发表于 2008-5-2 19:15:45 | 只看该作者
苦力活

我只能告诉LZ在Game_Battler 3里面改

self.的意思是“B的”
attacker.的意思是“A的”

str是力量
dex是灵巧
agi是速度
int是魔力
hit是命中率
atk是攻击力
pdef是物理防御
mdef是魔法防御
eva是回避修正
damage是伤害
rand(N)  N为数字
       是从0到N-1之间随机取出1个数字
critical是会心一击的标志,分true和false
if ..else.. end的句式是条件分歧,当什么什么的情况,执行什么,除此以外,执行什么
state?(状态ID)的意思是中了状态ID为括号中的状态

就是这些语句不断组合成LZ所说的

比如说伤害大于0:
if self.damage>0
  XXX
end

B的灵巧-A的灵巧:
self.dex - attacker.dex

攻击者会心一击
attacker.critical = true

几率问题:90%
if rand(100) < 90
  XXX
else
  XXX
end

等等
好吧,果然换个签名就没人认识我了。我承认我被时间埋没了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
142
在线时间
70 小时
注册时间
2006-5-14
帖子
882
5
 楼主| 发表于 2008-5-2 19:20:12 | 只看该作者
对了,为了彩虹神剑,我对Game_Battler 3有改动:改动如下(免得你们改时有冲突):

  1. #==============================================================================
  2. # ■ Game_Battler (分割定义 3)
  3. #------------------------------------------------------------------------------
  4. #  处理战斗者的类。这个类作为 Game_Actor 类与 Game_Enemy 类的
  5. # 超级类来使用。
  6. #==============================================================================

  7. class Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 可以使用特技的判定
  10.   #     skill_id : 特技 ID
  11.   #--------------------------------------------------------------------------
  12.   def skill_can_use?(skill_id)
  13.     # SP 不足的情况下不能使用
  14.     if $data_skills[skill_id].sp_cost > self.sp
  15.       return false
  16.     end
  17.     # 战斗不能的情况下不能使用
  18.     if dead?
  19.       return false
  20.     end
  21.     # 沉默状态的情况下、物理特技以外的特技不能使用
  22.     if $data_skills[skill_id].atk_f == 0 and self.restriction == 1
  23.       return false
  24.     end
  25.     # 获取可以使用的时机
  26.     occasion = $data_skills[skill_id].occasion
  27.     # 战斗中的情况下
  28.     if $game_temp.in_battle
  29.       # [平时] 或者是 [战斗中] 可以使用
  30.       return (occasion == 0 or occasion == 1)
  31.     # 不是战斗中的情况下
  32.     else
  33.       # [平时] 或者是 [菜单中] 可以使用
  34.       return (occasion == 0 or occasion == 2)
  35.     end
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 应用通常攻击效果
  39.   #     attacker : 攻击者 (battler)
  40.   #--------------------------------------------------------------------------
  41.   def attack_effect(attacker)
  42.     ############################################
  43.     #初始化变量
  44.      $SP判定 = 1
  45.      ###########################################
  46.     # 清除会心一击标志
  47.     self.critical = false
  48.     # 第一命中判定
  49.     hit_result = (rand(100) < attacker.hit)
  50.     # 命中的情况下
  51.     if hit_result == true
  52.       # 计算基本伤害
  53.       atk = [attacker.atk - self.pdef / 2, 0].max
  54.       self.damage = atk * (20 + attacker.str) / 20
  55.       # 属性修正
  56.       self.damage *= elements_correct(attacker.element_set)
  57.       self.damage /= 100
  58.       # 伤害符号正确的情况下
  59.       if self.damage > 0
  60.         # 会心一击修正
  61.         if rand(100) < 4 * attacker.dex / self.agi
  62.           self.damage *= 2
  63.           self.critical = true
  64.         end
  65.         # 防御修正
  66.         if self.guarding?
  67.           self.damage /= 2
  68.         end
  69.       end
  70.       # 分散
  71.       if self.damage.abs > 0
  72.         amp = [self.damage.abs * 15 / 100, 1].max
  73.         self.damage += rand(amp+1) + rand(amp+1) - amp
  74.       end
  75.       # 第二命中判定
  76.       eva = 8 * self.agi / attacker.dex + self.eva
  77.       hit = self.damage < 0 ? 100 : 100 - eva
  78.       hit = self.cant_evade? ? 100 : hit
  79.       hit_result = (rand(100) < hit)
  80.     end
  81.     # 命中的情况下
  82.     if hit_result == true
  83.       # 状态冲击解除
  84.       remove_states_shock
  85.       # HP 的伤害计算
  86.       self.hp -= self.damage
  87.       # 状态变化
  88.       @state_changed = false
  89.       states_plus(attacker.plus_state_set)
  90.       states_minus(attacker.minus_state_set)
  91.     # Miss 的情况下
  92.     else
  93.       # 伤害设置为 "Miss"
  94.       self.damage = "Miss"
  95.       # 清除会心一击标志
  96.       self.critical = false
  97.     end
  98.     # 过程结束
  99.     return true
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 应用特技效果
  103.   #     user  : 特技的使用者 (battler)
  104.   #     skill : 特技
  105.   #--------------------------------------------------------------------------
  106.   def skill_effect(user, skill)
  107.      ############################################
  108.     #初始化变量
  109.      $SP判定 = 1
  110.      ###########################################
  111.     # 清除会心一击标志
  112.     self.critical = false
  113.     # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  114.     # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  115.     if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
  116.        ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
  117.       # 过程结束
  118.       return false
  119.     end
  120.     # 清除有效标志
  121.     effective = false
  122.     # 公共事件 ID 是有效的情况下,设置为有效标志
  123.     effective |= skill.common_event_id > 0
  124.     # 第一命中判定
  125.     hit = skill.hit
  126.     if skill.atk_f > 0
  127.       hit *= user.hit / 100
  128.     end
  129.     hit_result = (rand(100) < hit)
  130.     # 不确定的特技的情况下设置为有效标志
  131.     effective |= hit < 100
  132.     # 命中的情况下
  133.     if hit_result == true
  134.       # 计算威力
  135.       power = skill.power + user.atk * skill.atk_f / 100
  136.       if power > 0
  137.         power -= self.pdef * skill.pdef_f / 200
  138.         power -= self.mdef * skill.mdef_f / 200
  139.         power = [power, 0].max
  140.       end
  141.       # 计算倍率
  142.       rate = 20
  143.       rate += (user.str * skill.str_f / 100)
  144.       rate += (user.dex * skill.dex_f / 100)
  145.       rate += (user.agi * skill.agi_f / 100)
  146.       rate += (user.int * skill.int_f / 100)
  147.       # 计算基本伤害
  148.       self.damage = power * rate / 20
  149.       # 属性修正
  150.       self.damage *= elements_correct(skill.element_set)
  151.       self.damage /= 100
  152.       # 伤害符号正确的情况下
  153.       if self.damage > 0
  154.         # 防御修正
  155.         if self.guarding?
  156.           self.damage /= 2
  157.         end
  158.       end
  159.       # 分散
  160.       if skill.variance > 0 and self.damage.abs > 0
  161.         amp = [self.damage.abs * skill.variance / 100, 1].max
  162.         self.damage += rand(amp+1) + rand(amp+1) - amp
  163.       end
  164.       # 第二命中判定
  165.       eva = 8 * self.agi / user.dex + self.eva
  166.       hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
  167.       hit = self.cant_evade? ? 100 : hit
  168.       hit_result = (rand(100) < hit)
  169.       # 不确定的特技的情况下设置为有效标志
  170.       effective |= hit < 100
  171.     end
  172.     # 命中的情况下
  173.     if hit_result == true
  174.       # 威力 0 以外的物理攻击的情况下
  175.       if skill.power != 0 and skill.atk_f > 0
  176.         # 状态冲击解除
  177.         remove_states_shock
  178.         # 设置有效标志
  179.         effective = true
  180.       end
  181.       # HP 的伤害减法运算
  182.       #########################################################
  183.       if skill.element_set ==[20]   #当技能的属性为20号属性时
  184.              $SP判定 = 2
  185.       last_sp = self.sp
  186.       self.sp -= self.damage
  187.       effective |= self.sp != last_sp
  188.     else
  189.       last_hp = self.hp
  190.       self.hp -= self.damage
  191.       effective |= self.hp != last_hp
  192.     end
  193.     ###########################################################
  194.       # 状态变化
  195.       @state_changed = false
  196.       effective |= states_plus(skill.plus_state_set)
  197.       effective |= states_minus(skill.minus_state_set)
  198.       # 威力为 0 的场合
  199.       if skill.power == 0
  200.         # 伤害设置为空的字串
  201.         self.damage = ""
  202.         # 状态没有变化的情况下
  203.         unless @state_changed
  204.           # 伤害设置为 "Miss"
  205.           self.damage = "Miss"
  206.         end
  207.       end
  208.     # Miss 的情况下
  209.     else
  210.       # 伤害设置为 "Miss"
  211.       self.damage = "Miss"
  212.     end
  213.     # 不在战斗中的情况下
  214.     unless $game_temp.in_battle
  215.       # 伤害设置为 nil
  216.       self.damage = nil
  217.     end
  218.     # 过程结束
  219.     return effective
  220.   end
  221.   #--------------------------------------------------------------------------
  222.   # ● 应用物品效果
  223.   #     item : 物品
  224.   #--------------------------------------------------------------------------
  225.   def item_effect(item)
  226.     ############################################
  227.     #初始化变量
  228.      $SP判定 = 1
  229.      ###########################################
  230.     # 清除会心一击标志
  231.     self.critical = false
  232.     # 物品的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
  233.     # 或者物品的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
  234.     if ((item.scope == 3 or item.scope == 4) and self.hp == 0) or
  235.        ((item.scope == 5 or item.scope == 6) and self.hp >= 1)
  236.       # 过程结束
  237.       return false
  238.     end
  239.     # 清除有效标志
  240.     effective = false
  241.     # 公共事件 ID 是有效的情况下,设置为有效标志
  242.     effective |= item.common_event_id > 0
  243.     # 命中判定
  244.     hit_result = (rand(100) < item.hit)
  245.     # 不确定的特技的情况下设置为有效标志
  246.     effective |= item.hit < 100
  247.     # 命中的情况
  248.     if hit_result == true
  249.       # 计算回复量
  250.       recover_hp = maxhp * item.recover_hp_rate / 100 + item.recover_hp
  251.       recover_sp = maxsp * item.recover_sp_rate / 100 + item.recover_sp
  252.       if recover_hp < 0
  253.         recover_hp += self.pdef * item.pdef_f / 20
  254.         recover_hp += self.mdef * item.mdef_f / 20
  255.         recover_hp = [recover_hp, 0].min
  256.       end
  257.       # 属性修正
  258.       recover_hp *= elements_correct(item.element_set)
  259.       recover_hp /= 100
  260.       recover_sp *= elements_correct(item.element_set)
  261.       recover_sp /= 100
  262.       # 分散
  263.       if item.variance > 0 and recover_hp.abs > 0
  264.         amp = [recover_hp.abs * item.variance / 100, 1].max
  265.         recover_hp += rand(amp+1) + rand(amp+1) - amp
  266.       end
  267.       if item.variance > 0 and recover_sp.abs > 0
  268.         amp = [recover_sp.abs * item.variance / 100, 1].max
  269.         recover_sp += rand(amp+1) + rand(amp+1) - amp
  270.       end
  271.       # 回复量符号为负的情况下
  272.       if recover_hp < 0
  273.         # 防御修正
  274.         if self.guarding?
  275.           recover_hp /= 2
  276.         end
  277.       end
  278.       # HP 回复量符号的反转、设置伤害值
  279.       self.damage = -recover_hp
  280.       # HP 以及 SP 的回复
  281.       #########################################
  282.       last_sp = self.sp
  283.      self.sp += recover_sp
  284.      if recover_sp != 0   #如果补SP的量不等于0
  285.        $SP判定 = 2
  286.       self.damage = -recover_sp  #伤害=SP恢复量的倒数
  287.     end
  288.      effective |= self.sp != last_sp      
  289.      last_hp = self.hp
  290.      self.hp += recover_hp
  291.      effective |= self.hp != last_hp
  292.     ######################################################
  293.       # 状态变化
  294.       @state_changed = false
  295.       effective |= states_plus(item.plus_state_set)
  296.       effective |= states_minus(item.minus_state_set)
  297.       # 能力上升值有效的情况下
  298.       if item.parameter_type > 0 and item.parameter_points != 0
  299.         # 能力值的分支
  300.         case item.parameter_type
  301.         when 1  # MaxHP
  302.           @maxhp_plus += item.parameter_points
  303.         when 2  # MaxSP
  304.           @maxsp_plus += item.parameter_points
  305.         when 3  # 力量
  306.           @str_plus += item.parameter_points
  307.         when 4  # 灵巧
  308.           @dex_plus += item.parameter_points
  309.         when 5  # 速度
  310.           @agi_plus += item.parameter_points
  311.         when 6  # 魔力
  312.           @int_plus += item.parameter_points
  313.         end
  314.         # 设置有效标志
  315.         effective = true
  316.       end
  317.       # HP 回复率与回复量为 0 的情况下
  318.       #############################柳柳的方法
  319.       if item.recover_hp_rate == 0 and item.recover_hp == 0 and item.recover_sp_rate == 0 and item.recover_sp == 0  #原来只判断HP,现在附带判断SP
  320.         ############################
  321.         # 设置伤害为空的字符串
  322.         self.damage = ""
  323.         # SP 回复率与回复量为 0、能力上升值无效的情况下
  324.         if item.recover_sp_rate == 0 and item.recover_sp == 0 and
  325.            (item.parameter_type == 0 or item.parameter_points == 0)
  326.           # 状态没有变化的情况下
  327.           unless @state_changed
  328.             # 伤害设置为 "Miss"
  329.             self.damage = "Miss"
  330.           end
  331.         end
  332.       end
  333.     # Miss 的情况下
  334.     else
  335.       # 伤害设置为 "Miss"
  336.       self.damage = "Miss"
  337.     end
  338.     # 不在战斗中的情况下
  339.     unless $game_temp.in_battle
  340.       # 伤害设置为 nil
  341.       self.damage = nil
  342.     end
  343.     # 过程结束
  344.     return effective
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 应用连续伤害效果
  348.   #--------------------------------------------------------------------------
  349.   def slip_damage_effect
  350.     # 设置伤害
  351.     self.damage = self.maxhp / 10
  352.     # 分散
  353.     if self.damage.abs > 0
  354.       amp = [self.damage.abs * 15 / 100, 1].max
  355.       self.damage += rand(amp+1) + rand(amp+1) - amp
  356.     end
  357.     # HP 的伤害减法运算
  358.     self.hp -= self.damage
  359.     # 过程结束
  360.     return true
  361.   end
  362.   #--------------------------------------------------------------------------
  363.   # ● 属性修正计算
  364.   #     element_set : 属性
  365.   #--------------------------------------------------------------------------
  366.   def elements_correct(element_set)
  367.     # 無属性的情况
  368.     if element_set == []
  369.       # 返回 100
  370.       return 100
  371.     end
  372.     # 在被赋予的属性中返回最弱的
  373.     # ※过程 element_rate 是、本类以及继承的 Game_Actor
  374.     #   和 Game_Enemy 类的定义
  375.     weakest = -100
  376.     for i in element_set
  377.       weakest = [weakest, self.element_rate(i)].max
  378.     end
  379.     return weakest
  380.   end
  381. end
复制代码
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-12-15
帖子
238
6
发表于 2008-5-2 19:32:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

7
发表于 2008-5-2 19:36:06 | 只看该作者
描述得比較混亂|||

「物理防御力」 影響的是 「物理攻擊」 還是 「普通技能攻擊」?


按照樓主的描述,似乎技能分開 「普通」 與 「魔法」 兩類哦?


「必殺」好像是「會心」以外的附加值?二者似乎會重叠效果
系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

幻想

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-12-23
帖子
1016
8
发表于 2008-5-2 19:51:27 | 只看该作者
这个有点乱七八糟的感觉~~~~,我并非非常有耐心的人·····修改全部的话,测试修改,还要计算确认,苦力活啊~~~~
[url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg]http://rpg.blue/upload_program/d/菜鸟飞呀飞_love_111006892.jpg[/url][FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yz_tb_111008420.png[/url][/FLY][url=http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png]http://rpg.blue/upload_program/d/菜鸟飞呀飞_yzs_111008459.png[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
142
在线时间
70 小时
注册时间
2006-5-14
帖子
882
9
 楼主| 发表于 2008-5-2 19:53:14 | 只看该作者
啊,习GUAN了....会心一击=必杀一击
说明混乱???我这是按XP中的计算说明工公式改的,乱?

至于CP,等战斗系系充决定了再说(反证不能让速度这么强)
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
1 小时
注册时间
2007-12-15
帖子
238
10
发表于 2008-5-2 20:31:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-23 20:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表