|  | @@ -86,34 +86,34 @@ BattleWindow::BattleWindow(BattleInterface & owner):
 | 
	
		
			
				|  |  |  void BattleWindow::createQueue()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	OBJ_CONSTRUCTION_CAPTURING_ALL_NO_DISPOSE;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	//create stack queue and adjust our own position
 | 
	
		
			
				|  |  | -	bool embedQueue;
 | 
	
		
			
				|  |  | -	bool showQueue = settings["battle"]["showQueue"].Bool();
 | 
	
		
			
				|  |  | -	std::string queueSize = settings["battle"]["queueSize"].String();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if(queueSize == "auto")
 | 
	
		
			
				|  |  | -		embedQueue = GH.screenDimensions().y < 700;
 | 
	
		
			
				|  |  | -	else
 | 
	
		
			
				|  |  | -		embedQueue = GH.screenDimensions().y < 700 || queueSize == "small";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	queue = std::make_shared<StackQueue>(embedQueue, owner);
 | 
	
		
			
				|  |  | -	if(!embedQueue && showQueue)
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -		//re-center, taking into account stack queue position
 | 
	
		
			
				|  |  | -		pos.y -= queue->pos.h;
 | 
	
		
			
				|  |  | -		pos.h += queue->pos.h;
 | 
	
		
			
				|  |  | -		pos = center();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	if (!showQueue)
 | 
	
		
			
				|  |  | -		queue->disable();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -BattleWindow::~BattleWindow()
 | 
	
		
			
				|  |  | -{
 | 
	
		
			
				|  |  | -	CPlayerInterface::battleInt = nullptr;
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	//create stack queue and adjust our own position
 | 
	
		
			
				|  |  | +	bool embedQueue;
 | 
	
		
			
				|  |  | +	bool showQueue = settings["battle"]["showQueue"].Bool();
 | 
	
		
			
				|  |  | +	std::string queueSize = settings["battle"]["queueSize"].String();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if(queueSize == "auto")
 | 
	
		
			
				|  |  | +		embedQueue = GH.screenDimensions().y < 700;
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +		embedQueue = GH.screenDimensions().y < 700 || queueSize == "small";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	queue = std::make_shared<StackQueue>(embedQueue, owner);
 | 
	
		
			
				|  |  | +	if(!embedQueue && showQueue)
 | 
	
		
			
				|  |  | +	{
 | 
	
		
			
				|  |  | +		//re-center, taking into account stack queue position
 | 
	
		
			
				|  |  | +		pos.y -= queue->pos.h;
 | 
	
		
			
				|  |  | +		pos.h += queue->pos.h;
 | 
	
		
			
				|  |  | +		pos = center();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if (!showQueue)
 | 
	
		
			
				|  |  | +		queue->disable();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BattleWindow::~BattleWindow()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	CPlayerInterface::battleInt = nullptr;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  std::shared_ptr<BattleConsole> BattleWindow::buildBattleConsole(const JsonNode & config) const
 | 
	
		
			
				|  |  |  {
 | 
	
	
		
			
				|  | @@ -144,14 +144,14 @@ void BattleWindow::hideQueue()
 | 
	
		
			
				|  |  |  	if (!queue->embedded)
 | 
	
		
			
				|  |  |  	{
 | 
	
		
			
				|  |  |  		//re-center, taking into account stack queue position
 | 
	
		
			
				|  |  | -		pos.y += queue->pos.h;
 | 
	
		
			
				|  |  | -		pos.h -= queue->pos.h;
 | 
	
		
			
				|  |  | -		pos = center();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	GH.totalRedraw();
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -void BattleWindow::showQueue()
 | 
	
		
			
				|  |  | +		pos.y += queue->pos.h;
 | 
	
		
			
				|  |  | +		pos.h -= queue->pos.h;
 | 
	
		
			
				|  |  | +		pos = center();
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +	GH.totalRedraw();
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void BattleWindow::showQueue()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	if(settings["battle"]["showQueue"].Bool() == true)
 | 
	
		
			
				|  |  |  		return;
 | 
	
	
		
			
				|  | @@ -217,9 +217,12 @@ void BattleWindow::tacticPhaseStarted()
 | 
	
		
			
				|  |  |  	auto menuTactics = widget<CIntObject>("menuTactics");
 | 
	
		
			
				|  |  |  	auto tacticNext = widget<CIntObject>("tacticNext");
 | 
	
		
			
				|  |  |  	auto tacticEnd = widget<CIntObject>("tacticEnd");
 | 
	
		
			
				|  |  | +	auto alternativeAction = widget<CIntObject>("alternativeAction");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	menuBattle->disable();
 | 
	
		
			
				|  |  |  	console->disable();
 | 
	
		
			
				|  |  | +	if (alternativeAction)
 | 
	
		
			
				|  |  | +		alternativeAction->disable();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	menuTactics->enable();
 | 
	
		
			
				|  |  |  	tacticNext->enable();
 | 
	
	
		
			
				|  | @@ -235,9 +238,12 @@ void BattleWindow::tacticPhaseEnded()
 | 
	
		
			
				|  |  |  	auto menuTactics = widget<CIntObject>("menuTactics");
 | 
	
		
			
				|  |  |  	auto tacticNext = widget<CIntObject>("tacticNext");
 | 
	
		
			
				|  |  |  	auto tacticEnd = widget<CIntObject>("tacticEnd");
 | 
	
		
			
				|  |  | +	auto alternativeAction = widget<CIntObject>("alternativeAction");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	menuBattle->enable();
 | 
	
		
			
				|  |  |  	console->enable();
 | 
	
		
			
				|  |  | +	if (alternativeAction)
 | 
	
		
			
				|  |  | +		alternativeAction->enable();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	menuTactics->disable();
 | 
	
		
			
				|  |  |  	tacticNext->disable();
 |