コード例 #1
0
        void DrawItem(string name, Globals.Scope scope, Globals.Type type)
        {
            using (new GUILayout.HorizontalScope())
            {
                GUILayout.Label(name, Styles.cell);
                GUILayout.Label(scope.ToString(), Styles.cell, GUILayout.Width(64));
                GUILayout.Label(type.ToString(), Styles.cell, GUILayout.Width(64));
                switch (type)
                {
                case Globals.Type.Boolean:
                    GUILayout.Toggle(Globals.GetBool(name, scope), "", GUILayout.Width(128));
                    break;

                case Globals.Type.Integer:
                    GUILayout.TextField(Globals.GetInt(name, scope).ToString(), GUILayout.Width(128));
                    break;

                case Globals.Type.String:
                    GUILayout.TextField(Globals.GetString(name, scope).ToString(), GUILayout.Width(128));
                    break;

                case Globals.Type.Float:
                    GUILayout.TextField(Globals.GetFloat(name, scope).ToString(), GUILayout.Width(128));
                    break;

                case Globals.Type.GameObject:
                    EditorGUILayout.ObjectField("", Globals.GetObject(name, scope), typeof(GameObject), true, GUILayout.Width(128));
                    break;

                default:
                    break;
                }
            }
        }
コード例 #2
0
 public ActiveMoveData(string moveId)
 {
     this.moveId    = moveId;
     this.moveData  = Moves.BattleMovedex[moveId].DeepCopy();
     this.basePower = this.moveData.basePower;
     this.moveType  = this.moveData.type;
 }
