private static void ObjMissileClientOnCreateDelayed(MissileClient missile, SpellData spellData)
{
var unit = missile.SpellCaster as AIHeroClient;
var missilePosition = missile.Position.To2D();
var unitPosition = missile.StartPosition.To2D();
var endPos = missile.EndPosition.To2D();
var direction = (endPos - unitPosition).Normalized();
if (unitPosition.Distance(endPos) > spellData.Range || spellData.FixedRange)
{
endPos = unitPosition + direction * spellData.Range;
}
if (spellData.ExtraRange != -1)
{
endPos += Math.Min(spellData.ExtraRange, spellData.Range - endPos.Distance(unitPosition)) * direction;
}
var castTime = Extensions.GameTimeTickCount - Game.Ping / 2 - (spellData.MissileDelayed ? 0 : spellData.Delay)
- (int)(1000 * missilePosition.Distance(unitPosition) / spellData.MissileSpeed);
TriggerOnDetectSkillshot(DetectionType.RecvPacket, spellData, castTime, unitPosition, endPos, unit);
}