Project1

标题: 如何设定一个跟SP消耗量有关的技能 [打印本页]

作者: porlutia    时间: 2017-4-2 19:12
标题: 如何设定一个跟SP消耗量有关的技能
我想设计一个 技能威力跟全队已消耗的SP挂钩的技能  目前思路是:
一个技能[S1]连接到一个公共事件中
公共事件中用脚本计算变量
然后把这个变量..先暂时称为lLEFT_SP把   把LEFT_SP赋值给另一个变量...称其为POWER把   
然后 强制行动该角色 使其使用另一个技能...[S2]
然后  利用自定义技能公式脚本 修饰一下S2 #F: ( 威力 + V[POWER] ) * b.index/2

思路是这样 然后关键是这个LEFT_SP..全队的剩余SP的值该如何用公共事件计算
作者: guoxiaomi    时间: 2017-4-3 01:23
本帖最后由 guoxiaomi 于 2017-4-3 01:25 编辑

事件脚本:如果死亡的角色不算的话这么做,否则删掉第 3 行
  1. leftsp = 0
  2. $game_party.actors.each do |a|
  3.   next if a.dead? # a死亡就不算
  4.   leftsp = leftsp + a.maxsp - a.sp
  5. end
  6. $game_variables[1] = leftsp
复制代码


事件的话,就只能判断队伍里的角色,然后计算maxsp - sp的总和了。
作者: 芯☆淡茹水    时间: 2017-4-3 08:30
本帖最后由 芯☆淡茹水 于 2017-4-3 08:53 编辑
  1. #全队剩余SP
  2. $game_variables[1] = 0
  3. $game_party.actors.each{|a| $game_variables[1] += a.sp unless a.dead?}
复制代码


如果用到技能伤害算法里,就不得不考虑敌人,可以先直接弄一个剩余SP加威力的函数,比如叫 sp_power

RUBY 代码复制
  1. #==============================================================================
  2. class Game_Battler
  3.   #--------------------------------------------------------------------------
  4.   def sp_power
  5.     target = self.is_a?(Game_Actor) ? $game_party.actors.clone : $game_troop.enemies.clone
  6.     power = 0
  7.     target.each{|t| power += t.sp if t.exist?}
  8.     return power
  9.   end
  10. end
  11. #==============================================================================


然后在技能伤害计算式里,user.sp_power  代表队伍剩余SP量,角色/敌人都有效。再根据技能ID改一下伤害计算式就行了。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1