@Override
	public void unInvoke()
	{
		if(canBeUninvoked())
		{
			if(affected instanceof MOB)
			{
				final MOB mob=(MOB)affected;
				final Room room = CMLib.map().getRoom(fromRoom);
				final int direction=this.direction;
				if((messedUp)||(direction<0)||(fromRoom==null))
				{
					commonTell(mob,L("You've ruined the smuggler's hold!"));
				}
				else
				{
					synchronized(("SYNC"+room.roomID()).intern())
					{
						final Room R=CMClass.getLocale("WoodRoom");
						R.setRoomID(room.getArea().getNewRoomID(room,direction));
						if(R.roomID().length()==0)
						{
							commonTell(mob,L("You've ruined the smuggler's hold!"));
						}
						else
						{
							R.setArea(room.getArea());
							if(invoker==null)
								R.setDisplayText(L("The Smuggler's Hold"));
							else
								R.setDisplayText(L(invoker.name()+"'s Smuggler's Hold"));
							R.setDescription("");
							
							Exit newExit=CMClass.getExit("GenDoor");
							newExit.setName(L("a false wall"));
							newExit.setExitParams("wall","close","open","a false wall");
							Thief_SmugglersHold holder=(Thief_SmugglersHold)this.copyOf();
							holder.setMiscText(mob.Name());
							holder.fullMode=false;
							newExit.addNonUninvokableEffect(holder);
							newExit.recoverPhyStats();
							newExit.text();
							
							room.rawDoors()[direction]=R;
							room.setRawExit(direction, newExit);
							
							Exit opExit=CMClass.getExit("Open");
							R.rawDoors()[Directions.getOpDirectionCode(direction)]=room;
							R.setRawExit(Directions.getOpDirectionCode(direction), opExit);
							commonEmote(mob,L("<S-NAME> finish(es) the smuggler's hold!"));
						}
					}
				}
			}
		}
		super.unInvoke();
	}