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

Project1

 找回密码
 注册会员
搜索

如何不依靠状态的情况下,使防具可以增加某属性技能伤害

查看数: 101 | 评论数: 1 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-7-12 07:07

正文摘要:

本帖最后由 无忧谷主幻 于 2025-7-13 02:54 编辑 因为装备扩展,角色可能会装备2个同样的防具,这种情况还用状态法的话,只能享受1个装备的属性伤害提升 如何让装备本身附带属性的伤害提升?比如装备一个石手镯, ...

回复

灯笼菜刀王 发表于 7 天前
本帖最后由 灯笼菜刀王 于 2025-7-12 11:02 编辑
  1. module RPG
  2.   class Weapon
  3.     def description
  4.       description = @description.split(/#/)[0]
  5.       return description != nil ? description : ''
  6.     end
  7.     def 属强(ele_id)
  8.       @description =~ /E#{ele_id}([-+0-9]+)/ ;return $1.to_i
  9.     end
  10.   end
  11.   class Armor
  12.     def description
  13.       description = @description.split(/#/)[0]
  14.       return description != nil ? description : ''
  15.     end
  16.     def 属强(ele_id)
  17.       @description =~ /E#{ele_id}([-+0-9]+)/ ;return $1.to_i
  18.     end
  19.   end
  20.   class State
  21.     def name
  22.       name = @name.split(/#/)[0]
  23.       return (name || @name)
  24.     end
  25.     def 属强(ele_id)
  26.       @name =~ /E#{ele_id}([-+0-9]+)/ ;return $1.to_i
  27.     end
  28.   end
  29. end

  30. class Game_Actor < Game_Battler
  31.   def 属强(ele_list)
  32.     m = 100 ; f = [] ;7.times{|i| eval("f.push(@armor#{i + 1}_id)")}
  33.     ele_list.each{|i| if (a=$data_weapons[@weapon_id]) != nil ;m += a.属强(i) ;end ;
  34.     7.times{|j| if (a=$data_armors[f[j]]) != nil ;m += a.属强(i) ;end} ;
  35.     @states.each{|j| m += $data_states[j].属强(i)}}
  36.     return m / 100.0
  37.   end
  38. end

  39. class Game_Enemy < Game_Battler
  40.   def 属强(ele_list)
  41.     m = 100 ;ele_list.each{|i| @states.each{|j| m += $data_states[j].属强(i)}}
  42.     return m / 100.0
  43.   end
  44. end
复制代码


把这个脚本塞到main前, 你的道具分类脚本以下

然后在武器和防具的说明里, 用 #隔开, 然后写上 E1+20   这样表示 1号属性伤害 + 20%;  E8-10 这样表示 8号属性伤害 - 10% (E1+10不能有空格)
也可以用于状态, 在状态名称里一样用 # 隔开, 然后同样备注即可


▲#前是正常说明, @后面是分类标志, 备注就写在#和@中间, 可以复数属性加减, 此时技能如果带有复数属性, 会根据对应的设置对总倍率进行叠加计算, 注意如果计算结果小于0%就会变吸收了

然后, 到你的伤害公式里, 默认的话就搜索 def skill_effect(user, skill)  ; 找到 self.hp -= self.damage 这句, 上面加上  self.damage = (self.damage * user.属强(skill.element_set)).round

普通攻击搜索 def attack_effect(attacker) , 同样找到 self.hp -= self.damage,  上面加上 self.damage = (self.damage * attacker.属强(attacker.element_set)).round

没做测试, 有BUG再说


点评

感谢,一下子就解决了  发表于 6 天前

评分

参与人数 1+1 收起 理由
无忧谷主幻 + 1 认可答案

查看全部评分

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

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

GMT+8, 2025-7-19 09:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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