Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
                }
            }
        }
Exemplo n.º 5
0
        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);
                }
            }
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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;
 }
Exemplo n.º 16
0
 private static void Effect_OnTemplateApplied(ImbueEffectPreset iep)
 {
     imbueEffect = iep;
 }