@Override
	public boolean setStaticPokemon(List<Pokemon> staticPokemon) {
		if (romEntry.getValue("StaticPokemonSupport") == 0) {
			return false;
		}
		if (!havePatchedFleeing) {
			patchFleeing();
		}
		if (staticPokemon.size() != romEntry.staticPokemonSingle.size()
				+ romEntry.staticPokemonGameCorner.size()) {
			return false;
		}
		for (Pokemon pkmn : staticPokemon) {
			if (!isInGame(pkmn)) {
				return false;
			}
		}

		Iterator<Pokemon> statics = staticPokemon.iterator();
		for (int offset : romEntry.staticPokemonSingle) {
			rom[offset] = (byte) statics.next().number;
		}

		int gcNameLength = romEntry.getValue("GameCornerPokemonNameLength");

		// Sort out static Pokemon
		for (int offset : romEntry.staticPokemonGameCorner.keySet()) {
			rom[offset] = (byte) statics.next().number;
			rom[offset + 0x11] = rom[offset];
			rom[offset + 0x16] = rom[offset];
			writePaddedPokemonName(pokes[rom[offset] & 0xFF].name,
					gcNameLength, romEntry.staticPokemonGameCorner.get(offset));
		}

		// Copies?
		for (int offset : romEntry.staticPokemonCopy.keySet()) {
			int copyTo = romEntry.staticPokemonCopy.get(offset);
			rom[copyTo] = rom[offset];
		}
		return true;
	}