public boolean stand(Hero hero, Player player)
	{
		if (lock) {
			return false;
		}

		if (hero.getColor() == color) {

			hero.setInCastle(this);
			setHero(hero);
			if (player instanceof PlayerHuman) {
				gui.WindowStack ws = gui.WindowStack.getLastInstance();
				if (ws != null) {
					gui.WindowCastle wc = new gui.WindowCastle(player, this, hero);
					ws.push(wc);
				}
			}
		} else {
			if (garisson.getUnits().size() == 0) {
				setColor(player.getColor());
				player.addCastle(this);
				hero.setInCastle(this);
				setHero(hero);
				
				Mission m = Mission.getLastInstance();
				if (m != null) {
					System.out.println("update window "+m.getActivePlayer());
					m.updateWindow.emit(m.getActivePlayer());
				}
				
			} else {
				Mission m = Mission.getLastInstance();
				Player cp = m.getPlayer(getColor());
				
				Terrain t = WorldMap.getLastInstance().getTerrainAt(hero.getX(), hero.getY());
				Battle b = new Battle(player, cp, hero, getGarission(), Terrain.GRASS, this);
				b.createMapWidget();
				b.populateMapWidget();
				getGarission().setInCastle(this);
				WindowBattle bat = new WindowBattle(b, player, cp, hero, getGarission());
				b.updateQueue.connect(bat, "updateQueue(Queue)");
				b.log.connect(bat, "addLogLine(String)");
				b.start();
				
				if (player instanceof PlayerHuman || cp instanceof PlayerHuman) {
					gui.WindowStack ws = gui.WindowStack.getLastInstance();
					ws.push(bat);
				}
	
				System.out.println("fight in castle");
			}
			
		}
		return false;
	}