protected String parseVariesCodes(final MOB mob, final Area A, final String text)
	{
		final StringBuilder buf=new StringBuilder("");
		int aligatorDex=text.indexOf('<');
		int curDex=0;
		boolean addMe = true;
		while(aligatorDex>=0)
		{
			for(final VariationCode code : VariationCode.values())
			{
				if(text.startsWith(code.openTag, aligatorDex))
				{
					buf.append(text.substring(curDex, aligatorDex));
					int y=text.indexOf(code.closeTag,aligatorDex+code.openTag.length());
					if(y<0)
					{
						curDex = text.length();
						y=text.length();
					}
					else
						curDex = y+code.closeTag.length();
					switch(code.c)
					{
					case '\n':
						addMe = !addMe;
						break;
					case '\r':
						addMe = true;
						break;
					case 'W':
						addMe = A.getClimateObj().weatherType(null) == code.num;
						break;
					case 'C':
						addMe = A.getTimeObj().getTODCode().ordinal() == code.num;
						break;
					case 'S':
						addMe = A.getTimeObj().getSeasonCode().ordinal() == code.num;
						break;
					case 'M':
						addMe = ((mob != null) && (CMath.bset(mob.phyStats().disposition(), code.num)));
						break;
					case 'V':
						addMe = ((mob != null) && (mob.playerStats() != null) && (mob.playerStats().hasVisited(this)));
						break;
					}
					if(addMe)
						buf.append(parseVariesCodes(mob,A,text.substring(aligatorDex+code.openTag.length(),y)));
					aligatorDex=curDex-1;
					break;
				}
			}
			if(aligatorDex >= text.length()-1)
				break;
			aligatorDex=text.indexOf('<',aligatorDex+1);
		}
		if(curDex < text.length())
		{
			if(text.startsWith("</VARIES>",curDex))
				buf.append(text.substring(curDex+9));
			else
				buf.append(text.substring(curDex));
		}
		return buf.toString();
	}