コード例 #3
0
    public ItemData(
        /*EventMethods*/ Callbacks.EventCallback basePowerCallback = null, Callbacks.EventCallback beforeMoveCallback = null, Callbacks.EventCallback beforeTurnCallback = null, Callbacks.EventCallback damageCallback = null, Callbacks.EventCallback durationCallback = null, Callbacks.EventCallback onAfterDamage = null, Callbacks.EventCallback onAfterMoveSecondary = null, Callbacks.EventCallback onAfterEachBoost = null, Callbacks.EventCallback onAfterHit = null, Callbacks.EventCallback onAfterSetStatus = null, Callbacks.EventCallback onAfterSwitchInSelf = null, Callbacks.EventCallback onAfterUseItem = null, Callbacks.EventCallback onAfterBoost = null, Callbacks.EventCallback onAfterMoveSecondarySelf = null, Callbacks.EventCallback onAfterMove = null, Callbacks.EventCallback onAfterMoveSelf = null, Callbacks.EventCallback onAllyTryAddVolatile = null, Callbacks.EventCallback onAllyBasePower = null, Callbacks.EventCallback onAllyModifyAtk = null, Callbacks.EventCallback onAllyModifySpD = null, Callbacks.EventCallback onAllyBoost = null, Callbacks.EventCallback onAllySetStatus = null, Callbacks.EventCallback onAllyTryHitSide = null, Callbacks.EventCallback onAllyFaint = null, Callbacks.EventCallback onAllyAfterUseItem = null, Callbacks.EventCallback onAllyModifyMove = null, Callbacks.EventCallback onAnyTryPrimaryHit = null, Callbacks.EventCallback onAnyTryMove = null, Callbacks.EventCallback onAnyDamage = null, Callbacks.EventCallback onAnyBasePower = null, Callbacks.EventCallback onAnySetWeather = null, Callbacks.EventCallback onAnyModifyDamage = null, Callbacks.EventCallback onAnyRedirectTarget = null, Callbacks.EventCallback onAnyAccuracy = null, Callbacks.EventCallback onAnyTryImmunity = null, Callbacks.EventCallback onAnyFaint = null, Callbacks.EventCallback onAnyModifyBoost = null, Callbacks.EventCallback onAnyDragOut = null, Callbacks.EventCallback onAnySetStatus = null, Callbacks.EventCallback onAttract = null, Callbacks.EventCallback onAccuracy = null, Callbacks.EventCallback onFoeAccuracy = null, Callbacks.EventCallback onBasePower = null, Callbacks.EventCallback onTryImmunity = null, Callbacks.EventCallback onBeforeMove = null, Callbacks.EventCallback onBeforeSwitchIn = null, Callbacks.EventCallback onBeforeSwitchOut = null, Callbacks.EventCallback onBeforeTurn = null, Callbacks.EventCallback onBoost = null, Callbacks.EventCallback onChargeMove = null, Callbacks.EventCallback onCheckShow = null, Callbacks.EventCallback onCopy = null, Callbacks.EventCallback onDamage = null, Callbacks.EventCallback onDeductPP = null, Callbacks.EventCallback onDisableMove = null, Callbacks.EventCallback onDragOut = null, Callbacks.EventCallback onEat = null, Callbacks.EventCallback onEatItem = null, Callbacks.EventCallback onEnd = null, Callbacks.EventCallback onFaint = null, Callbacks.EventCallback onFlinch = null, Callbacks.EventCallback onFoeAfterDamage = null, Callbacks.EventCallback onFoeBasePower = null, Callbacks.EventCallback onFoeBeforeMove = null, Callbacks.EventCallback onFoeDisableMove = null, Callbacks.EventCallback onFoeMaybeTrapPokemon = null, Callbacks.EventCallback onFoeModifyDef = null, Callbacks.EventCallback onFoeRedirectTarget = null, Callbacks.EventCallback onFoeSwitchOut = null, Callbacks.EventCallback onFoeTrapPokemon = null, Callbacks.EventCallback onFoeTryMove = null, Callbacks.EventCallback onHit = null, Callbacks.EventCallback onHitField = null, Callbacks.EventCallback onHitSide = null, Callbacks.EventCallback onImmunity = null, Callbacks.EventCallback onLockMove = null, Callbacks.EventCallback onLockMoveTarget = null, Callbacks.EventCallback onModifyAccuracy = null, Callbacks.EventCallback onFoeModifyAccuracy = null, Callbacks.EventCallback onModifyAtk = null, Callbacks.EventCallback onModifyBoost = null, Callbacks.EventCallback onModifyCritRatio = null, Callbacks.EventCallback onModifyDamage = null, Callbacks.EventCallback onModifyDef = null, Callbacks.EventCallback onModifyMove = null, Callbacks.EventCallback onModifyPriority = null, Callbacks.EventCallback onModifySecondaries = null, Callbacks.EventCallback onModifySpA = null, Callbacks.EventCallback onModifySpD = null, Callbacks.EventCallback onModifySpe = null, Callbacks.EventCallback onModifyWeight = null, Callbacks.EventCallback onMoveAborted = null, Callbacks.EventCallback onMoveFail = null, Callbacks.EventCallback onNegateImmunity = null, Callbacks.EventCallback onOverrideAction = null, Callbacks.EventCallback onPrepareHit = null, Callbacks.EventCallback onPreStart = null, Callbacks.EventCallback onPrimal = null, Callbacks.EventCallback onRedirectTarget = null, Callbacks.EventCallback onResidual = null, Callbacks.EventCallback onRestart = null, Callbacks.EventCallback onSetAbility = null, Callbacks.EventCallback onSetStatus = null, Callbacks.EventCallback onSourceAccuracy = null, Callbacks.EventCallback onSourceBasePower = null, Callbacks.EventCallback onSourceFaint = null, Callbacks.EventCallback onSourceHit = null, Callbacks.EventCallback onSourceModifyAccuracy = null, Callbacks.EventCallback onSourceModifyAtk = null, Callbacks.EventCallback onSourceModifyDamage = null, Callbacks.EventCallback onSourceModifySecondaries = null, Callbacks.EventCallback onSourceModifySpA = null, Callbacks.EventCallback onSourceTryHeal = null, Callbacks.EventCallback onSourceTryPrimaryHit = null, Callbacks.EventCallback onStallMove = null, Callbacks.EventCallback onStart = null, Callbacks.EventCallback onSwitchIn = null, Callbacks.EventCallback onSwitchOut = null, Callbacks.EventCallback onTakeItem = null, Callbacks.EventCallback onTerrain = null, Callbacks.EventCallback onTrapPokemon = null, Callbacks.EventCallback onTry = null, Callbacks.EventCallback onTryAddVolatile = null, Callbacks.EventCallback onTryEatItem = null, Callbacks.EventCallback onTryHeal = null, Callbacks.EventCallback onTryHit = null, Callbacks.EventCallback onTryHitField = null, Callbacks.EventCallback onTryHitSide = null, Callbacks.EventCallback onTryMove = null, Callbacks.EventCallback onTryPrimaryHit = null, Callbacks.EventCallback onType = null, Callbacks.EventCallback onUpdate = null, Callbacks.EventCallback onUseMoveMessage = null, Callbacks.EventCallback onWeather = null, Callbacks.EventCallback onWeatherModifyDamage = null, Callbacks.EventCallback onAfterSubDamage = null, Callbacks.EventCallback onEffectiveness = null, Callbacks.EventCallback onFoeDeductPP = null,
        /*EffectData*/ string id = "", string name = "", int num = -1, bool affectsFainted = false, string desc = "", int[] drain = null, int duration = -1, EffectData effect = null, string isZ = "",
        /*EffectData (modifier priorities)*/ int onModifyAccuracyPriority = 0, int onModifyAtkPriority = 0, int onModifyCritRatioPriority = 0, int onModifyDefPriority = 0, int onModifyMovePriority = 0, int onModifyPriorityPriority = 0, int onModifySpAPriority = 0, int onModifySpDPriority = 0, int onModifyWeightPriority = 0,
        /*EffectData*/ int onResidualOrder            = 0, int[] recoil = null, Globals.SecondaryEffect[] secondaries = null, Globals.SelfEffect self = null, string shortDesc = "",
        /*EffectType*/ Globals.EffectTypes effectType = Globals.EffectTypes.Item,
        /*Effect*/ bool exists = false,
        /*ItemData*/ int gen   = 0, bool ignoreKlutz = false, string megaStone = "", string megaEvolves = "", int spritenum = -1, bool iszMove = false, string zMoveName = "", string zMoveFrom = "", Globals.Type zMoveType = Globals.Type.Null, string[] zMoveUser = null, string ultraEffect = "", string[] ultraBursts = null
        )
    {
        /*EventMethods*/
        this.eventMethods = new EventMethods(basePowerCallback, beforeMoveCallback, beforeTurnCallback, damageCallback, durationCallback, onAfterDamage, onAfterMoveSecondary, onAfterEachBoost, onAfterHit, onAfterSetStatus, onAfterSwitchInSelf, onAfterUseItem, onAfterBoost, onAfterMoveSecondarySelf, onAfterMove, onAfterMoveSelf, onAllyTryAddVolatile, onAllyBasePower, onAllyModifyAtk, onAllyModifySpD, onAllyBoost, onAllySetStatus, onAllyTryHitSide, onAllyFaint, onAllyAfterUseItem, onAllyModifyMove, onAnyTryPrimaryHit, onAnyTryMove, onAnyDamage, onAnyBasePower, onAnySetWeather, onAnyModifyDamage, onAnyRedirectTarget, onAnyAccuracy, onAnyTryImmunity, onAnyFaint, onAnyModifyBoost, onAnyDragOut, onAnySetStatus, onAttract, onAccuracy, onFoeAccuracy, onBasePower, onTryImmunity, onBeforeMove, onBeforeSwitchIn, onBeforeSwitchOut, onBeforeTurn, onBoost, onChargeMove, onCheckShow, onCopy, onDamage, onDeductPP, onDisableMove, onDragOut, onEat, onEatItem, onEnd, onFaint, onFlinch, onFoeAfterDamage, onFoeBasePower, onFoeBeforeMove, onFoeDisableMove, onFoeMaybeTrapPokemon, onFoeModifyDef, onFoeRedirectTarget, onFoeSwitchOut, onFoeTrapPokemon, onFoeTryMove, onHit, onHitField, onHitSide, onImmunity, onLockMove, onLockMoveTarget, onModifyAccuracy, onFoeModifyAccuracy, onModifyAtk, onModifyBoost, onModifyCritRatio, onModifyDamage, onModifyDef, onModifyMove, onModifyPriority, onModifySecondaries, onModifySpA, onModifySpD, onModifySpe, onModifyWeight, onMoveAborted, onMoveFail, onNegateImmunity, onOverrideAction, onPrepareHit, onPreStart, onPrimal, onRedirectTarget, onResidual, onRestart, onSetAbility, onSetStatus, onSourceAccuracy, onSourceBasePower, onSourceFaint, onSourceHit, onSourceModifyAccuracy, onSourceModifyAtk, onSourceModifyDamage, onSourceModifySecondaries, onSourceModifySpA, onSourceTryHeal, onSourceTryPrimaryHit, onStallMove, onStart, onSwitchIn, onSwitchOut, onTakeItem, onTerrain, onTrapPokemon, onTry, onTryAddVolatile, onTryEatItem, onTryHeal, onTryHit, onTryHitField, onTryHitSide, onTryMove, onTryPrimaryHit, onType, onUpdate, onUseMoveMessage, onWeather, onWeatherModifyDamage, onAfterSubDamage, onEffectiveness, onFoeDeductPP);
        /*EffectData*/
        this.id             = id;
        this.name           = name;
        this.num            = num;
        this.affectsFainted = affectsFainted;
        this.desc           = desc;
        this.duration       = duration;
        this.drain          = drain;
        this.effect         = effect;
        this.effectType     = effectType;
        this.isZ            = isZ;

        this.onModifyAccuracyPriority  = onModifyAccuracyPriority;
        this.onModifyAtkPriority       = onModifyAtkPriority;
        this.onModifyCritRatioPriority = onModifyCritRatioPriority;
        this.onModifyDefPriority       = onModifyDefPriority;
        this.onModifyMovePriority      = onModifyMovePriority;
        this.onModifyPriorityPriority  = onModifyPriorityPriority;
        this.onModifySpAPriority       = onModifySpAPriority;
        this.onModifySpDPriority       = onModifySpDPriority;
        this.onModifyWeightPriority    = onModifyWeightPriority;

        this.onResidualOrder = onResidualOrder;
        this.recoil          = recoil;
        this.secondaries     = secondaries;
        this.self            = self;
        this.shortDesc       = shortDesc;

        /*Effect*/
        this.exists = exists;

        /*ItemData*/
        this.effectType  = effectType;
        this.gen         = gen;
        this.ignoreKlutz = ignoreKlutz;
        this.megaStone   = megaStone;
        this.megaEvolves = megaEvolves;
        this.spritenum   = spritenum;
        this.iszMove     = iszMove;
        this.zMoveName   = zMoveName;
        this.zMoveFrom   = zMoveFrom;
        this.zMoveType   = zMoveType;
        this.zMoveName   = zMoveName;
        this.ultraEffect = ultraEffect;
        this.ultraBursts = ultraBursts;
    }
