Warping in a Zealot near a Nexus or Warp Gate is fast. The duration is 5 game seconds.
When the Nexus or Warp Gate dies during warp in, then the speed slows down, then the duration is scaled back up to 16 game seconds.
There is an issue that the animation of the unit that is warped in is not altered. It will always have 5 or 16 seconds animation duration and then end.
Video by feardragon showing the issue:
Fix
The animation duration can be fixed via changing the time scale
The detection of power level changes can be done via dummy effects in `PowerUserWarpable behavior
The model indicating fast warp in (actor ProtossFastWarpinMarker
) can be created based on the effects
For some reason, I could not place all effects into ProtossFastWarpinMarker
(on effect => create did not work together with on behavior remove => destroy). Thus, I moved the create event into ProtossWarpIn
as well
<CActorModel id="ProtossFastWarpinMarker">
<On Terms="Effect.PowerUserWarpablelevel2lost.Start" Send="Destroy"/>
</CActorModel>
<CActorProgress id="ProtossWarpIn">
<On Terms="Effect.PowerUserWarpablelevel2gained.Start" Target="_Unit" Send="AnimSetTimeScale Birth 1.000000"/>
<On Terms="Effect.PowerUserWarpablelevel2lost.Start" Target="_Unit" Send="AnimSetTimeScale Birth 0.312500"/>
<On Terms="Effect.PowerUserWarpablelevel2gained.Start" Send="Create ProtossFastWarpinMarker"/>
</CActorProgress>
<CBehaviorPowerUser id="PowerUserWarpable">
<PowerStageArray index="1" LevelGainEffect="PowerUserWarpablelevel2gained" LevelLossEffect="PowerUserWarpablelevel2lost"/>
</CBehaviorPowerUser>
<CEffectSet id="PowerUserWarpablelevel2lost"/>
<CEffectSet id="PowerUserWarpablelevel2gained"/>
Video showing that with this fix all 4 cases are handled correctly:
Test Map with above Fix + documentation + screenshots:
opened 01:50PM - 20 Dec 22 UTC
closed 09:49PM - 03 Feb 23 UTC
fix available
impacts visual polish
Warping in a Zealot near a Nexus or Warp Gate is fast. The duration is 5 game se… conds.
When the Nexus or Warp Gate dies during warp in, then the speed slows down, then the duration is scaled back up to 16 game seconds.
There is an issue that the animation of the unit that is warped in is not altered. It will always have 5 or 16 seconds animation duration and then end.
[video by feardragon showing the issue](https://youtu.be/6D82sGOdmrI?t=5)
The actor events controlling this in ProtossWarpIn actor look like this:
![image](https://user-images.githubusercontent.com/5763784/208679956-fd4f62d8-5011-47e7-a42f-89581fb42f14.png)
Here, it transfers from fast to slow. The animation is already showing the unit at half way progress as the animation expects a warp in duration of 5 seconds:
![Screenshot2022-12-20 14_20_12](https://user-images.githubusercontent.com/5763784/208681116-8438e135-717f-4964-9c17-a98dcd2384a0.jpg)
When the 5 seconds of the animation expire, the model of the unit disappears:
![Screenshot2022-12-20 14_20_21](https://user-images.githubusercontent.com/5763784/208681331-6d78c847-d61a-49a1-b713-f6ced949a0f5.jpg)
When it finishes, the unit model suddenly appears:
![Screenshot2022-12-20 14_20_33](https://user-images.githubusercontent.com/5763784/208681672-39718580-fb15-469a-b01b-322165a521cb.jpg)
It is likely broken in a similar way in the other direction. Just that the animation ends prematurely.
The progress multiplication rate is 3.2 with the elevated power level.
### Fix
- The animation duration can be fixed via changing the time scale.
- The detection of power level changes can be done via dummy effects in `PowerUserWarpable behavior
- The model indicating fast warp in (actor `ProtossFastWarpinMarker`) can be created based on the effects
- For some reason, I could not place all effects into `ProtossFastWarpinMarker` (on effect => create did not work together with on behavior remove => destroy). Thus, I moved the create event into `ProtossWarpIn` as well
``` xml
<CActorModel id="ProtossFastWarpinMarker">
<On Terms="Effect.PowerUserWarpablelevel2lost.Start" Send="Destroy"/>
</CActorModel>
<CActorProgress id="ProtossWarpIn">
<On Terms="Effect.PowerUserWarpablelevel2gained.Start" Target="_Unit" Send="AnimSetTimeScale Birth 1.000000"/>
<On Terms="Effect.PowerUserWarpablelevel2lost.Start" Target="_Unit" Send="AnimSetTimeScale Birth 0.312500"/>
<On Terms="Effect.PowerUserWarpablelevel2gained.Start" Send="Create ProtossFastWarpinMarker"/>
</CActorProgress>
<CBehaviorPowerUser id="PowerUserWarpable">
<PowerStageArray index="1" LevelGainEffect="PowerUserWarpablelevel2gained" LevelLossEffect="PowerUserWarpablelevel2lost"/>
</CBehaviorPowerUser>
<CEffectSet id="PowerUserWarpablelevel2lost"/>
<CEffectSet id="PowerUserWarpablelevel2gained"/>
```
[Video showing that with this fix all 4 cases are handled correctly](https://youtu.be/TjhQCW8svnQ)
[Test Map with above Fix](https://www.dropbox.com/s/eap3fwlyr9ir2f5/fastToSlowWarpinTest.SC2Map?dl=1)
[bug report at Blizzard's forums](https://us.forums.blizzard.com/en/sc2/t/warp-in-transition-fastslow-removes-units-warp-in-model/26075)
system
(system)
Closed
January 19, 2023, 5:15pm
2
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.