• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Having a small problem with spellbooks

Status
Not open for further replies.
Level 14
Joined
Apr 20, 2009
Messages
1,543
A friend of mine made a GUI trigger which basically does this repeatedly:

  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • (Load (Player number of (Player(Integer4))) of 46 from Hashtable_TalentsSpent) Equal to (==) 1
    • Then - Actions
      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A028')
      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Consumption|r level + (String((Load (Player number of (Player(Integer4))) of 46 from Hashtable_TalentsSpent))))
      • Player - Enable Consumption for (Player(Integer4))
    • Else - Actions
Now the problem is that some of the ability's are (sometimes at random) not being enabled for the player.
The ability's are inside a spellbook.
I think it has to do something with: all the ability's being based off the same channel ability. But I might be wrong about this.

The chat messages are displayed so they are not the ones causing the problem.
Integer4 is also correct so that shouldn't be the problem eithor.

I will not post the entire trigger since that will probably hurt your eyes (it's pretty long).
If you need to see the rest I'll post it here.

Is it possible that SetPlayerAbilityAvailableBJ works on base ID's like ANcl?
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,258
I will not post the entire trigger since that will probably hurt your eyes (it's pretty long).
Make sure the thread is not crashing due to hitting the opperation limit. Place debug text at the end to make sure it always finishes running.

Is it possible that SetPlayerAbilityAvailableBJ works on base ID's like ANcl?
Avoid using BJs as they often act as unnescescary adapters which waste processor time. All ability types are referenced via raw code such as 'A000'.

'A000' evaluates to an integer when the jass script is parsed at session load. Each diget is actually a 8 bit ASCII character (4 * 8 = 32 which is the length of an integer) so even '@@@@' is valid.
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
Make sure the thread is not crashing due to hitting the opperation limit. Place debug text at the end to make sure it always finishes running.

Thank you for this great advice, I'll check it out right away.

Avoid using BJs as they often act as unnescescary adapters which waste processor time.

Yes I know this thank you, it's just that I was referring to the BJ due to the trigger being in GUI.

All ability types are referenced via raw code such as 'A000'.
But I suppose reffering to base ID's will work too?
I've done this plenty of times for units like 'hfoo'.

'A000' evaluates to an integer when the jass script is parsed at session load. Each diget is actually a 8 bit ASCII character (4 * 8 = 32 which is the length of an integer) so even '@@@@' is valid.

I have seen some of these parsed offsets in the map header I think.
A028 in this case was evaluated to 0x41303238

Oh this is actually quite interesting :D
I didn't know that any ASCII character was valid. Thanks for this information.

EDIT: as I come to think of it, I don't think it's the operation limit since the chat messages are being displayed...
I'll try to debug it some more and hopefully find a solution.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,258
An idea would be to write a "cheat" function for testing which allows you to simulate the ability alterations. If one fails you can try repeating it via chat command to see if it was the trigger faling to execute that branch (a logic error) or the abilites not behaving as intended (a WarCraft III bug?).
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
An idea would be to write a "cheat" function for testing which allows you to simulate the ability alterations. If one fails you can try repeating it via chat command to see if it was the trigger faling to execute that branch (a logic error) or the abilites not behaving as intended (a WarCraft III bug?).

I just tryed this:
  • Set consumption
    • Events
      • Player - Player 1 (Red) types a chat message containing enable consumption as An exact match
    • Conditions
    • Actions
      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A028')
      • Player - Enable Consumption for (Player(1))
So whenever consumption was not added to my spellbook (random each game) I tryed typing in enable consumption. Nonetheless, nothing happened...

Now what can you make of that 0.o?

Eithor ways, here is the trigger that was used for enabling the ability's:


  • Apply Upgrades
    • Events
      • Time - Every 20.00 seconds of game time
    • Conditions
    • Actions
      • Set Integer_MinutesPlayed = (Integer_MinutesPlayed + 2)
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • Integer_MinutesPlayed Less than or equal to (<=) 10
          • Then - Actions
            • Do Multiple ActionsFor each (Integer Integer4) from 1 to 12, do (Actions)
              • Loop - Actions
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • Integer_MinutesPlayed Equal to (==) 2
                  • Then - Actions
                    • -------- 2 min --------
                    • Set Boolean_TalentsActivated[2] = True
                    • Game - Display to (Player group((Player(Integer4)))) the text: 2 minutes have pass...
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • (Player(Integer4)) Not equal to (!=) Player_Satyr
                        • Then - Actions
                          • -------- Draenei --------
                          • -------- Skill 3,4 --------
                            • Do Multiple ActionsFor each (Integer Integer4) from 1 to 12, do (Actions)
                              • Loop - Actions
                                • Countdown Timer - Pause Timer_HPRegeneration[Integer4]
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • ((Player(Integer4)) slot status) Equal to (==) Is playing
                                • ((Player(Integer4)) controller) Equal to (==) User
                              • Then - Actions
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Load (Player number of (Player(Integer4))) of 3 from Hashtable_TalentsSpent) Equal to (==) 1
                                  • Then - Actions
                                    • Set Real_TimerHPRegValue[(Player number of (Player(Integer4)))] = 1.93
                                    • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Regeneration|r level + (String((Load (Player number of (Player(Integer4))) of 3 from Hashtable_TalentsSpent))))
                                  • Else - Actions
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • (Load (Player number of (Player(Integer4))) of 3 from Hashtable_TalentsSpent) Equal to (==) 2
                                      • Then - Actions
                                        • Set Real_TimerHPRegValue[(Player number of (Player(Integer4)))] = 1.85
                                        • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Regeneration|r level + (String((Load (Player number of (Player(Integer4))) of 3 from Hashtable_TalentsSpent))))
                                      • Else - Actions
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Load (Player number of (Player(Integer4))) of 4 from Hashtable_TalentsSpent) Equal to (==) 1
                                  • Then - Actions
                                    • Set Real_TimerHPRegValue[(Player number of (Player(Integer4)))] = (Real_TimerHPRegValue[(Player number of (Player(Integer4)))] - 0.08)
                                    • Player - Set the current research level of +8% HP (1 levels) to 1 for (Player(Integer4))
                                    • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Alteration|r level + (String((Load (Player number of (Player(Integer4))) of 3 from Hashtable_TalentsSpent))))
                                  • Else - Actions
                                • Countdown Timer - Start Timer_HPRegeneration[Integer4] as a Repeating timer that will expire in Real_TimerHPRegValue[Integer4] seconds
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 5 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A015')
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Repairbot X260|r level + (String((Load (Player number of (Player(Integer4))) of 5 from Hashtable_TalentsSpent))))
                                • Player - Enable Repairbot X260 for (Player(Integer4))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 14 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Power Generator|r level + (String((Load (Player number of (Player(Integer4))) of 14 from Hashtable_TalentsSpent))))
                                • Player - Make Power Generator Available for training/construction by (Player(Integer4))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 15 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A01D')
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Ignite|r level + (String((Load (Player number of (Player(Integer4))) of 15 from Hashtable_TalentsSpent))))
                                • Player - Enable Activate Ignite for (Player(Integer4))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 23 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Groth|r level + (String((Load (Player number of (Player(Integer4))) of 23 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 24 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Investment|r level + (String((Load (Player number of (Player(Integer4))) of 24 from Hashtable_TalentsSpent))))
                              • Else - Actions
                        • Else - Actions
                          • -------- Satyr --------
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 33 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01Q')
                                • Player - Enable Reveal 1 for (Player(Integer4))
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Reveal|r level + (String((Load (Player number of (Player(Integer4))) of 33 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 34 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01S')
                                • Player - Enable Sentry Ward for (Player(Integer4))
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Sentry Ward|r level + (String((Load (Player number of (Player(Integer4))) of 34 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 35 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01P')
                                • Player - Enable Evasion 4 for (Player(Integer4))
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Evasion|r level + (String((Load (Player number of (Player(Integer4))) of 35 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 41 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Pillage|r level + (String((Load (Player number of (Player(Integer4))) of 41 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 42 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A027')
                                • Player - Enable Gold Snatching for (Player(Integer4))
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Gold Snatching|r level + (String((Load (Player number of (Player(Integer4))) of 42 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 53 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Sabotage|r level + (String((Load (Player number of (Player(Integer4))) of 53 from Hashtable_TalentsSpent))))
                              • Else - Actions
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Load (Player number of (Player(Integer4))) of 53 from Hashtable_TalentsSpent) Equal to (==) 2
                                  • Then - Actions
                                    • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Sabotage|r level + (String((Load (Player number of (Player(Integer4))) of 53 from Hashtable_TalentsSpent))))
                                  • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 54 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02E')
                                • Player - Enable Bloodlust custom for (Player(Integer4))
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Bloodlust|r level + (String((Load (Player number of (Player(Integer4))) of 54 from Hashtable_TalentsSpent))))
                              • Else - Actions
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Load (Player number of (Player(Integer4))) of 55 from Hashtable_TalentsSpent) Equal to (==) 1
                              • Then - Actions
                                • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Hardened Skin|r level + (String((Load (Player number of (Player(Integer4))) of 55 from Hashtable_TalentsSpent))))
                              • Else - Actions
                  • Else - Actions
                    • -------- 4 min --------
                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                        • If - Conditions
                          • Integer_MinutesPlayed Equal to (==) 4
                        • Then - Actions
                          • Set Boolean_TalentsActivated[4] = True
                          • Game - Display to (Player group((Player(Integer4)))) the text: 4 minutes have pass...
                            • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                              • If - Conditions
                                • (Player(Integer4)) Not equal to (!=) Player_Satyr
                              • Then - Actions
                                • -------- Draenei --------
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 6 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Player - Enable Reflect for (Player(Integer4))
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Reflect|r level + (String((Load (Player number of (Player(Integer4))) of 6 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 7 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A001')
                                      • Player - Enable Ice Barrier for (Player(Integer4))
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Ice Barrier|r level + (String((Load (Player number of (Player(Integer4))) of 7 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 16 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Overpower|r level + (String((Load (Player number of (Player(Integer4))) of 16 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 17 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Frostfire|r level + (String((Load (Player number of (Player(Integer4))) of 17 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 25 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Economy Charger|r level + (String((Load (Player number of (Player(Integer4))) of 25 from Hashtable_TalentsSpent))))
                                      • Player - Make Economy Charger Available for training/construction by (Player(Integer4))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 26 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Revenue|r level + (String((Load (Player number of (Player(Integer4))) of 26 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 26 from Hashtable_TalentsSpent) Equal to (==) 2
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Revenue|r level + (String((Load (Player number of (Player(Integer4))) of 26 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                              • Else - Actions
                                • -------- Satyr --------
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 36 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01R')
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Reveal|r level + (String((Load (Player number of (Player(Integer4))) of 36 from Hashtable_TalentsSpent))))
                                      • Player - Disable Reveal 1 for (Player(Integer4))
                                      • Player - Enable Reveal 2 for (Player(Integer4))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 37 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02S')
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Hook|r level + (String((Load (Player number of (Player(Integer4))) of 37 from Hashtable_TalentsSpent))))
                                      • Player - Enable Hook for (Player(Integer4))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 44 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02Q')
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Corrupted Shockwave|r level + (String((Load (Player number of (Player(Integer4))) of 44 from Hashtable_TalentsSpent))))
                                      • Player - Enable Corrupted Shockwave for (Player(Integer4))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Gold Snatching|r level + (String((Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent))))
                                    • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent) Equal to (==) 2
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Gold Snatching|r level + (String((Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent) Equal to (==) 3
                                            • Then - Actions
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Gold Snatching|r level + (String((Load (Player number of (Player(Integer4))) of 45 from Hashtable_TalentsSpent))))
                                            • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 46 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A028')
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Consumption|r level + (String((Load (Player number of (Player(Integer4))) of 46 from Hashtable_TalentsSpent))))
                                      • Player - Enable Consumption for (Player(Integer4))
                                    • Else - Actions
                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    • If - Conditions
                                      • (Load (Player number of (Player(Integer4))) of 56 from Hashtable_TalentsSpent) Equal to (==) 1
                                    • Then - Actions
                                      • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02H')
                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Molten Skin|r level + (String((Load (Player number of (Player(Integer4))) of 56 from Hashtable_TalentsSpent))))
                                      • Player - Enable Molten Skin for (Player(Integer4))
                                    • Else - Actions
                        • Else - Actions
                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • Integer_MinutesPlayed Equal to (==) 6
                            • Then - Actions
                              • -------- 6 min --------
                              • Set Boolean_TalentsActivated[6] = True
                              • Game - Display to (Player group((Player(Integer4)))) the text: 6 minutes have pass...
                                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                  • If - Conditions
                                    • (Player(Integer4)) Not equal to (!=) Player_Satyr
                                  • Then - Actions
                                    • -------- Draenei --------
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 8 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Magica|r level + (String((Load (Player number of (Player(Integer4))) of 8 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 9 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Replenishment|r level + (String((Load (Player number of (Player(Integer4))) of 9 from Hashtable_TalentsSpent))))
                                          • Player - Enable Replenishment for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 18 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A01H')
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Entangling Trap|r level + (String((Load (Player number of (Player(Integer4))) of 18 from Hashtable_TalentsSpent))))
                                          • Player - Enable Entangling Trap for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 19 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Overcharge|r level + (String((Load (Player number of (Player(Integer4))) of 19 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 27 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Reversed Pillage|r level + (String((Load (Player number of (Player(Integer4))) of 27 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 28 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Employment|r level + (String((Load (Player number of (Player(Integer4))) of 28 from Hashtable_TalentsSpent))))
                                          • Player - Enable Employment for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 29 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A009')
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Totem|r level + (String((Load (Player number of (Player(Integer4))) of 29 from Hashtable_TalentsSpent))))
                                          • Player - Enable Totem for (Player(Integer4))
                                        • Else - Actions
                                  • Else - Actions
                                    • -------- Satyr --------
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 38 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01T')
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Disease Cloud|r level + (String((Load (Player number of (Player(Integer4))) of 38 from Hashtable_TalentsSpent))))
                                          • Player - Enable Disease Cloud for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 47 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improved Corrupted Shockwave|r level + (String((Load (Player number of (Player(Integer4))) of 47 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 47 from Hashtable_TalentsSpent) Equal to (==) 2
                                            • Then - Actions
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improved Corrupted Shockwave|r level + (String((Load (Player number of (Player(Integer4))) of 47 from Hashtable_TalentsSpent))))
                                            • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 48 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02D')
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Corrupted Power Generator|r level + (String((Load (Player number of (Player(Integer4))) of 48 from Hashtable_TalentsSpent))))
                                          • Player - Enable Corrupted Power Generator for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 49 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Consumption|r level + (String((Load (Player number of (Player(Integer4))) of 49 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 57 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02J')
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Molten Blade|r level + (String((Load (Player number of (Player(Integer4))) of 57 from Hashtable_TalentsSpent))))
                                          • Player - Enable Molten Blade for (Player(Integer4))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 58 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Molten Blade|r level + (String((Load (Player number of (Player(Integer4))) of 58 from Hashtable_TalentsSpent))))
                                        • Else - Actions
                                      • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                        • If - Conditions
                                          • (Load (Player number of (Player(Integer4))) of 59 from Hashtable_TalentsSpent) Equal to (==) 1
                                        • Then - Actions
                                          • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Rage|r level + (String((Load (Player number of (Player(Integer4))) of 59 from Hashtable_TalentsSpent))))
                                          • Player - Enable Flaming Bulwark Off for (Player(Integer4))
                                        • Else - Actions
                            • Else - Actions
                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • Integer_MinutesPlayed Equal to (==) 10
                                • Then - Actions
                                  • -------- 10 min --------
                                  • Set Boolean_TalentsActivated[10] = True
                                  • Game - Display to (Player group((Player(Integer4)))) the text: 10 minutes have pas...
                                    • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                      • If - Conditions
                                        • (Player(Integer4)) Not equal to (!=) Player_Satyr
                                      • Then - Actions
                                        • -------- Draenei --------
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 10 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Mana Shield|r level + (String((Load (Player number of (Player(Integer4))) of 10 from Hashtable_TalentsSpent))))
                                            • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 20 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Capacity|r level + (String((Load (Player number of (Player(Integer4))) of 20 from Hashtable_TalentsSpent))))
                                            • Else - Actions
                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                • If - Conditions
                                                  • (Load (Player number of (Player(Integer4))) of 20 from Hashtable_TalentsSpent) Equal to (==) 2
                                                • Then - Actions
                                                  • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Capacity|r level + (String((Load (Player number of (Player(Integer4))) of 20 from Hashtable_TalentsSpent))))
                                                • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 30 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Custom script: call UnitMakeAbilityPermanent(udg_Unit_Draenei[udg_Integer4], true, 'A006')
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Aquirement|r level + (String((Load (Player number of (Player(Integer4))) of 30 from Hashtable_TalentsSpent))))
                                              • Player - Enable Acquirement for (Player(Integer4))
                                            • Else - Actions
                                      • Else - Actions
                                        • -------- Satyr --------
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 39 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A01X')
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Alacritous Strike|r level + (String((Load (Player number of (Player(Integer4))) of 39 from Hashtable_TalentsSpent))))
                                              • Player - Enable Alacritous Strike for (Player(Integer4))
                                            • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Alacritous Strike|r level + (String((Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent))))
                                            • Else - Actions
                                              • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                • If - Conditions
                                                  • (Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent) Equal to (==) 2
                                                • Then - Actions
                                                  • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Alacritous Strike|r level + (String((Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent))))
                                                • Else - Actions
                                                  • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    • If - Conditions
                                                      • (Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent) Equal to (==) 3
                                                    • Then - Actions
                                                      • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Improve Alacritous Strike|r level + (String((Load (Player number of (Player(Integer4))) of 40 from Hashtable_TalentsSpent))))
                                                    • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 50 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02C')
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Restoration Totem|r level + (String((Load (Player number of (Player(Integer4))) of 50 from Hashtable_TalentsSpent))))
                                              • Player - Enable Restoration Totem for (Player(Integer4))
                                            • Else - Actions
                                          • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            • If - Conditions
                                              • (Load (Player number of (Player(Integer4))) of 60 from Hashtable_TalentsSpent) Equal to (==) 1
                                            • Then - Actions
                                              • Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A02K')
                                              • Game - Display to (Player group((Player(Integer4)))) the text: (|cffCBCAB6Sicklem|r level + (String((Load (Player number of (Player(Integer4))) of 60 from Hashtable_TalentsSpent))))
                                              • Player - Enable Sickle for (Player(Integer4))
                                            • Else - Actions
                                • Else - Actions
                                  • -------- After 10 --------
                • Custom script: call BJDebugMsg("BAM!")
          • Else - Actions
            • Trigger - Turn off (This trigger)
I also tryed disabling the spellbook beforehand and then enabling it again after all the abilities "where supposed to be" enabled.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,258
So whenever consumption was not added to my spellbook (random each game) I tryed typing in enable consumption. Nonetheless, nothing happened...

Now what can you make of that 0.o?
Check the function argumenets are what you expect. Especially if the unit is stored in a variable it is possible some other faulty trigger is making it the wrong value.

If that fails it is probably some ability bug.

Custom script: call UnitMakeAbilityPermanent(udg_unit_satyr, true, 'A028')
You are aware that this does not add the ability right? This only makes trigger added abilities permanent. When an ability is permanent it will not be lost if the unit is morphed via an ability like metomorphosis or during a unit upgrade. Non-permanent abilites will be lost under such circumstances.
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
Check the function argumenets are what you expect. Especially if the unit is stored in a variable it is possible some other faulty trigger is making it the wrong value.

The unit is always the same the entire game. It is set right after the init and is only used within conditions.

If that fails it is probably some ability bug.

I think so too, it'll probably be better to just recreate it entirely and then use a dummy spellbook with added ability's instead of using object editor + enabling ability's

You are aware that this does not add the ability right? This only makes trigger added abilities permanent. When an ability is permanent it will not be lost if the unit is morphed via an ability like metomorphosis or during a unit upgrade. Non-permanent abilites will be lost under such circumstances.

Yes I am aware of that, they are added inside the object editor and enabled through triggers. I made the ability's permanent for that circumstance
(allthough I'm not really sure if the game uses any morphing ability's, but it's good to be safe).

Thanks for all your time Dr Super Good, I really appreciate your help so far.
I think I'll just go for an entirely new approach.
 
Status
Not open for further replies.
Top