コード例 #4
0
        public HiddenPower(Globals.StatsTable ivs)
        {
            Globals.Type[] hpTypes = new Globals.Type[] {
                Globals.Type.Fighting, Globals.Type.Flying, Globals.Type.Poison,
                Globals.Type.Ground, Globals.Type.Rock, Globals.Type.Bug, Globals.Type.Ghost,
                Globals.Type.Steel, Globals.Type.Fire, Globals.Type.Water, Globals.Type.Grass,
                Globals.Type.Electric, Globals.Type.Psychic, Globals.Type.Ice,
                Globals.Type.Dragon, Globals.Type.Dark
            };

            int hpTypeX = 0;
            //int hpPowerX = 0;
            int i = 1;

            hpTypeX += i * (ivs.hp % 2);
            //hpPowerX += i * (ivs.hp/2) %2;
            i *= 2;

            hpTypeX += i * (ivs.atk % 2);
            //hpPowerX += i * (ivs.atk / 2) % 2;
            i *= 2;

            hpTypeX += i * (ivs.def % 2);
            //hpPowerX += i * (ivs.def / 2) % 2;
            i *= 2;

            hpTypeX += i * (ivs.spe % 2);
            //hpPowerX += i * (ivs.spe / 2) % 2;
            i *= 2;

            hpTypeX += i * (ivs.spa % 2);
            //hpPowerX += i * (ivs.spa / 2) % 2;
            i *= 2;

            hpTypeX += i * (ivs.spd % 2);
            //hpPowerX += i * (ivs.spd / 2) % 2;

            hpType = hpTypes[(hpTypeX * 15 / 63)];
            //hpPower = (hpPowerX * 40 / 63) + 30;
            hpPower = 60;
        }
