Lengthening a battle

Share and discuss strategies for playing the game, and get help and tips from other players.

Moderators: Forum Moderators, Developers

Post Reply
Stupidbro
Posts: 22
Joined: March 5th, 2019, 12:08 am

Lengthening a battle

Post by Stupidbro » March 14th, 2019, 5:18 pm

So... I'm trying to build a scenario that lasts for a long time (between 45-60 turns), but the player, which has a weird combination of multiple races, and the undead (computer) team always seem to end the battle at about 12 turns or so.

How could I balance the sides out better so that the teams should have to fight for a significant amount of time?

User avatar
StandYourGround
Posts: 256
Joined: May 13th, 2009, 2:16 am
Location: On a blue ball spinning through space at incomprehensible speed

Re: Lengthening a battle

Post by StandYourGround » March 14th, 2019, 10:58 pm

A lot of it probably comes down to the map. One way to make a fight take longer is to make the fighting area very narrow. This tends to be grueling and not very fun, but it takes longer. Another way is to have higher starting gold and map with multiple locations that offer high defense and good village access. Also, extra keeps help. The easier it is to hold ground and heal, the longer it takes to control an area. The real balancing act with designing a map to have a long battle is making it stay fun for that long. And the more hard areas to capture, narrow passageways, and tomato surprises there are, the harder it will be to motivate someone to see it through. Good luck.
I will now resume lurking silently.

User avatar
beetlenaut
Developer
Posts: 2389
Joined: December 8th, 2007, 3:21 am
Location: Washington State
Contact:

Re: Lengthening a battle

Post by beetlenaut » March 19th, 2019, 1:33 am

You could decrease the starting gold to almost nothing and greatly increase the income per turn.
Campaigns: Dead Water,
The Founding of Borstep,
Secrets of the Ancients,
and WML Guide

Stupidbro
Posts: 22
Joined: March 5th, 2019, 12:08 am

Re: Lengthening a battle

Post by Stupidbro » March 19th, 2019, 5:11 pm

@beetlenaut
How does one change the income per turn? Keep in mind that it's a scenario in a campaign, but I'm looking for methods I can use to lengthen a battle. Thanks for the first bit though.

User avatar
sub2pewds
Posts: 40
Joined: February 21st, 2019, 7:50 am

Re: Lengthening a battle

Post by sub2pewds » March 19th, 2019, 8:16 pm

Stupidbro wrote:
March 19th, 2019, 5:11 pm
@beetlenaut
How does one change the income per turn? Keep in mind that it's a scenario in a campaign, but I'm looking for methods I can use to lengthen a battle. Thanks for the first bit though.
You may benefit from using this: https://wiki.wesnoth.org/DirectActionsW ... fy_side.5D. Take the following simple example:

Code: Select all

[modify_side]
  side=2
  income=3
[/modify_side]
I suspect there is a more concise way of doing it, mind you, but I don't know it off the top of my head.

User avatar
beetlenaut
Developer
Posts: 2389
Joined: December 8th, 2007, 3:21 am
Location: Washington State
Contact:

Re: Lengthening a battle

Post by beetlenaut » March 20th, 2019, 1:59 am

sub2pewds wrote:
March 19th, 2019, 8:16 pm
I suspect there is a more concise way of doing it
You can just include it in your initial side definition:

Code: Select all

[side]
    ...
    income=30
[/side]
There is a macro to do the same thing with different difficulty levels too:

Code: Select all

[side]
   ...
   # EASY=21, MEDIUM=32, HARD=43
   {INCOME 21 32 43}
[/side]
The sides will have to recruit units a couple at a time. Setting up lines and preparing for attack will take longer, and reinforcements will arrive in a steady stream.

Another idea is to change the winning conditions. Instead of having to kill the enemy leader, maybe you need to kill a certain number of enemy units for example. The player would be forced to let the AI regroup and attack again until they reached the correct number. Or, you have to own every village on the map, and undead units pop out of each one. More come out each time until whole squadrons are coming out of each village.

You could also look at mainline scenarios that are particularly long and see how they did it. Northern Rebirth and Under the Burning Suns both have a 55 or 60-turn scenario.
Campaigns: Dead Water,
The Founding of Borstep,
Secrets of the Ancients,
and WML Guide

User avatar
sub2pewds
Posts: 40
Joined: February 21st, 2019, 7:50 am

Re: Lengthening a battle

Post by sub2pewds » March 20th, 2019, 7:42 pm

beetlenaut wrote:
March 20th, 2019, 1:59 am
You can just include it in your initial side definition:
Oh whoops! I must have read it as "gradually increase" instead of "greatly increase".

Shiki
Developer
Posts: 271
Joined: July 13th, 2015, 9:53 pm
Location: Germany

Re: Lengthening a battle

Post by Shiki » March 20th, 2019, 10:44 pm

An idea to which I often fall back:
Having a higher level guardian, who prevents you from going into some area too early. Or in your case, who pushes back a side which is advancing to much.
The standard guardian which is often used (probably because Micro AIs were just added in 1.12) has the disadvantage that he goes farther and farther once he has been triggered, possibly up to your keep.

The return guardian MicroAI would be the one I mean. You take a higher level unit with high MP, such as the Chocobone for Undead.

Code: Select all

    [micro_ai]
        side=2
        ai_type=return_guardian
        action=add
        ca_id=mageguard

        id=mageguard
        return_x,return_y=16,21
    [/micro_ai]
He will attack only once, and return immediately in the next turn – so he in fact can be seen as a supporter.
Bonus points if you put return_x,return_y on a village.

That are 8 lines of code compared to the one line macro from mainline... let's macrofy it for mass usage:

Code: Select all

#define RETURN_GUARDIAN SIDE ID X Y

#arg ACTION
add #endarg

    [micro_ai]
        side={SIDE}
        ai_type=return_guardian
        action={ACTION}
        ca_id={ID}

        id={ID}
        return_x={X]
        return_y={Y}
    [/micro_ai]
#enddef
That way one can place in a prestart event units with:
{UNIT 2 (Dark Adept) 5 20 id=magueguard} {RETURN_GUARDIAN 2 mageguard 16 21}
Introduction to WML filtering and WML variables.

Post Reply