- Joined
- May 16, 2020
- Messages
- 660
Hi all,
I found a lot of spell packs which recreate DotA's Chronosphere, but all without having the extra speed within the bubble. Short explanation for those who don't know the spell:
Creates a blister in spacetime, trapping all units caught in its sphere of influence and causes you to move very quickly inside it.
Here a video which demonstrates the effect (10:07):
I tried to re-create this, but the spell has some bugs and I'm at the point where I have no idea why:
Please check out the attached map, then you can try it yourselves. I use Reforged, latest patch.
Can anyone please help?
I found a lot of spell packs which recreate DotA's Chronosphere, but all without having the extra speed within the bubble. Short explanation for those who don't know the spell:
Creates a blister in spacetime, trapping all units caught in its sphere of influence and causes you to move very quickly inside it.
Here a video which demonstrates the effect (10:07):
I tried to re-create this, but the spell has some bugs and I'm at the point where I have no idea why:
- Currently, the hero is sometimes "pushed back" when trying to get inside the bubble. It usually happens when the hero was inside the bubble, goes out, and then tries to get back in.
- The bubble has some ugly effect where it gets too dark - this is why I increased the animation speed to 3000%, but this shouldn't be. No idea why.
- The hero prefers to attack "not-paused" units outside the bubble. He has an enemy right next to him and still runs outside the bubble to attack those... why?
Please check out the attached map, then you can try it yourselves. I use Reforged, latest patch.
Can anyone please help?
-
Chronosphere
-
Events
-
Unit - A unit Starts the effect of an ability
-
-
Conditions
-
(Ability being cast) Equal to Chronosphere
-
-
Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
CS_Switch Equal to 0
-
-
Then - Actions
-
Trigger - Turn on Chronosphere Loop <gen>
-
Trigger - Turn on Chronosphere Click Point <gen>
-
Trigger - Turn on Chronosphere Click Unit <gen>
-
-
Else - Actions
-
-
Set VariableSet CS_CastNumber = (CS_CastNumber + 1)
-
Set VariableSet CS_Switch = (CS_Switch + 1)
-
Set VariableSet CS_Off[CS_CastNumber] = True
-
Set VariableSet CS_Caster[CS_CastNumber] = (Triggering unit)
-
Set VariableSet CS_Point[0] = (Target point of ability being cast)
-
-------- Set duration to 150 because 6 devided by 0.04(interval in trigger B) is equal to 150. --------
-
-------- Every second is equal to 25! --------
-
Set VariableSet CS_Duration[CS_CastNumber] = (50 + (25 x (Level of Chronosphere for CS_Caster[CS_CastNumber])))
-
Unit - Create 1 Chronosphere Model for (Owner of CS_Caster[CS_CastNumber]) at CS_Point[0] facing Default building facing degrees
-
Set VariableSet CS_Dummy[CS_CastNumber] = (Last created unit)
-
Sound - Play BlinkArrival1 <gen> at 100.00% volume, attached to CS_Dummy[CS_CastNumber]
-
Custom script: set udg_CS_Hit[udg_CS_CastNumber] = CreateGroup()
-
Custom script: call RemoveLocation (udg_CS_Point[0])
-
-
-
Chronosphere Loop
-
Events
-
Time - Every 0.04 seconds of game time
-
-
Conditions
-
Actions
-
For each (Integer CS) from 1 to CS_CastNumber, do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
CS_Off[CS] Equal to True
-
-
Then - Actions
-
Set VariableSet CS_Point[0] = (Position of CS_Dummy[CS])
-
Set VariableSet CS_Group = (Units within 425.00 of CS_Point[0] matching ((Matching unit) Equal to CS_Caster[CS]).)
-
Unit Group - Pick every unit in CS_Group and do (Actions)
-
Loop - Actions
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of units in CS_Group) Equal to 0
-
-
Then - Actions
-
Unit Group - Remove CS_Caster[CS] from CS_Group.
-
-
Else - Actions
-
Unit Group - Add CS_Caster[CS] to CS_Group_Inside
-
-
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Number of units in CS_Group) Greater than 0
-
CS_Boolean Equal to True
-
CS_Distance_Traveled Less than CS_MaxDistance
-
-
Then - Actions
-
Set VariableSet CS_Caster_Point = (Position of CS_Caster[CS])
-
Set VariableSet CS_Target_Point[3] = (CS_Caster_Point offset by 75.00 towards CS_Angle degrees.)
-
Set VariableSet CS_Distance_Traveled = (CS_Distance_Traveled + 75.00)
-
Unit - Move CS_Caster[CS] instantly to CS_Target_Point[3], facing CS_Angle degrees
-
-
Else - Actions
-
Unit Group - Remove (Picked unit) from CS_Group.
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
CS_Boolean_Unit Equal to True
-
-
Then - Actions
-
Unit - Order CS_Caster[CS] to Attack CS_Target_Unit
-
Set VariableSet CS_Boolean_Unit = False
-
-
Else - Actions
-
-
Set VariableSet CS_Boolean = False
-
Set VariableSet CS_Angle = 0.00
-
Set VariableSet CS_MaxDistance = 0.00
-
Set VariableSet CS_Distance_Traveled = 0.00
-
Unit Group - Remove CS_Caster[CS] from CS_Group.
-
Custom script: call RemoveLocation (udg_CS_Caster_Point)
-
Custom script: call RemoveLocation (udg_CS_Target_Point[3])
-
-
-
-
-
Animation - Change CS_Dummy[CS]'s animation speed to 3000.00% of its original speed
-
Custom script: set bj_wantDestroyGroup=true
-
Unit Group - Pick every unit in (Units within 425.00 of CS_Point[0] matching ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is in CS_Hit[CS].) Not equal to True) and ((Matching unit) Not equal to CS_Caster[CS]))).) and do (Actions)
-
Loop - Actions
-
Unit Group - Add (Picked unit) to CS_Hit[CS]
-
-
-
Unit Group - Pick every unit in CS_Hit[CS] and do (Actions)
-
Loop - Actions
-
Set VariableSet CS_Point[1] = (Position of (Picked unit))
-
Unit - Pause (Picked unit)
-
Animation - Change (Picked unit)'s animation speed to 0.00% of its original speed
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
(Distance between CS_Point[0] and CS_Point[1]) Greater than 425.00
-
-
Then - Actions
-
Unit - Unpause (Picked unit)
-
Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
-
Unit Group - Remove (Picked unit) from CS_Hit[CS].
-
-
Else - Actions
-
-
Custom script: call RemoveLocation (udg_CS_Point[1])
-
-
-
Set VariableSet CS_Duration[CS] = (CS_Duration[CS] - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
CS_Duration[CS] Equal to 0
-
-
Then - Actions
-
Set VariableSet CS_Off[CS] = False
-
Sound - Play BlinkBirth1 <gen> at 100.00% volume, attached to CS_Dummy[CS]
-
Unit - Kill CS_Dummy[CS]
-
Set VariableSet CS_Boolean = False
-
Unit Group - Pick every unit in CS_Hit[CS] and do (Actions)
-
Loop - Actions
-
Unit - Unpause (Picked unit)
-
Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed
-
Animation - Change (Picked unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 0.00% transparency
-
Unit Group - Remove (Picked unit) from CS_Hit[CS].
-
-
-
Custom script: call DestroyGroup (udg_CS_Hit[udg_CS])
-
Set VariableSet CS_Switch = (CS_Switch - 1)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
-
CS_Switch Equal to 0
-
-
Then - Actions
-
Set VariableSet CS_CastNumber = 0
-
Trigger - Turn off Chronosphere Loop <gen>
-
Trigger - Turn off Chronosphere Click Point <gen>
-
Trigger - Turn off Chronosphere Click Unit <gen>
-
-
Else - Actions
-
-
-
Else - Actions
-
-
Custom script: call RemoveLocation (udg_CS_Point[0])
-
-
Else - Actions
-
-
-
-
-
-
Chronosphere Click Point
-
Events
-
Unit - A unit Is issued an order targeting a point
-
-
Conditions
-
CS_Boolean Equal to False
-
(Triggering unit) Equal to CS_Caster[CS_CastNumber]
-
-
Actions
-
Set VariableSet CS_Caster_Point = (Position of (Triggering unit))
-
Set VariableSet CS_Target_Point[1] = (Target point of issued order)
-
Set VariableSet CS_Angle = (Angle from CS_Caster_Point to CS_Target_Point[1])
-
Set VariableSet CS_MaxDistance = (Distance between CS_Caster_Point and CS_Target_Point[1])
-
Set VariableSet CS_Boolean = True
-
Custom script: call RemoveLocation (udg_CS_Caster_Point)
-
Custom script: call RemoveLocation (udg_CS_Target_Point[1])
-
-
-
Chronosphere Click Unit
-
Events
-
Unit - A unit Is issued an order targeting an object
-
-
Conditions
-
CS_Boolean Equal to False
-
(Triggering unit) Equal to CS_Caster[CS_CastNumber]
-
-
Actions
-
Set VariableSet CS_Caster_Point = (Position of (Triggering unit))
-
Set VariableSet CS_Target_Unit = (Target unit of issued order)
-
Set VariableSet CS_Target_Point[1] = (Position of CS_Target_Unit)
-
Set VariableSet CS_Angle = (Angle from CS_Caster_Point to CS_Target_Point[1])
-
Set VariableSet CS_MaxDistance = ((Distance between CS_Caster_Point and CS_Target_Point[1]) - 100.00)
-
Set VariableSet CS_Boolean = True
-
Set VariableSet CS_Boolean_Unit = True
-
Custom script: call RemoveLocation (udg_CS_Caster_Point)
-
Custom script: call RemoveLocation (udg_CS_Target_Point[1])
-
-