コード例 #5
0
    //Gravity, immunities are handled elsewhere
    public static int GetEffectiveness(Globals.Type source, Globals.Type target)
    {
        if (!BattleTypeChart.ContainsKey("" + target))
        {
            return(0);
        }
        if (!BattleTypeChart["" + target].damageTaken.ContainsKey("" + source))
        {
            return(0);
        }

        int typeData = BattleTypeChart["" + target].damageTaken["" + source];

        if (typeData == 1)
        {
            return(1);
        }
        if (typeData == 2)
        {
            return(-1);
        }
        return(0);
    }
コード例 #6
0
    int ModifyDamage(int baseDamage, Pokemon target)
    {
        Globals.Type type = activeData.moveType;
        baseDamage += 2;

        Battle.RelayVar relayVar;

        //Weather modifier calculated on the beginning
        baseDamage = Mathf.FloorToInt(baseDamage * activeData.weatherModifier);

        //crit
        if (activeData.crit)
        {
            baseDamage = Mathf.FloorToInt(baseDamage * 1.5f);
        }

        //Not a modifier calculated on the beginning
        baseDamage = Mathf.FloorToInt(baseDamage * activeData.randomModifier);

        //STAB calculated on the beginning
        baseDamage = Mathf.FloorToInt(baseDamage * activeData.stabModifier);

        //Types
        activeData.typeMod = Mathf.Clamp(target.RunEffectiveness(this), -6, 6);
        if (activeData.typeMod > 0)
        {
            for (int i = 0; i < activeData.typeMod; i++)
            {
                baseDamage *= 2;
            }
        }

        if (activeData.typeMod < 0)
        {
            for (int i = 0; i > activeData.typeMod; i--)
            {
                baseDamage = Mathf.FloorToInt(baseDamage / 2f);
            }
        }

        //Burn Status
        if (source.pokemonData.statusId == "brn" && activeData.moveData.category == Globals.MoveCategory.Physical && !source.pokemonData.HasAbilityActive(new string[] { "guts" }))
        {
            if (activeData.moveId != "facade")
            {
                baseDamage = Mathf.FloorToInt(baseDamage * 0.5f);
            }
        }

        // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb.
        relayVar   = new Battle.RelayVar(integerValue: baseDamage);
        relayVar   = battle.RunEvent("ModifyDamage", source.targetScript, target.myPokemon, activeData.moveData, relayVar);
        baseDamage = relayVar.integerValue;

        //Z breaking protect
        if (activeData.zPowered && activeData.zBrokeProtect)
        {
            baseDamage = Mathf.FloorToInt(baseDamage * 0.25f);
        }

        if (baseDamage < 1)
        {
            baseDamage = 1;
        }

        return(Mathf.FloorToInt(baseDamage));
    }
