I tried making a stamina system like in Diablo and it works for the most part. But for some reason, it works half the time. When it's "walking" it gains the stamina properly but when it's "running" the trigger doesn't run. It doesn't run every .25 seconds as it should and it runs irregularly, sometimes triggering after 10 seconds and sometimes triggering 4 times (as it should) in a single second (those 2 values are the extremes though, and it's usually not like that. It's usually around twice each second).
I don't know what's wrong since half works perfectly and the other half runs very irregularly.
Here's the trigger. If unit toggles "run" on, then the boolean is set true and if it's set off, then the boolean sets false. The game messages were so I could tell how fast the trigger was running.
I don't know what's wrong since half works perfectly and the other half runs very irregularly.
Here's the trigger. If unit toggles "run" on, then the boolean is set true and if it's set off, then the boolean sets false. The game messages were so I could tell how fast the trigger was running.
Trigger:
- Stamina DrainRegen
- Events
- Time - Every 0.25 seconds of game time
- Conditions
- Actions
- Do Multiple ActionsFor each (Integer A) from 1 to 10, do (Actions)
- Loop - Actions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Boolean_Running[(Integer A)] Equal to (==) True
- Real_CurrentStamina[(Integer A)] Greater than (>) 0.00
- Then - Actions
- Set Point_StaminaA[(Integer A)] = (Position of Unit_PlayerHero[(Integer A)])
- Wait 0.10 game-time seconds
- Set Point_StaminaB[(Integer A)] = (Position of Unit_PlayerHero[(Integer A)])
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- (Distance between Point_StaminaA[(Integer A)] and Point_StaminaB[(Integer A)]) Less than or equal to (<=) 150.00
- (Distance between Point_StaminaA[(Integer A)] and Point_StaminaB[(Integer A)]) Greater than (>) 0.00
- Then - Actions
- Set Real_CurrentStamina[(Integer A)] = (Real_CurrentStamina[(Integer A)] - Real_StaminaDrainRate[(Integer A)])
- Player - Set (Player((Integer A))) Food used to (Integer(Real_CurrentStamina[(Integer A)]))
- Player - Set (Player((Integer A))) Food cap to Integer_MaxStamina[(Integer A)]
- Game - Display to (Player group((Player((Integer A))))) the text: (String(Real_CurrentStamina[(Integer A)]))
- Else - Actions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Real_CurrentStamina[(Integer A)] Less than (<) (Real(Integer_MaxStamina[(Integer A)]))
- Then - Actions
- Set Real_CurrentStamina[(Integer A)] = (Real_CurrentStamina[(Integer A)] + Real_StaminaRegenRate[(Integer A)])
- Else - Actions
- If - Conditions
- Player - Set (Player((Integer A))) Food used to (Integer(Real_CurrentStamina[(Integer A)]))
- Player - Set (Player((Integer A))) Food cap to Integer_MaxStamina[(Integer A)]
- Game - Display to (Player group((Player((Integer A))))) the text: (String(Real_CurrentStamina[(Integer A)]))
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Else - Actions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Real_CurrentStamina[(Integer A)] Less than (<) (Real(Integer_MaxStamina[(Integer A)]))
- Then - Actions
- Set Real_CurrentStamina[(Integer A)] = (Real_CurrentStamina[(Integer A)] + Real_StaminaRegenRate[(Integer A)])
- Else - Actions
- If - Conditions
- Player - Set (Player((Integer A))) Food used to (Integer(Real_CurrentStamina[(Integer A)]))
- Player - Set (Player((Integer A))) Food cap to Integer_MaxStamina[(Integer A)]
- Game - Display to (Player group((Player((Integer A))))) the text: (String(Real_CurrentStamina[(Integer A)]))
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- If - Conditions
- Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
- Loop - Actions
- Do Multiple ActionsFor each (Integer A) from 1 to 10, do (Actions)
- Events