コード例 #1
0
 public abstract void RefreshDetails(PokemonInstance pokemon);
コード例 #2
0
 public override bool GetInflictsHealBlock(PokemonInstance user, PokemonInstance target, BattleData battleData)
 => true;
コード例 #3
0
        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));
            }
        }
コード例 #4
0
 public abstract void SerializePokemonInstance(Stream stream, PokemonInstance pokemon);
コード例 #5
0
 public override bool CheckCompatibility(PokemonInstance pokemon)
 => pokemon.health < pokemon.GetStats().health&& !pokemon.IsFainted;
コード例 #6
0
        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);
        }
コード例 #7
0
 public override bool GetInflictsIdentified(PokemonInstance user, PokemonInstance target, BattleData battleData)
 => true;
コード例 #8
0
        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);
            }
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
 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);
     }
 }
コード例 #11
0
 public override int CalculateDamageToDeal(float attackDefenseRatio, float modifiersValue, PokemonInstance user, PokemonInstance target, BattleData battleData)
 {
     return(user.GetLevel());
 }
コード例 #12
0
ファイル: Move_Yawn.cs プロジェクト: ofsouzap/PokemonObsidian
 public override bool GetInflictsDrowsy(PokemonInstance user, PokemonInstance target, BattleData battleData)
 => true;
コード例 #13
0
        /// <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;
        }
コード例 #14
0
 public override void DoBracingUpdate(ref UsageResults usageResults, PokemonInstance user, PokemonInstance target, BattleData battleData)
 {
     base.DoBracingUpdate(ref usageResults, user, target, battleData);
     usageResults.setBracing = true;
 }
コード例 #15
0
        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);
        }
コード例 #16
0
        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);
            }
        }
コード例 #17
0
 public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target)
 => Convert.ToByte(1 + (120 * (target.HealthProportion)));
コード例 #18
0
 public TradeOfferPokemonComm(NetworkCommsManager commsManager, PokemonInstance pokemon) : base(commsManager)
 {
     this.pokemon = pokemon;
 }
コード例 #19
0
 public override int CalculateEncoreTurnCount(PokemonInstance user, PokemonInstance target, BattleData battleData)
 => PokemonInstance.BattleProperties.VolatileStatusConditions.GetRandomEncoreDuration(battleData);
コード例 #20
0
 public override void ReadArgumentsFromStream()
 {
     pokemon = Serializer.DeserializePokemonInstance(Stream);
 }
コード例 #21
0
        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);
            }
        }
コード例 #22
0
            public bool TrySendOfferPokemon(PokemonInstance pokemon)
            {
                TradeOfferPokemonComm comm = new TradeOfferPokemonComm(this, pokemon);

                return(comm.TrySendToStream());
            }
コード例 #23
0
 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;
     }
 }
コード例 #24
0
 public override byte GetUsagePower(BattleData battleData, PokemonInstance user, PokemonInstance target)
 => Convert.ToByte(base.GetUsagePower(battleData, user, target) * (user.battleProperties.GetDamageThisTurn() > 0 ? 2 : 1));
コード例 #25
0
        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;
            }
        }
コード例 #26
0
 private int GetIntendedPokemonHealth(PokemonInstance user, PokemonInstance target)
 => Mathf.CeilToInt((user.health + target.health) / 2F);
コード例 #27
0
        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;
            }
        }
コード例 #28
0
 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);
     }
 }
コード例 #29
0
 public override float GetUserMaxHealthRelativeHealthHealed(PokemonInstance user, PokemonInstance target, BattleData battleData)
 => battleData.currentWeatherId switch
 {
     0 => 0.5F,     // Clear sky
     1 => 0.667F,   // Harsh sunlight
コード例 #30
0
 public override bool CheckCompatibility(PokemonInstance pokemon)
 => pokemon.IsFainted;