ESS多版本 添加传说形态阿尔宙斯

ES泽洛

世末鸽者
管理员
元老
2022-08-04
226
14
286
2,116
23
安徽
www.esplus.club
使用或转载请注明出自宝可饭堂社区https://bbs.pokefans.cn/threads/9/
此教程适用于目前主流的Essentials18.1~20.1,其他版本的ESS未测试。
道具的PBS什么的,自己照着其他石板抄一遍。
代码的插入位置在变幻自如附近,全局搜Protean就行了。

Ruby:
#传说阿尔宙斯 by ES泽洛
#由鸭灭骡优化
    if isSpecies?(:ARCEUS) && move.id==getID(PBMoves,:JUDGMENT) && hasActiveItem?(:LEGENDPLATE) #当是阿尔宙斯,且特性是多属性,携带传说石板时
      current_form = 0      #默认初始形态
      current_type = "一般" #默认初始属性名称
      result_types = []     #克制属性
      resistance_type = []  #抵抗属性
      type3 = targets[0].effects[PBEffects::Type3]==-1 ? nil : targets[0].effects[PBEffects::Type3] #获取第三属性,第三属性是一种状态
      #处理克制属性
      for type in 0..PBTypes.maxValue
        e=PBTypes.getCombinedEffectiveness(type,targets[0].type1,targets[0].type2,type3) #计算克制倍率,基础为8,每克制一个属性x2
        if e>=64    #8倍克制
          result_types.push(type)
        else
          if e>=32  #4倍克制
            result_types.push(type)
          else
            if e>=16    #2倍克制
              result_types.push(type)
            end
          end
        end
      end
      #处理抵抗属性
      result_types.each do |type|
        e1 = PBTypes.getCombinedEffectiveness(targets[0].type1,type)
        e2 = PBTypes.getCombinedEffectiveness(targets[0].type2,type)
        e3 = (type3!=nil) ? PBTypes.getCombinedEffectiveness(type3,type) : 0
        if resistance_type==[]
          resistance_type.push(type)
          resistance_type.push(e1+e2+e3)
        else
          unless resistance_type[1] <= e1+e2+e3
            resistance_type=[type,e1+e2+e3]
          end
        end
      end
      current_form = resistance_type[0]
      current_type = PBTypes.getName(current_form)
      move.calcType = current_form  #改变制裁光砾的属性
      if user.form != current_form
        pbChangeForm(current_form,_INTL("{1}变成了{2}属性!",pbThis,current_type)) #改变阿尔宙斯的形态
      end
    end
Ruby:
#传说阿尔宙斯 by ES泽洛
#屎山不屎山的,就交给诸位去优化了
#=================================================================================================================
=begin
#注意:不知道为什么原版的hasActiveItem?(:LEGENDPLATE)会返回false,所以我改了下面这部分代码
  def hasActiveItem?(check_item, ignore_fainted = false)
    return false if !itemActive?(ignore_fainted)
    return check_item.include?(@item_id) if check_item.is_a?(Array)
    #return check_item == self.item         #原版
    return check_item == @item_id           #我改的
  end
=end
#=================================================================================================================
    if isSpecies?(:ARCEUS) && move.id == :JUDGMENT && hasActiveItem?(:LEGENDPLATE) #当是阿尔宙斯,且特性是多属性,携带传说石板时
      current_type = :NORMAL      #默认初始形态
      current_typeName = "一般" #默认初始属性名称
      result_types = []     #克制属性
      resistance_type = []  #抵抗属性
      type3 = targets[0].effects[PBEffects::Type3]==-1 ? nil : targets[0].effects[PBEffects::Type3] #获取第三属性,第三属性是一种状态
      #处理克制属性
      typeList = [
                  :NORMAL,:FIGHTING,:FLYING,:POISON,:GROUND,
                  :ROCK,:BUG,:GHOST,:STEEL,:QMARKS,
                  :FIRE,:WATER,:GRASS,:ELECTRIC,:PSYCHIC,
                  :ICE,:DRAGON,:DARK,:FAIRY
                 ]
      for type in typeList
        e=Effectiveness.calculate(type,targets[0].type1,targets[0].type2,type3) #计算克制倍率,基础为8,每克制一个属性x2
        if e>=64    #8倍克制
          result_types.push(type)
        else
          if e>=32  #4倍克制
            result_types.push(type)
          else
            if e>=16    #2倍克制
              result_types.push(type)
            end
          end
        end
      end
      #处理抵抗属性
      result_types.each do |type|
        e1 = Effectiveness.calculate(targets[0].type1,type)
        e2 = Effectiveness.calculate(targets[0].type2,type)
        e3 = (type3!=nil) ? Effectiveness.calculate(type3,type) : 0
        if resistance_type==[]
          resistance_type.push(type)
          resistance_type.push(e1+e2+e3)
        else
          unless resistance_type[1] <= e1+e2+e3
            resistance_type=[type,e1+e2+e3]
          end
        end
      end
      current_type = resistance_type[0]
      current_typeName = GameData::Type.get(current_type).name
      move.calcType = current_type  #改变制裁光砾的属性
      current_type_id = typeList.index(current_type)
      if user.form != current_type_id
        pbChangeForm(current_type_id,_INTL("{1}变成了{2}属性!",pbThis,current_typeName)) #改变阿尔宙斯的形态
      end
    end
