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(); }
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); }
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 { } } }
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)); } } }
public override void OnCatalogRefresh() { base.OnCatalogRefresh(); daggerBase = Catalog.GetData <ItemPhysic>(weaponId ?? Catalog.GetData <DaggerSpell>("DaggerSpell").weaponId, true); spellCharge = Catalog.GetData <SpellCastCharge>(spellCastName); }