Hi all,
Goal: I'm making a Tome tax system. Every few tomes the player purchases, the cost of that tome rises for that player only until a cap is reached (currently 5). I wanted to ditch having triggers do the gold requirement check and deduction after purchase and have the current price listed on the actual item tooltip.
Implementation: When a player clicks on the tome shop, their selection is changed to a dummy shop at the same location owned by the player (each player has 2 shops - one for each neutral shop on the map). Each dummy shop starts with "Tax 1" tomes (the default non taxed version I guess). When they buy 6 of a particular tome, it rises to Tax 2 and so on for each type of tome. When this happens, the tome, in only the triggering player's shop, is replaced with it's upper level.
The Problem: For some reason, some tomes go missing after certain tomes are leveled up to a certain point. Many of the first purchased seem to work flawlessly and at some point the tomes start vanishing after tome purchases.
Which tomes go missing depend on which tomes I purchase prior. I can't see a pattern to this.
Triggers
Can anyone identify where I've gone wrong?
Goal: I'm making a Tome tax system. Every few tomes the player purchases, the cost of that tome rises for that player only until a cap is reached (currently 5). I wanted to ditch having triggers do the gold requirement check and deduction after purchase and have the current price listed on the actual item tooltip.
Implementation: When a player clicks on the tome shop, their selection is changed to a dummy shop at the same location owned by the player (each player has 2 shops - one for each neutral shop on the map). Each dummy shop starts with "Tax 1" tomes (the default non taxed version I guess). When they buy 6 of a particular tome, it rises to Tax 2 and so on for each type of tome. When this happens, the tome, in only the triggering player's shop, is replaced with it's upper level.
The Problem: For some reason, some tomes go missing after certain tomes are leveled up to a certain point. Many of the first purchased seem to work flawlessly and at some point the tomes start vanishing after tome purchases.
Which tomes go missing depend on which tomes I purchase prior. I can't see a pattern to this.
Triggers
FYI - This is called by another trigger at Map Initialization.
-
Tome Tax Setup
- Events
- Conditions
-
Actions
- -------- -------- --------
- -------- Setup Tomes --------
- -------- -------- --------
- Set VariableSet TomeTax_Cap = 0
- Set VariableSet TomeTax_ArtOfFighting_Item[TomeTax_Cap] = Art of Fighting
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_ArtOfFighting_Item[TomeTax_Cap] = Art of Fighting - Tax 2
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_ArtOfFighting_Item[TomeTax_Cap] = Art of Fighting - Tax 3
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_ArtOfFighting_Item[TomeTax_Cap] = Art of Fighting - Tax 4
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_ArtOfFighting_Item[TomeTax_Cap] = Art of Fighting - Tax 5
- -------- ----------------------------------------------- --------
- Set VariableSet TomeTax_Cap = 0
- Set VariableSet TomeTax_Vitality_Item[TomeTax_Cap] = Manual of Vitality
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Vitality_Item[TomeTax_Cap] = Manual of Vitality - Tax 2
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Vitality_Item[TomeTax_Cap] = Manual of Vitality - Tax 3
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Vitality_Item[TomeTax_Cap] = Manual of Vitality - Tax 4
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Vitality_Item[TomeTax_Cap] = Manual of Vitality - Tax 5
- -------- ----------------------------------------------- --------
- Set VariableSet TomeTax_Cap = 0
- Set VariableSet TomeTax_Agility_Item[TomeTax_Cap] = Tome of Agility
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Agility_Item[TomeTax_Cap] = Tome of Agility - Tax 2
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Agility_Item[TomeTax_Cap] = Tome of Agility - Tax 3
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Agility_Item[TomeTax_Cap] = Tome of Agility - Tax 4
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Agility_Item[TomeTax_Cap] = Tome of Agility - Tax 5
- -------- ----------------------------------------------- --------
- Set VariableSet TomeTax_Cap = 0
- Set VariableSet TomeTax_Intelligence_Item[TomeTax_Cap] = Tome of Intelligence
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Intelligence_Item[TomeTax_Cap] = Tome of Intelligence - Tax 2
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Intelligence_Item[TomeTax_Cap] = Tome of Intelligence - Tax 3
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Intelligence_Item[TomeTax_Cap] = Tome of Intelligence - Tax 4
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Intelligence_Item[TomeTax_Cap] = Tome of Intelligence - Tax 5
- -------- ----------------------------------------------- --------
- Set VariableSet TomeTax_Cap = 0
- Set VariableSet TomeTax_Strength_Item[TomeTax_Cap] = Tome of Strength
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Strength_Item[TomeTax_Cap] = Tome of Strength - Tax 2
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Strength_Item[TomeTax_Cap] = Tome of Strength - Tax 3
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Strength_Item[TomeTax_Cap] = Tome of Strength - Tax 4
- Set VariableSet TomeTax_Cap = (TomeTax_Cap + 1)
- Set VariableSet TomeTax_Strength_Item[TomeTax_Cap] = Tome of Strength - Tax 5
- -------- -------- --------
- -------- Setup Shops --------
- -------- -------- --------
- Set VariableSet TempPoint1 = (Position of Tent Of Training 2 0028 <gen>)
- Set VariableSet TempPoint2 = (Position of Tent Of Training 2 0035 <gen>)
-
Player Group - Pick every player in PlayerGroupAllies and do (Actions)
-
Loop - Actions
- Unit - Create 1 Tent Of Training (Players Hidden One) for (Picked player) at TempPoint1 facing Default building facing degrees
- Set VariableSet TomeTax_Shop_Cliff[(Player number of (Picked player))] = (Last created unit)
- Neutral Building - Add TomeTax_ArtOfFighting_Item[0] to TomeTax_Shop_Cliff[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Vitality_Item[0] to TomeTax_Shop_Cliff[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Agility_Item[0] to TomeTax_Shop_Cliff[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Intelligence_Item[0] to TomeTax_Shop_Cliff[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Strength_Item[0] to TomeTax_Shop_Cliff[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Unit - Create 1 Tent Of Training (Players Hidden One) for (Picked player) at TempPoint2 facing Default building facing degrees
- Set VariableSet TomeTax_Shop_NearWizard[(Player number of (Picked player))] = (Last created unit)
- Neutral Building - Add TomeTax_ArtOfFighting_Item[0] to TomeTax_Shop_NearWizard[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Vitality_Item[0] to TomeTax_Shop_NearWizard[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Agility_Item[0] to TomeTax_Shop_NearWizard[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Intelligence_Item[0] to TomeTax_Shop_NearWizard[(Player number of (Picked player))] with 1 in stock and a max stock of 1
- Neutral Building - Add TomeTax_Strength_Item[0] to TomeTax_Shop_NearWizard[(Player number of (Picked player))] with 1 in stock and a max stock of 1
-
Loop - Actions
- Custom script: call RemoveLocation (udg_TempPoint1)
- Custom script: call RemoveLocation (udg_TempPoint2)
-
Tome Tax Select Shop
-
Events
- Player - Player 1 (Red) Selects a unit
- Conditions
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Triggering unit) Equal to Tent Of Training 2 0028 <gen>
-
Then - Actions
- -------- Training Hut on the Cliff --------
- Selection - Select TomeTax_Shop_Cliff[(Player number of (Triggering player))] for (Triggering player)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Triggering unit) Equal to Tent Of Training 2 0035 <gen>
-
Then - Actions
- -------- Training Hut near the Wizards hut --------
- Selection - Select TomeTax_Shop_NearWizard[(Player number of (Triggering player))] for (Triggering player)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Events
-
Tome Tax Purchase
-
Events
- Unit - A unit Sells an item (from shop)
- Conditions
-
Actions
- Set VariableSet TempInteger1 = (Player number of (Owner of (Buying unit)))
- -------- The interval before a new price is required. --------
- Set VariableSet TempInteger2 = 6
- -------- ------------------ --------
- -------- Art of Fighting --------
- -------- ------------------ --------
-
For each (Integer A) from 0 to TomeTax_Cap, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Equal to TomeTax_ArtOfFighting_Item[(Integer A)]
-
Then - Actions
- Set VariableSet TomeTax_ArtOfFighting[TempInteger1] = (TomeTax_ArtOfFighting[TempInteger1] + 1)
- -------- TempInteger3 should truncate the decimal of the result and give us the whole value we want. --------
- Set VariableSet TempInteger3 = (TomeTax_ArtOfFighting[TempInteger1] / TempInteger2)
- Game - Display to (All players) for 5.00 seconds the text: (Fighting Integer3: + (String(TempInteger3)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Not equal to TomeTax_ArtOfFighting_Item[TempInteger3]
- TempInteger3 Less than or equal to TomeTax_Cap
-
Then - Actions
- Game - Display to (All players) for 5.00 seconds the text: (Replacing + (Name of (Sold Item)))
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_Cliff[TempInteger1]
- Neutral Building - Add TomeTax_ArtOfFighting_Item[TempInteger3] to TomeTax_Shop_Cliff[TempInteger1] with 1 in stock and a max stock of 1
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_NearWizard[TempInteger1]
- Neutral Building - Add TomeTax_ArtOfFighting_Item[TempInteger3] to TomeTax_Shop_NearWizard[TempInteger1] with 1 in stock and a max stock of 1
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- ------------------ --------
- -------- Vitality --------
- -------- ------------------ --------
-
For each (Integer A) from 0 to TomeTax_Cap, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Equal to TomeTax_Vitality_Item[(Integer A)]
-
Then - Actions
- Set VariableSet TomeTax_Vitality[TempInteger1] = (TomeTax_Vitality[TempInteger1] + 1)
- Set VariableSet TempInteger3 = (TomeTax_Vitality[TempInteger1] / TempInteger2)
- Game - Display to (All players) for 5.00 seconds the text: (Vitality Integer3: + (String(TempInteger3)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Not equal to TomeTax_Vitality_Item[TempInteger3]
- TempInteger3 Less than or equal to TomeTax_Cap
-
Then - Actions
- Game - Display to (All players) for 5.00 seconds the text: (Replacing + (Name of (Sold Item)))
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_Cliff[TempInteger1]
- Neutral Building - Add TomeTax_Vitality_Item[TempInteger3] to TomeTax_Shop_Cliff[TempInteger1] with 1 in stock and a max stock of 1
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_NearWizard[TempInteger1]
- Neutral Building - Add TomeTax_Vitality_Item[TempInteger3] to TomeTax_Shop_NearWizard[TempInteger1] with 1 in stock and a max stock of 1
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- ------------------ --------
- -------- Agility --------
- -------- ------------------ --------
-
For each (Integer A) from 0 to TomeTax_Cap, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Equal to TomeTax_Agility_Item[(Integer A)]
-
Then - Actions
- Set VariableSet TomeTax_Agility[TempInteger1] = (TomeTax_Agility[TempInteger1] + 1)
- Set VariableSet TempInteger3 = (TomeTax_Agility[TempInteger1] / TempInteger2)
- Game - Display to (All players) for 5.00 seconds the text: (Agility Integer3: + (String(TempInteger3)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Not equal to TomeTax_Agility_Item[TempInteger3]
- TempInteger3 Less than or equal to TomeTax_Cap
-
Then - Actions
- Game - Display to (All players) for 5.00 seconds the text: (Replacing + (Name of (Sold Item)))
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_Cliff[TempInteger1]
- Neutral Building - Add TomeTax_Agility_Item[TempInteger3] to TomeTax_Shop_Cliff[TempInteger1] with 1 in stock and a max stock of 1
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_NearWizard[TempInteger1]
- Neutral Building - Add TomeTax_Agility_Item[TempInteger3] to TomeTax_Shop_NearWizard[TempInteger1] with 1 in stock and a max stock of 1
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- ------------------ --------
- -------- Intelligence --------
- -------- ------------------ --------
-
For each (Integer A) from 0 to TomeTax_Cap, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Equal to TomeTax_Intelligence_Item[(Integer A)]
-
Then - Actions
- Set VariableSet TomeTax_Intelligence[TempInteger1] = (TomeTax_Intelligence[TempInteger1] + 1)
- Set VariableSet TempInteger3 = (TomeTax_Intelligence[TempInteger1] / TempInteger2)
- Game - Display to (All players) for 5.00 seconds the text: (Intelligence Integer3: + (String(TempInteger3)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Not equal to TomeTax_Intelligence_Item[TempInteger3]
- TempInteger3 Less than or equal to TomeTax_Cap
-
Then - Actions
- Game - Display to (All players) for 5.00 seconds the text: (Replacing + (Name of (Sold Item)))
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_Cliff[TempInteger1]
- Neutral Building - Add TomeTax_Intelligence_Item[TempInteger3] to TomeTax_Shop_Cliff[TempInteger1] with 1 in stock and a max stock of 1
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_NearWizard[TempInteger1]
- Neutral Building - Add TomeTax_Intelligence_Item[TempInteger3] to TomeTax_Shop_NearWizard[TempInteger1] with 1 in stock and a max stock of 1
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- -------- ------------------ --------
- -------- Strength --------
- -------- ------------------ --------
-
For each (Integer A) from 0 to TomeTax_Cap, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Equal to TomeTax_Strength_Item[(Integer A)]
-
Then - Actions
- Set VariableSet TomeTax_Strength[TempInteger1] = (TomeTax_Strength[TempInteger1] + 1)
- Set VariableSet TempInteger3 = (TomeTax_Strength[TempInteger1] / TempInteger2)
- Game - Display to (All players) for 5.00 seconds the text: (Strength Integer3: + (String(TempInteger3)))
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Item-type of (Sold Item)) Not equal to TomeTax_Strength_Item[TempInteger3]
- TempInteger3 Less than or equal to TomeTax_Cap
-
Then - Actions
- Game - Display to (All players) for 5.00 seconds the text: (Replacing + (Name of (Sold Item)))
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_Cliff[TempInteger1]
- Neutral Building - Add TomeTax_Strength_Item[TempInteger3] to TomeTax_Shop_Cliff[TempInteger1] with 1 in stock and a max stock of 1
- Neutral Building - Remove (Item-type of (Sold Item)) from TomeTax_Shop_NearWizard[TempInteger1]
- Neutral Building - Add TomeTax_Strength_Item[TempInteger3] to TomeTax_Shop_NearWizard[TempInteger1] with 1 in stock and a max stock of 1
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Loop - Actions
- Game - Display to (All players) for 5.00 seconds the text: Finished Trigger Ex...
-
Events
Attachments
Last edited: