lolValue cast(lolValue lv, LOLType toType)
 {
     string newValue = "";
     switch(toType) {	//the type to be casted to
         case LOLType.NOOB:
             break;
         case LOLType.NUMBAR:
             switch (lv.getType()) {		//getting the original type
                 case LOLType.NOOB:
                     newValue = "0";
                     break;
                 case LOLType.NUMBAR:
                     newValue = lv.getValue();
                     break;
                 case LOLType.NUMBR:
                     newValue = lv.getValue();
                     break;
                 case LOLType.TROOF:
                     newValue = lv.getValue() == "FAIL"? "0": "1";
                     break;
                 case LOLType.YARN:
                     decimal dec;
                     if(decimal.TryParse(lv.getValue().ToString(), out dec) == true)
                         newValue = decimal.Parse(lv.getValue()).ToString();
                     else setError("Unable to cast value");
                     break;
             }
             break;
         case LOLType.NUMBR:
             switch (lv.getType()) {		//getting the original type
                 case LOLType.NOOB:
                     newValue = "0";
                     break;
                 case LOLType.NUMBAR:
                     newValue = Math.Floor(decimal.Parse(lv.getValue())).ToString();
                     break;
                 case LOLType.NUMBR:
                     newValue = lv.getValue();
                     break;
                 case LOLType.TROOF:
                     newValue = lv.getValue() == "FAIL"? "0": "1";
                     break;
                 case LOLType.YARN:
                     decimal dec;
                     if (decimal.TryParse (lv.getValue ().ToString (), out dec) == true) {
                         newValue = Math.Floor(decimal.Parse (lv.getValue ())).ToString();
                     }
                     else setError("Unable to cast value");
                     break;
             }
             break;
         case LOLType.TROOF:
             switch (lv.getType()) {		//getting the original type
                 case LOLType.NOOB:
                     newValue = "FAIL";
                     break;
                 case LOLType.NUMBAR:
                     newValue = decimal.Parse(lv.getValue()) != 0? "WIN": "FAIL";
                     break;
                 case LOLType.NUMBR:
                     newValue = int.Parse(lv.getValue()) != 0? "WIN": "FAIL";
                     break;
                 case LOLType.TROOF:
                     newValue = lv.getValue();
                     break;
                 case LOLType.YARN:
                     newValue = lv.getValue().Length != 0? "WIN": "FAIL";
                     break;
             }
             break;
         case LOLType.YARN:
             newValue = lv.getValue();
             break;
     }
     return new lolValue(toType, newValue);
 }
 public void setValue(lolValue lv)
 {
     type = lv.getType();
     value = lv.getValue();
 }
 public new void setValue(lolValue lv)
 {
     base.setValue (lv);
     variableTable.setVar ("IT", lv.getType (), lv.getValue ());
 }