///<summary> Checks targetEO DestructionInfo on matching DestroyConditions, adds effect to targetEO's Effects list. </summary> private void CheckAndAdd(EnvironOutput effect, EnvironObject targetEO) { if (targetEO.destruction && effect.damageI) { targetEO.destruction.CheckDamageMatch(effect.damageI.ID); } targetEO.effects.Add(effect, targetEO, this); }
///<summary> Checks targetEO DestructionInfo on matching DestroyConditions, adds effect to targetEO's Effects list. </summary> private void CheckAndAdd(EnvironOutput effect, EnvironObject targetEO, DestroyCondition destructCondition) { if (targetEO.destruction) { targetEO.destruction.CheckTagsMatch(tags, destructCondition); if (effect.damageI) { targetEO.destruction.CheckDamageMatch(effect.damageI.ID); } } targetEO.effects.Add(effect, targetEO, this); }
///<summary> Adds On_Stay Outputs as an Effect to the TargetEO, as well as Effects with allowTransmission. </summary> private void OnStay(TransferCondition stay, EnvironObject targetEO) { if (targetEO == null) { return; } foreach (EnvironOutput effect in output) { if (effect.transferCondition == stay) { CheckAndAdd(effect, targetEO); } } foreach (EnvironOutput tEffect in effects.inputList) { if (tEffect.allowTransmission && tEffect.transferCondition == stay) { CheckAndAdd(tEffect, targetEO); } } }
///<summary> Adds On_Enter Outputs as an Effect to the TargetEO, as well as Effects with allowTransmission. </summary> private void OnEnter(TransferCondition enterTC, DestroyCondition enterDSC, EnvironObject targetEO) { if (targetEO == null) { return; } foreach (EnvironOutput effect in output) { if (effect.transferCondition == enterTC) { CheckAndAdd(effect, targetEO, enterDSC); } } foreach (EnvironOutput tEffect in effects.inputList) { if (tEffect.allowTransmission && tEffect.transferCondition == enterTC) { CheckAndAdd(tEffect, targetEO, enterDSC); } } }
///<summary> Sets Info and variables up for use. </summary> public void Setup(EnvironObject targetEO, EnvironObject lastSourceEO) { if (damageI) { damageI = Instantiate(damageI); damageI.Setup(targetEO.resistances); } if (appearanceI) { appearanceI = Instantiate(appearanceI); appearanceI.Setup(targetEO.gameObject); if (appearanceI.hideOnResistance && targetEO.resistances) //Turns off Appearance particles and materials if hideOnResistance has been set up { if (targetEO.resistances.HasTypeIDMatch(ResistanceType.NULLIFY_DAMAGE, appearanceI.hideIDList.Distinct())) { appearanceI.TurnOff(); } } } limit.ResetTimer(); lastSource = lastSourceEO; target = targetEO; if (similarity == Similarity.SELECTIVE) { uniqueID = selectiveDescription; } if (similarity == Similarity.UNIQUE) { uniqueID = GetInstanceID().ToString(); firstSource = lastSourceEO; } }
///<summary> Adds On_Exit Outputs as an Effect to the TargetEO, as well as Effects with allowTransmission. Also flags Effects meeting the On_Exit TerminalCondition for removal. </summary> private void OnExit(TransferCondition exitTC, TerminalCondition terminalCondition, DestroyCondition exitDSC, EnvironObject targetEO) { if (targetEO == null) { return; } foreach (EnvironOutput effect in effects.inputList) { if (effect.allowTransmission && effect.transferCondition == exitTC) { CheckAndAdd(effect, targetEO, exitDSC); } } foreach (EnvironOutput eOut in output) { if (eOut.transferCondition == exitTC) { CheckAndAdd(eOut, targetEO, exitDSC); } if (eOut.endOnCondition == terminalCondition) { targetEO.effects.FlagForRemoval(eOut); } } }