コード例 #7
0
    public MoveData(
        /*EventMethods*/ Callbacks.EventCallback basePowerCallback = null, Callbacks.EventCallback beforeMoveCallback = null, Callbacks.EventCallback beforeTurnCallback = null, Callbacks.EventCallback damageCallback = null, Callbacks.EventCallback durationCallback = null, Callbacks.EventCallback onAfterDamage = null, Callbacks.EventCallback onAfterMoveSecondary = null, Callbacks.EventCallback onAfterEachBoost = null, Callbacks.EventCallback onAfterHit = null, Callbacks.EventCallback onAfterSetStatus = null, Callbacks.EventCallback onAfterSwitchInSelf = null, Callbacks.EventCallback onAfterUseItem = null, Callbacks.EventCallback onAfterBoost = null, Callbacks.EventCallback onAfterMoveSecondarySelf = null, Callbacks.EventCallback onAfterMove = null, Callbacks.EventCallback onAfterMoveSelf = null, Callbacks.EventCallback onAllyTryAddVolatile = null, Callbacks.EventCallback onAllyBasePower = null, Callbacks.EventCallback onAllyModifyAtk = null, Callbacks.EventCallback onAllyModifySpD = null, Callbacks.EventCallback onAllyBoost = null, Callbacks.EventCallback onAllySetStatus = null, Callbacks.EventCallback onAllyTryHitSide = null, Callbacks.EventCallback onAllyFaint = null, Callbacks.EventCallback onAllyAfterUseItem = null, Callbacks.EventCallback onAllyModifyMove = null, Callbacks.EventCallback onAnyTryPrimaryHit = null, Callbacks.EventCallback onAnyTryMove = null, Callbacks.EventCallback onAnyDamage = null, Callbacks.EventCallback onAnyBasePower = null, Callbacks.EventCallback onAnySetWeather = null, Callbacks.EventCallback onAnyModifyDamage = null, Callbacks.EventCallback onAnyRedirectTarget = null, Callbacks.EventCallback onAnyAccuracy = null, Callbacks.EventCallback onAnyTryImmunity = null, Callbacks.EventCallback onAnyFaint = null, Callbacks.EventCallback onAnyModifyBoost = null, Callbacks.EventCallback onAnyDragOut = null, Callbacks.EventCallback onAnySetStatus = null, Callbacks.EventCallback onAttract = null, Callbacks.EventCallback onAccuracy = null, Callbacks.EventCallback onFoeAccuracy = null, Callbacks.EventCallback onBasePower = null, Callbacks.EventCallback onTryImmunity = null, Callbacks.EventCallback onBeforeMove = null, Callbacks.EventCallback onBeforeSwitchIn = null, Callbacks.EventCallback onBeforeSwitchOut = null, Callbacks.EventCallback onBeforeTurn = null, Callbacks.EventCallback onBoost = null, Callbacks.EventCallback onChargeMove = null, Callbacks.EventCallback onCheckShow = null, Callbacks.EventCallback onCopy = null, Callbacks.EventCallback onDamage = null, Callbacks.EventCallback onDeductPP = null, Callbacks.EventCallback onDisableMove = null, Callbacks.EventCallback onDragOut = null, Callbacks.EventCallback onEat = null, Callbacks.EventCallback onEatItem = null, Callbacks.EventCallback onEnd = null, Callbacks.EventCallback onFaint = null, Callbacks.EventCallback onFlinch = null, Callbacks.EventCallback onFoeAfterDamage = null, Callbacks.EventCallback onFoeBasePower = null, Callbacks.EventCallback onFoeBeforeMove = null, Callbacks.EventCallback onFoeDisableMove = null, Callbacks.EventCallback onFoeMaybeTrapPokemon = null, Callbacks.EventCallback onFoeModifyDef = null, Callbacks.EventCallback onFoeRedirectTarget = null, Callbacks.EventCallback onFoeSwitchOut = null, Callbacks.EventCallback onFoeTrapPokemon = null, Callbacks.EventCallback onFoeTryMove = null, Callbacks.EventCallback onHit = null, Callbacks.EventCallback onHitField = null, Callbacks.EventCallback onHitSide = null, Callbacks.EventCallback onImmunity = null, Callbacks.EventCallback onLockMove = null, Callbacks.EventCallback onLockMoveTarget = null, Callbacks.EventCallback onModifyAccuracy = null, Callbacks.EventCallback onFoeModifyAccuracy = null, Callbacks.EventCallback onModifyAtk = null, Callbacks.EventCallback onModifyBoost = null, Callbacks.EventCallback onModifyCritRatio = null, Callbacks.EventCallback onModifyDamage = null, Callbacks.EventCallback onModifyDef = null, Callbacks.EventCallback onModifyMove = null, Callbacks.EventCallback onModifyPriority = null, Callbacks.EventCallback onModifySecondaries = null, Callbacks.EventCallback onModifySpA = null, Callbacks.EventCallback onModifySpD = null, Callbacks.EventCallback onModifySpe = null, Callbacks.EventCallback onModifyWeight = null, Callbacks.EventCallback onMoveAborted = null, Callbacks.EventCallback onMoveFail = null, Callbacks.EventCallback onNegateImmunity = null, Callbacks.EventCallback onOverrideAction = null, Callbacks.EventCallback onPrepareHit = null, Callbacks.EventCallback onPreStart = null, Callbacks.EventCallback onPrimal = null, Callbacks.EventCallback onRedirectTarget = null, Callbacks.EventCallback onResidual = null, Callbacks.EventCallback onRestart = null, Callbacks.EventCallback onSetAbility = null, Callbacks.EventCallback onSetStatus = null, Callbacks.EventCallback onSourceAccuracy = null, Callbacks.EventCallback onSourceBasePower = null, Callbacks.EventCallback onSourceFaint = null, Callbacks.EventCallback onSourceHit = null, Callbacks.EventCallback onSourceModifyAccuracy = null, Callbacks.EventCallback onSourceModifyAtk = null, Callbacks.EventCallback onSourceModifyDamage = null, Callbacks.EventCallback onSourceModifySecondaries = null, Callbacks.EventCallback onSourceModifySpA = null, Callbacks.EventCallback onSourceTryHeal = null, Callbacks.EventCallback onSourceTryPrimaryHit = null, Callbacks.EventCallback onStallMove = null, Callbacks.EventCallback onStart = null, Callbacks.EventCallback onSwitchIn = null, Callbacks.EventCallback onSwitchOut = null, Callbacks.EventCallback onTakeItem = null, Callbacks.EventCallback onTerrain = null, Callbacks.EventCallback onTrapPokemon = null, Callbacks.EventCallback onTry = null, Callbacks.EventCallback onTryAddVolatile = null, Callbacks.EventCallback onTryEatItem = null, Callbacks.EventCallback onTryHeal = null, Callbacks.EventCallback onTryHit = null, Callbacks.EventCallback onTryHitField = null, Callbacks.EventCallback onTryHitSide = null, Callbacks.EventCallback onTryMove = null, Callbacks.EventCallback onTryPrimaryHit = null, Callbacks.EventCallback onType = null, Callbacks.EventCallback onUpdate = null, Callbacks.EventCallback onUseMoveMessage = null, Callbacks.EventCallback onWeather = null, Callbacks.EventCallback onWeatherModifyDamage = null, Callbacks.EventCallback onAfterSubDamage = null, Callbacks.EventCallback onEffectiveness = null, Callbacks.EventCallback onFoeDeductPP = null,
        /*EffectData*/ string id = "", string name = "", int num = -1, bool affectsFainted = false, string desc = "", int[] drain = null, int duration = -1, EffectData effect = null, string isZ = "", int onBasePowerPriority = 0, int onBeforeMovePriority = 0,
        /*EffectData (modifier priorities)*/ int onModifyAccuracyPriority = 0, int onModifyAtkPriority = 0, int onModifyCritRatioPriority = 0, int onModifyDefPriority = 0, int onModifyMovePriority = 0, int onModifyPriorityPriority = 0, int onModifySpAPriority = 0, int onModifySpDPriority = 0, int onModifyWeightPriority = 0,
        /*EffectData*/ int onResidualOrder            = 0, int[] recoil = null, Globals.SecondaryEffect[] secondaries = null, Globals.SelfEffect self = null, string shortDesc = "", string status = "",
        /*EffectType*/ Globals.EffectTypes effectType = Globals.EffectTypes.Null,
        /*Effect*/ bool exists    = false, int time   = 0,
        /*MoveData*/ int accuracy = -1, int basePower = -1, Globals.MoveCategory category = Globals.MoveCategory.Null, Globals.MoveFlags flags = Globals.MoveFlags.None, int pp = 0, int priority = 0, Globals.Type type = Globals.Type.Null, Globals.BoostsTable boosts = null, bool breaksProtect = false, Globals.ContestTypes contestType = Globals.ContestTypes.Null, int critRatio = 1, int damage = -1, bool damageByLevel = false, Globals.MoveCategory defensiveCategory = Globals.MoveCategory.Null, bool ignoreAbility = false, bool ignoreAccuracy = false, bool ignoreDefensive = false, string ignoreImmunity = "", bool ignoreNegativeOffensive = false, bool ignoreOffensive = false, bool ignorePositiveDefensive = false, bool isViable = false, bool mindBlownRecoil = false, bool noFaint = false, Globals.OHKO ohko = Globals.OHKO.Null, string selfdestruct = "", bool sideCondition = false, bool stealsBoosts = false, bool useTargetOffensive = false, bool useSourceDefensive = false, string volatileStatus = "", bool willCrit = false, int zMovePower = 0, string zMoveEffect = "", Globals.BoostsTable zMoveBoost = null)
    {
        /*EventMethods*/
        this.eventMethods = new EventMethods(basePowerCallback, beforeMoveCallback, beforeTurnCallback, damageCallback, durationCallback, onAfterDamage, onAfterMoveSecondary, onAfterEachBoost, onAfterHit, onAfterSetStatus, onAfterSwitchInSelf, onAfterUseItem, onAfterBoost, onAfterMoveSecondarySelf, onAfterMove, onAfterMoveSelf, onAllyTryAddVolatile, onAllyBasePower, onAllyModifyAtk, onAllyModifySpD, onAllyBoost, onAllySetStatus, onAllyTryHitSide, onAllyFaint, onAllyAfterUseItem, onAllyModifyMove, onAnyTryPrimaryHit, onAnyTryMove, onAnyDamage, onAnyBasePower, onAnySetWeather, onAnyModifyDamage, onAnyRedirectTarget, onAnyAccuracy, onAnyTryImmunity, onAnyFaint, onAnyModifyBoost, onAnyDragOut, onAnySetStatus, onAttract, onAccuracy, onFoeAccuracy, onBasePower, onTryImmunity, onBeforeMove, onBeforeSwitchIn, onBeforeSwitchOut, onBeforeTurn, onBoost, onChargeMove, onCheckShow, onCopy, onDamage, onDeductPP, onDisableMove, onDragOut, onEat, onEatItem, onEnd, onFaint, onFlinch, onFoeAfterDamage, onFoeBasePower, onFoeBeforeMove, onFoeDisableMove, onFoeMaybeTrapPokemon, onFoeModifyDef, onFoeRedirectTarget, onFoeSwitchOut, onFoeTrapPokemon, onFoeTryMove, onHit, onHitField, onHitSide, onImmunity, onLockMove, onLockMoveTarget, onModifyAccuracy, onFoeModifyAccuracy, onModifyAtk, onModifyBoost, onModifyCritRatio, onModifyDamage, onModifyDef, onModifyMove, onModifyPriority, onModifySecondaries, onModifySpA, onModifySpD, onModifySpe, onModifyWeight, onMoveAborted, onMoveFail, onNegateImmunity, onOverrideAction, onPrepareHit, onPreStart, onPrimal, onRedirectTarget, onResidual, onRestart, onSetAbility, onSetStatus, onSourceAccuracy, onSourceBasePower, onSourceFaint, onSourceHit, onSourceModifyAccuracy, onSourceModifyAtk, onSourceModifyDamage, onSourceModifySecondaries, onSourceModifySpA, onSourceTryHeal, onSourceTryPrimaryHit, onStallMove, onStart, onSwitchIn, onSwitchOut, onTakeItem, onTerrain, onTrapPokemon, onTry, onTryAddVolatile, onTryEatItem, onTryHeal, onTryHit, onTryHitField, onTryHitSide, onTryMove, onTryPrimaryHit, onType, onUpdate, onUseMoveMessage, onWeather, onWeatherModifyDamage, onAfterSubDamage, onEffectiveness, onFoeDeductPP);
        /*EffectData*/
        this.id             = id;
        this.name           = name;
        this.num            = num;
        this.affectsFainted = affectsFainted;
        this.desc           = desc;
        this.duration       = duration;
        this.drain          = drain;
        this.effect         = effect;
        this.effectType     = effectType;
        this.isZ            = isZ;

        this.onBasePowerPriority  = onBasePowerPriority;
        this.onBeforeMovePriority = onBeforeMovePriority;

        this.onModifyAccuracyPriority  = onModifyAccuracyPriority;
        this.onModifyAtkPriority       = onModifyAtkPriority;
        this.onModifyCritRatioPriority = onModifyCritRatioPriority;
        this.onModifyDefPriority       = onModifyDefPriority;
        this.onModifyMovePriority      = onModifyMovePriority;
        this.onModifyPriorityPriority  = onModifyPriorityPriority;
        this.onModifySpAPriority       = onModifySpAPriority;
        this.onModifySpDPriority       = onModifySpDPriority;
        this.onModifyWeightPriority    = onModifyWeightPriority;

        this.onResidualOrder = onResidualOrder;
        this.recoil          = recoil;
        this.secondaries     = secondaries;
        this.self            = self;
        this.shortDesc       = shortDesc;
        this.status          = status;

        /*Effect*/
        this.exists = exists;
        this.time   = time;

        /*MoveData*/
        this.effectType              = effectType;
        this.accuracy                = accuracy;
        this.basePower               = basePower;
        this.category                = category;
        this.flags                   = flags;
        this.pp                      = pp;
        this.priority                = priority;
        this.type                    = type;
        this.boosts                  = boosts;
        this.breaksProtect           = breaksProtect;
        this.contestType             = contestType;
        this.critRatio               = critRatio;
        this.damage                  = damage;
        this.damageByLevel           = damageByLevel;
        this.defensiveCategory       = defensiveCategory;
        this.ignoreAbility           = ignoreAbility;
        this.ignoreAccuracy          = ignoreAccuracy;
        this.ignoreDefensive         = ignoreDefensive;
        this.ignoreImmunity          = ignoreImmunity;
        this.ignoreNegativeOffensive = ignoreNegativeOffensive;
        this.ignoreOffensive         = ignoreOffensive;
        this.ignorePositiveDefensive = ignorePositiveDefensive;
        this.isViable                = isViable;
        this.mindBlownRecoil         = mindBlownRecoil;
        this.noFaint                 = noFaint;
        this.ohko                    = ohko;
        this.selfdestruct            = selfdestruct;
        this.sideCondition           = sideCondition;
        this.stealsBoosts            = stealsBoosts;
        this.useTargetOffensive      = useTargetOffensive;
        this.useSourceDefensive      = useSourceDefensive;
        this.volatileStatus          = volatileStatus;
        this.willCrit                = willCrit;
        this.zMovePower              = zMovePower;
        this.zMoveEffect             = zMoveEffect;
        this.zMoveBoost              = zMoveBoost;
    }
コード例 #8
0
 private void Globals_OnGlobalsUpdated(Globals.Type t, string name, object value)
 {
     Repaint();
 }
コード例 #9
0
    public int ModifyDamage(int baseDamage, Pokemon pokemon, Pokemon target, ActiveMove activeMove)
    {
        Globals.Type type = activeMove.activeData.moveData.type;
        baseDamage += 2;

        RelayVar relayVar;

        //MultiTarget should go here but not needed

        //Weather modifier
        relayVar   = new RelayVar(integerValue: baseDamage);
        relayVar   = RunEvent("WeatherModifyDamage", pokemon.targetData, target.myPokemon, activeMove.activeData.moveData, relayVar);
        baseDamage = relayVar.integerValue;

        Debug.Log("Weather modifier: " + baseDamage);


        //crit
        if (activeMove.activeData.crit)
        {
            baseDamage = Mathf.FloorToInt(baseDamage * 1.5f);
        }

        Debug.Log("Crit modifier: " + baseDamage);


        //Not a modifier
        baseDamage = RandomScript.Randomizer(baseDamage);
        Debug.Log("Random modifier: " + baseDamage);


        //STAB
        if (pokemon.HasType(type))
        {
            baseDamage = Mathf.FloorToInt(baseDamage * ((activeMove.activeData.stab != -1) ? activeMove.activeData.stab : 1.5f));
        }

        Debug.Log("STAB modifier: " + baseDamage);


        //Types
        activeMove.activeData.typeMod = Mathf.Clamp(target.RunEffectiveness(activeMove), -6, 6);
        if (activeMove.activeData.typeMod > 0)
        {
            for (int i = 0; i < activeMove.activeData.typeMod; i++)
            {
                baseDamage *= 2;
            }
        }

        if (activeMove.activeData.typeMod < 0)
        {
            for (int i = 0; i > activeMove.activeData.typeMod; i--)
            {
                baseDamage = Mathf.FloorToInt(baseDamage / 2f);
            }
        }

        Debug.Log("Types modifier: " + baseDamage);


        //Burn Status
        if (pokemon.statusId == "brn" && activeMove.activeData.moveData.category == Globals.MoveCategory.Physical && !pokemon.HasAbilityActive(new string[] { "guts" }))
        {
            if (activeMove.id != "facade")
            {
                baseDamage = Mathf.FloorToInt(baseDamage * 0.5f);
            }
        }

        Debug.Log("Burn modifier: " + baseDamage);


        // Final modifier. Modifiers that modify damage after min damage check, such as Life Orb.
        relayVar   = new RelayVar(integerValue: baseDamage);
        relayVar   = RunEvent("ModifyDamage", pokemon.targetData, target.myPokemon, activeMove.activeData.moveData, relayVar);
        baseDamage = relayVar.integerValue;

        Debug.Log("other modifier: " + baseDamage);


        //Z breaking protect
        if (activeMove.activeData.zPowered && activeMove.activeData.zBrokeProtect)
        {
            baseDamage = Mathf.FloorToInt(baseDamage * 0.25f);
        }

        Debug.Log("z break protect modifier: " + baseDamage);


        if (baseDamage < 1)
        {
            baseDamage = 1;
        }

        return(Mathf.FloorToInt(baseDamage));
    }