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); } }
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); } }
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); } } }
public void HitByAsteroid(Asteroid asteroid) { HP -= asteroid.Size; HpChanged?.Invoke(this, new EventArgs()); }