public abstract void RefreshDetails(PokemonInstance pokemon);
public override bool GetInflictsHealBlock(PokemonInstance user, PokemonInstance target, BattleData battleData) => true;
public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target) { int targetSpeed = target.GetStats().speed; int userSpeed = user.GetStats().speed; if (userSpeed == 0) { userSpeed = 1; } int calcPower = ((25 * targetSpeed) / userSpeed) + 1; if (calcPower > 150) { return(150); } else { return(Convert.ToByte(calcPower)); } }
public abstract void SerializePokemonInstance(Stream stream, PokemonInstance pokemon);
public override bool CheckCompatibility(PokemonInstance pokemon) => pokemon.health < pokemon.GetStats().health&& !pokemon.IsFainted;
public override UsageResults CalculateStatChanges(UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { sbyte stageRaiseCount = battleData.currentWeatherId == 1 ? (sbyte)2 : (sbyte)1; usageResults.userStatChanges = new Stats <sbyte>() { attack = stageRaiseCount, specialAttack = stageRaiseCount }; return(usageResults); }
public override bool GetInflictsIdentified(PokemonInstance user, PokemonInstance target, BattleData battleData) => true;
public override UsageResults CalculateNonVolatileStatusConditionChanges(UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { if (user.nonVolatileStatusCondition == PokemonInstance.NonVolatileStatusCondition.None) { usageResults.failed = true; return(usageResults); } else { usageResults.clearUserNonVolatileStatusCondition = true; usageResults.targetNonVolatileStatusCondition = user.nonVolatileStatusCondition; return(usageResults); } }
public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target) { // https://bulbapedia.bulbagarden.net/wiki/Flail_(move)#Generation_IV if (user.HealthProportion >= 0.6719F) { return(20); } else if (user.HealthProportion >= 0.3438F) { return(40); } else if (user.HealthProportion >= 0.2031F) { return(80); } else if (user.HealthProportion >= 0.938F) { return(100); } else if (user.HealthProportion >= 0.313F) { return(150); } else { return(200); } }
public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target) { if (target.species.weight < 10) { return(20); } else if (target.species.weight < 25) { return(40); } else if (target.species.weight < 50) { return(60); } else if (target.species.weight < 100) { return(80); } else if (target.species.weight < 200) { return(100); } else { return(120); } }
public override int CalculateDamageToDeal(float attackDefenseRatio, float modifiersValue, PokemonInstance user, PokemonInstance target, BattleData battleData) { return(user.GetLevel()); }
public override bool GetInflictsDrowsy(PokemonInstance user, PokemonInstance target, BattleData battleData) => true;
/// <summary> /// Cheat command to set the PP of one of the opponent's pokemon's moves /// </summary> public void CheatCommand_SetOpponentMovePP(int partyIndex, int moveIndex, byte newPP) { PokemonInstance pokemon = partyIndex >= 0 ? battleData.participantOpponent.GetPokemon()[partyIndex] : battleData.participantOpponent.ActivePokemon; pokemon.movePPs[moveIndex] = newPP; }
public override void DoBracingUpdate(ref UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { base.DoBracingUpdate(ref usageResults, user, target, battleData); usageResults.setBracing = true; }
public override UsageResults CalculateStatChanges(UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { usageResults = base.CalculateStatChanges(usageResults, user, target, battleData); Stats <sbyte> userSMs = user.battleProperties.statModifiers; sbyte userEvasionM = user.battleProperties.evasionModifier; sbyte userAccuracyM = user.battleProperties.accuracyModifier; Stats <sbyte> targetSMs = target.battleProperties.statModifiers; sbyte targetEvasionM = target.battleProperties.evasionModifier; sbyte targetAccuracyM = target.battleProperties.accuracyModifier; usageResults.userStatChanges = new Stats <sbyte>() { attack = (sbyte)(targetSMs.attack - userSMs.attack), defense = (sbyte)(targetSMs.defense - userSMs.defense), specialAttack = (sbyte)(targetSMs.specialAttack - userSMs.specialAttack), specialDefense = (sbyte)(targetSMs.specialDefense - userSMs.specialDefense), speed = (sbyte)(targetSMs.speed - userSMs.speed), health = (sbyte)(targetSMs.health - userSMs.health) }; usageResults.userEvasionChange = (sbyte)(targetEvasionModifier - userEvasionM); usageResults.userAccuracyChange = (sbyte)(targetAccuracyM - userAccuracyM); return(usageResults); }
public override int CalculateDamageToDeal(float attackDefenseRatio, float modifiersValue, PokemonInstance user, PokemonInstance target, BattleData battleData) { int baseDamage = base.CalculateDamageToDeal(attackDefenseRatio, modifiersValue, user, target, battleData); if (baseDamage >= target.health) { return(target.health - 1); } else { return(baseDamage); } }
public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target) => Convert.ToByte(1 + (120 * (target.HealthProportion)));
public TradeOfferPokemonComm(NetworkCommsManager commsManager, PokemonInstance pokemon) : base(commsManager) { this.pokemon = pokemon; }
public override int CalculateEncoreTurnCount(PokemonInstance user, PokemonInstance target, BattleData battleData) => PokemonInstance.BattleProperties.VolatileStatusConditions.GetRandomEncoreDuration(battleData);
public override void ReadArgumentsFromStream() { pokemon = Serializer.DeserializePokemonInstance(Stream); }
public override void DoThrashingUpdate(ref UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { base.DoThrashingUpdate(ref usageResults, user, target, battleData); //Only set thrashing if not already thrashing if (user.battleProperties.volatileBattleStatus.thrashTurns <= 0) { usageResults.thrashingTurns = PokemonInstance.BattleProperties.VolatileBattleStatus.GetRandomThrashingDuration(battleData); } }
public bool TrySendOfferPokemon(PokemonInstance pokemon) { TradeOfferPokemonComm comm = new TradeOfferPokemonComm(this, pokemon); return(comm.TrySendToStream()); }
public override void DoAquaRingUpdate(ref UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { base.DoAquaRingUpdate(ref usageResults, user, target, battleData); if (user.battleProperties.volatileBattleStatus.aquaRing) { usageResults.failed = true; } else { usageResults.setAquaRing = true; } }
public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target) => Convert.ToByte(base.GetUsagePower(battleData, user, target) * (user.battleProperties.GetDamageThisTurn() > 0 ? 2 : 1));
public void SetPokemon(PokemonInstance pokemon) { if (pokemon == null) { SetPokemonShownState(false); } else { SetPokemonShownState(true); textDisplayName.text = pokemon.GetDisplayName(); imageGender.sprite = pokemon.LoadGenderSprite(); textLevel.text = levelPrefix + pokemon.GetLevel().ToString(); imageSprite.sprite = pokemon.LoadSprite(PokemonSpecies.SpriteType.Front1); textSpeciesName.text = pokemon.species.name; textSpeciesNumber.text = pokemon.species.id.ToString(); imageType1.sprite = SpriteStorage.GetTypeSymbolSprite(pokemon.species.type1); if (pokemon.species.type2 != null) { imageType2.sprite = SpriteStorage.GetTypeSymbolSprite((Type)pokemon.species.type2); } else { imageType2.enabled = false; } //This capitalises first letter of the nature's name textNature.text = pokemon.nature.name[0].ToString().ToUpper() + pokemon.nature.name.Substring(1); textItemName.text = pokemon.heldItem != null ? pokemon.heldItem.itemName : ""; textStatAttackValue.text = pokemon.GetStats().attack.ToString(); textStatDefenseValue.text = pokemon.GetStats().defense.ToString(); textStatSpecialAttackValue.text = pokemon.GetStats().specialAttack.ToString(); textStatSpecialDefenseValue.text = pokemon.GetStats().specialDefense.ToString(); textStatSpeedValue.text = pokemon.GetStats().speed.ToString(); textStatHealthValue.text = pokemon.GetStats().health.ToString(); statHexEV.values = new float[] { (float)pokemon.effortValues.attack / PokemonInstance.maximumEffortValue, (float)pokemon.effortValues.defense / PokemonInstance.maximumEffortValue, (float)pokemon.effortValues.specialAttack / PokemonInstance.maximumEffortValue, (float)pokemon.effortValues.specialDefense / PokemonInstance.maximumEffortValue, (float)pokemon.effortValues.speed / PokemonInstance.maximumEffortValue, (float)pokemon.effortValues.health / PokemonInstance.maximumEffortValue }; statHexIV.values = new float[] { (float)pokemon.individualValues.attack / PokemonInstance.maximumIndividualValue, (float)pokemon.individualValues.defense / PokemonInstance.maximumIndividualValue, (float)pokemon.individualValues.specialAttack / PokemonInstance.maximumIndividualValue, (float)pokemon.individualValues.specialDefense / PokemonInstance.maximumIndividualValue, (float)pokemon.individualValues.speed / PokemonInstance.maximumIndividualValue, (float)pokemon.individualValues.health / PokemonInstance.maximumIndividualValue }; imageCheatPokemon.enabled = pokemon.cheatPokemon; } }
private int GetIntendedPokemonHealth(PokemonInstance user, PokemonInstance target) => Mathf.CeilToInt((user.health + target.health) / 2F);
public override void DoDefenseCurlUpdate(ref UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData) { base.DoDefenseCurlUpdate(ref usageResults, user, target, battleData); if (usageResults.Succeeded) { usageResults.setDefenseCurl = true; } }
public override int CalculateDamageToDeal(float attackDefenseRatio, float modifiersValue, PokemonInstance user, PokemonInstance target, BattleData battleData) { if (target.health > GetIntendedPokemonHealth(user, target)) { return(target.health - GetIntendedPokemonHealth(user, target)); } else { return(0); } }
public override float GetUserMaxHealthRelativeHealthHealed(PokemonInstance user, PokemonInstance target, BattleData battleData) => battleData.currentWeatherId switch { 0 => 0.5F, // Clear sky 1 => 0.667F, // Harsh sunlight
public override bool CheckCompatibility(PokemonInstance pokemon) => pokemon.IsFainted;