Beispiel #1
0
 public static void EffectHurtImplement(this PokemonProxy pm, int hp, string log = Ls.Hurt, int arg1 = 0, int arg2 = 0)
 {
     if (hp == 0)
     {
         hp = 1;
     }
     ShowLogPm(pm, log, arg1, arg2);
     pm.Hp -= hp;
     HpChanged.Execute(pm);
     pm.OnboardPokemon.SetTurnCondition(Cs.Assurance);
 }
        private void FireEventsIfNeeded()
        {
            if (_currentInfo.State != _previousFrameInfo.State)
            {
                StateChanged?.Invoke(_currentInfo.State);
            }
            if (_currentInfo.HpPercent != _previousFrameInfo.HpPercent)
            {
                HpChanged?.Invoke(_currentInfo.HpPercent);
            }
            if (_currentInfo.IsInParty != _previousFrameInfo.IsInParty)
            {
                IsInPartyChanged?.Invoke(_currentInfo.IsInParty);
            }
            if (_currentInfo.MpPercent != _previousFrameInfo.MpPercent)
            {
                MpChanged?.Invoke(_currentInfo.MpPercent);
            }
            if (_currentInfo.PartySize != _previousFrameInfo.PartySize)
            {
                PartySizeChanged?.Invoke(_currentInfo.PartySize);
            }
            if (_currentInfo.Position.X != _previousFrameInfo.Position.X || _currentInfo.Position.Y != _previousFrameInfo.Position.Y)
            {
                PositionChanged?.Invoke(_currentInfo.Position);
            }

            if (IsInParty && _currentInfo.SelectedPartyMemberHpPercent != _previousFrameInfo.SelectedPartyMemberHpPercent)
            {
                PartyMemberHpChanged?.Invoke(_currentInfo.SelectedPartyMemberHpPercent);
            }
            if (_currentInfo.IsPartyMemberSelected != _previousFrameInfo.IsPartyMemberSelected)
            {
                PartyMemberSelectedChanged?.Invoke(_currentInfo.IsPartyMemberSelected);
            }
            if (_currentInfo.IsKingDisplayed != _previousFrameInfo.IsKingDisplayed)
            {
                KingDisplayChanged?.Invoke(_currentInfo.IsKingDisplayed);
            }
            if (_currentInfo.IsMonsterSelected != _previousFrameInfo.IsMonsterSelected)
            {
                MonsterSelectedChanged?.Invoke(_currentInfo.IsMonsterSelected);
            }
            if (_currentInfo.SelectedMonsterHpPercent != _previousFrameInfo.SelectedMonsterHpPercent)
            {
                SelectedMonsterHpChanged?.Invoke(_currentInfo.SelectedMonsterHpPercent);
            }
            if (_currentInfo.SelectedPartyMemberIndex != _previousFrameInfo.SelectedPartyMemberIndex)
            {
                SelectedPartyMemberIndexChanged?.Invoke(_currentInfo.SelectedPartyMemberIndex);
            }
        }
Beispiel #3
0
 public static void Attach(PokemonProxy pm)
 {
     if (pm.ItemE(Is.LEPPA_BERRY))
     {
         foreach (var m in pm.Moves)
         {
             if (m.PP == 0)
             {
                 m.PP += 10;
                 pm.ConsumeItem();
                 pm.ShowLogPm("ItemPPRecover", Is.LEPPA_BERRY, m.MoveE.Id);
                 return;
             }
         }
     }
     else
     {
         WhiteHerb(pm);
         HpChanged.Execute(pm);
         StateAdded.Execute(pm);
     }
 }
Beispiel #4
0
        public static void EffectHurtImplement(this PokemonProxy pm, int hp, string log = Ls.Hurt, int arg1 = 0, int arg2 = 0)
        {
            if (hp == 0)
            {
                hp = 1;
            }
            ShowLogPm(pm, log, arg1, arg2);
            pm.Hp -= hp;
            HpChanged.Execute(pm);
            pm.OnboardPokemon.SetTurnCondition(Cs.Assurance);

            if (pm.Hp > 0 && (pm.Ability == As.Emergency_Exit || pm.Ability == As.Wimp_Out) && pm.Hp <= pm.Pokemon.MaxHp / 2 && pm.Hp + hp > pm.Pokemon.MaxHp / 2)
            {
                pm.AtkContext.SetCondition(Cs.EjectButton, pm.Tile);
                if (pm.Ability == As.Emergency_Exit)
                {
                    pm.Controller.Withdraw(pm, "EmergencyExit", 0, true);
                }
                else if (pm.Ability == As.Wimp_Out)
                {
                    pm.Controller.Withdraw(pm, "WimpOut", 0, true);
                }
            }
        }
Beispiel #5
0
 public void HitByAsteroid(Asteroid asteroid)
 {
     HP -= asteroid.Size;
     HpChanged?.Invoke(this, new EventArgs());
 }