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) { } } }
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); } } }
// 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); }
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); } }
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); }
private void GetStaticEffect(StaticEffect effect, bool isEndEffect = false) { switch (effect.GetType().ToString()) { case "Frozen": { if (isEndEffect) { speed += effect.Power; } else { speed -= effect.Power; } break; } } }
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()); }
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); }
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); }