公共流程
变化技能

override <Act>

如果是连续攻击,生成攻击次数n
n*{
所有目标*{
<Calculate>计算伤害具体数值(输入量,已包含DefContexts的AtkContext)
  • 计算属性宝石、抗性果的影响,但不会消耗道具不会产生战报,不计算坚硬、气息腰带头巾的影响
  • 佯攻瓦割忽略对防御方的效果,但不会破坏墙、保护
  • 计算是否会会心一击,但不发动会心果
}
<PreImplement>预实现
  1. 发动属性宝石、会心果,但不修改已经算出的伤害
  2. 特效1(大爆炸掉血倒下/瓦割破对方墙/佯攻破保护、对方防御)*
(己方+对方)*{
m*{
<Implement>如果上一流程计算出有效伤害且目标在场,实施伤害流程(input:伤害)
  1. 发动抗性果,但不修改已经算出的伤害
  2. 产生伤害,计算对方是否倒下,对方或对方的替身扣血
    1. 对方的替身的HP变为0时,替身消失
    2. 刀背打
    3. 特性(坚硬)
    4. 道具(气息腰带)
}//m个精灵
  1. 回血
  2. if (全力攻击未发动) 己方能力升降
m*{
<HitEffect> 如果打到本体
  1. ImplementEffect(啄食的夺取树果无战报/燃尽的烧掉树果有战报/净化之雾)
  2. PassiveEffect
    1. if (对方HP>0)
      1. if (全力攻击未发动)
        1. 对方能力升降,相关特性,相关道具
        2. 对方状态变化(包括害怕),相关特性,相关道具
      2. 己方特性(毒手/臭恶)
      3. 己方道具(王者之证/锋利之牙)
    2. 对方愤怒状态(此步也有可能在道具后,未测)
    3. 对方特性(静电/鲨鱼皮/引爆/破碎铠甲/诅咒身躯/铁棘/偷盗恶习/幻影解除/正义之心/颤抖)发动
    4. 对方道具(凹凸头盔/伤害反弹树果/电池/球茎)发动
    5. 如果攻击方HP为0,倒下
    6. 如果防御方HP为0,倒下
      1. 自信过剩
    7. if (连续攻击技能)
      1. 防御方道具.HpChanged(树果)
  3. 双方依然在场,PostEffect(清醒/清醒拍打/龙之尾/啄食的吃树果/高速旋转/击坠)
连续攻击计数已满,攻击方倒下/睡着,结束流程
} //m个精灵
} //己方+对方
} //n次
  1. if (连续攻击技能) 显示“命中了x次”
  2. if (攻击方在场) 返伤
  3. 冰冻状态的精灵受火系攻击解冻
<FinalEffect>如果全力攻击未发动,执行后期特效流程
  1. foreach
    1. 对方特性(要求打到本体且对方没有倒下,变色)
  2. foreach(按速度排序,打到本体且没有倒下)
    1. 红牌/逃生按钮(只下场不换人),这两个道具分别只发动一次,速度慢的pm被无视
  3. 己方道具(要求在场,生命玉/贝壳铃)

override <MoveEnding>

  1. base.MoveEnding
  2. if (攻击方在场) 特效4(攻击方逆鳞混乱)
  3. 因为逃生按钮下场的精灵选择换人
  4. if (攻击方在场) 特效5(蜻蜓回转)

  • 本行动结束后,判断是否结束游戏
  • 气合拳的蓄力不属于本流程
  • 预知未来的InnerClass属于“变化技能”
  • 提前发生的追击与预知未来的伤害实施阶段属于本流程,从<BuildAtkContext>开始,依次经过<CalculateTargets><CalculateAtk><Calculate><Implement><PostEffect><AttackEnding>,攻击方在场时会发动相关道具,不发动红牌/逃生按钮


命中判定详细:
Check for Immunity (or Levitate) on the Ally side, position 1, then position 3. Then check Opponent side, position 1, then 2, then 3,
Check for Wide Guard in same way
Check for Protect
Check for Telepathy (and possibly other abilities)
Check for misses

Deal Damage to Allies
Check for Fainted Allies

Deal Damage to Opponents
Check for Fainted Opponents

The Super Effective message is displayed before the Not Very Effective message.
It displays the name of the Pokemon in the message (eg. It's Super Effective against !)
If multiple are hit by a super effective attack, it will say both names in one message (eg. It's Super Effective against and _!). Same for multiple Not Very Effectives. The first name listed is the Pokemon at a lower Position number (1 -> 2 -> 3)
The Critical hit message is displayed, it will say both names in one message (eg. Critical Hit on the foe's and _!)

-Attack failure message order, the ones listed first will show up over others if more than one apply (eg. Flying Type Pokemon uses Protect, Opponent uses Earthquake, message will say that you are immune to the attack):

Immunity (by Type and at least by Levitate)
Wide Guard (and probably Fast Guard as well)
Protect
Telepathy (probably by some other abilities here as well)
Misses

Last edited Dec 9, 2012 at 1:16 PM by Snowy, version 39

Comments

Snowy Sep 1, 2012 at 5:05 PM 
能量释放的双防下降在生命玉之后 考虑到和能量吸入统一还没想好在哪写合适
(也许用Triggers更合适?)

Snowy Jun 29, 2012 at 3:00 PM 
所有不是正常阶段的攻击都不会发动脱离按钮/红牌 除了预知未来 还有交换触发的追击

Snowy Jun 2, 2012 at 10:03 AM 
印象中连续攻击技能对精灵倒下的判定顺序有点特殊,未验证
如果真的特殊的话连续倒下判定可能要移出ImplementEffect

Snowy Mar 19, 2012 at 2:32 PM 
预知未来实现阶段(攻击方在场):
发动变色
发动生命玉
不发动红牌/脱离按钮

LostKanon Mar 16, 2012 at 12:15 PM 
龙尾+逃生按钮 只发动龙尾
龙尾+红牌 只发动龙尾
蜻蜓返+逃生按钮 发动逃生按钮,蜻蜓返不发动特效
蜻蜓返+红牌 只发动红牌

以上是黑·白中的判定
由于可能是bug,到黑白2中可能会有变化
先做标记

LostKanon Mar 9, 2012 at 5:23 PM 
12倒下(精灵倒下是一种“收回”,倒下后精灵就不在场了)的太快了 先13、15再倒下
11的特效3大爆炸是怎么回事 我记得大爆炸扣血是在进行伤害前


这两条根据你的意见写的,你觉得有问题的话自己改吧

14.3和14.2顺序检查下
变色先,并确定在14.1后

17中的细则要分开 看看是不是先回复后扣血先特性后道具那种
没有特性,应该是先技能后道具

16.1我需要战报确认下
A使用了技能/B倒下了/A发动了自信过剩/A的攻击上升了/A受到了生命玉的伤害

Snowy Mar 9, 2012 at 2:57 PM 
12倒下(精灵倒下是一种“收回”,倒下后精灵就不在场了)的太快了 先13、15再倒下
14.3和14.2顺序检查下
11的特效3大爆炸是怎么回事 我记得大爆炸扣血是在进行伤害前
17中的细则要分开 看看是不是先回复后扣血先特性后道具那种
16.1我需要战报确认下

变化类技能可能要另写流程 蓄力和僵直我再考虑下要不要另写流程