/** * Remove a turn effect from this player and revert all its effects on this player * * Arguments * - TurnEffect effect - The turn effect to remove */ public void DetachTurnEffect(Effect effect) { switch (effect.GetTurnEffectType()) { // Detach the effect on this player depending on type case TurnEffectType.STATEFFECT: // Can only reset the vision stat if (effect.GetStatAffected() == Stat.VISION) stats[Stat.VISION] = playerClass.GetStat(Stat.VISION); break; case TurnEffectType.STATMULTIPLIEREFFECT: // Can rese the stat multiplier now playerClass.RestoreDefaultStat(effect.GetStatAffected()); break; case TurnEffectType.ITEMEFFECT: // Need to reset affected items foreach (Item item in inventory) { if (item != null && item.GetType().Equals(effect.GetAffectedItemType())) { /* Reset item cool down and turn settings */ item.ResetCoolDown(); item.ResetCoolDownSetting(); item.ResetUsePerTurn(); if (item.RemainingCoolDownTurns() == 0) // Reduce the cool down of the item to be sure item.ReduceCoolDown(); } } break; case TurnEffectType.MATERIALEFFECT: GetComponent<PhotonView>().RPC("ResetMaterial", PhotonTargets.All, null); break; case TurnEffectType.MODELCHANGEEFFECT: goto case TurnEffectType.COMPONENTEFFECT;// Need complex detach routine case TurnEffectType.COMPONENTEFFECT: // Need complex detaching actions effect.ExtraDetachActions(); break; default: break; // Unknown } effectPanelScript.RemoveTurnEffect(effect); turnEffects.Remove(effect); }