本文整理汇总了C#中SpecialSpellEventArgs类的典型用法代码示例。如果您正苦于以下问题:C# SpecialSpellEventArgs类的具体用法?C# SpecialSpellEventArgs怎么用?C# SpecialSpellEventArgs使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SpecialSpellEventArgs类属于命名空间,在下文中一共展示了SpecialSpellEventArgs类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessSpell_TwitchSprayandPrayAttack
private void ProcessSpell_TwitchSprayandPrayAttack(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "TwitchSprayandPrayAttack")
{
spellData.spellDelay = hero.AttackCastDelay * 1000;
}
}
示例2: ProcessSpell_ZedShuriken
private static void ProcessSpell_ZedShuriken(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.SpellName == "ZedQ")
{
foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.ObjTracker)
{
var info = entry.Value;
if (info.Obj.Name == "Shadow" || info.Name == "Shadow")
{
if (info.UsePosition == false && (info.Obj == null || !info.Obj.IsValid || info.Obj.IsDead))
{
DelayAction.Add(1, () => ObjectTracker.ObjTracker.Remove(info.Obj.NetworkId));
continue;
}
else
{
Vector3 endPos2;
if (info.UsePosition == false)
{
endPos2 = info.Obj.Position.Extend(args.End, spellData.Range).To3DWorld();
SpellDetector.CreateSpellData(hero, info.Obj.Position, endPos2, spellData, null, 0, false);
}
else
{
endPos2 = info.Position.Extend(args.End, spellData.Range).To3DWorld();
SpellDetector.CreateSpellData(hero, info.Position, endPos2, spellData, null, 0, false);
}
}
}
}
}
}
示例3: ProcessSpell_JarvanIVDragonStrike
private static void ProcessSpell_JarvanIVDragonStrike(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (args.SData.Name == "JarvanIVDragonStrike")
{
if (SpellDetector.onProcessSpells.TryGetValue("JarvanIVDragonStrike2", out spellData))
{
foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.objTracker)
{
var info = entry.Value;
if (info.Name == "Beacon" || info.obj.Name == "Beacon")
{
if (info.usePosition == false && (info.obj == null || !info.obj.IsValid || info.obj.IsDead))
{
DelayAction.Add(1, () => ObjectTracker.objTracker.Remove(info.obj.NetworkId));
continue;
}
var objPosition = info.usePosition ? info.position.LSTo2D() : info.obj.Position.LSTo2D();
if (args.End.LSTo2D().LSDistance(objPosition) < 300)
{
var dir = (objPosition - args.Start.LSTo2D()).LSNormalized();
var endPosition = objPosition + dir * 110;
SpellDetector.CreateSpellData(hero, args.Start, endPosition.To3D(), spellData);
specialSpellArgs.noProcess = true;
return;
}
}
}
}
}
}
示例4: SpellDetector_OnProcessSpecialSpell
private void SpellDetector_OnProcessSpecialSpell(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "TaricE")
{
var sdata = new SpellData();
sdata.charName = "Taric";
sdata.name = "TaricE2";
sdata.spellName = "TaricE";
sdata.range = 750;
sdata.radius = 100;
sdata.fixedRange = true;
sdata.spellDelay = 1000;
sdata.projectileSpeed = int.MaxValue;
sdata.dangerlevel = 3;
var partner = HeroManager.Enemies.FirstOrDefault(x => x.HasBuff("taricwleashactive"));
if (partner != null && partner.ChampionName != "Taric")
{
var start = partner.ServerPosition.LSTo2D();
var direction = (args.End.LSTo2D() - start).LSNormalized();
var end = start + direction * spellData.range;
SpellDetector.CreateSpellData(partner, start.To3D(), end.To3D(), sdata);
}
}
}
示例5: ProcessSpell_SionE
private static void ProcessSpell_SionE(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.SpellName == "SionE")
{
var objList = new List<Obj_AI_Minion>();
foreach (var obj in ObjectManager.Get<Obj_AI_Minion>())
{
if (obj != null && obj.IsValid && !obj.IsDead && obj.IsAlly)
{
objList.Add(obj);
}
}
objList.OrderBy(o => o.Distance(hero.ServerPosition));
var spellStart = args.Start.To2D();
var dir = (args.End.To2D() - spellStart).Normalized();
var spellEnd = spellStart + dir * spellData.Range;
foreach (var obj in objList)
{
var objProjection = obj.ServerPosition.To2D().ProjectOn(spellStart, spellEnd);
if (objProjection.IsOnSegment && objProjection.SegmentPoint.Distance(obj.ServerPosition.To2D()) < obj.BoundingRadius + spellData.Radius)
{
//sth happens
}
}
//specialSpellArgs.noProcess = true;
}
}
示例6: ProcessSpell_OrianaIzunaCommand
private static void ProcessSpell_OrianaIzunaCommand(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "OrianaIzunaCommand")
{
foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.objTracker)
{
var info = entry.Value;
if (entry.Value.Name == "TheDoomBall")
{
if (info.usePosition)
{
SpellDetector.CreateSpellData(hero, info.position, args.End, spellData, null, 0);
}
else
{
if (info.obj == null)
return;
SpellDetector.CreateSpellData(hero, info.obj.Position, args.End, spellData, null, 0);
}
info.position = args.End;
info.usePosition = true;
}
}
specialSpellArgs.noProcess = true;
}
if (spellData.spellName == "OrianaDetonateCommand" || spellData.spellName == "OrianaDissonanceCommand")
{
foreach (KeyValuePair<int, ObjectTrackerInfo> entry in ObjectTracker.objTracker)
{
var info = entry.Value;
if (entry.Value.Name == "TheDoomBall")
{
if (info.usePosition)
{
Vector3 endPos2 = info.position;
SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0);
}
else
{
if (info.obj == null)
return;
Vector3 endPos2 = info.obj.Position;
SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0);
}
}
}
specialSpellArgs.noProcess = true;
}
}
示例7: ProcessSpell_HeimerdingerW
private void ProcessSpell_HeimerdingerW(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "HeimerdingerW")
{
//SpellDetector.CreateSpellData(hero, args.Start, args.End, spellData);
specialSpellArgs.noProcess = true;
}
}
示例8: ProcessSpell_HeimerdingerTurretEnergyBlast
private static void ProcessSpell_HeimerdingerTurretEnergyBlast(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "HeimerdingerTurretEnergyBlast" || spellData.spellName == "HeimerdingerTurretBigEnergyBlast")
{
SpellDetector.CreateSpellData(hero, args.Start, args.End, spellData);
specialSpellArgs.noProcess = true;
}
}
示例9: ProcessSpell_ThreeWay
private static void ProcessSpell_ThreeWay(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.isThreeWay)
{
Vector3 endPos2 = MathUtils.RotateVector(args.Start.LSTo2D(), args.End.LSTo2D(), spellData.angle).To3D();
SpellDetector.CreateSpellData(hero, args.Start, endPos2, spellData, null, 0, false);
Vector3 endPos3 = MathUtils.RotateVector(args.Start.LSTo2D(), args.End.LSTo2D(), -spellData.angle).To3D();
SpellDetector.CreateSpellData(hero, args.Start, endPos3, spellData, null, 0, false);
}
}
示例10: ProcessSpell_FizzPiercingStrike
private static void ProcessSpell_FizzPiercingStrike(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "FizzPiercingStrike")
{
if (args.Target != null && args.Target.IsMe)
{
SpellDetector.CreateSpellData(hero, args.Start, args.End, spellData, null, 0);
}
specialSpellArgs.noProcess = true;
}
}
示例11: ProcessSpell_AsheVolley
private static void ProcessSpell_AsheVolley(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "Volley")
{
for (int i = -4; i < 5; i++)
{
Vector3 endPos2 = MathUtils.RotateVector(args.Start.LSTo2D(), args.End.LSTo2D(), i * spellData.angle).To3D();
if (i != 0)
{
SpellDetector.CreateSpellData(hero, args.Start, endPos2, spellData, null, 0, false);
}
}
}
}
示例12: ProcessSpell_XerathArcanopulse2
private static void ProcessSpell_XerathArcanopulse2(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (args.SData.Name == "XerathArcanopulseChargeUp")// || spellData.spellName == "xeratharcanopulse2")
{
var castTime = -1 * (hero.Spellbook.CastTime - Game.Time) * 1000;
if (castTime > 0)
{
var dir = (args.End.LSTo2D() - args.Start.LSTo2D()).LSNormalized();
var endPos = args.Start.LSTo2D() + dir * Math.Min(spellData.range, 750 + castTime / 2);
SpellDetector.CreateSpellData(hero, args.Start, endPos.To3D(), spellData);
}
specialSpellArgs.noProcess = true;
}
}
示例13: ProcessSpell_AlZaharCalloftheVoid
private static void ProcessSpell_AlZaharCalloftheVoid(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.spellName == "AlZaharCalloftheVoid")
{
var direction = (args.End.To2D() - args.Start.To2D()).Normalized();
var pDirection = direction.Perpendicular();
var targetPoint = args.End.To2D();
var pos1 = targetPoint - pDirection * spellData.sideRadius;
var pos2 = targetPoint + pDirection * spellData.sideRadius;
SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0, false);
SpellDetector.CreateSpellData(hero, pos2.To3D(), pos1.To3D(), spellData, null, 0);
specialSpellArgs.noProcess = true;
}
}
示例14: ProcessSpell_EkkoR
private static void ProcessSpell_EkkoR(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData,
SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.SpellName == "EkkoR")
{
foreach (var obj in ObjectManager.Get<Obj_AI_Minion>())
{
if (obj != null && obj.IsValid && !obj.IsDead && obj.Name == "Ekko" && obj.IsEnemy)
{
var blinkPos = obj.ServerPosition.To2D();
SpellDetector.CreateSpellData(hero, args.Start, blinkPos.To3D(), spellData);
}
}
specialSpellArgs.NoProcess = true;
}
}
示例15: ProcessSpell_LucianQ
private static void ProcessSpell_LucianQ(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs)
{
if (spellData.SpellName == "LucianQ")
{
if (args.Target.GetType() == typeof(Obj_AI_Base) && ((Obj_AI_Base)args.Target).IsValid())
{
var target = args.Target as Obj_AI_Base;
float spellDelay = ((float)(350 - Game.Ping)) / 1000;
var heroWalkDir = (target.ServerPosition - target.Position).Normalized();
var predictedHeroPos = target.Position + heroWalkDir * target.MoveSpeed * (spellDelay);
SpellDetector.CreateSpellData(hero, args.Start, predictedHeroPos, spellData, null, 0);
specialSpellArgs.NoProcess = true;
}
}
}