Skip to content

damage_calculation

LyquidQrystal edited this page Sep 23, 2026 · 1 revision

Damage Calculation

Formula

The damage calculation formula will be listed here, and we will explain the meaning of these variables soon. Dmg = multiplier * (moveModifier * attackModifier + mobEffectBoost)

  • Dmg: The damage value.
  • multiplier: Multipliers, it's related to a lot of things, will be explained later.
  • moveModifier: Mostly influenced by move power, will be explained later.
  • attackModifier: Related to Attack/Special Attack stat, will be explained later.
  • mobEffectBoost: Influenced by Strength/Weakness status effect from Minecraft. Strength increase damage by 3 * level. Weakness decrease damage by 4 * level. Both melee attack and range attack will be influenced.
  • The damage will be restricted within a certain range, which will be explained in detail below.

multiplier

multiplier = t * itm * sf * p * i

  • t: Type effectiveness related multiplier.
    • Freeze=dry is super effective to the Water type.
    • Damage dealt by Flying Press is a combination of the Flying and Fighting types.
    • Water type is super efffective against entity that will be hurt by the water, like Enderman and Snow Golem.
    • Fire type has no effect against an entity that is immune to the fire.
    • Arthropod will be considered as Bug type if it's being hit by a Pokemon.
    • Ender Dragon will be considered as Dragon type if it's being hit by a Pokemon.
    • Ice type is super effective against entity with the minecraft:freeze_hurts_extra_types entity type tag.
    • Ice type has no effect against entity with the minecraft:freeze_immune_entity_types entity type tag.
    • Mooshroom will be considered as Bug type and Grass type if it's being hit by a Pokemon.
    • Poison type has no effect against entity with the minecraft:undead entity type tag.
    • Is super effective means t will be equal to super_effective_multiplier raised to the power of n.(n means the amount of the types that are weak to the attack)
    • Not very effective means t will be equal to not_very_effective_multiplier raised to the power of n(n means the amount of the types that resist to the attack)
    • Has no effect means to the value of t will be equal to no_effect_multiplier won't be influenced by the effectiveness listed above.
  • itm: Damage multiplier offered by the Held Item
    • Available Held Item:
      • Type-enhancing items: when held, enhances the power of attacks with the corresponding type. From Generation IV onward, these items boost the power of moves of the corresponding type by 20%; prior to Generation IV, they give boosts of 10%.
      • Choice Band
      • Choice Specs
      • Life Orb
      • Muscle Band
      • Wise Glasses
  • sf: If Sheer Force(ability) is triggered, it will be set to 1.3 or it will be 1.
  • p: Player's Pokemon has an extra multiplier. They're in fightorflight.json, multiplier for range attack is ranged_attack_damage_player, multiplier for melee attack is attack_damage_player. The default value for both of them is 1.2.
  • i: Some moves (soound moves, blast moves, etc.) will have an extra multiplier to balance, the default value is 0.8. It is located in fightorflight_moves and it is called indirect_attack_move_power_multiplier.

moveModifier

moveModifier = mp / 40 * m

  • mp: The move's power. If the Pokemon is available to use the move, it will be equal to the move's power. Player's Pokemon always try to use melee attack only if the move is available so it's easy to understand for player's Pokemon. However, if the move is not available for a wild Pokemon, the value will be equal to 60.(The value of base_power in fightorflight_moves.json)
    • The STAB(Same-type attack bonus) will be calculated here. If the Pokemon's ability is Adaptability, the multiplier will be raised to 2 from 1.5.
  • m: The move_power_multiplier in fightorflight_moves.json.

attackModifier

attackModifier = b * sqrt(min(a, Smax) / Smax)

  • b: max_bonus_from_stat from fightorflight.json.
  • a: The Pokemon's attack stat, if the move is a physical one, it will use the Attack stat, if the move is Special one, it will use the Special Attack stat.
  • Smax: The maximum stat required, For Special moves the value is maximum_special_attack_stat. For physicla move, the value is maximum_attack_stat.The default value is 200. If the stat is higher than this value, the stat will be considered as the value. For example, the max Special Attack stat can reach 348, but it be considered as 200 when calculating damage.

