About Non-Permissible Charges

Byzantine Productions Pike and Shot is a deep strategy game set during the bloody conflict of the Thirty Years War.

Moderators: rbodleyscott, Slitherine Core, Gothic Labs

Post Reply
Athos1660
Major-General - Elite Tiger I
Major-General - Elite Tiger I
Posts: 2680
Joined: Wed May 29, 2019 3:23 pm

About Non-Permissible Charges

Post by Athos1660 »

The manual says : "Dragoons cannot charge unfragmented non-light troops (other than artillery) in open terrain, even in flank or rear" (p. 30)

Dragoons cannot charge any non-light troops (including fragmented ones) in rough and difficult terrains either, right ?

Image

In other words, Dragoons can only charge :
- fragmented non-light infantry or cavalry (?) in open terrain,
- any artillery (fragmented, disrupted or steady) in open terrain,
- light troops anywhere (rough, difficult open or non-open terrain),
(edit)
- any non-light infantry (fragmented, disrupted or steady) in difficult, rough or non-open terrain (à leurs risques et périls) ?
Last edited by Athos1660 on Mon Aug 17, 2020 10:25 am, edited 1 time in total.
Athos1660
Major-General - Elite Tiger I
Major-General - Elite Tiger I
Posts: 2680
Joined: Wed May 29, 2019 3:23 pm

Re: About Non-Permissible Charges

Post by Athos1660 »

1) I tried to make a scenario with disrupted or fragmented cav, using the methods there.
It does not work (error messages). Anyone knows how to do it in P&S ?

2) Patch notes somewhere ?
Athos1660
Major-General - Elite Tiger I
Major-General - Elite Tiger I
Posts: 2680
Joined: Wed May 29, 2019 3:23 pm

Re: About Non-Permissible Charges

Post by Athos1660 »

Here is the code about Non-Permissible Charges :

Code: Select all

FUNCTION ChargePermitted(me, enemy)
{
    int ret;

    ret = 1;

    // These types can never charge
    if ((IsArtillery(me) == 1) || (IsUnitSquadType(me,"Battle_Wagons") == 1) || (IsUnitSquadType(me,"Train") == 1) || (IsUnitSquadType(me,"Boat") == 1)) // Amphibious left out as probably don't exist
        {
            ret = 0;
        }

    // Foot (other than keils) cannot charge mounted (other than light troops)
    if ((IsFoot(me) == 1) && (IsMounted(enemy) == 1))
        {
            if ((PercentKeil(me) == 0) && (IsLightTroops(enemy) == 0) && (MaximumRange(me) > 0))
                {
                    ret = 0;
                }
        }

    if ((IsLightTroops(enemy) == 0) && (IsArtillery(enemy) == 0)  && (IsLimber(enemy) == 0) && (IsOpen(GetUnitX(enemy), GetUnitY(enemy)) == 1))
        {
            // Light foot and commanded shot cannot charge unbroken non-artillery non-light troops in open
            if ((IsUnitSquadType(me, "Light_Foot") == 1) || (IsUnitSquadType(me, "Commanded_Shot") == 1))
                {
                    if (GetAttrib(enemy, "MoraleState") < 3)
                        {
                            ret = 0;
                        }
                }

            // Dragoons cannot charge unfragmented non-artillery non-light troops in open
            if (IsUnitSquadType(me, "Dragoons") == 1)
                {
                    if (GetAttrib(enemy, "MoraleState") < 2)
                        {
                            ret = 0;
                        }
                }
        }


    return ret;
}
Does the first part of it...

Code: Select all

    // Foot (other than keils) cannot charge mounted (other than light troops)
    if ((IsFoot(me) == 1) && (IsMounted(enemy) == 1))
        {
            if ((PercentKeil(me) == 0) && (IsLightTroops(enemy) == 0) && (MaximumRange(me) > 0))
                {
                    ret = 0;
                }
        }
...means Dragoons can never charge non-light cavalry (ie. are dragoons 'FOOT' ?) ?

... while the final part...

