Пример #1
0
 /**
  * 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);
 }