Damage range

  • Minimum Range Attack Damage: minimum_ranged_attack_damage * minimum_ranged_attack_damage_player (Only for player's Pokemon)
  • Maximum Range Attack Damage: maximum_ranged_attack_damage * maximum_ranged_attack_damage_player (Only for player's Pokemon)
  • Minimum Melee Attack Damage: minimum_attack_damage * minimum_attack_damage_player (Only for player's Pokemon)
  • Maximum Melee Attack Damage: maximum_attack_damage * maximum_attack_damage_player (Only for player's Pokemon)

伤害计算

伤害计算公式

我们将直接给出伤害计算公式,并在后面逐个解释参数的含义。 Dmg = multiplier * (moveModifier * attackModifier + mobEffectBoost)

  • Dmg: 最后的伤害值。
  • multiplier: 倍率,包含较多内容,将在下面展开说明。
  • moveModifier: 与招式威力相关,将在下面展开说明。
  • attackModifier: 与物攻/特攻能力值相关,将在下面展开说明。
  • mobEffectBoost: 与力量/虚弱状态效果有关。每一级力量+3伤害,每一级虚弱-4伤害。近战攻击和远程攻击都会被影响。
  • 最后的伤害会被限制在一定的范围内,将在下面展开说明。

multiplier

multiplier = t * itm * sf * p * i

  • t: 属性克制相关的系数
    • 冷冻干燥会对水属性造成效果绝佳的伤害。
    • 飞身重压同时带有格斗属性和飞行属性。
    • 水系的攻击对雪傀儡、末影人等碰到水受伤的实体效果绝佳。
    • 火系的攻击对免疫火焰伤害的实体没有效果。
    • 节肢生物受到攻击的时候视为虫属性。
    • 末影龙受到攻击的时候视为龙属性。
    • 冰系的攻击对有minecraft:freeze_hurts_extra_types实体类型标签的实体效果绝佳。
    • 冰系的攻击对有minecraft:freeze_immune_entity_types实体类型标签的实体没有效果。
    • 哞菇受到攻击的时候视为虫属性和草属性。
    • 毒系的攻击对有minecraft:undead实体类型标签的实体没有效果。
    • 效果绝佳指t的值为super_effective_multiplier的n次方(n为被克制的属性的个数)
    • 效果不好指t的值为not_very_effective_multiplier的n次方(n为被抵抗的属性的个数)
    • 没有效果指t的值为no_effect_multiplier,不会与前两者相乘。
  • itm: 携带物品的伤害加成
    • 当前可用携带物品:
      • 常规属性增强道具: 常规属性增强道具是能提升20%(第四世代以前是10%)相应属性招式的威力的道具。
      • 讲究头带
      • 讲究眼睛
      • 生命宝珠
      • 力量头带
      • 博识眼镜
  • sf: 触发强行特性的效果提供的额外伤害系数
  • p: 玩家宝可梦有额外的系数,系数都位于fightorflight.json中,远程攻击为ranged_attack_damage_player,近战攻击为attack_damage_player。默认值都是1.2
  • i: 某些自瞄类技能(声音类,波动类等)会有额外的伤害倍率来进行平衡,默认为0.8。是位于fightorflight_moves中的indirect_attack_move_power_multiplier。

moveModifier

moveModifier = mp / 40 * m

  • mp: 招式的威力,当宝可梦能使用第一个招式时用招式的威力来计算,玩家的宝可梦总是会在当前可用的招式为近战的招式时才会攻击因此可以直接认为是招式的威力,但野生宝可梦攻击时若招式不可用可能会被判定为60威力(fightorflight_moves.json的base_power的数值)。
    • 招式的属性一致加成会在此时计算,若宝可梦的特性为适应力,倍率将从原来的1.5变为2
  • m: fightorflight_moves.json中的move_power_multiplier

attackModifier

attackModifier = b * sqrt(min(a, Smax) / Smax)

  • b: fightorflight.json中的max_bonus_from_stat
  • a: 宝可梦的能力值,招式为特攻技能则使用特攻,物攻技能使用物攻。
  • Smax: 需要的能力值的最大值,特攻为maximum_special_attack_stat,物攻为maximum_attack_stat,默认值为200,物攻/特攻高于这个数值的宝可梦被视为这个最大值,比如100级的极限特攻的喷火龙有348特攻,但计算时仍视为200。

伤害范围

  • 最小远程攻击伤害: minimum_ranged_attack_damage * minimum_ranged_attack_damage_player(玩家的宝可梦才能计算)
  • 最大远程攻击伤害: maximum_ranged_attack_damage * maximum_ranged_attack_damage_player(玩家的宝可梦才能计算)
  • 最小近战攻击伤害: minimum_attack_damage * minimum_attack_damage_player(玩家的宝可梦才能计算)
  • 最大近战攻击伤害: maximum_attack_damage * maximum_attack_damage_player(玩家的宝可梦才能计算)