public static double typeMultiplier(Pokemon.Type move, Pokemon.Type t1, Pokemon.Type t2)
	{
		double multiplier=1;

		switch(move)
		{
			case BUG:
				switch(t1)
				{
					case FIGHTING:
					case FIRE:
					case FLYING:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case GRASS:
					case POISON:
					case PSYCHIC:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case FIGHTING:
					case FIRE:
					case FLYING:
						multiplier*=0.5;
						if(effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					case GRASS:
					case POISON:
					case PSYCHIC:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					default:
						break;
				}
				break;
			case DRAGON:
				switch(t1)
				{
					case DRAGON:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case DRAGON:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					default:
						break;
				}
				break;
			case ELECTRIC:
				switch(t1)
				{
					case DRAGON:
					case ELECTRIC:
					case GRASS:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case FLYING:
					case WATER:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case GROUND:
						multiplier=0;
						effective=Effective.NONE;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case DRAGON:
					case ELECTRIC:
					case GRASS:
						multiplier*=0.5;
						if(effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else if (effective!=Effective.NONE)
							effective=Effective.HALF;
						break;
					case FLYING:
					case WATER:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else if (effective!=Effective.NONE)
							effective=Effective.DOUBLE;
						break;
					case GROUND:
						multiplier=0;
						effective=Effective.NONE;
					default:
						break;
				}
				break;
			case FIGHTING:
				switch(t1)
				{
					case BUG:
					case FLYING:
					case POISON:
					case PSYCHIC:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case ICE:
					case NORMAL:
					case ROCK:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case GHOST:
						multiplier=0;
						effective=Effective.NONE;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case BUG:
					case FLYING:
					case POISON:
					case PSYCHIC:
						multiplier*=0.5;
						if(effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else if (effective!=Effective.NONE)
							effective=Effective.HALF;
						break;
					case ICE:
					case NORMAL:
					case ROCK:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else if (effective!=Effective.NONE)
							effective=Effective.DOUBLE;
						break;
					case GHOST:
						multiplier=0;
						effective=Effective.NONE;
					default:
						break;
				}
				break;
			case FIRE:
				switch(t1)
				{
					case DRAGON:
					case FIRE:
					case ROCK:
					case WATER:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case ICE:
					case BUG:
					case GRASS:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case DRAGON:
					case FIRE:
					case ROCK:
					case WATER:
						multiplier*=0.5;
						if(effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					case ICE:
					case BUG:
					case GRASS:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					default:
						break;
				}
				break;
			case FLYING:
				switch(t1)
				{
					case BUG:
					case FIGHTING:
					case GRASS:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case ELECTRIC:
					case ROCK:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;

				}
				switch(t2)
				{
					case BUG:
					case FIGHTING:
					case GRASS:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					case ELECTRIC:
					case ROCK:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case GHOST:
				switch(t1)
				{
					case GHOST:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case NORMAL:
					case PSYCHIC:
						multiplier*=0;
						effective=Effective.NONE;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case GHOST:
						multiplier*=2;
						if (effective!=Effective.NONE)
							effective=Effective.DOUBLE;
						break;
					case NORMAL:
					case PSYCHIC:
						multiplier*=0;
						effective=Effective.NONE;
					default:
						break;
				}
				break;
			case GRASS:
				switch(t1)
				{
					case BUG:
					case DRAGON:
					case FIRE:
					case FLYING:
					case GRASS:
					case POISON:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case GROUND:
					case ROCK:
					case WATER:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					default:
						effective=Effective.NORMAL;
						break;

				}
				switch(t2)
				{
					case BUG:
					case DRAGON:
					case FIRE:
					case FLYING:
					case GRASS:
					case POISON:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					case GROUND:
					case ROCK:
					case WATER:
						multiplier*=2;
						if (effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					default:
						break;
				}
				break;
			case GROUND:
				switch(t1)
				{
					case BUG:
					case GRASS:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case ELECTRIC:
					case ROCK:
					case FIRE:
					case POISON:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case FLYING:
						multiplier=0;
						effective=Effective.NONE;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case BUG:
					case GRASS:
						multiplier*=0.5;
						effective=Effective.HALF;
						if(effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						break;
					case ELECTRIC:
					case ROCK:
					case FIRE:
					case POISON:
						multiplier*=2;
						effective=Effective.DOUBLE;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						break;
					case FLYING:
						multiplier=0;
						effective=Effective.NONE;
					default:
						break;
				}
				break;
			case ICE:
				switch(t1)
				{
					case DRAGON:
					case FLYING:
					case GRASS:
					case GROUND:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case ICE:
					case WATER:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case DRAGON:
					case FLYING:
					case GRASS:
					case GROUND:
						multiplier*=2;
						if(effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					case ICE:
					case WATER:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case NORMAL:
				switch(t1)
				{
					case GHOST:
						multiplier*=0;
						effective=Effective.NONE;
						break;
					case ROCK:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case GHOST:
						multiplier*=0;
						effective=Effective.NONE;
						break;
					case ROCK:
						multiplier*=0.5;
						if (effective!=Effective.NONE)
						effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case POISON:
				switch(t1)
				{
					case BUG:
					case GRASS:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case GHOST:
					case GROUND:
					case POISON:
					case ROCK:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;

				}
				switch(t2)
				{
					case BUG:
					case GRASS:
						multiplier*=2;
						if (effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					case GHOST:
					case GROUND:
					case POISON:
					case ROCK:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case PSYCHIC:
				switch(t1)
				{
					case FIGHTING:
					case POISON:
						multiplier*=2;
						effective=Effective.DOUBLE;
						break;
					case PSYCHIC:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case FIGHTING:
					case POISON:
						multiplier*=2;
						if (effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					case PSYCHIC:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case ROCK:
				switch(t1)
				{
					case BUG:
					case FIRE:
					case FLYING:
					case ICE:
						multiplier*=2.0;
						effective=Effective.DOUBLE;
						break;
					case FIGHTING:
					case GROUND:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case BUG:
					case FIRE:
					case FLYING:
					case ICE:
						multiplier*=2.0;
						if (effective==Effective.HALF)
							effective=Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					case FIGHTING:
					case GROUND:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					default:
						break;
				}
				break;
			case WATER:
				switch(t1)
				{
					case DRAGON:
					case GRASS:
					case WATER:
						multiplier*=0.5;
						effective=Effective.HALF;
						break;
					case FIRE:
					case GROUND:
					case ROCK:
						multiplier*=2.0;
						effective=Effective.DOUBLE;
						break;
					default:
						effective=Effective.NORMAL;
						break;
				}
				switch(t2)
				{
					case DRAGON:
					case GRASS:
					case WATER:
						multiplier*=0.5;
						if (effective==Effective.DOUBLE)
							effective=Effective.NORMAL;
						else
							effective=Effective.HALF;
						break;
					case FIRE:
					case GROUND:
					case ROCK:
						multiplier*=2.0;
						if (effective==Effective.HALF)
							effective = Effective.NORMAL;
						else
							effective=Effective.DOUBLE;
						break;
					default:
						break;
				}
				break;
		}

		return multiplier;
	}