public static SL_ImbueEffect ParseImbueEffect(ImbueEffectPreset imbue) { var template = new SL_ImbueEffect { TargetStatusID = imbue.PresetID, Name = imbue.Name, Description = imbue.Description }; //CustomStatusEffects.GetImbueLocalization(imbue, out template.Name, out template.Description); var list = new List <SL_EffectTransform>(); foreach (Transform child in imbue.transform) { var effectsChild = SL_EffectTransform.ParseTransform(child); if (effectsChild.HasContent) { list.Add(effectsChild); } } template.Effects = list.ToArray(); return(template); }
public static void Prefix(Weapon __instance, ref ImbueEffectPreset _effect) { CharacterSkillKnowledge characterSkillKnowledge; if (__instance == null) { characterSkillKnowledge = null; } else { Character ownerCharacter = __instance.OwnerCharacter; if (ownerCharacter == null) { characterSkillKnowledge = null; } else { CharacterInventory inventory = ownerCharacter.Inventory; characterSkillKnowledge = ((inventory != null) ? inventory.SkillKnowledge : null); } } CharacterSkillKnowledge characterSkillKnowledge2 = characterSkillKnowledge; bool flag = _effect.PresetID == 219 && characterSkillKnowledge2 != null && characterSkillKnowledge2.IsItemLearned(2502026); if (flag) { _effect = (ImbueEffectPreset)ResourcesPrefabManager.Instance.GetEffectPreset(269); } }
/// <summary> /// Modifies the visual effects of the Physical Imbue and sets a proper status icon /// </summary> public static void Initialize() { ImbueEffectPreset physicalImbue = ResourcesPrefabManager.Instance.GetEffectPreset(260) as ImbueEffectPreset; // Get the smoke effect and disable it physicalImbue.ImbueFX.Find("Smoke").GetComponent <ParticleSystemRenderer>().enabled = false; }
// Token: 0x06000032 RID: 50 RVA: 0x000042B8 File Offset: 0x000024B8 public static void MakeRadiantLightInfusion() { ImbueEffectPreset item = TinyEffectManager.MakeImbuePreset(269, "Radiant Light Imbue", "Weapon deals some Lightning Damage, applies Radiating and emits light.", null, 219, 6f, 0.25f, DamageType.Types.Electric, "Radiating", null, 0, 100); Item itemPrefab = ResourcesPrefabManager.Instance.GetItemPrefab(8200310); GameObject gameObject = (itemPrefab != null) ? itemPrefab.transform.Find("NormalBolt").gameObject : null; bool flag = gameObject != null; if (flag) { ImbueEffectORCondition component = gameObject.GetComponent <ImbueEffectORCondition>(); bool flag2 = component != null; if (flag2) { List <ImbueEffectPreset> list = component.ImbueEffectPresets.ToList <ImbueEffectPreset>(); list.Add(item); component.ImbueEffectPresets = list.ToArray(); } } Item itemPrefab2 = ResourcesPrefabManager.Instance.GetItemPrefab(8100200); GameObject gameObject2 = (itemPrefab2 != null) ? itemPrefab2.transform.Find("ElementalEffect/NormalLightning").gameObject : null; bool flag3 = gameObject2 != null; if (flag3) { ImbueEffectORCondition component2 = gameObject2.GetComponent <ImbueEffectORCondition>(); bool flag4 = component2 != null; if (flag4) { List <ImbueEffectPreset> list2 = component2.ImbueEffectPresets.ToList <ImbueEffectPreset>(); list2.Add(item); component2.ImbueEffectPresets = list2.ToArray(); } } }
private void AddMinionImbue(Character c) { // determine imbue ImbueEffectPreset imbue = null; bool useAltImbue = UnityEngine.Random.Range(0, 99) > 49; if (c.ActiveMaxHealth < 250) // fire rag (202) or bolt rag (206) { int presetID = useAltImbue ? 206 : 202; imbue = ResourcesPrefabManager.Instance.GetEffectPreset(presetID) as ImbueEffectPreset; } else if (c.ActiveMaxHealth < 600) // fire varnish (203) or ethereal varnish (208) { int presetID = useAltImbue ? 208 : 203; imbue = ResourcesPrefabManager.Instance.GetEffectPreset(presetID) as ImbueEffectPreset; } else // infuse fire (217) or dark varnish (211) { int presetID = useAltImbue ? 211 : 217; imbue = ResourcesPrefabManager.Instance.GetEffectPreset(presetID) as ImbueEffectPreset; } // apply imbue if (c.CurrentWeapon is MeleeWeapon weapon) { c.CurrentWeapon.AddImbueEffect(imbue, 240); } else { MeleeWeapon w = c.Inventory.Pouch.GetContainedItems().Find(x => x.GetType() == typeof(MeleeWeapon)) as MeleeWeapon; w.AddImbueEffect(imbue, 240); } }
// Token: 0x0600001E RID: 30 RVA: 0x000029E0 File Offset: 0x00000BE0 public static AddStatusEffect AddStatusEffectChance(ImbueEffectPreset effect, int chance, string statusEffectName) { AddStatusEffect addStatusEffect = effect.transform.Find("Effects").gameObject.AddComponent <AddStatusEffect>(); addStatusEffect.SetChanceToContract(chance); addStatusEffect.Status = ResourcesPrefabManager.Instance.GetStatusEffectPrefab(statusEffectName); addStatusEffect.OverrideEffectCategory = EffectSynchronizer.EffectCategories.Hit; return(addStatusEffect); }
// Token: 0x0600001D RID: 29 RVA: 0x00002990 File Offset: 0x00000B90 public static AddStatusEffectBuildUp AddStatusEffectBuildUp(ImbueEffectPreset effect, float buildup, string statusEffectName) { AddStatusEffectBuildUp addStatusEffectBuildUp = effect.transform.Find("Effects").gameObject.AddComponent <AddStatusEffectBuildUp>(); addStatusEffectBuildUp.BuildUpValue = buildup; addStatusEffectBuildUp.Status = ResourcesPrefabManager.Instance.GetStatusEffectPrefab(statusEffectName); addStatusEffectBuildUp.OverrideEffectCategory = EffectSynchronizer.EffectCategories.Hit; return(addStatusEffectBuildUp); }
protected override void ActivateLocally(Character _affectedCharacter, object[] _infos) { Character c = _affectedCharacter; if (!c.IsLocalPlayer) { return; } if (c.CurrentWeapon == null) { SendUIMessage(c, "You need a weapon equipped to do that!"); return; } bool broken = true; Item lowestDurability = null; float currentDurability = float.MaxValue; foreach (Item item in c.Inventory.GetOwnedItems(WeaponSharpening.SHARPENING_STONE_ID)) { if (item.CurrentDurability > 0 && item.CurrentDurability < currentDurability) { broken = false; lowestDurability = item; currentDurability = item.CurrentDurability; } } if (broken) { SendUIMessage(c, string.Format("Your Sharpening Stone is worn!")); return; } try { ImbueEffectPreset p = ResourcesPrefabManager.Instance.GetEffectPreset(260) as ImbueEffectPreset; c.CurrentWeapon.AddImbueEffect(p, 120f); if (p == null) { SendUIMessage(c, "Failed to load preset"); } lowestDurability.ReduceDurability(WeaponSharpening.DURABILITY_COST); } catch (Exception ex) { Debug.LogError(ex.Message); SendUIMessage(c, "Failed to sharpen!"); } }
// Token: 0x06000020 RID: 32 RVA: 0x00002A90 File Offset: 0x00000C90 public static ImbueEffectPreset MakeImbuePreset(int imbueID, string name, string description, string iconFileName, int visualEffectID, float flatDamage, float scalingDamage, DamageType.Types damageType, string statusEffect, Skill skill, int chanceToContract = 0, int buildUp = 0) { Dictionary <int, EffectPreset> dictionary = (Dictionary <int, EffectPreset>)At.GetValue(typeof(ResourcesPrefabManager), null, "EFFECTPRESET_PREFABS"); bool flag = !dictionary.ContainsKey(imbueID); ImbueEffectPreset result; if (flag) { GameObject gameObject = new GameObject(imbueID.ToString() + "_" + name.Replace(" ", "")); gameObject.SetActive(true); UnityEngine.Object.DontDestroyOnLoad(gameObject); ImbueEffectPreset imbueEffectPreset = gameObject.AddComponent <ImbueEffectPreset>(); imbueEffectPreset.name = imbueID.ToString() + "_" + name.Replace(" ", ""); At.SetValue <int>(imbueID, typeof(EffectPreset), imbueEffectPreset, "m_StatusEffectID"); At.SetValue <string>(name, typeof(ImbueEffectPreset), imbueEffectPreset, "m_imbueNameKey"); At.SetValue <string>(description, typeof(ImbueEffectPreset), imbueEffectPreset, "m_imbueDescKey"); imbueEffectPreset.ImbueStatusIcon = ((ImbueEffectPreset)dictionary[visualEffectID]).ImbueStatusIcon; imbueEffectPreset.ImbueFX = ((ImbueEffectPreset)dictionary[visualEffectID]).ImbueFX; TinyEffectManager.SetNameAndDesc(imbueEffectPreset, name, description); dictionary.Add(imbueID, imbueEffectPreset); GameObject gameObject2 = new GameObject("Effects"); gameObject2.SetActive(true); UnityEngine.Object.DontDestroyOnLoad(gameObject2); gameObject2.transform.SetParent(imbueEffectPreset.transform); bool flag2 = statusEffect != null && chanceToContract > 0; if (flag2) { TinyEffectManager.AddStatusEffectChance(imbueEffectPreset, chanceToContract, statusEffect); } bool flag3 = statusEffect != null && buildUp > 0; if (flag3) { TinyEffectManager.AddStatusEffectBuildUp(imbueEffectPreset, (float)buildUp, statusEffect); } bool flag4 = scalingDamage > 0f || flatDamage > 0f; if (flag4) { TinyEffectManager.AddWeaponDamage(imbueEffectPreset, flatDamage, scalingDamage, damageType); } bool flag5 = skill != null; if (flag5) { skill.GetComponentInChildren <ImbueWeapon>().ImbuedEffect = imbueEffectPreset; } result = imbueEffectPreset; } else { result = null; } return(result); }
// Token: 0x0600001F RID: 31 RVA: 0x00002A30 File Offset: 0x00000C30 public static WeaponDamage AddWeaponDamage(ImbueEffectPreset effect, float baseDamage, float damageScaling, DamageType.Types damageType) { WeaponDamage weaponDamage = effect.transform.Find("Effects").gameObject.AddComponent <WeaponDamage>(); weaponDamage.WeaponDamageMult = 1f + damageScaling; weaponDamage.OverrideDType = damageType; weaponDamage.Damages = new DamageType[] { new DamageType(damageType, baseDamage) }; weaponDamage.OverrideEffectCategory = EffectSynchronizer.EffectCategories.Hit; return(weaponDamage); }
/// <summary> /// Helper to set the Name and Description localization for an Imbue Preset /// </summary> public static void SetImbueLocalization(ImbueEffectPreset preset, string name, string description) { GetImbueLocalization(preset, out string oldName, out string oldDesc); if (string.IsNullOrEmpty(name)) { name = oldName; } if (string.IsNullOrEmpty(description)) { description = oldDesc; } var nameKey = $"NAME_{preset.PresetID}_{preset.Name.Trim()}"; At.SetField(preset, "m_imbueNameKey", nameKey); if (References.GENERAL_LOCALIZATION.ContainsKey(nameKey)) { References.GENERAL_LOCALIZATION[nameKey] = name; } else { References.GENERAL_LOCALIZATION.Add(nameKey, name); } var descKey = $"DESC_{preset.PresetID}_{preset.Name.Trim()}"; At.SetField(preset, "m_imbueDescKey", descKey); if (References.GENERAL_LOCALIZATION.ContainsKey(descKey)) { References.GENERAL_LOCALIZATION[descKey] = description; } else { References.GENERAL_LOCALIZATION.Add(descKey, description); } if (preset.GetComponent <StatusEffect>() is StatusEffect status) { SetStatusLocalization(status, name, description); } }
// Token: 0x0600001C RID: 28 RVA: 0x00002920 File Offset: 0x00000B20 public static void SetNameAndDesc(ImbueEffectPreset imbueEffect, string name, string desc) { ItemLocalization value = new ItemLocalization(name, desc); Dictionary <int, ItemLocalization> dictionary = At.GetValue(typeof(LocalizationManager), LocalizationManager.Instance, "m_itemLocalization") as Dictionary <int, ItemLocalization>; bool flag = dictionary != null; if (flag) { bool flag2 = dictionary.ContainsKey(imbueEffect.PresetID); if (flag2) { dictionary[imbueEffect.PresetID] = value; } else { dictionary.Add(imbueEffect.PresetID, value); } } }
public static DM_ImbueEffect ParseImbueEffect(ImbueEffectPreset imbue) { var template = new DM_ImbueEffect { StatusID = imbue.PresetID, Name = imbue.Name, Description = imbue.Description }; template.Effects = new List <DM_EffectTransform>(); foreach (Transform child in imbue.transform) { var effectsChild = DM_EffectTransform.ParseTransform(child); if (effectsChild.ChildEffects.Count > 0 || effectsChild.Effects.Count > 0) // || effectsChild.EffectConditions.Count > 0) { template.Effects.Add(effectsChild); } } return(template); }
public ImbueModel(ImbueEffectPreset preset) { Name = preset.Name.Trim(); PresetID = preset.PresetID; DamageMultiplier = 0f; OverrideType = DamageType.Types.Count; BonusDamage = new DamageList(); AttackSpeedModifier = 0; if (preset.PresetID == 209) { AttackSpeedModifier = 0.2f; } else { if (preset.GetComponentInChildren <WeaponDamage>() is WeaponDamage weaponDamage) { OverrideType = weaponDamage.OverrideDType; DamageMultiplier = weaponDamage.WeaponDamageMult - 1; BonusDamage = new DamageList(weaponDamage.Damages); } } }
/// <summary> /// Helper to get the name and description for an Imbue. /// </summary> /// <param name="preset">The Imbue Preset to get localization for.</param> /// <param name="name">The output name.</param> /// <param name="desc">The output description.</param> public static void GetImbueLocalization(ImbueEffectPreset preset, out string name, out string desc) { name = preset.Name; desc = preset.Description; }
private static void Effect_OnTemplateApplied(ImbueEffectPreset iep) { imbueEffect = iep; }