public void AddModifier(Modifier m) { modifiers.Add(m); m.Apply(); manaText.text = currentMana.ToString(); attackText.text = currentAttack.ToString(); healthText.text = currentHealth.ToString(); }
public void AddPassive(ScriptableModifier passiveModifier) { if (!activePassiveModifiers.ContainsKey(passiveModifier)) { Modifier passive = new Modifier(passiveModifier, characterBase); passive.IsPassive = true; passive.Apply(characterBase); activePassiveModifiers.Add(passiveModifier, passive); } }
public string ProcessString(string String) { if (Settings.CacheOutput && RecentOutput.Contains(String)) { return(null); } var Matched = MatchString(String); if (Matched == null) { Log.Trace($"Input: {String}"); return(null); } TriggerFlags(Matched?.OriginalFlags); TriggerFlags(Matched?.TranslationFlags); //Execute Reload Modifiers string Reloaded = Matched?.TranslationLine; string Prefix = String.GetStartTrimmed(); string Sufix = String.GetEndTrimmed(); if (!Reloaded.StartsWith(Prefix)) { Reloaded = Prefix + Reloaded; } if (!Reloaded.EndsWith(Sufix)) { Reloaded += Sufix; } foreach (var Modifier in ReloadModifiers) { Reloaded = Modifier.Apply(Reloaded, Matched?.OriginalLine); } Log.Debug($"Reload from:\r\n{Matched?.OriginalLine}\r\nTo:\r\n{Reloaded}"); if (Settings.CacheOutput) { if (RecentOutput.Count == 100) { RecentOutput.Dequeue(); } RecentOutput.Enqueue(Reloaded); } return(Reloaded); }
public void ApplyActionModifiers(CharacterBase characterBase, GameObject targetObject, Vector3 hitPoint, Vector3 hitDirection, Vector3 hitSurfaceNormal) { if (actionModifiers.Count == 0) { return; } CharacterBase targetcharacter = actionModifiers[0].Target == ModifierTarget.TARGET ? targetObject.GetComponent <CharacterBase>() : characterBase; if (targetcharacter && targetcharacter != characterBase) { affectedCharacters.Add(targetcharacter); } Modifier mod = new Modifier(actionModifiers[0].Modifier, characterBase); mod.Hit(hitPoint, hitDirection, hitSurfaceNormal, targetObject); if (targetcharacter != null) { mod.Apply(targetcharacter); if (mod.ActivePeriod <= 0.0f) { appliedInstantModifiers.Add(Tuple.Create(mod, targetcharacter)); } } foreach (var character in mod.AffectedCharacters) { affectedCharacters.Add(character); } for (var modifierIndex = 1; modifierIndex < actionModifiers.Count; modifierIndex++) { var abilityModifier = actionModifiers[modifierIndex]; int count = affectedCharacters.Count; for (int i = 0; i < count; i++) { Modifier modifier = applyModifier(abilityModifier, characterBase, affectedCharacters.ElementAt(i)); modifier.Hit(hitPoint, hitDirection, hitSurfaceNormal, affectedCharacters.ElementAt(i).gameObject); foreach (var character in modifier.AffectedCharacters) { affectedCharacters.Add(character); } } } }
public void ApplyModifiers(CharacterBase character, Item item, bool passive = false) { //add defence modifier //override the modifiers to add the attack bonus var defenseModifier = ScriptableObject.CreateInstance <ScriptableStatModifier>(); defenseModifier.Type = StatType.DEFENSE; switch (item) { case WeaponItem weapon: defenseModifier.Amount = weapon.defense; break; case ArmourItem armour: defenseModifier.Amount = armour.defense; //add attack modifier from the armour var attackModifier = ScriptableObject.CreateInstance <ScriptableStatModifier>(); attackModifier.Type = StatType.ATTACK; attackModifier.Amount = armour.attack; var attackMod = new Modifier(attackModifier, character); attackMod.IsPassive = passive; attackMod.Apply(character); appliedModifiers.Add(attackMod); break; default: break; } var deffenceMod = new Modifier(defenseModifier, character); deffenceMod.IsPassive = passive; deffenceMod.Apply(character); appliedModifiers.Add(deffenceMod); foreach (var modifier in Item.modifiers) { var mod = new Modifier(modifier, character); mod.IsPassive = passive; mod.Apply(character); appliedModifiers.Add(mod); } }
private Modifier applyModifier(AbilityModifier abilityModifier, CharacterBase ownerCharacter, CharacterBase targetCharacter) { if (abilityModifier.Modifier == null) { return(null); } //create a new instance of the modifier Modifier modifier = new Modifier(abilityModifier.Modifier, ownerCharacter); modifier.Apply(targetCharacter); if (abilityModifier.Modifier.ActivePeriod <= 0.0f) { appliedInstantModifiers.Add(Tuple.Create(modifier, targetCharacter)); } return(modifier); }