✓ ESS21仅限 【TA】【特性】一篮子补完计划(0718)

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
这篇帖子主要用来发布一些特性。
这些特性是论坛上有人提出了想法,但还没有人实现代码的那些特性。

这是一个集中贴。
一些简单的,我也觉得没什么必要讲解的特性会集中在这里。
复杂的,我觉得很有趣的特性会单独发帖。

那么,就是这样。

已更新——
天际行者(Skykeeper,https://bbs.pokefans.cn/threads/ta0627.451/)
节省(PP Saver,https://bbs.pokefans.cn/threads/ta0713.469/)
活力焕发(Lively,https://bbs.pokefans.cn/threads/ta004-proc0718.457/)
基因突变(Formless,https://bbs.pokefans.cn/threads/ta005-call0718.458/)
涅槃(Enhanced Rebirth,https://bbs.pokefans.cn/threads/ta006-call-more0701.459/)
遗志(Passing,https://bbs.pokefans.cn/threads/ta014-passing0617.490/)
斩龙(Dragon Break,https://bbs.pokefans.cn/threads/ta015-dragon-break0617.497/)
一般化装甲(Normalize Armor,https://bbs.pokefans.cn/threads/ta016-normalize-armor0618.498/)
时间旅者(Time Traveler,https://bbs.pokefans.cn/threads/ta017-time-traveler0617.505/)
叶绿体(Chloroplast,https://bbs.pokefans.cn/threads/ta018-chloroplast0618.506/)
茂盛EX(Overgrow EX,https://bbs.pokefans.cn/threads/ta019-overgrow-ex0620.510/)
追求超力量(Power Pursuer,https://bbs.pokefans.cn/threads/ta020-power-pursuer0624.511/)
多见之身(Worldly-Wise)
全能(Omnipotent)
巨大身躯(Gaint Body)
能量扩散(Impulse Widening)
深海领域(Deep Sea Cruiser)
天空领域(Celestial Soarer)
大地领域(Terra Wanderer)
夜行(Night's Sprite)
护卫(Ally Stand)
浆果指引(Berry Swiper)
占为己用(Claim As Mine)
反诈(Trick Denier)
防火墙(Firewall)
先下手为强(First Strike)
电气狂涌(Electrocharge)
预热(Warmup)
静观其变(Silence Watcher)
聚合体(We Are The One)
 
最后编辑:
  • 支持
反馈: 帆高mo

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[WORLDLYWISE]
Name = 多见之身
Description = 单段技能会威力减半额外攻击一次,多段技能必定会攻击四次。

参考:https://bbs.pokefans.cn/threads/375/

这个特性具有两个效果,总共需要改3个地方。

1.额外攻击一次。
找到这里,按如图所示进行修改——
1720945489126.png
Ruby:
  # The maximum number of hits in a round this move will actually perform. This
  # can be 1 for Beat Up, and can be 2 for any moves affected by Parental Bond.
  def pbNumHits(user, targets)
    if user.hasActiveAbility?(:PARENTALBOND) && pbDamagingMove? &&
       !chargingTurnMove? && targets.length == 1
      # Record that Parental Bond applies, to weaken the second attack
      user.effects[PBEffects::ParentalBond] = 3
      return 2
    end
    if user.hasActiveAbility?(:WORLDLYWISE) && pbDamagingMove? && !chargingTurnMove? && targets.length == 1
      @battle.pbShowAbilitySplash(user)
      @battle.pbDisplay(_INTL("{1}的{2}会攻击两次!", user.pbThis, @name))
      @battle.pbHideAbilitySplash(user)
      user.effects[PBEffects::ParentalBond] = 3
      return 2
    end
    return 1
  end

2.额外一次攻击的威力减半。
找到这里,按如图所示进行修改——
1720945626724.png
Ruby:
    # Parental Bond's second attack
    #if user.effects[PBEffects::ParentalBond] == 1
      #multipliers[:power_multiplier] /= (Settings::MECHANICS_GENERATION >= 7) ? 4 : 2
    #end
    case user.effects[PBEffects::ParentalBond]
    when 5
    when 4
    when 3
    when 2
    when 1
      if user.hasActiveAbility?(:PARENTALBOND)
        multipliers[:power_multiplier] /= (Settings::MECHANICS_GENERATION >= 7) ? 4.0 : 2.0
      end
      if user.hasActiveAbility?(:WORLDLYWISE)
        multipliers[:power_multiplier] /= 2.0
      end
    end

3.多段技能必定攻击四次。
找到这里,按如图所示进行修改——
1720945891494.png
Ruby:
class Battle::Move::HitTwoToFiveTimes < Battle::Move
  def multiHitMove?; return true; end

  def pbNumHits(user, targets)
    hitChances = [
      2, 2, 2, 2, 2, 2, 2,
      3, 3, 3, 3, 3, 3, 3,
      4, 4, 4,
      5, 5, 5
    ]
    ret = hitChances.sample
    if user.hasActiveAbility?(:WORLDLYWISE)
      @battle.pbShowAbilitySplash(user)
      @battle.pbDisplay(_INTL("{1}的{2}会攻击四次!", user.pbThis, @name))
      @battle.pbHideAbilitySplash(user)
      ret = 4
    end
    ret = 5 if user.hasActiveAbility?(:SKILLLINK)
    return ret
  end
end

这样就好了。

QnA——
Q:我说的“找到”哪里哪里,如何找到?
A:全局搜索代码中的一些关键词。
Q:我完全照着改的,为什么不生效呢?
A:你的插件可能覆盖了你的修改,你需要在插件中做相应的修改。

视频预览——

浏览附件2024-07-14 16-40-01.mp4
 
最后编辑:
  • 支持
反馈: 帆高mo

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[OMNIPOTENT]
Name = 全能
Description = 免疫异常状态和能力等级减少,使用技能不消耗PP并且先制度+2。

参考:https://bbs.pokefans.cn/threads/384/

这个特性具有四个效果,所以总共需要在4+1个地方修改代码。

1.免疫异常状态。
搜索水幕,并添加如下代码——
1720967430784.png
Ruby:
Battle::AbilityEffects::StatusImmunity.add(:OMNIPOTENT,
  proc { |ability, battler, status|
    next true
  }
)
1720967715031.png
Ruby:
Battle::AbilityEffects::StatusCure.add(:OMNIPOTENT,
  proc { |ability, battler|
    next if !battler.pbHasAnyStatus?
    battler.battle.pbShowAbilitySplash(battler)
    battler.pbCureStatus(Battle::Scene::USE_ABILITY_SPLASH)
    if !Battle::Scene::USE_ABILITY_SPLASH
      battler.battle.pbDisplay(_INTL("{1}的{2}治愈了它的异常状态。", battler.pbThis, battler.abilityName))
    end
    battler.battle.pbHideAbilitySplash(battler)
  }
)
1720967801882.png
Ruby:
Battle::AbilityEffects::OnSwitchOut.add(:OMNIPOTENT,
  proc { |ability, battler, endOfBattle|
    next if !battler.pbHasAnyStatus?
    PBDebug.log("[Ability triggered] #{battler.pbThis}'s #{battler.abilityName}")
    battler.status = :NONE
  }
)

2.免疫能力等级减少。
搜索恒净之躯,并修改代码如下——
1720967944014.png
Ruby:
Battle::AbilityEffects::StatLossImmunity.copy(:CLEARBODY, :WHITESMOKE, :OMNIPOTENT)

3.使用技能不消耗PP。
搜索pbReducePP,并修改代码如下——
1720968264065.png
Ruby:
return true if hasActiveAbility?(:OMNIPOTENT)

4.技能的先制度+2。
搜索先行治疗,并添加如下代码——
1720968371246.png
Ruby:
Battle::AbilityEffects::PriorityChange.add(:OMNIPOTENT,
  proc { |ability, battler, move, pri|
    next pri + 2
  }
)

5.出场提示。
搜索破格,并添加如下代码——
1720969659897.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:OMNIPOTENT,
  proc { |ability, battler, battle, switch_in|
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}的技能获得了额外的先制度且无需消耗PP!", battler.pbThis))
    battle.pbHideAbilitySplash(battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-14 23-12-25.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[GAINTBODY]
Name = 巨大身躯
Description = 接触类技能能够攻击到敌方全体,并且压击类技能伤害增加50%。

PS:描述是压击类技能伤害增加50%,但是写代码的时候写成了伤害翻倍,懒得改了,都是一样的,你自己把2改成1.5就可以了,就这样吧。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有两个效果,所以总共需要在2+1个地方修改代码。

1.增加压击类技能伤害。
搜索有色眼镜,并添加如下代码——
1721050015626.png
Ruby:
Battle::AbilityEffects::DamageCalcFromUser.add(:GAINTBODY,
  proc { |ability, user, target, move, mults, power, type|
    mults[:final_damage_multiplier] *= 2 if move.tramplesMinimize?
  }
)

2.使接触类技能的目标变为敌方全体。
搜索pbTarget,并修改代码如下——
1721132051928.png
Ruby:
  def pbTarget(_user)
    user = _user
    return GameData::Target.get(:AllNearFoes) if user.hasActiveAbility?(:GAINTBODY) && pbContactMove?(user) && @target == :NearOther
    return GameData::Target.get(@target)
  end

3.出场提示。
搜索破格,并添加如下代码——
1721051069954.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:GAINTBODY,
  proc { |ability, battler, battle, switch_in|
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}的庞大身躯使它的攻击覆盖全场!", battler.pbThis))
    battle.pbHideAbilitySplash(battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-15 21-50-48.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[IMPULSEWIDENING]
Name = 能量扩散
Description = 波动和波导类技能能够攻击到敌方全体。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有1个效果,所以总共需要在1+1个地方修改代码。

1.使波动和波导类技能的目标变为敌方全体。
搜索pbTarget,并修改代码如下——
1721132204392.png
Ruby:
  def pbTarget(_user)
    user = _user
    return GameData::Target.get(:AllNearFoes) if user.hasActiveAbility?(:GAINTBODY) && pbContactMove?(user) && @target == :NearOther
    return GameData::Target.get(:AllNearFoes) if user.hasActiveAbility?(:IMPULSEWIDENING) && pulseMove? && [:NearOther, :Other].include?(@target)
    return GameData::Target.get(@target)
  end

2.出场提示。
搜索破格,并添加如下代码——
1721132307834.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:IMPULSEWIDENING,
  proc { |ability, battler, battle, switch_in|
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}的身上散发出了强烈的波动能量!", battler.pbThis))
    battle.pbHideAbilitySplash(battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-16 20-19-00.mp4
 
最后编辑:

w15174289601

精英训练家
成员
2023-02-05
22
5
560
26
占楼,本层无效。

能量扩散
使用波动和波导类招式攻击目标变为全体
深海领域
拥有此特性的宝可梦受到水属性招式攻击伤害减少50%,使用“潜水招式”后特防和速度提升1级
天空领域
此特性的宝可梦在战斗中不会受到地面招式攻击使用“飞翔招式”后攻击和速度提升1级
大地领域
此特性的宝可梦受到电属性伤害无效,使用“挖洞招式”后防御和速度提升1级
夜行
当前时间处于夜晚速度提升2级 并且变得更容易命中要害
护卫
拥有此特性的宝可梦在队友被攻击时(全体攻击无效) 有70%概率替队友承担此伤害
浆果指引
拥有此特性的宝可梦HP低于50%时会将对手携带的树果直接食用
占为己用
登场时如果没有携带任何物品会将对手的携持有物强行携带(对手的持有物品失效)退场时(包括交换)归还
反诈
拥有此特性的宝可梦在场时对手的变化类招式必定后出
防火墙(参考下载)
出场时比较对手的攻击和特攻,根据较高的那项能力相应地提高自己的防御或特防

招式名称:电弧星
描述:向对手投掷会在下一回合爆炸的手里剑,爆炸会使对手畏缩。
具体来讲是80命中造成40伤害,成功命中的话下一回合会追加造成80伤害并使对手畏缩。
想到可以缝的招式就是和哈欠一样的下回合生效而且换人就会失效
还有就是预知未来的那种不影响自己正常行动的延迟伤害

招式:冰钩 属性:冰 物理
威力:90 pp:10 命中:100
被命中的宝可梦进行替换时会再受到一次此招式的伤害

#-------------------------------
[XXX]
Name = xxx
Description =。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有x个效果,所以总共需要在x个地方修改代码。

1.xxx。
搜索xxx,并添加如下代码——

视频预览——
感谢大佬 以后会有更好的原创特性效果思路提供
 

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[DEEPSEACRUISER]
Name = 深海领域
Description = 受到的水系技能伤害减半,并且使用“潜水”后特防和速度增加1级。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有2个效果,所以总共需要在2个地方修改代码。

1.受到的水系技能伤害减半。
搜索水泡,并添加如下代码——
1721134818596.png
Ruby:
Battle::AbilityEffects::DamageCalcFromTarget.add(:DEEPSEACRUISER,
  proc { |ability, user, target, move, mults, power, type|
    mults[:final_damage_multiplier] /= 2.0 if type == :WATER
  }
)

2.使用“潜水”后特防和速度增加1级。
搜索自信过度,并添加如下代码——
1721135842571.png
Ruby:
Battle::AbilityEffects::OnEndOfUsingMove.add(:DEEPSEACRUISER,
  proc { |ability, user, targets, move, battle|
    next if move.id != :DIVE
    next if battle.pbAllFainted?(user.idxOpposingSide)
    stats = [:SPECIAL_DEFENSE, :SPEED]
    pbMoveTriggerStatsUp(stats, user, targets, battle)
  }
)
但是这样还不够,你还需要在下面继续添加代码——
1721656154122.png
Ruby:
def pbMoveTriggerStatsUp(stat_s, user, target_s, battle)
  target_s = [target_s] if !target_s.is_a?(Array)
  stat_s = [stat_s] if !stat_s.is_a?(Array)
  hit_success = false
  target_s.each do |t|
  next if t.damageState.hpLost == 0
    hit_success = true
    break
  end
  return if !hit_success
  can_raise = false
  stat_s.each do |s|
    next if !user.pbCanRaiseStatStage?(s, user)
    can_raise = true
    break
  end
  return if !can_raise
  battle.pbShowAbilitySplash(user)
  anim = true
  stat_s.each do |s|
    next if !user.pbCanRaiseStatStage?(s, user)
    user.pbRaiseStatStageByAbility(s, 1, user, false, anim)
    anim = false
  end
  battle.pbHideAbilitySplash(user)
end
你以为这就结束了吗,还没有,继续搜索pbRaiseStatStageByAbility,按如下修改代码——
1721136064291.png
Ruby:
  def pbRaiseStatStageByAbility(stat, increment, user, splashAnim = true, showAnim = true)
    return false if fainted?
    ret = false
    @battle.pbShowAbilitySplash(user) if splashAnim
    if pbCanRaiseStatStage?(stat, user, nil, Battle::Scene::USE_ABILITY_SPLASH)
      if Battle::Scene::USE_ABILITY_SPLASH
        ret = pbRaiseStatStage(stat, increment, user, showAnim)
      else
        ret = pbRaiseStatStageByCause(stat, increment, user, user.abilityName)
      end
    end
    @battle.pbHideAbilitySplash(user) if splashAnim
    return ret
  end

这样就好了。

视频预览——

浏览附件2024-07-16 20-57-58.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[CELESTIALSOARER]
Name = 天空领域
Description = 免疫地面系技能,并且使用“飞翔”“后物攻和速度增加1级。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有2个效果,所以总共需要在2个地方修改代码。
这个特性需要深海领域中的pbMoveTriggerStatsUp方法的支持。

1.免疫地面系技能。
搜索漂浮,并修改代码如下——
1721141108116.png
Ruby:
    return true if hasActiveAbility?([:LEVITATE, :CELESTIALSOARER]) && !@battle.moldBreaker
1721141135823.png
Ruby:
      if target.hasActiveAbility?([:LEVITATE, :CELESTIALSOARER]) && !@battle.moldBreaker

2.使用“飞翔”“后物攻和速度增加1级。
搜索自信过度,并添加如下代码——
1721141223623.png
Ruby:
Battle::AbilityEffects::OnEndOfUsingMove.add(:CELESTIALSOARER,
  proc { |ability, user, targets, move, battle|
    next if move.id != :FLY
    next if battle.pbAllFainted?(user.idxOpposingSide)
    stats = [:ATTACK, :SPEED]
    pbMoveTriggerStatsUp(stats, user, targets, battle)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-16 22-48-39.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[TERRAWANDERER]
Name = 大地领域
Description = 免疫电系技能,并且使用“挖洞”后物防和速度增加1级。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有2个效果,所以总共需要在2个地方修改代码。
这个特性需要深海领域中的pbMoveTriggerStatsUp方法的支持。

1.免疫电系技能。
搜索防弹,并添加如下代码——
1721141829995.png
Ruby:
Battle::AbilityEffects::MoveImmunity.add(:TERRAWANDERER,
  proc { |ability, user, target, move, type, battle, show_message|
    next false if user.index == target.index
    next false if !move.damagingMove?
    next false if type != :ELECTRIC
    if show_message
      battle.pbShowAbilitySplash(target)
      if Battle::Scene::USE_ABILITY_SPLASH
        battle.pbDisplay(_INTL("It doesn't affect {1}...", target.pbThis(true)))
      else
        battle.pbDisplay(_INTL("{1}'s {2} made {3} ineffective!",
           target.pbThis, target.abilityName, move.name))
      end
      battle.pbHideAbilitySplash(target)
    end
    next true
  }
)

2.使用“挖洞”“后物防和速度增加1级。
搜索自信过度,并添加如下代码——
1721141945529.png
Ruby:
Battle::AbilityEffects::OnEndOfUsingMove.add(:TERRAWANDERER,
  proc { |ability, user, targets, move, battle|
    next if move.id != :DIG
    next if battle.pbAllFainted?(user.idxOpposingSide)
    stats = [:DEFENSE, :SPEED]
    pbMoveTriggerStatsUp(stats, user, targets, battle)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-16 22-50-27.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[NIGHTSSPRITE]
Name = 夜行
Description = 在夜晚出场时,速度增加2级,命中要害率增加1级。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有2个效果,所以总共需要在2个地方修改代码。

1.速度增加2级。
搜索不挠之剑,并添加如下代码——
1721228256026.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:NIGHTSSPRITE,
  proc { |ability, battler, battle, switch_in|
    next if !PBDayNight.isNight?
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}在夜色下开始狂欢!", battler.pbThis))
    battler.pbRaiseStatStageByAbility(:SPEED, 2, battler, false) if battler.pbCanRaiseStatStage?(:SPEED, battler)
    battle.pbHideAbilitySplash(battler)
  }
)

2.命中要害率增加1级。
搜索超幸运,并添加如下代码——
1721227883823.png
Ruby:
Battle::AbilityEffects::CriticalCalcFromUser.add(:NIGHTSSPRITE,
  proc { |ability, user, target, c|
    next c + 1 if PBDayNight.isNight?
  }
)

这样就好了。

视频预览——

浏览附件2024-07-17 22-58-19.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[ALLYSTAND]
Name = 护卫
Description = 有70的概率为队友承担伤害。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性需要额外增加一个battler级的变量用来存储队友受到的伤害。

增加变量——
1721313291572.png
Ruby:
  attr_accessor :allyStand
初始化变量——
1721313328409.png
Ruby:
    @allyStand               = nil

接着,搜索pbReduceDamage,并添加如下代码——
1721314019991.png
Ruby:
    target.allAllies.each do |a|
      next if damage <= 0
      next if user.index == target.index
      next if !a.hasActiveAbility?(:ALLYSTAND)
      next if @battle.pbRandom(100) >= 70
      @battle.pbShowAbilitySplash(a)
      @battle.pbDisplay(_INTL("{1}为队友挺身而出!", a.pbThis))
      a.allyStand = damage
      damage = 0
      break
    end

接着,再搜索pbProcessMoveHit,并添加如下代码——
1721314139222.png
Ruby:
      @battle.allBattlers.each do |b|
        next if !b.allyStand
        @battle.scene.pbDamageAnimation(b)
        b.pbReduceHP(b.allyStand, false)
        b.allyStand = nil
        @battle.pbHideAbilitySplash(b)
        break
      end

这样就好了。

视频预览——

浏览附件2024-07-18 00-32-05.mp4
 
最后编辑:
  • 支持
反馈: Halily

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[BERRYSWIPER]
Name = 浆果指引
Description = HP低于一半时会吃掉对手携带的树果。

参考:https://bbs.pokefans.cn/threads/__.234/

搜索跃跃欲逃,并添加如下代码——
1721317303602.png
Ruby:
Battle::AbilityEffects::OnHPDroppedBelowHalf.add(:BERRYSWIPER,
  proc { |ability, battler, move_user, battle|
    possible_targets = []
    battle.allOtherSideBattlers(battler.index).each do |b|
      next if !b.item || !b.item.is_berry?
      next if b.hasActiveAbility?(:STICKYHOLD) && !@battle.moldBreaker
      possible_targets.push(b)
    end
    next false if possible_targets.empty?
    target = possible_targets.sample
    battle.pbShowAbilitySplash(battler)
    item = target.item
    itemName = target.itemName
    battler.setBelched
    target.pbRemoveItem
    battle.pbDisplay(_INTL("{1}吃掉了{2}的{3}!", battler.pbThis, target.pbThis, itemName))
    battler.pbHeldItemTriggerCheck(item.id, false)
    battler.pbSymbiosis
    battle.pbHideAbilitySplash(battler)
    next true
  }
)

这样就好了。

视频预览——

浏览附件2024-07-18 23-42-54.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[CLAIMASMINE]
Name = 占为己用
Description = 出场时,偷取对手携带的物品,离场时,归还物品。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性需要额外增加一个battler级的变量用来存储偷取的物品以及被偷物品的精灵。

增加变量——
1721404161565.png
Ruby:
  attr_accessor :claimAsMine
初始化——
1721404206167.png
Ruby:
    @claimAsMine             = nil

1.偷取物品。
搜索破格,并添加如下代码——
1721404261315.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:CLAIMASMINE,
  proc { |ability, battler, battle, switch_in|
    next if battler.item
    possible_targets = []
    battle.allOtherSideBattlers(battler.index).each do |b|
      next if !b.item || b.unlosableItem?(b.item)
      next if b.hasActiveAbility?(:STICKYHOLD)
      possible_targets.push(b)
    end
    next if possible_targets.empty?
    battle.pbShowAbilitySplash(battler)
    target = possible_targets.sample
    oldTargetItem = target.item
    oldTargetItemName = target.itemName
    battler.item = oldTargetItem
    battler.claimAsMine = [target.pokemonIndex, oldTargetItem]
    target.item = nil
    target.effects[PBEffects::ChoiceBand] = nil if !target.hasActiveAbility?(:GORILLATACTICS)
    target.effects[PBEffects::Unburden] = (!target.item && oldTargetItem) if target.hasActiveAbility?(:UNBURDEN)
    battle.pbDisplay(_INTL("{1}偷取了{2}携带的{3}!", battler.pbThis, target.pbThis, oldTargetItemName))
    battle.pbHideAbilitySplash(battler)
    battler.pbHeldItemTriggerCheck
  }
)

2.归还物品。
在下方增加代码如下——
1721404328761.png
Ruby:
Battle::AbilityEffects::OnSwitchOut.add(:CLAIMASMINE,
  proc { |ability, battler, endOfBattle|
    next if endOfBattle
    next if battler.hasActiveAbility?(:STICKYHOLD)
    next if !battler.item
    next if !battler.claimAsMine
    next if battler.item != battler.claimAsMine[1]
    orig_holder = nil
    battler.battle.allOtherSideBattlers(battler.index).each do |b|
      next if b.item
      next if b.pokemonIndex != battler.claimAsMine[0]
      orig_holder = b
      battler.claimAsMine = nil
      break
    end
    next if !orig_holder
    battler.battle.pbShowAbilitySplash(battler)
    oldBattlerItem = battler.item
    oldBattlerItemName = battler.itemName
    orig_holder.item = oldBattlerItem
    battler.item = nil
    battler.effects[PBEffects::ChoiceBand] = nil if !battler.hasActiveAbility?(:GORILLATACTICS)
    battler.effects[PBEffects::Unburden] = (!battler.item && oldBattlerItem) if battler.hasActiveAbility?(:UNBURDEN)
    battler.battle.pbDisplay(_INTL("{1}归还了之前偷取的{2}给{3}!", battler.pbThis, oldBattlerItemName, orig_holder.pbThis))
    battler.battle.pbHideAbilitySplash(battler)
    orig_holder.pbHeldItemTriggerCheck
  }
)

这样就好了。

视频预览——

浏览附件2024-07-19 23-56-48.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[TRICKDENIER]
Name = 反诈
Description = 在场时,对手的变化类技能必定后出。

参考:https://bbs.pokefans.cn/threads/__.234/

这个特性具有1个效果,所以总共需要在1+1个地方修改代码。

1.搜索pbCalculatePriority,并添加如下代码——
1721406512832.png
Ruby:
          allOtherSideBattlers(b.index).each { |c| entry[2] -= 1 if c.hasActiveAbility?(:TRICKDENIER) && @choices[b.index][2].statusMove? }

2.搜索破格,并添加如下代码——
1721406584158.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:TRICKDENIER,
  proc { |ability, battler, battle, switch_in|
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}渴望正面战斗!", battler.pbThis))
    battle.pbHideAbilitySplash(battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-20 00-24-55.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[FIREWALL]
Name = 防火墙
Description = 出场时,根据对手较高的一项攻击,增加相应的防御。

参考:https://bbs.pokefans.cn/threads/__.234/

搜索下载,并添加如下代码——
1721407505904.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:FIREWALL,
  proc { |ability, battler, battle, switch_in|
    oAtk = oSpAtk = 0
    battle.allOtherSideBattlers(battler.index).each do |b|
      oAtk   += b.attack
      oSpAtk += b.spatk
    end
    stat = (oSpAtk > oAtk) ? :SPECIAL_DEFENSE : :DEFENSE
    battler.pbRaiseStatStageByAbility(stat, 1, battler) if battler.pbCanRaiseStatStage?(stat, battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-20 00-41-02.mp4
 
最后编辑:

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[FIRSTSTRIKE]
Name = 先下手为强
Description = 最先攻击时,必定会命中对手要害,否则必定不能命中对手要害。

1.搜索不仁不义,并添加如下代码——
1721660175398.png
Ruby:
Battle::AbilityEffects::CriticalCalcFromUser.add(:FIRSTSTRIKE,
  proc { |ability, user, target, c|
    ret = user == user.battle.pbPriority[0] ? 99 : -1
    next ret
  }
)

2.搜索破格,并添加如下代码——
1721660254929.png
Ruby:
Battle::AbilityEffects::OnSwitchIn.add(:FIRSTSTRIKE,
  proc { |ability, battler, battle, switch_in|
    battle.pbShowAbilitySplash(battler)
    battle.pbDisplay(_INTL("{1}渴望先发制人!", battler.pbThis))
    battle.pbHideAbilitySplash(battler)
  }
)

这样就好了。

视频预览——

浏览附件2024-07-22 22-45-08.mp4
 

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
#-------------------------------
[ELECTROCHARGE]
Name = 电气狂涌
Description = 电气场地时,物攻、特攻和速度翻倍,HP多于一半时不会被一击打倒。

这个特性具有3个效果。

1.增加速度,搜索冲浪之尾,并添加如下代码——
1721812852558.png
Ruby:
Battle::AbilityEffects::SpeedCalc.copy(:SURGESURFER, :ELECTROCHARGE)

2.增加物攻和特攻,搜索水泡,并添加如下代码——
1721812917467.png
Ruby:
Battle::AbilityEffects::DamageCalcFromUser.add(:ELECTROCHARGE,
  proc { |ability, user, target, move, mults, power, type|
    mults[:attack_multiplier] *= 2 if user.battle.field.terrain == :Electric
  }
)

到这里为止,这个特性的前半部分就完成了,后面的内容都是这个特性的后半部分的内容。

3.打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\007_Other battle code里的003_Battle_DamageState.rb,并按如下添加代码——
1721813060441.png
Ruby:
  attr_accessor :ability_endured
1721813092382.png
Ruby:
    @ability_endured    = false

4.搜索找到pbReduceDamage方法,全部复制粘贴我的代码——
1721813179392.png
Ruby:
  def pbReduceDamage(user, target)
    damage = target.damageState.calcDamage
    # Substitute takes the damage
    if target.damageState.substitute
      damage = target.effects[PBEffects::Substitute] if damage > target.effects[PBEffects::Substitute]
      target.damageState.hpLost       = damage
      target.damageState.totalHPLost += damage
      return
    end
    # Disguise/Ice Face takes the damage
    return if target.damageState.disguise || target.damageState.iceFace
    # Target takes the damage
    if damage >= target.hp
      damage = target.hp
      # Survive a lethal hit with 1 HP effects
      if nonLethal?(user, target)
        damage -= 1
      elsif target.effects[PBEffects::Endure]
        target.damageState.endured = true
        damage -= 1
      elsif target.abilityEndured?
        target.damageState.ability_endured = true
        damage -= 1
      elsif target.hasActiveItem?(:FOCUSBAND) && @battle.pbRandom(100) < 10
        target.damageState.focusBand = true
        damage -= 1
      elsif target.hp == target.totalhp
        if target.hasActiveAbility?(:STURDY) && !@battle.moldBreaker
          target.damageState.sturdy = true
          damage -= 1
        elsif target.hasActiveItem?(:FOCUSSASH)
          target.damageState.focusSash = true
          damage -= 1
        elsif Settings::AFFECTION_EFFECTS && @battle.internalBattle &&
              target.pbOwnedByPlayer? && !target.mega?
          chance = [0, 0, 0, 10, 15, 25][target.affection_level]
          if chance > 0 && @battle.pbRandom(100) < chance
            target.damageState.affection_endured = true
            damage -= 1
          end
        end
      end
    end
    damage = 0 if damage < 0
    target.damageState.hpLost       = damage
    target.damageState.totalHPLost += damage
  end
原代码气势头带存在Bug,全部修改成我这样的就好了。

5.搜索找到pbEndureKOMessage方法,新增加代码如下——
1721813319547.png
Ruby:
    elsif target.damageState.ability_endured
      @battle.pbShowAbilitySplash(target)
      @battle.pbDisplay(_INTL("{1} endured the hit!", target.pbThis))
      @battle.pbHideAbilitySplash(target)

6.打开\Pokemon Essentials v21.1 2023-07-30\Data\Scripts\011_Battle\002_Battler里的001_Battle_Battler.rb,拉到最后面,增加如下代码——
1721813412848.png
Ruby:
  def abilityEndured?
    return true if hasActiveAbility?(:ELECTROCHARGE) && !@battle.moldBreaker && @battle.field.terrain == :Electric && @hp >= @totalhp / 2
    return false
  end

这样就好了。

视频预览——

浏览附件2024-07-24 17-10-02.mp4
PS:视频中特性的描述有错别字,懒得改了,不影响,就这样吧。
 
最后编辑:

w15174289601

精英训练家
成员
2023-02-05
22
5
560
26
新的趣味特性已抵达,求接收。
协作
我方场上每存在一只此特性的宝可梦攻击和速度额外提升一级
预热
拥有此特性的宝可梦在登场第二回合后(第三回合),每回合开始时使自身攻击,特攻,速度随机提高一级。
高能变身
此特性宝可梦的某项能力值变化大于3级,将会变身成为高能形态,战斗结束解除。
潜能爆发(参考基格尔德)
自身HP低于50%将会变身成为爆发形态。
圆滚滚
此特性的宝可梦受到攻击伤害减少70%,但是受到的特攻伤害翻倍。
静观其变
对手的每次能力值变化(包括降低)都会使自身的命中提升一级。(不会影响一击必杀类招式)
兆级电压(升级版)
登场后向对手全体施麻痹状态,加可以不受对手特性的干扰,向对手使出招式。
涡轮火焰(升级版)
登场后向对手全体施烧伤状态,加可以不受对手特性的干扰,向对手使出招式。
妖精气场(升级版)
此特性的宝可梦在场时我方全体HP每回合恢复1/12,并使场上所有宝可梦使用妖精属性招式的伤害×4/3。
暗黑气场(升级版)
此特性的宝可梦在场时,每回合吸收对方全体HP的1/16治愈自身,并使场上所有宝可梦使用恶属性招式的伤害×4/3。
气场破坏(升级版)
让气场的效果发生逆转,降低威力,阻止气场造成的生命恢复和HP吸收。
群聚变形(升级版)
HP变为一半时,细胞们会赶来支援,变为完全体形态,之后每回合恢复1/16HP
 

TAAAAAAA

天王
成员
2024-06-16
173
1
27
1,110
协作
我方场上每存在一只此特性的宝可梦攻击和速度额外提升一级
预热
拥有此特性的宝可梦在登场第二回合后(第三回合),每回合开始时使自身攻击,特攻,速度随机提高一级。
高能变身
此特性宝可梦的某项能力值变化大于3级,将会变身成为高能形态,战斗结束解除。
潜能爆发(参考基格尔德)
自身HP低于50%将会变身成为爆发形态。
圆滚滚
此特性的宝可梦受到攻击伤害减少70%,但是受到的特攻伤害翻倍。
静观其变
对手的每次能力值变化(包括降低)都会使自身的命中提升一级。(不会影响一击必杀类招式)
兆级电压(升级版)
登场后向对手全体施麻痹状态,加可以不受对手特性的干扰,向对手使出招式。
涡轮火焰(升级版)
登场后向对手全体施烧伤状态,加可以不受对手特性的干扰,向对手使出招式。
妖精气场(升级版)
此特性的宝可梦在场时我方全体HP每回合恢复1/12,并使场上所有宝可梦使用妖精属性招式的伤害×4/3。
暗黑气场(升级版)
此特性的宝可梦在场时,每回合吸收对方全体HP的1/16治愈自身,并使场上所有宝可梦使用恶属性招式的伤害×4/3。
气场破坏(升级版)
让气场的效果发生逆转,降低威力,阻止气场造成的生命恢复和HP吸收。
群聚变形(升级版)
HP变为一半时,细胞们会赶来支援,变为完全体形态,之后每回合恢复1/16HP
接下来将会只更新以下几个特性。
没有包括的,要么是我看不懂什么意思,需要详细解释;要么就是完全没意义;要么就是别人已经做了并且发了代码了的。

可参考:https://eeveeexpo.com/threads/8307/

预热
拥有此特性的宝可梦在登场第二回合后(第三回合),每回合开始时使自身攻击,特攻,速度随机提高一级。
静观其变
对手的每次能力值变化(包括降低)都会使自身的命中提升一级。(不会影响一击必杀类招式)
 
最后编辑:

在线成员

论坛统计

主题
458
消息
2,072
会员
2,854
最新会员
jiuchuan

关于我们

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