public void Init(IBattlePokemon source, Move move, IBattlePokemon target)
        {
            this.source = source;
            this.move = move;
            this.target = target;

            CalculateHit();
            CalculateCritical();
            CalculateTypeModifier();
            CalculateDamage();

            if (Damage > target.HP)
                StatusCondition = StatusCondition.KO;
            else
                StatusCondition = StatusCondition.Normal;
        }
예제 #2
0
 public BurnStatus(IBattlePokemon pokemon, IEventBus eventBus) : base(pokemon, eventBus)
 {
     pokemon.NonVolatileStatus = this;
     pokemon.Stat(PermanentStatType.Attack).AddMultiplier(0.5M);
 }
예제 #3
0
 public IPermanentStat DefenseStat(IBattlePokemon defender)
 {
     return(defender.Stat(DefenseStatType));
 }
예제 #4
0
 public IPermanentStat AttackStat(IBattlePokemon attacker)
 {
     return(attacker.Stat(AttackStatType));
 }
예제 #5
0
 public decimal StabMultiplier(IBattlePokemon user, IType moveType)
 {
     return(user.HasType(moveType) ? 1.5M : 1);
 }
예제 #6
0
 public float CalculateBaseDamage(IBattlePokemon source, IBattlePokemon target, Move move)
 {
     return 1.0f;
 }
예제 #7
0
 public float SameTypeAttackBonus(IBattlePokemon source, Move move)
 {
     return 1.0f;
 }
예제 #8
0
 public float GetTypeModifier(IBattlePokemon source, IBattlePokemon target, Move move)
 {
     return 1.0f;
 }
예제 #9
0
 public float GetHitChance(IBattlePokemon source, IBattlePokemon target, Move move)
 {
     return 0.95f;
 }
예제 #10
0
 public BaseNonVolatileStatus(IBattlePokemon pokemon, IEventBus eventBus)
 {
     Pokemon       = pokemon;
     EventHandlers = eventBus.SubscribeEventHandlers(this);
 }
예제 #11
0
 public void Init(IBattlePokemon source, Move move, IBattlePokemon target)
 {
 }