Exemplo n.º 1
0
        public static void Postfix(ActionBarGroupSlot __instance, ref List <AbilityData> ___Conversion, ref ButtonPF ___ToggleAdditionalSpells)
        {
            MechanicActionBarSlotItem mechanicActionBarSlotItem = __instance.MechanicSlot as MechanicActionBarSlotItem;

            if (mechanicActionBarSlotItem != null)
            {
                //UnityModManager.Logger.Log("Rua 1");
                var     itemType   = mechanicActionBarSlotItem.Item.Blueprint.Type;
                int     spellLevel = mechanicActionBarSlotItem.Item.Blueprint.SpellLevel;
                Ability ability    = mechanicActionBarSlotItem.Item.Ability;
                //UnityModManager.Logger.Log("Rua 2");
                if (spellLevel >= 2 && ability != null && (itemType == UsableItemType.Potion || itemType == UsableItemType.Scroll || itemType == UsableItemType.Wand))
                {
                    //UnityModManager.Logger.Log("Rua 3");
                    var unit = mechanicActionBarSlotItem.Item.Owner;
                    //UnityModManager.Logger.Log("Rua 4");
                    foreach (Ability _ability in unit.Abilities)
                    {
                        if (_ability.Blueprint.GetComponent <ConsumeItemComponent>() != null && mechanicActionBarSlotItem.Item.Ability != null)
                        {
                            //UnityModManager.Logger.Log("Rua 5");
                            AbilityData abld = new AbilityData(_ability)
                            {
                                ParamSpellSlot = new SpellSlot {
                                    Spell = new AbilityData(ability)
                                }
                                //PotionForOther = true
                            };
                            //UnityModManager.Logger.Log("Rua 6");
                            if (mechanicActionBarSlotItem.Item.Blueprint.Type == UsableItemType.Potion)
                            {
                                // if it's potion, ___Conversion has become  { [give others potion ability]} before this Postfix.
                                ___Conversion.Add(abld);
                            }
                            else
                            {
                                //elsewise, create a new ___Conversion list.
                                ___Conversion = new List <AbilityData>()
                                {
                                    abld
                                };
                            }
                            //UnityModManager.Logger.Log($"Rua 7: Conversion has {___Conversion.Count} elements");
                            //UnityModManager.Logger.Log("Rua 8");
                            if (___ToggleAdditionalSpells != null)
                            {
                                ___ToggleAdditionalSpells.gameObject.SetActive(true);
                            }
                            //UnityModManager.Logger.Log("Rua 9");
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        static public void Postfix(ActionBarGroupSlot __instance, ref ActionBarSpellsGroup ___SubGroup, ref UnitEntityData ___Selected, ref List <AbilityData> ___Conversion)
        {
            MechanicActionBarSlotItem mechanicActionBarSlotItem = __instance.MechanicSlot as MechanicActionBarSlotItem;

            if (mechanicActionBarSlotItem != null && (mechanicActionBarSlotItem.Item.Blueprint.Type == UsableItemType.Scroll || mechanicActionBarSlotItem.Item.Blueprint.Type == UsableItemType.Wand))
            {
                Ability ability = mechanicActionBarSlotItem.Item.Ability;
                if (ability != null)
                {
                    if (___SubGroup != null)
                    {
                        ___SubGroup.Toggle(___Selected, ___Conversion, ability.Data);
                    }
                }
            }
        }