Code: Select all

    if ((IsLightTroops(enemy) == 0) && (IsArtillery(enemy) == 0)  && (IsLimber(enemy) == 0) && (IsOpen(GetUnitX(enemy), GetUnitY(enemy)) == 1))
        {

            // Dragoons cannot charge unfragmented non-artillery non-light troops in open
            if (IsUnitSquadType(me, "Dragoons") == 1)
                {
                    if (GetAttrib(enemy, "MoraleState") < 2)
                        {
                            ret = 0;
                        }
                }
... means Dragoons cannot charge unfragmented non-artillery non-light troops in open (as it is written in the code and in the manual).

Does it mean in brief that Dragoons can actually :
  • never charge non-light Cavalry (whatever the terrain and the cav. moral state are)
  • charge non-light infantry when the latter is :
    • fragmented in open terrain,
    • fragmented, disrupted or steady in difficult, rough or non-open terrain
  • charge artillery and light troops whatever the morale state of the latter and the terrain (rough, difficult, open or non-open) are ?
Athos1660
Major-General - Elite Tiger I
Major-General - Elite Tiger I
Posts: 2680
Joined: Wed May 29, 2019 3:23 pm

Re: About Non-Permissible Charges

Post by Athos1660 »

Athos1660 wrote: Mon Aug 17, 2020 12:44 pm (...) are dragoons 'FOOT' ?
The answer is here, Athos :

Code: Select all

// Returns 1 if unit qualifies as foot, otherwise 0
FUNCTION IsFoot(me)
{
    int ret;

    ret = 0;

    if ((IsUnitSquadType(me, "Determined_Foot") == 1) || (IsUnitSquadType(me, "Heavy_Foot") == 1) || (IsUnitSquadType(me, "Mixed_Foot") == 1) || (IsUnitSquadType(me, "Medium_Foot") == 1) || (IsUnitSquadType(me, "Warriors") == 1) || (IsUnitSquadType(me, "Light_Foot") == 1) || (IsUnitSquadType(me, "Commanded_Shot") == 1) || (IsUnitSquadType(me, "Dragoons") == 1) || (IsUnitSquadType(me, "Mob") == 1) || (IsUnitSquadType(me, "Battle_Wagons") == 1) || (IsUnitSquadType(me, "Artillery") == 1) || (IsUnitSquadType(me, "Light_Artillery") == 1))
        {
            ret = 1;
        }

    return ret;
}
SnuggleBunnies
Major-General - Jagdtiger
Major-General - Jagdtiger
Posts: 2891
Joined: Tue Apr 07, 2015 2:09 am

Re: About Non-Permissible Charges

Post by SnuggleBunnies »

Whew, that looked confusing. But yes, based on my experience playing the game I believe you are correct about when and who dragoons can charge.
MP Replays:
https://www.youtube.com/channel/UCjUQy6dEqR53NwoGgjxixLg

Pike and Shot-Sengoku Jidai Crossover Mod:
https://www.slitherine.com/forum/viewtopic.php?t=116259

Middle Earth mod:
https://www.slitherine.com/forum/viewtopic.php?p=1029243#p1029243
Athos1660
Major-General - Elite Tiger I
Major-General - Elite Tiger I
Posts: 2680
Joined: Wed May 29, 2019 3:23 pm

Re: About Non-Permissible Charges

Post by Athos1660 »

I guess it just comes from the fact that the extract of the manual about non-permissible charges seems to be partly the copied/pasted comments of the code. So those like me who did not get that dragoons are considered as foot may not understand that the following sentence also concerns dragoons : "Foot units other than those with large pike blocks (keils) cannot charge cavalry" (p. 29).

On a different note, I'd be interested in the historical arguments that give Dragoons and Detached musketeers the same Close Combat Rating in open terrain (apart from the famous quote from Grimmelshausen : « They took us for musketeers, seeing that no animal in the world is more like a musketeer than is a dragoon, and if a dragoon falls from his horse, he rises up a musketeer » :-) ).

btw do anybody know a reference book or (web) article about dragoons of the 16th and 17th centuries ?
Post Reply

Return to “Pike & Shot”