Ejemplo n.º 1
0
        public void StaticChange(EffectContext context, decimal value)
        {
            if (!StaticEffect.ContainsKey(context))
            {
                StaticEffect[context] = value;
            }
            else
            {
                StaticEffect[context] += value;
            }

            Invoke(context);

            if (context == StaticEffectContext.Attack)
            {
                Invoke(StaticEffectContext.CriticalDamage);
            }
            // We not to need update hp when hp is updated(maybe character change), process already exec in HandleSpecific

            void Invoke(EffectContext c)
            {
                try { InvokeStatic(c, HandleSpecific(c, out var newValue) ? newValue : StaticEffect[c]); }
                catch (ApplicationInvalidOperationException e) { Invoke((EffectContext)e.CustomData); }
                catch (InvalidOperationException) { }
            }
        }
Ejemplo n.º 2
0
        public void AddEffect(Type effectType)
        {
            Effect effect = effects.FirstOrDefault(x => x.GetType() == effectType);

            if (effect != null)
            {
                effect.UpdateEffectTime();
            }
            else
            {
                Effect newEffect = (Effect)Activator.CreateInstance(effectType);
                effects.Add(newEffect);

                newEffect.endEffectEvent += EndEffect;

                if (newEffect is OTEffect)
                {
                    (newEffect as OTEffect).doOTAction += GetOTEffect;
                }
                else if (newEffect is StaticEffect)
                {
                    StaticEffect eff = (newEffect as StaticEffect);
                    GetStaticEffect(eff);
                }
            }
        }
Ejemplo n.º 3
0
    // Start is called before the first frame update
    void Start()
    {
        Camera cam = Camera.main;

        vignette      = cam.GetComponent <VignetteEffect>();
        colorAdjuster = cam.GetComponent <ColorAdjustmentEffect>();
        staticEffect  = cam.GetComponent <StaticEffect>();

        initialSettings = new FilterSettings(vignette._strength, vignette._size, colorAdjuster._saturation, colorAdjuster._contrast, colorAdjuster._brightness);
    }
Ejemplo n.º 4
0
 protected void SetPower(EffectType type, int value)
 {
     //再設定する前に効果を初期化
     foreach (CardEffect CE in Effect)
     {
         if (CE.effectState.Count > 0 && CE.effectState[0].effectType == type)
         {
             Effect.Remove(CE);
         }
     }
     if (value != 0)
     {
         CardEffect e = new StaticEffect();
         e.effectState.Add(new EffectState(type, value));
         Effect.Add(e);
     }
 }
Ejemplo n.º 5
0
        public override bool ParseEffect(string line)
        {
            int          value;
            StaticEffect effect;
            bool         wasSuccessful = false;

            line = FoodEffect.NormalizeLine(line, StaticFoodEffect.InvalidWords, StaticFoodEffect.RegexReplacementMatches);

            if (_regexEffect.Match(line).Success&&
                Enum.TryParse(_regexEffect.Match(line).Value, true, out effect))
            {
                Effect        = effect;
                wasSuccessful = true;
            }

            return(wasSuccessful);
        }
Ejemplo n.º 6
0
 private void GetStaticEffect(StaticEffect effect, bool isEndEffect = false)
 {
     switch (effect.GetType().ToString())
     {
     case "Frozen":
     {
         if (isEndEffect)
         {
             speed += effect.Power;
         }
         else
         {
             speed -= effect.Power;
         }
         break;
     }
     }
 }
Ejemplo n.º 7
0
        public IReadOnlyCollection <Effect> GetStatic()
        {
            var addition = new List <Effect>();

            StaticEffect.ToList()
            .ForEach(x =>
            {
                try
                {
                    var(context, value) = x;
                    if (HandleSpecific(context, out var newValue))
                    {
                        addition.Add(new(context, newValue));
                    }
                    else
                    {
                        addition.Add(new(context, value));
                    }
                }
                catch (InvalidOperationException) { }
            });

            return(addition.Where(x => x.Value != 0).ToList());
        }
