Results 1 to 10 of 10

Thread: Ending the First Punic War

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Default Ending the First Punic War

    So I (Rome) captured Messana and, predictably, the First Punic War started. After I captured Lilybaeum, I tried to peace out with Carthage, but every turn after we signed a ceasefire they'd be at war with me again (presumably through the same event that started the war in the first place?) I've now take Syracuse, Corsica and Sardinia as well and I still can't end the war for more than a turn. I'm not sure if this is a bug or if there's just some hidden condition for ending the war that I'm missing. I'd rather not have to launch a full invasion of Carthage itself, as I'm currently dealing with Arverni invasions in the north. Any ideas?

  2. #2

    Default Re: Ending the First Punic War

    What campaign difficulty are you playing on? Presumably, your relations with them aren't great, so no they won't accept the new status quo. You need to sweeten them with something, like conquering a province in Spain and giving it to them.

  3. #3

    Default Re: Ending the First Punic War

    Quote Originally Posted by QuintusSertorius View Post
    What campaign difficulty are you playing on? Presumably, your relations with them aren't great, so no they won't accept the new status quo. You need to sweeten them with something, like conquering a province in Spain and giving it to them.
    The problem is the Carthaginian AI will accept the new status quo just fine - I can sign a ceasefire with them. More precisely, every time it happens I can go into the console and if I scroll up, I'll find an entry that set the Carthage - Rome diplomatic status to war. So there's an event or script firing that makes us go to war whenever we're at peace.

    At first, after I captured Lilybaeum, I assumed it was because it wanted me to capture Syracuse before the war could end, since the real-life first punic war ended with Rome more or less taking Sicily. By now I've even taken everything Rome had by the start of the second punic war and I still can't sign a ceasefire that doesn't get auto-reneged on the next turn. So I'm hoping there's someone who knows how the script works who can tell me how to end the war.

  4. #4

    Default Re: Ending the First Punic War

    I think it's scripted. Every campaign I played had the war start in 264bc... never had the chance to see if it ends in 241bc, due to all the updates etc - save from one ceasefire I arranged, although I beat Rome to a pulp and gave them a nice peace settlement.

  5. #5

    Default Re: Ending the First Punic War

    I had this happen to me too. Started the war by taking messana, then took rest of sicily and sardinia&corsica. Made peace and the next turn we were at war again. I didn't think much of it at the time, since I was still at war with their allies. Been at war with them ever since. I'll have to try and make peace with them next time I play, see what happens.

  6. #6

    Default Re: Ending the First Punic War

    Tried this again in my campaign and yeah it went back to war next turn. So I took a look at the script. I'm trying to read it but although the monitors are somewhat similar to the triggers in descr_character_traits, I still find this so much more complicated. So there seems to be two monitors that can set the diplo status to war:

    Code:
    monitor_event FactionTurnEnd FactionType f_rome
            and DiplomaticStanceFromFaction f_carthage != AtWar
            
            if  I_IsFactionAIControlled f_carthage
                and I_SettlementOwner sett_045 f_carthage
                and I_SettlementOwner sett_046 slave
                and I_CompareCounter RomansNearMessana = 1
                
                set_counter RomansNearMessana 0
                
                if  I_CharacterTypeNearTile f_rome, named_character, 1, 147, 137
                    set_counter RomansNearMessana 1
                end_if
                if  I_CharacterTypeNearTile f_rome, general, 1, 147, 137
                    set_counter RomansNearMessana 1
                end_if
            end_if
            
            if I_CompareCounter RomansNearMessana = 1
                console_command diplomatic_stance f_rome f_carthage war
            end_if
            
    end_monitor
    ;
    monitor_event GeneralCaptureSettlement SettlementName sett_046
            and FactionType f_rome
            and DiplomaticStanceFromFaction f_carthage != AtWar
            
            if  I_IsFactionAIControlled f_carthage
                and I_SettlementOwner sett_045 f_carthage
                and I_CompareCounter EleutheroiHoldMessana = 1
                console_command diplomatic_stance f_rome f_carthage war
            end_if
            
    end_monitor
    I think it's the first monitor that's the problem since the second monitor should only activate when you capture messana. Ok so if I'm reading it right(which I probably aren't since this is the first time I'm looking at monitors) it would seem like the first part of the monitor sets the RomansNearMessana to 0, but then sets it to 1 if there is a roman general or named_character(is this a captain?) near messana. Then the second part sets diplo status to war if RomansNearMessana is 1.
    Last edited by Poppis; October 02, 2014 at 02:17 AM.

  7. #7

    Default Re: Ending the First Punic War

    I think Poppis is exactly right. The first monitor means at the end of every turn, when playing as Rome vs AI Carthage, with Rebels owning (I'm guessing Messana) and Carthage owning (I'm guessing Lilybaeum)....Carthage will immediately declare war if either a named character or a general is "near Messana". As long as such a Roman isn't present "near Messana", war will not occur because RomansNearMessana resets to 0.

    The second monitor is similar, except it's upon capturing Messana as Rome from the eleutheroi.

    Once RomansNearMessana has been triggered, however, I don't see from the posted code where it might get reset to "0". If that's not happening, then every subsequent turn that ends without Rome/Carthage being at war will result in a declaration of war. (Provided you are playing Rome, vs AI Carthage). If there isn't code elsewhere that resets this, I think that describes the problem people are having.

    Incidentally, from the code provided, it seems you can declare war on Carthage yourself by other means (i.e, not putting a guy "Near Messana" but instead, say, blockading their port and starting the war) and bypass the monitor. Since RomansNearMessana wouldn't get set to 1, and unless there's another monitor that does that somewhere, it looks like you could make peace with Carthage and not get a new war the next turn. In theory.

    I haven't thought this through, but my initial idea would be to reset RomansNearMessana to 0 along with every console_command declaration of war.

  8. #8

    Default Re: Ending the First Punic War

    Are there war-triggers like that for other factions?

  9. #9

    Default Re: Ending the First Punic War

    Ok I tested this in my current Roman campaign. I moved all my units away from Messana(to the neighbouring provinces) and made peace. Next turn we're back at war. Next I looked at the coordinates for the general and named_character. 147, 137. This isn't messana. 147, 137 is here(steam screenshot manage seems to remove the cursor, it was at about the red circle):
    Spoiler Alert, click show to read: 



    So I tried the test again, this time I removed all my units from the province of Brettia. Made peace, end turn and I'm back at war next turn.

    Here's the whole messana section along with all 4 monitors that it includes:
    Spoiler Alert, click show to read: 
    Code:
        ;;  Messana
        ;;
        ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ;
        ; Romans warned if:
        ;
        ; (1) Qarthadastim are AI controlled, hold Lilibeo, and at peace with Romans.
        ; (2) Romans adjacent to Messana at the start of the Roman turn.
        ; (3) Messana is held by the eleutheroi
        ;
        ; Qarthadastim declare war on Romans if:
        ;
        ; (1) Qarthadastim are AI controlled, hold Lilibeo, and at peace with Romans.
        ; (2) Romans adjacent to Messana at the start and end of the Roman turn, or
        ;     if they capture Messana from the eleutheroi.
        ; (3) Messana is held by the eleutheroi
        ;
        declare_counter RomansNearMessana
        declare_counter EleutheroiHoldMessana
        set_counter EleutheroiHoldMessana 1
        ;
        monitor_event PreFactionTurnStart FactionType f_rome
            
            set_counter EleutheroiHoldMessana 0
            
            if I_SettlementOwner sett_046 = slave
                set_counter EleutheroiHoldMessana 1
            end_if
            
        end_monitor
        ;
        monitor_event PreFactionTurnStart FactionType f_rome
            and DiplomaticStanceFromFaction f_carthage != AtWar
            
            set_counter RomansNearMessana 0
            
            if  I_IsFactionAIControlled f_carthage
                and I_SettlementOwner sett_045 f_carthage
                and I_SettlementOwner sett_046 slave
                if  I_CharacterTypeNearTile f_rome, named_character, 1, 143, 137
                    set_counter RomansNearMessana 1
                end_if
                if  I_CharacterTypeNearTile f_rome, general, 1, 143, 137
                    set_counter RomansNearMessana 1
                end_if
            end_if
            
            if I_CompareCounter RomansNearMessana = 1
                historic_event HE_ROMANS_NEAR_MESSANA factions { f_rome, }
            end_if
            
        end_monitor
        ;
        monitor_event FactionTurnEnd FactionType f_rome
            and DiplomaticStanceFromFaction f_carthage != AtWar
            
            if  I_IsFactionAIControlled f_carthage
                and I_SettlementOwner sett_045 f_carthage
                and I_SettlementOwner sett_046 slave
                and I_CompareCounter RomansNearMessana = 1
                
                set_counter RomansNearMessana 0
                
                if  I_CharacterTypeNearTile f_rome, named_character, 1, 147, 137
                    set_counter RomansNearMessana 1
                end_if
                if  I_CharacterTypeNearTile f_rome, general, 1, 147, 137
                    set_counter RomansNearMessana 1
                end_if
            end_if
            
            if I_CompareCounter RomansNearMessana = 1
                console_command diplomatic_stance f_rome f_carthage war
            end_if
            
        end_monitor
        ;
        monitor_event GeneralCaptureSettlement SettlementName sett_046
            and FactionType f_rome
            and DiplomaticStanceFromFaction f_carthage != AtWar
            
            if  I_IsFactionAIControlled f_carthage
                and I_SettlementOwner sett_045 f_carthage
                and I_CompareCounter EleutheroiHoldMessana = 1
                console_command diplomatic_stance f_rome f_carthage war
            end_if
            
        end_monitor


    As you can see, in the previous monitor, the coordinates are correct, 143, 137(this is messana).

    EDIT:

    Quote Originally Posted by QuintusSertorius View Post
    Are there war-triggers like that for other factions?
    Yes. Seleucids - Baktria has two monitors that use the same command:
    Spoiler Alert, click show to read: 
    Code:
    ; * WAR UNTIL RECOGNITION CHECK
        ;
        monitor_event FactionTurnStart FactionType f_seleukid
            and DiplomaticStanceFromFaction f_baktria != AtWar
            and I_EventCounter ecBaktriaRebellion = 1
            console_command diplomatic_stance f_seleukid f_baktria war
            
            if I_EventCounter ecBaktriaKingdom = 1
                terminate_monitor
            end_if
        end_monitor
        
        monitor_event FactionTurnStart FactionType f_baktria
            and DiplomaticStanceFromFaction f_seleukid != AtWar
            and I_EventCounter ecBaktriaRebellion = 1
            console_command diplomatic_stance f_seleukid f_baktria war
            
            if I_EventCounter ecBaktriaKingdom = 1
                terminate_monitor
            end_if
        end_monitor

    Last edited by Poppis; October 02, 2014 at 03:43 AM.

  10. #10

    Default Re: Ending the First Punic War

    Ah, so disregard my previous post since RomansNearMessana = 0 if Rome and Carthage aren't at war.

    That 147,137 instead of 143,137 looks like a typo, though.

    (edit) Actually, Un-disregard my previous post, hehe.

    RomansNearMessana is set to 0 if a Roman player's turn starts with Rome & AI Carthage at peace.

    At the end of a Roman player's turn, the entire location near Messana check (with the possibly typo 147,137) only executes if Eleutheroi have Messana and Carthage have Lilbeo. Once this is no longer the case, all that monitor does is check if RomansNearMessana == 1, and declares war if so.

    If you make peace with Carthage, RomansNearMessana won't get reset to 0 until you begin your next turn already at peace. But you won't get to your next turn at peace, because upon clicking "end turn", RomansNearMessana not being 0 yet will trigger war again. So I'd have to stick with my initial thought that, once war is declared, RomansNearMessana should reset to 0.
    Last edited by alex86; October 02, 2014 at 01:02 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •