コード例 #1
0
        private void Awake()
        {
            item   = this.GetComponent <Item>();
            module = item.data.GetModule <ItemModuleCycleCharge>();

            try { autoImbueSpell = Catalog.GetData <SpellCastCharge>(module.autoImbueSpell, true); }
            catch { Debug.LogError(string.Format("[Fisher-ImbuementController] Exception! Unable to Find Spell {0}", module.autoImbueSpell)); }

            TryGetItemImbue();
        }
コード例 #2
0
 public static IEnumerator TransferDeltaEnergy(Imbue itemImbue, SpellCastCharge activeSpell, float energyDelta = 20.0f, int counts = 5)
 {
     for (int i = 0; i < counts; i++)
     {
         try { itemImbue.Transfer(activeSpell, energyDelta); }
         catch { }
         yield return(new WaitForSeconds(0.01f));
     }
     yield return(null);
 }
コード例 #3
0
 public void Imbue(SpellCastCharge spell)
 {
     item.colliderGroups.ForEach(group => {
         if (group.data.modifiers.Where(mod => mod.imbueType != ColliderGroupData.ImbueType.None &&
                                        spell.imbueAllowMetal || mod.imbueType != ColliderGroupData.ImbueType.Metal)
             .Any())
         {
             group.imbue.Transfer(spell, group.imbue.maxEnergy);
         }
     });
 }
        private void TransferImbueCharge(Item imbueTarget, string spellID)
        {
            if (String.IsNullOrEmpty(spellID))
            {
                return;
            }
            SpellCastCharge transferedSpell = Catalog.GetData <SpellCastCharge>(spellID, true).Clone();

            foreach (Imbue itemImbue in imbueTarget.imbues)
            {
                try
                {
                    StartCoroutine(FrameworkCore.TransferDeltaEnergy(itemImbue, transferedSpell));
                    queuedSpell = null;
                    return;
                }
                catch { }
            }
        }
コード例 #5
0
        private IEnumerator TransferDeltaEnergy(Imbue itemImbue, SpellCastCharge activeSpell, float energyDelta = 1.0f)
        {
            int counts = (int)Mathf.Round(200.0f / energyDelta);

            isActive = true;
            for (int i = 0; i < counts; i++)
            {
                try
                {
                    itemImbue.Transfer(activeSpell, energyDelta);
                    if (itemImbue.energy >= itemImbue.maxEnergy)
                    {
                        break;
                    }
                }
                catch { }
                yield return(null);
            }
            isActive = false;
            yield return(null);
        }
 public void OnHeldAction(RagdollHand interactor, Handle handle, Interactable.Action action)
 {
     if (action == triggerAction)
     {
         if (isActive)
         {
             return;
         }
         if (counter >= module.spellIDs.Length)
         {
             counter     = 0;
             activeSpell = null;
             StartCoroutine(SafeChargeDrain(item.imbues[0], module.energyStepSize));
             return;
         }
         else
         {
             currentSpell = module.spellIDs[counter];
             counter++;
             activeSpell = Catalog.GetData <SpellCastCharge>(currentSpell, true);
             StartCoroutine(TransferDeltaEnergy(item.imbues[0], activeSpell, module.energyStepSize));
         }
     }
 }
コード例 #7
0
 public override void OnCatalogRefresh()
 {
     base.OnCatalogRefresh();
     daggerBase  = Catalog.GetData <ItemPhysic>(weaponId ?? Catalog.GetData <DaggerSpell>("DaggerSpell").weaponId, true);
     spellCharge = Catalog.GetData <SpellCastCharge>(spellCastName);
 }