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

Project1

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

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

[复制链接]

Lv4.逐梦者

素材区好人

梦石
3
星屑
8745
在线时间
3669 小时
注册时间
2011-7-21
帖子
2335

极短26参与极短25参与极短24参与极短23参与极短22参与极短21参与

跳转到指定楼层
1

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

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

x
本帖最后由 无忧谷主幻 于 2025-7-13 02:54 编辑

因为装备扩展,角色可能会装备2个同样的防具,这种情况还用状态法的话,只能享受1个装备的属性伤害提升
如何让装备本身附带属性的伤害提升?比如装备一个石手镯,土属性技能伤害会提升20%,若是装备2个石手镯,那么土属性技能伤害将会提升40%
整合工程
轩辕菜单 复杂物品分类.zip (486.85 KB, 下载次数: 1)

Lv5.捕梦者

梦石
0
星屑
39905
在线时间
5796 小时
注册时间
2006-11-10
帖子
6671
2
发表于 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 13:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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