Ejemplo n.º 8
0
        public StaticEffect ToStaticEffect()
        {
            var output = new StaticEffect
            {
                Id                         = this.Id,
                FriendlyName               = this.FriendlyName,
                Description                = this.Description,
                AvailableAtLevel           = this.AvailableAtLevel,
                PreRequisiteEffectSourceId = this.PreRequisiteEffectSourceId,
                RequiredGameMode           = RequiredGameMode,
                isLevelUpPerk              = this.isLevelUpPerk,
                Duration                   = this.Duration,
                Cooldown                   = this.Cooldown,
                ObtainedAtLocation         = this.ObtainedAtLocation,

                MessageWhenHit    = this.MessageWhenHit,
                MessageWhenHit_M  = this.MessageWhenHit_M,
                MessageWhenHit_F  = this.MessageWhenHit_F,
                AttackerWhenHit   = this.AttackerWhenHit,
                AttackerWhenHit_M = this.AttackerWhenHit_M,
                AttackerWhenHit_F = this.AttackerWhenHit_F,

                HealthBonusPercent        = this.HealthBonusPercent,
                ManaBonusPercent          = this.ManaBonusPercent,
                ExtraSkillCriticalPercent = this.ExtraSkillCriticalPercent,
                HealthRecoveryPerUpdate   = this.HealthRecoveryPerUpdate,
                ManaRecoveryPerUpdate     = this.ManaRecoveryPerUpdate,
                SneakPercent                       = this.SneakPercent,
                EvasionPercent                     = this.EvasionPercent,
                EvasionNegationPercent             = this.EvasionNegationPercent,
                MeditationExtraMana                = this.MeditationExtraMana,
                CleanseExtraHealth                 = this.CleanseExtraHealth,
                MoveActionPointDiscount            = this.MoveActionPointDiscount,
                SpellExtraTFEnergyPercent          = this.SpellExtraTFEnergyPercent,
                SpellExtraHealthDamagePercent      = this.SpellExtraHealthDamagePercent,
                CleanseExtraTFEnergyRemovalPercent = this.CleanseExtraTFEnergyRemovalPercent,
                SpellMisfireChanceReduction        = this.SpellMisfireChanceReduction,
                SpellHealthDamageResistance        = this.SpellHealthDamageResistance,
                SpellTFEnergyDamageResistance      = this.SpellTFEnergyDamageResistance,
                ExtraInventorySpace                = this.ExtraInventorySpace,



                //                public float Discipline { get; set; }
                //public float Perception { get; set; }
                //public float Charisma { get; set; }
                //public float Submission_Dominance { get; set; }

                //public float Fortitude { get; set; }
                //public float Agility { get; set; }
                //public float Allure { get; set; }
                //public float Corruption_Purity { get; set; }

                //public float Magicka { get; set; }
                //public float Succour { get; set; }
                //public float Luck { get; set; }
                //public float Chaos_Order { get; set; }
            };

            return(output);
        }
Ejemplo n.º 9
0
    public void SetEffect(EffectPlayType pType, EffectType etype, int value, int turn = 0, Target target = null, int cost = 0, TriggerType trigger = TriggerType.None, GameObject animEffect = null)
    {
        if (etype == EffectType.AttackPower || etype == EffectType.SkillPower)
        {
            SetPower(etype, value);
            return;
        }
        CardEffect effect;

        switch (pType)
        {
        case EffectPlayType.triggerEffect:
            effect = new TriggerEffect()
            {
                TriggerType = trigger
            };
            break;

        case EffectPlayType.staticEffect:
            effect = new StaticEffect();
            break;

        case EffectPlayType.playEffect:
            effect = new PlayEffect();
            break;

        case EffectPlayType.activeEffect:
            effect = new ActiveEffect(cost);
            break;

        case EffectPlayType.none:
        default:
            effect = new CardEffect();
            break;
        }
        //カード効果に応じてアニメーション設定
        if (animEffect == null)
        {
            switch (etype)
            {
            case EffectType.CostAdd:
            case EffectType.UnitCostAdd:
            case EffectType.SkillDamageAdd:
            case EffectType.AttackAdd:
            case EffectType.AttackTime:
                animEffect = null;
                break;

            case EffectType.CardDest:
            case EffectType.RandCardDest: break;

            case EffectType.CardDraft:
            case EffectType.CardDraw:
            case EffectType.GetDisZoneCard:
            case EffectType.CardUnDraft:
            case EffectType.GetDispCard: break;

            case EffectType.Counter: break;

            case EffectType.Damage:
                animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_MAGICK_FIRE);
                break;

            case EffectType.Heal:
                animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_HEAL);
                break;
            }
        }
        effect.effectState.Add(new EffectState(etype, value, turn, target, animEffect));
        Effect.Add(effect);
    }