For my map, I've experienced a fatal error if a player is a vassal of another. This fatal occurs when the income timer hits 0. Therefore I have gone to the income trigger and the part that is related to vassals is this:
IsVassal - Integer Array
Income - Integer Array
IsVassalOfWhatPlayer - Integer Array
The trigger starts off with For each (Integer A) from 1 to 12. Integer A represents a player number.
I haven't got the faintest idea of what part of this is causing the fatal. I doubt it is the IsVassalOfWhatPlayer reference, but in the Spoiler you'll find the other trigger that makes use of that variable just in case.
Anyone got any ideas of what causes the fatal? :<
Trigger:
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- IsVassal[(Integer A)] Equal to 1
- Then - Actions
- Set Income[(Integer A)] = (Income[(Integer A)] / 3)
- Game - Display to (All players matching ((Matching player) Equal to (Player(IsVassalOfWhatPlayer[(Integer A)])))) the text: ((|cffffcc00Income from + ((Name of (Player((Integer A)))) + |r: )) + (String(Income[(Integer A)])))
- Player - Add Income[(Integer A)] to (Player(IsVassalOfWhatPlayer[(Integer A)])) Current gold
- Set Income[(Integer A)] = (Income[(Integer A)] x 2)
- Else - Actions
- If - Conditions
IsVassal - Integer Array
Income - Integer Array
IsVassalOfWhatPlayer - Integer Array
The trigger starts off with For each (Integer A) from 1 to 12. Integer A represents a player number.
I haven't got the faintest idea of what part of this is causing the fatal. I doubt it is the IsVassalOfWhatPlayer reference, but in the Spoiler you'll find the other trigger that makes use of that variable just in case.
Trigger:
- Accept Vassal
- Events
- Player - Player 1 (Red) types a chat message containing -accept vassal as A substring
- Player - Player 2 (Blue) types a chat message containing -accept vassal as A substring
- Player - Player 3 (Teal) types a chat message containing -accept vassal as A substring
- Player - Player 4 (Purple) types a chat message containing -accept vassal as A substring
- Player - Player 5 (Yellow) types a chat message containing -accept vassal as A substring
- Player - Player 6 (Orange) types a chat message containing -accept vassal as A substring
- Player - Player 7 (Green) types a chat message containing -accept vassal as A substring
- Player - Player 8 (Pink) types a chat message containing -accept vassal as A substring
- Player - Player 9 (Gray) types a chat message containing -accept vassal as A substring
- Player - Player 10 (Light Blue) types a chat message containing -accept vassal as A substring
- Player - Player 11 (Dark Green) types a chat message containing -accept vassal as A substring
- Player - Player 12 (Brown) types a chat message containing -accept vassal as A substring
- Conditions
- Actions
- For each (Integer A) from 1 to 12, do (Actions)
- Loop - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- PlannedVassal[(Integer A)] Equal to (Player number of (Triggering player))
- (Player((Integer A))) Not equal to (Triggering player)
- (Entered chat string) Equal to (-accept vassal + ( + Color[(Integer A)]))
- IsVassalMaster[(Player number of (Triggering player))] Equal to 0
- Then - Actions
- Set IsVassalMaster[(Integer A)] = 1
- Set IsVassal[(Integer A)] = 1
- Set NumberOfVassals[(Integer A)] = (NumberOfVassals[(Integer A)] + 1)
- Set IsVassalOfWhatPlayer[(Player number of (Triggering player))] = (Integer A)
- Game - Display to (All players) the text: (|cffffcc00 + ((Name of (Triggering player)) + (|r has accepted |cffffcc00 + ((Name of (Player((Integer A)))) + |r's offer and has become a vassal.))))
- Player - Make (Triggering player) treat (Player((Integer A))) as an Ally with shared vision
- Player - Make (Player((Integer A))) treat (Triggering player) as an Ally with shared vision
- Player - Set name of (Triggering player) to ((Name of (Triggering player)) + ( (Vassal of + ((Name of (Player((Integer A)))) + ))))
- Player - Change color of (Player((Player number of (Triggering player)))) to PlayerColorsColorsVariable[(Integer A)], Changing color of existing units
- Player Group - Pick every player in (All enemies of (Triggering player)) and do (Actions)
- Loop - Actions
- Player - Make (Picked player) treat (Player((Integer A))) as an Enemy
- Player - Make (Player((Integer A))) treat (Picked player) as an Enemy
- Loop - Actions
- Player Group - Pick every player in (All enemies of (Player((Integer A)))) and do (Actions)
- Loop - Actions
- Player - Make (Triggering player) treat (Picked player) as an Enemy
- Player - Make (Picked player) treat (Triggering player) as an Enemy
- Loop - Actions
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- For each (Integer A) from 1 to 12, do (Actions)
- Loop - Actions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- PlannedVassal[(Integer A)] Equal to (Player number of (Triggering player))
- (Player((Integer A))) Not equal to (Triggering player)
- (Entered chat string) Equal to (-accept vassal + ( + PlayerName[(Integer A)]))
- IsVassalMaster[(Player number of (Triggering player))] Equal to 0
- Then - Actions
- Set IsVassalMaster[(Integer A)] = 1
- Set IsVassal[(Integer A)] = 1
- Set IsVassalOfWhatPlayer[(Player number of (Triggering player))] = (Integer A)
- Game - Display to (All players) the text: (|cffffcc00 + ((Name of (Triggering player)) + (|r has accepted |cffffcc00 + ((Name of (Player((Integer A)))) + |r's offer and has become a vassal.))))
- Player - Make (Triggering player) treat (Player((Integer A))) as an Ally with shared vision
- Player - Make (Player((Integer A))) treat (Triggering player) as an Ally with shared vision
- Player - Set name of (Triggering player) to ((Name of (Triggering player)) + ( (Vassal of + ((Name of (Player((Integer A)))) + ))))
- Player - Change color of (Player((Player number of (Triggering player)))) to PlayerColorsColorsVariable[(Integer A)], Changing color of existing units
- Player Group - Pick every player in (All enemies of (Triggering player)) and do (Actions)
- Loop - Actions
- Player - Make (Picked player) treat (Player((Integer A))) as an Enemy
- Game - Display to (All players) the text: (|cffffcc00 + ((Name of (Player((Integer A)))) + (|r has declared war on |cffffcc00 + ((Name of (Picked player)) + |r.))))
- Player - Make (Player((Integer A))) treat (Picked player) as an Enemy
- Loop - Actions
- Player Group - Pick every player in (All enemies of (Player((Integer A)))) and do (Actions)
- Loop - Actions
- Player - Make (Triggering player) treat (Picked player) as an Enemy
- Game - Display to (All players) the text: (|cffffcc00 + ((Name of (Triggering player)) + (|r has declared war on |cffffcc00 + ((Name of (Picked player)) + |r.))))
- Player - Make (Picked player) treat (Triggering player) as an Enemy
- Loop - Actions
- Else - Actions
- If - Conditions
- If (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- For each (Integer A) from 1 to 12, do (Actions)
- Events
Anyone got any ideas of what causes the fatal? :<