public void Unexecute()
 {
     if (performerIOcuppy.Stats.ContainsKey(STATTYPE.ACTIONPOINTS))
     {
         StatModification statModification = new StatModification(performerIOcuppy, performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS], actionPointsRequired, STATMODIFIERTYPE.BUFF);
         performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS].AddStatModifier(statModification);
         performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS].ApplyModifications();
     }
 }
Beispiel #2
0
    public void Test()
    {
        vitality.BaseMod.Value -= 10;

        vitality.modified += OnVitalityChanged;

        StatModification<int> bonus = new StatModification<int>("Bonus", 1, new AddInt(), 50);
        vitality.AddStatMod(bonus);
        vitality.RemoveStatMod(bonus);
    }
 public void Execute()
 {
     if (performerIOcuppy.Stats.ContainsKey(STATTYPE.ACTIONPOINTS))
     {
         StatModification statModification = new StatModification(performerIOcuppy, performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS], -actionPointsRequired, STATMODIFIERTYPE.NERF);
         performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS].AddStatModifier(statModification);
         performerIOcuppy.Stats[STATTYPE.ACTIONPOINTS].ApplyModifications();
         executionState = COMMANDEXECUTINSTATE.FINISH;
     }
 }
        public override void OnCardEffectApply(ICardTarget cardTarget)
        {
            IOcuppy ocuppier = cardTarget.GetOcuppy();

            if (ocuppier == null)
            {
                return;
            }

            switch (statModifierType)
            {
            case STATMODIFIERTYPE.BUFF:
                // SI ES VIDA NUNCA SE PUEDE CURAR MAS QUE EL MAXIMO
                if (statID == 0)
                {
                    // max 4 actual 3 to add 2
                    // 4 - 3 = 1   2 > 1   2 = 1
                    int maxDiference = ocuppier.Stats[statType].MaxStatValue - ocuppier.Stats[statType].ActualStatValue;
                    if (amountToModify > maxDiference)
                    {
                        amountToModify = maxDiference;
                    }
                }
                else
                {
                    // S ES OTRO STAT VAMOS A AUMENTAR EL MAXIMO
                    int diferenceToAdd = ocuppier.Stats[statType].MaxStatValue - ocuppier.Stats[statType].ActualStatValue;
                    if (amountToModify > diferenceToAdd)
                    {
                        // max 2 actual 2 diference to add = 0

                        // PERO SI ES MOVE RANGE ATTACK RANGE NO PUEDE SER MAS QUE 3
                        if (statID == 1 || statID == 2)
                        {
                            if (ocuppier.Stats[statType].MaxStatValue > 2)
                            {
                                amountToModify = 1;
                                return;
                            }
                        }
                        int newAmount = ocuppier.Stats[statType].MaxStatValue + amountToModify - diferenceToAdd;

                        ocuppier.Stats[statType].ChangeMaxStatValue(newAmount);
                    }
                }

                break;

            case STATMODIFIERTYPE.NERF:
                int difference = ocuppier.Stats[statType].ActualStatValue - amountToModify;
                if (difference < 0)
                {
                    // attack 1, le va a sacar 2 == -1  2 +-1 = 1
                    amountToModify += difference;
                }
                break;

            default:
                break;
            }

            StatModification statModification = new StatModification(ocuppier, ocuppier.Stats[statType], amountToModify, statModifierType);

            ocuppier.Stats[statType].AddStatModifier(statModification);
            ocuppier.Stats[statType].ApplyModifications();
        }