Ruby:
#传说阿尔宙斯 by ES泽洛
    if isSpecies?(:ARCEUS) && move.id == :JUDGMENT && hasActiveItem?(:LEGENDPLATE) #当是阿尔宙斯,且特性是多属性,携带传说石板时
      current_type = :NORMAL      #默认初始形态
      current_typeName = "一般" #默认初始属性名称
      result_types = []     #克制属性
      resistance_type = []  #抵抗属性
      target_types = targets[0].pbTypes(true)
      #处理克制属性
      typeList = [
                  :NORMAL, :FIGHTING, :FLYING, :POISON, :GROUND,
                  :ROCK, :BUG, :GHOST, :STEEL, :QMARKS,
                  :FIRE, :WATER, :GRASS, :ELECTRIC, :PSYCHIC,
                  :ICE, :DRAGON, :DARK, :FAIRY
                 ]
      typeList.each do |type|
        e=Effectiveness.calculate(type, target_types[0], target_types[1], target_types[2]) #计算克制倍率,基础为8,每克制一个属性x2
        if e>=64    #8倍克制
          result_types.push(type)
        else
          if e>=32  #4倍克制
            result_types.push(type)
          else
            if e>=16    #2倍克制
              result_types.push(type)
            end
          end
        end
      end
      #处理抵抗属性
      result_types.each do |type|
        e1 = Effectiveness.calculate(target_types[0], type)
        e2 = Effectiveness.calculate(target_types[1], type)
        e3 = (target_types[1] != nil) ? Effectiveness.calculate(target_types[2], type) : 0
        if resistance_type == []
          resistance_type.push(type)
          resistance_type.push(e1 + e2 + e3)
        else
          unless resistance_type[1] <= e1 + e2 + e3
            resistance_type = [type, e1 + e2 + e3]
          end
        end
      end
      current_type = resistance_type[0]
      current_typeName = GameData::Type.get(current_type).name
      move.calcType = current_type  #改变制裁光砾的属性
      current_type_id = typeList.index(current_type)
      if user.form != current_type_id
        pbChangeForm(current_type_id, _INTL("{1}变成了{2}属性!", pbThis, current_typeName)) #改变阿尔宙斯的形态
      end
    end
最后,不要忘了让它结束战斗恢复成默认形态,搜索:ARCEUS,找到一个和Form有关的,点进去,在下面加上框中的代码。
Ruby:
,
  "getFormOnLeavingBattle" => proc { |pkmn, battle, usedInBattle, endBattle|
    next 0 if pkmn.hasItem?(:LEGENDPLATE)
  }
1674127193325.png
会考虑第三属性(森林诅咒、万圣夜等附加的属性),例如下图对吉利蛋变格斗属性,对被附加了幽灵属性的吉利蛋变圣光属性(原创属性,克制幽灵属性)
psc.jpg
psc (1).jpg
psc (2).jpg
注意:不要制作一个???属性的精灵,更不要用传说制裁光砾打他,会报错,实在需要就自己判断一下。
 
最后编辑:

在线成员

论坛统计

主题
339
消息
1,557
会员
2,314
最新会员
ancherf

关于我们

  • 宝可梦以及其他相关名称是任天堂的商标,版权归宝可梦公司所有。宝可饭堂是一个同人游戏中文社区,不隶属于宝可梦公司。在宝可饭堂上的粉丝游戏亦未获得其授权,请支持正版游戏。
© 2022- pokefans.cn
点此延长宝可饭堂生命