- Joined
- Aug 20, 2009
- Messages
- 1,554
Hello,
This is a chat system created with units and floating text.
units will be replaced with UI later on.
This is the link to the system itself.
LINK : http://www.hiveworkshop.com/forums/spells-569/scroll-chat-system-v0-9-a-237399/
I have encountered 2 problems.
Both should not have happened logically.
I have been trying to solve this since long ago, but there has been no successful results.
If anyone could help me, please take a moment and help this noob in distress! (
Thank you!
This is a chat system created with units and floating text.
units will be replaced with UI later on.
This is the link to the system itself.
LINK : http://www.hiveworkshop.com/forums/spells-569/scroll-chat-system-v0-9-a-237399/
I have encountered 2 problems.
Both should not have happened logically.
I have been trying to solve this since long ago, but there has been no successful results.
If anyone could help me, please take a moment and help this noob in distress! (
Thank you!
-
Chat box Initialization
-
Events
- Map initialization
- Conditions
-
Actions
- -------- Run this Initialization on your map initialization --------
- -------- Chat Box System Requires Unit Indexer --------
- -------- -------------------------------------- --------
- -------- Modifiable --------
- -------- Set Up --------
- Set cBox_DummyType = ChatDummy
- Set cBox_maxChatRows = 8
- Set cBox_lineSpace = 100.00
- Set cBox_indentLength = 80.00
- Set cBox_NormalSize = 10.00
- Set cBox_animSpeed = 1.50
- Set cBox_soundEffect = cBox_ChatSoundEffect <gen>
- Set cBox_isInstant = False
- -------- -------------------------------------- --------
- -------- Initialize system variables and constants --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_isInstant Equal to True
-
Then - Actions
- Set cBox_InitialVelocity = cBox_lineSpace
-
Else - Actions
- Set cBox_InitialVelocity = (5.00 x cBox_animSpeed)
-
If - Conditions
- Set cBox_MaxDistance = (cBox_lineSpace x (Real(cBox_maxChatRows)))
- Set cBox_MaxDistance = (cBox_MaxDistance + cBox_lineSpace)
- Set cBox_currentQueueInteger = 1
- Set cBox_maxQueueInteger = 0
- Set cBox_lastPlayer = Neutral Passive
- Set cBox_currentName = No unit
- Hashtable - Create a hashtable
- Set cBox_Hash = (Last created hashtable)
- -------- -------------------------------------- --------
- -------- Initialize event --------
-
For each (Integer LoopInteger) from 1 to 12, do (Actions)
-
Loop - Actions
- Trigger - Add to Chat Event <gen> the event (Player - (Player(LoopInteger)) types a chat message containing <Empty String> as A substring)
-
Loop - Actions
- -------- -------------------------------------- --------
- -------- Delete line below --------
- -------- Testing Purposes --------
- -------- Initialize Player Camera --------
-
For each (Integer LoopInteger) from 1 to 12, do (Actions)
-
Loop - Actions
- Camera - Set (Player(LoopInteger))'s camera Angle of attack to 270.00 over 2.00 seconds
- Camera - Set (Player(LoopInteger))'s camera Rotation to 90.00 over 2.00 seconds
- Camera - Set (Player(LoopInteger))'s camera Distance to target to 2560.00 over 2.00 seconds
- Camera - Set (Player(LoopInteger))'s camera Field of view to 90.00 over 0.00 seconds
- Camera - Pan camera for (Player(LoopInteger)) to (Center of Camera center <gen>) over 0.00 seconds
-
Loop - Actions
- Visibility - Disable fog of war
- Visibility - Disable black mask
- -------- Initialize Player Color --------
- Trigger - Run GetPlayerColor <gen> (ignoring conditions)
- -------- -------------------------------------- --------
-
Events
-
GetPlayerColor
- Events
- Conditions
-
Actions
- -------- Geki you lazy bastard --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Red
-
Then - Actions
- Set Ccode = |cffff0303
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Blue
-
Then - Actions
- Set Ccode = |cff0042ff
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Teal
-
Then - Actions
- Set Ccode = |cff1ce6b9
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Purple
-
Then - Actions
- Set Ccode = |cff540081
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Yellow
-
Then - Actions
- Set Ccode = |cfffffc01
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Orange
-
Then - Actions
- Set Ccode = |cfffeba0e
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Green
-
Then - Actions
- Set Ccode = |cff20c000
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Pink
-
Then - Actions
- Set Ccode = |cffe55bb0
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Gray
-
Then - Actions
- Set Ccode = |cff959697
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Light Blue
-
Then - Actions
- Set Ccode = |cff7ebff1
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Dark Green
-
Then - Actions
- Set Ccode = |cff106246
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Brown
-
Then - Actions
- Set Ccode = |cff4e2a04
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Color of Player) Equal to Black
-
Then - Actions
- Set Ccode = |cff060606
-
Else - Actions
- Set Ccode = |cffcccccc
-
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)
-
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)
-
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)
-
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)
-
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)
-
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)
-
If - Conditions
-
Chat Event
- Events
- Conditions
-
Actions
- Set cBox_chatStartLocation = (Center of Start Pixel <gen>)
- Unit - Create 1 cBox_DummyType for (Triggering player) at cBox_chatStartLocation facing 90.00 degrees
- Set cBox_TempUnit4 = (Last created unit)
- Set Key = (Custom value of (Last created unit))
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Set cBox_currentDistance[Key] = 0.00
- Set cBox_Size[Key] = (cBox_NormalSize x 1.50)
- Set cBox_Transparancy[Key] = 0.00
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_lastPlayer Equal to (Triggering player)
-
Then - Actions
- Set cBox_TempPoint3 = (cBox_chatStartLocation offset by cBox_indentLength towards 0.00 degrees)
- Set cBox_X = (X of cBox_TempPoint3)
- Set cBox_Y = (Y of cBox_TempPoint3)
- Custom script: call SetUnitX(udg_cBox_TempUnit4, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit4, udg_cBox_Y)
- Custom script: call RemoveLocation(udg_cBox_TempPoint3)
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_String[Key] = (Entered chat string)
- Set cBox_isName[Key] = False
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Length of cBox_String[Key]) Greater than or equal to 32
-
Then - Actions
- -------- -------------------------------------- --------
- -------- When string reaches 32, floating text will appear weird --------
- Game - Display to (All players) the text: (Over Limit! + (String((Length of (Entered chat string)))))
- -------- Overloaded string will be seperated into different segments --------
- -------- -------------------------------------- --------
- -------- String overload system under construction --------
-
For each (Integer A) from 0 to (Length of (Entered chat string)), do (Actions)
-
Loop - Actions
- Set cBox_String[Key] = (Substring((Entered chat string), (Integer A), (Integer A)))
-
Loop - Actions
- -------- -------------------------------------- --------
- Else - Actions
-
If - Conditions
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
-
Else - Actions
- Set cBox_Velocity[Key] = (cBox_InitialVelocity x 4.00)
- Set cBox_String[Key] = (Name of (Triggering player))
- Set cBox_isName[Key] = True
- Set cBox_lastPlayer = (Triggering player)
- Set Player = (Triggering player)
- Trigger - Run GetPlayerColor <gen> (ignoring conditions)
- Set cBox_String[Key] = (Ccode + (cBox_String[Key] + |r))
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
- -------- -------------------------------------- --------
- Unit - Create 1 cBox_DummyType for (Triggering player) at cBox_chatStartLocation facing 90.00 degrees
- Set cBox_TempUnit4 = (Last created unit)
- Set cBox_lastPlayer = (Owner of cBox_TempUnit4)
- Set cBox_TempPoint3 = (cBox_chatStartLocation offset by cBox_indentLength towards 0.00 degrees)
- Set cBox_X = (X of cBox_TempPoint3)
- Set cBox_Y = (Y of cBox_TempPoint3)
- Custom script: call SetUnitX(udg_cBox_TempUnit4, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit4, udg_cBox_Y)
- Custom script: call RemoveLocation(udg_cBox_TempPoint3)
- Set Key = (Custom value of (Last created unit))
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_currentDistance[Key] = 0.00
- Set cBox_Size[Key] = (cBox_NormalSize x 1.50)
- Set cBox_Transparancy[Key] = 0.00
- Set cBox_String[Key] = (Entered chat string)
- Set cBox_isName[Key] = False
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Length of cBox_String[Key]) Greater than or equal to 32
-
Then - Actions
- -------- -------------------------------------- --------
- -------- When string reaches 32, floating text will appear weird --------
- Game - Display to (All players) the text: (Over Limit! + (String((Length of (Entered chat string)))))
- -------- Overloaded string will be seperated into different segments --------
- -------- -------------------------------------- --------
- -------- String overload system under construction --------
-
For each (Integer A) from 0 to (Length of (Entered chat string)), do (Actions)
-
Loop - Actions
- Set cBox_String[Key] = (Substring((Entered chat string), (Integer A), (Integer A)))
-
Loop - Actions
- -------- -------------------------------------- --------
- Else - Actions
-
If - Conditions
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
-
If - Conditions
- Custom script: call RemoveLocation(udg_cBox_chatStartLocation)
-
Chat Event P2
-
Events
- Player - Player 1 (Red) skips a cinematic sequence
- Conditions
-
Actions
- Set cBox_chatStartLocation = (Center of Start Pixel <gen>)
- Unit - Create 1 cBox_DummyType for Player 2 (Blue) at cBox_chatStartLocation facing 90.00 degrees
- Set cBox_TempUnit4 = (Last created unit)
- Set Key = (Custom value of (Last created unit))
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Set cBox_currentDistance[Key] = 0.00
- Set cBox_Size[Key] = (cBox_NormalSize x 1.50)
- Set cBox_Transparancy[Key] = 0.00
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_lastPlayer Equal to Player 2 (Blue)
-
Then - Actions
- Set cBox_TempPoint3 = (cBox_chatStartLocation offset by cBox_indentLength towards 0.00 degrees)
- Set cBox_X = (X of cBox_TempPoint3)
- Set cBox_Y = (Y of cBox_TempPoint3)
- Custom script: call SetUnitX(udg_cBox_TempUnit4, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit4, udg_cBox_Y)
- Custom script: call RemoveLocation(udg_cBox_TempPoint3)
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_String[Key] = Player 2 Testing Message
- Set cBox_isName[Key] = False
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Length of cBox_String[Key]) Greater than or equal to 32
-
Then - Actions
- -------- -------------------------------------- --------
- -------- When string reaches 32, floating text will appear weird --------
- Game - Display to (All players) the text: (Over Limit! + (String((Length of (Entered chat string)))))
- -------- Overloaded string will be seperated into different segments --------
- -------- -------------------------------------- --------
- -------- String overload system under construction --------
-
For each (Integer A) from 0 to (Length of (Entered chat string)), do (Actions)
-
Loop - Actions
- Set cBox_String[Key] = (Substring((Entered chat string), (Integer A), (Integer A)))
-
Loop - Actions
- -------- -------------------------------------- --------
- Else - Actions
-
If - Conditions
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
-
Else - Actions
- Set cBox_Velocity[Key] = (cBox_InitialVelocity x 4.00)
- Set cBox_String[Key] = (Name of Player 2 (Blue))
- Set cBox_isName[Key] = True
- Set cBox_lastPlayer = Player 2 (Blue)
- Set Player = Player 2 (Blue)
- Trigger - Run GetPlayerColor <gen> (ignoring conditions)
- Set cBox_String[Key] = (Ccode + (cBox_String[Key] + |r))
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
- -------- -------------------------------------- --------
- Unit - Create 1 cBox_DummyType for Player 2 (Blue) at cBox_chatStartLocation facing 90.00 degrees
- Set cBox_TempUnit4 = (Last created unit)
- Set cBox_lastPlayer = (Owner of cBox_TempUnit4)
- Set cBox_TempPoint3 = (cBox_chatStartLocation offset by cBox_indentLength towards 0.00 degrees)
- Set cBox_X = (X of cBox_TempPoint3)
- Set cBox_Y = (Y of cBox_TempPoint3)
- Custom script: call SetUnitX(udg_cBox_TempUnit4, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit4, udg_cBox_Y)
- Custom script: call RemoveLocation(udg_cBox_TempPoint3)
- Set Key = (Custom value of (Last created unit))
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_currentDistance[Key] = 0.00
- Set cBox_Size[Key] = (cBox_NormalSize x 1.50)
- Set cBox_Transparancy[Key] = 0.00
- Set cBox_String[Key] = Player 2 Testing Message
- Set cBox_isName[Key] = False
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (Length of cBox_String[Key]) Greater than or equal to 32
-
Then - Actions
- -------- -------------------------------------- --------
- -------- When string reaches 32, floating text will appear weird --------
- Game - Display to (All players) the text: (Over Limit! + (String((Length of (Entered chat string)))))
- -------- Overloaded string will be seperated into different segments --------
- -------- -------------------------------------- --------
- -------- String overload system under construction --------
-
For each (Integer A) from 0 to (Length of (Entered chat string)), do (Actions)
-
Loop - Actions
- Set cBox_String[Key] = (Substring((Entered chat string), (Integer A), (Integer A)))
-
Loop - Actions
- -------- -------------------------------------- --------
- Else - Actions
-
If - Conditions
- Floating Text - Create floating text that reads cBox_String[Key] above (Last created unit) with Z offset 0.00, using font size cBox_Size[Key], color (100.00%, 100.00%, 100.00%), and 0.00% transparency
- Floating Text - Change (Last created floating text): Disable permanence
- Set cBox_floatingText[Key] = (Last created floating text)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to True
-
Then - Actions
- -------- If scroll group is empty (not scrolling) --------
- -------- Then we instantiate the floating text normally --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- Unit Group - Add (Last created unit) to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Else - Actions
- -------- If scroll group is not empty (scrolling) --------
- -------- Then we instantiate the floating text in queued list --------
- -------- To avoid clamping of text --------
- -------- -------------------------------------- --------
- Set cBox_maxQueueInteger = (cBox_maxQueueInteger + 1)
- Hashtable - Save Handle Of(Last created unit) as (Key QueuedChat) of cBox_maxQueueInteger in cBox_Hash
- Floating Text - Hide cBox_floatingText[Key] for (All players)
- -------- -------------------------------------- --------
-
If - Conditions
-
If - Conditions
- Custom script: call RemoveLocation(udg_cBox_chatStartLocation)
-
Events
-
Queue Manager
- Events
-
Conditions
- cBox_currentQueueInteger Less than or equal to cBox_maxQueueInteger
- cBox_maxQueueInteger Greater than 0
-
Actions
- -------- -------------------------------------- --------
- -------- Play sound on chat --------
- Sound - Play cBox_soundEffect
- -------- -------------------------------------- --------
- -------- Scroll Inactive text upward --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_InactiveGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Unit Group - Remove cBox_TempUnit2 from cBox_InactiveGroup
- Unit Group - Add cBox_TempUnit2 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_InactiveGroup and do (Actions)
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- Set cBox_TempUnit2 = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit2)
- Set cBox_scrolledDistance[Key] = 0.00
- Set cBox_Velocity[Key] = cBox_InitialVelocity
- Set cBox_TargetDistance[Key] = cBox_lineSpace
- Trigger - Turn on Chat Scroller <gen>
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Run Queued list in order --------
- Set cBox_TempUnit3 = (Load (Key QueuedChat) of cBox_currentQueueInteger in cBox_Hash)
- Set Key = (Custom value of cBox_TempUnit3)
- Special Effect - Create a special effect attached to the overhead of cBox_TempUnit3 using Abilities\Spells\Other\TalkToMe\TalkToMe.mdl
- Floating Text - Show cBox_floatingText[Key] for (All players)
- Set cBox_currentQueueInteger = (cBox_currentQueueInteger + 1)
- Trigger - Turn off (This trigger)
- Unit Group - Add cBox_TempUnit3 to cBox_ScrollGroup
- Trigger - Turn on Chat Scroller <gen>
- -------- -------------------------------------- --------
-
Chat Scroller
-
Events
- Time - Every 0.03 seconds of game time
- Conditions
-
Actions
- -------- -------------------------------------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_ScrollGroup is empty) Equal to False
-
Then - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Loop - Actions
- -------- -------------------------------------- --------
- Set cBox_TempUnit = (Picked unit)
- Set Key = (Custom value of cBox_TempUnit)
- -------- -------------------------------------- --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_isName[Key] Equal to True
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_scrolledDistance[Key] Less than cBox_TargetDistance[Key]
-
Then - Actions
- -------- -------------------------------------- --------
- -------- Decrease chat box size to normal size --------
- -------- For animation --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_Size[Key] Greater than cBox_NormalSize
-
Then - Actions
- Set cBox_Size[Key] = (cBox_Size[Key] - (cBox_NormalSize / 20.00))
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- If velocity exceeds chat distance, set velocity to remaining distance. --------
- -------- This is so that the line spacing is perfectly alligned. --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_scrolledDistance[Key] + cBox_Velocity[Key]) Greater than cBox_TargetDistance[Key]
-
Then - Actions
- Set cBox_Velocity[Key] = (cBox_TargetDistance[Key] - cBox_scrolledDistance[Key])
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Decrease velocity --------
- -------- For animation --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_Velocity[Key] Greater than 1.00
-
Then - Actions
- Set cBox_Velocity[Key] = (cBox_Velocity[Key] - (cBox_InitialVelocity / 50.00))
-
Else - Actions
- Set cBox_Velocity[Key] = 1.00
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Accumulate current distance --------
- Set cBox_currentDistance[Key] = (cBox_currentDistance[Key] + cBox_Velocity[Key])
- -------- -------------------------------------- --------
- -------- Move unit location --------
- Set cBox_TempPoint = (Position of cBox_TempUnit)
- Set cBox_TempPoint2 = (cBox_TempPoint offset by cBox_Velocity[Key] towards 90.00 degrees)
- Set cBox_X = (X of cBox_TempPoint2)
- Set cBox_Y = (Y of cBox_TempPoint2)
- -------- -------------------------------------- --------
- -------- Accumulate scrolled distance --------
- Set cBox_scrolledDistance[Key] = (cBox_scrolledDistance[Key] + cBox_Velocity[Key])
- -------- -------------------------------------- --------
- -------- If it reach the target distance --------
- -------- Stop moving --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_scrolledDistance[Key] Greater than or equal to cBox_TargetDistance[Key]
-
Then - Actions
- Set cBox_Velocity[Key] = 0.00
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Update floating text location --------
- -------- -------------------------------------- --------
- -------- If floating text exceed floating line limit, remove floating text --------
- -------- with dissapearing animation --------
- Floating Text - Change text of cBox_floatingText[Key] to cBox_String[Key] using font size cBox_Size[Key]
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_currentDistance[Key] Greater than or equal to (cBox_MaxDistance + cBox_lineSpace)
-
Then - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_currentName Equal to No unit
-
Then - Actions
- Set cBox_currentName = cBox_TempUnit
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_currentName Not equal to cBox_TempUnit
- (Owner of cBox_TempUnit) Not equal to (Owner of cBox_currentName)
-
Then - Actions
- Set cBox_TempUnit5 = cBox_currentName
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_TempUnit Not equal to cBox_currentName
-
Then - Actions
- Set Key2 = (Custom value of cBox_TempUnit5)
- Floating Text - Destroy cBox_floatingText[Key2]
- Unit Group - Remove cBox_TempUnit5 from cBox_ScrollGroup
- Unit Group - Remove cBox_TempUnit5 from cBox_InactiveGroup
- Set cBox_currentName = cBox_TempUnit
- Unit - Remove cBox_TempUnit5 from the game
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Else - Actions
- Custom script: call SetUnitX(udg_cBox_TempUnit, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit, udg_cBox_Y)
- Floating Text - Change the position of cBox_floatingText[Key] to cBox_TempUnit with Z offset 0.00
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Remove leaks --------
- Custom script: call RemoveLocation(udg_cBox_TempPoint)
- Custom script: call RemoveLocation(udg_cBox_TempPoint2)
- -------- -------------------------------------- --------
-
Else - Actions
- -------- -------------------------------------- --------
- -------- If chat unit has stopped moving --------
- -------- Register unit as inactive --------
- Unit Group - Add cBox_TempUnit to cBox_InactiveGroup
- Unit Group - Remove cBox_TempUnit from cBox_ScrollGroup
- -------- -------------------------------------- --------
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
Else - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_scrolledDistance[Key] Less than cBox_TargetDistance[Key]
-
Then - Actions
- -------- -------------------------------------- --------
- -------- Decrease chat box size to normal size --------
- -------- For animation --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_Size[Key] Greater than cBox_NormalSize
-
Then - Actions
- Set cBox_Size[Key] = (cBox_Size[Key] - (cBox_NormalSize / 20.00))
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- If velocity exceeds chat distance, set velocity to remaining distance. --------
- -------- This is so that the line spacing is perfectly alligned. --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- (cBox_scrolledDistance[Key] + cBox_Velocity[Key]) Greater than cBox_TargetDistance[Key]
-
Then - Actions
- Set cBox_Velocity[Key] = (cBox_TargetDistance[Key] - cBox_scrolledDistance[Key])
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Decrease velocity --------
- -------- For animation --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_Velocity[Key] Greater than 1.00
-
Then - Actions
- Set cBox_Velocity[Key] = (cBox_Velocity[Key] - (cBox_InitialVelocity / 50.00))
-
Else - Actions
- Set cBox_Velocity[Key] = 1.00
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Accumulate current distance --------
- Set cBox_currentDistance[Key] = (cBox_currentDistance[Key] + cBox_Velocity[Key])
- -------- -------------------------------------- --------
- -------- Move unit location --------
- Set cBox_TempPoint = (Position of cBox_TempUnit)
- Set cBox_TempPoint2 = (cBox_TempPoint offset by cBox_Velocity[Key] towards 90.00 degrees)
- Set cBox_X = (X of cBox_TempPoint2)
- Set cBox_Y = (Y of cBox_TempPoint2)
- Custom script: call SetUnitX(udg_cBox_TempUnit, udg_cBox_X)
- Custom script: call SetUnitY(udg_cBox_TempUnit, udg_cBox_Y)
- -------- -------------------------------------- --------
- -------- Accumulate scrolled distance --------
- Set cBox_scrolledDistance[Key] = (cBox_scrolledDistance[Key] + cBox_Velocity[Key])
- -------- -------------------------------------- --------
- -------- If it reach the target distance --------
- -------- Stop moving --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_scrolledDistance[Key] Greater than or equal to cBox_TargetDistance[Key]
-
Then - Actions
- Set cBox_Velocity[Key] = 0.00
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Update floating text location --------
- Floating Text - Change the position of cBox_floatingText[Key] to cBox_TempUnit with Z offset 0.00
- Floating Text - Change text of cBox_floatingText[Key] to cBox_String[Key] using font size cBox_Size[Key]
- -------- -------------------------------------- --------
- -------- If floating text exceed floating line limit, remove floating text --------
- -------- with dissapearing animation --------
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_currentDistance[Key] Greater than or equal to (cBox_MaxDistance - (cBox_lineSpace x 2.00))
-
Then - Actions
- Set cBox_Transparancy[Key] = ((((cBox_lineSpace x 2.00) - (cBox_MaxDistance - cBox_currentDistance[Key])) / (cBox_lineSpace x 2.00)) x 100.00)
- Floating Text - Change the color of cBox_floatingText[Key] to (100.00%, 100.00%, 100.00%) with cBox_Transparancy[Key]% transparency
- Animation - Change cBox_TempUnit's vertex coloring to (100.00%, 100.00%, 100.00%) with cBox_Transparancy[Key]% transparency
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- cBox_Transparancy[Key] Greater than or equal to 100.00
-
Then - Actions
- Floating Text - Destroy cBox_floatingText[Key]
- Unit Group - Remove cBox_TempUnit from cBox_ScrollGroup
- Unit Group - Remove cBox_TempUnit from cBox_InactiveGroup
- Unit - Remove cBox_TempUnit from the game
- Else - Actions
-
If - Conditions
- Else - Actions
-
If - Conditions
- -------- -------------------------------------- --------
- -------- Remove leaks --------
- Custom script: call RemoveLocation(udg_cBox_TempPoint)
- Custom script: call RemoveLocation(udg_cBox_TempPoint2)
- -------- -------------------------------------- --------
-
Else - Actions
- -------- -------------------------------------- --------
- -------- If chat unit has stopped moving --------
- -------- Register unit as inactive --------
- Unit Group - Add cBox_TempUnit to cBox_InactiveGroup
- Unit Group - Remove cBox_TempUnit from cBox_ScrollGroup
- -------- -------------------------------------- --------
-
If - Conditions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
Loop - Actions
-
Unit Group - Pick every unit in cBox_ScrollGroup and do (Actions)
-
Else - Actions
- -------- -------------------------------------- --------
- -------- If there is no longer moving chat animations --------
- -------- Turn off this trigger --------
- Trigger - Turn off (This trigger)
- -------- -------------------------------------- --------
- -------- Run queue list in order as the chat animation ends --------
- Trigger - Run Queue Manager <gen> (checking conditions)
- -------- -------------------------------------- --------
-
If - Conditions
-
Events