// Token: 0x060005F1 RID: 1521 RVA: 0x0001DD44 File Offset: 0x0001BF44 private void OnParticleEffectAdded(Entity sender, ParticleEffectAddedEventArgs args) { try { ParticleEffect particle = args.ParticleEffect; Entity owner = particle.Owner; EntityHandle? entityHandle = (owner != null) ? new EntityHandle?(owner.Handle) : null; if (!(((entityHandle != null) ? new uint?(entityHandle.GetValueOrDefault()) : null) != this.playerHandle)) { string name = args.Name; if (!(name == "particles/units/heroes/hero_kunkka/kunkka_spell_x_spot.vpcf") && !(name == "particles/econ/items/kunkka/divine_anchor/hero_kunkka_dafx_skills/kunkka_spell_x_spot_fxset.vpcf")) { if (name == "particles/units/heroes/hero_kunkka/kunkka_ghostship_marker.vpcf") { float time = Game.RawGameTime - Game.Ping / 2000f; UpdateManager.BeginInvoke(delegate { this.ship.CalculateTimings(particle.GetControlPoint(0u), time); }, 0); } } else { UpdateManager.BeginInvoke(delegate { this.xMark.Position = particle.GetControlPoint(0u); }, 0); } } } catch (Exception ex) { Logger.Error(ex, null); } }
// Token: 0x060002D0 RID: 720 RVA: 0x0001A898 File Offset: 0x00018A98 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Vector3 position = particle.GetControlPoint(base.ControlPoint); if (EntityManager9.Heroes.Any((Hero9 x) => x.IsUnit && x.Team == allyTeam && x.IsAlive && x.Distance(position) < 800f)) { return; } SimpleDrawableAbility drawableAbility = new SimpleDrawableAbility { AbilityTexture = base.AbilityId + "_rounded", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350)) }; if (base.Replace) { IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (drawableAbility2 != null) { drawableAbilities.Remove(drawableAbility2); } } drawableAbilities.Add(drawableAbility); if (base.ShowNotification && notificator != null) { notificator.PushNotification(new AbilityNotification(null, base.AbilityId.ToString())); } }
public void AddParticle(ParticleEffect particle, string name) { if (this.unitAddTime <= 0) { return; } var time = Game.RawGameTime - (Game.Ping / 2000); var startPosition = particle.GetControlPoint(0); var endPosition = particle.GetControlPoint(1); var direction = startPosition + endPosition; var flyingTime = time - this.unitAddTime; var position = startPosition.Extend2D(direction, flyingTime * this.ActiveAbility.Speed); var radius = Math.Min( this.maxRadius.GetValue(1), Math.Max((flyingTime * this.growRadius.GetValue(1)) + this.minRadius.GetValue(1), this.minRadius.GetValue(1))); var obstacle = new IceBlastObstacle(this, position, radius) { EndCastTime = time, EndObstacleTime = time + particle.GetControlPoint(5).X }; this.Pathfinder.AddObstacle(obstacle); this.unitAddTime = 0; }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); UpdateManager.BeginInvoke( () => { try { if (!particle.IsValid) { return; } var startPosition = particle.GetControlPoint(0); var endPosition = particle.GetControlPoint(5); var obstacle = new AreaOfEffectObstacle(this, endPosition) { EndObstacleTime = time + (startPosition.Distance2D(endPosition) / this.ActiveAbility.Speed) }; this.Pathfinder.AddObstacle(obstacle); } catch (Exception e) { Logger.Error(e); } }); }
public override void AddDrawableAbility( List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { if (particle.GetControlPoint(1) == new Vector3(-1)) { return; } var owner = this.SearchOwner || !(particle.Owner is Unit) ? EntityManager9.Abilities.FirstOrDefault(x => x.Id == this.AbilityId && x.Owner.Team != allyTeam)?.Owner : EntityManager9.GetUnit(particle.Owner.Handle); if (owner?.IsVisible != false) { return; } string ownerName; if (owner.IsHero) { ownerName = owner.Name; } else { ownerName = owner.Owner?.Name; if (ownerName == null) { return; } } var drawableAbility = new DrawableAbility { AbilityTexture = this.AbilityId + "_rounded", HeroTexture = ownerName + "_rounded", MinimapHeroTexture = ownerName + "_icon", ShowUntil = Game.RawGameTime + this.TimeToShow, Position = (this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint)).SetZ(350) }; owner.ChangeBasePosition(drawableAbility.Position); if (this.Replace) { var exist = drawableAbilities.LastOrDefault( x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (exist != null) { drawableAbilities.Remove(exist); } } drawableAbilities.Add(drawableAbility); }
// Token: 0x060001E3 RID: 483 RVA: 0x0000F314 File Offset: 0x0000D514 private void CheckTeleport(ParticleEffect particle) { try { if (particle.IsValid) { Vector3 controlPoint = particle.GetControlPoint(2u); System.Drawing.Color color = System.Drawing.Color.FromArgb((int)(255.0 * Math.Round((double)controlPoint.X, 2)), (int)(255.0 * Math.Round((double)controlPoint.Y, 2)), (int)(255.0 * Math.Round((double)controlPoint.Z, 2))); uint playerId; if (this.colors.TryGetValue(color, out playerId)) { Player playerById = ObjectManager.GetPlayerById(playerId); if (!(playerById == null) && playerById.Team != this.ownerTeam) { if (particle.Name.Contains("start")) { Hero hero = playerById.Hero; if (hero != null && hero.IsVisible) { return; } } this.AddTeleport(new Teleport(playerById.SelectedHeroId, particle.GetControlPoint(0u), color)); } } } } catch (Exception exception) { Logger.Error(exception, null); } }
public override void Check() { if (StartCast <= 0 && IsInPhase && AbilityOwner.IsVisible) { StartCast = Game.RawGameTime; EndCast = StartCast + CastPoint + GetCastRange() / GetProjectileSpeed(); } else if (StartCast > 0 && Obstacle == null && CanBeStopped() && !AbilityOwner.IsTurning()) { StartPosition = AbilityOwner.NetworkPosition; EndPosition = AbilityOwner.InFront(GetCastRange() + GetRadius() / 2); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (Obstacle == null && particleEffect != null && !particleAdded) { particleAdded = true; StartPosition = particleEffect.GetControlPoint(0); EndPosition = StartPosition.Extend(particleEffect.GetControlPoint(1), GetCastRange() + GetRadius() / 2); StartCast = Game.RawGameTime; EndCast = StartCast + GetCastRange() / GetProjectileSpeed(); Obstacle = Pathfinder.AddObstacle(StartPosition, EndPosition, GetRadius(), Obstacle); } else if (StartCast > 0 && Game.RawGameTime > EndCast) { End(); } else if (Obstacle != null && !CanBeStopped()) { Pathfinder.UpdateObstacle(Obstacle.Value, GetProjectilePosition(), GetRadius(), GetEndRadius()); } }
private void CheckTeleport(ParticleEffect particle, bool start) { try { if (!particle.IsValid) { return; } var colorCp = particle.GetControlPoint(2); var color = Color.FromArgb( (int)(255 * Math.Round(colorCp.X, 2)), (int)(255 * Math.Round(colorCp.Y, 2)), (int)(255 * Math.Round(colorCp.Z, 2))); if (!this.colors.TryGetValue(color, out var id)) { return; } var player = ObjectManager.GetPlayerById(id); if (player == null || player.Hero == null || player.Team == this.ownerTeam) { return; } var hero = (Hero9)EntityManager9.GetUnit(player.Hero.Handle); if (hero == null || (hero.IsVisible && start)) { return; } var position = particle.GetControlPoint(0); var heroId = hero.Id; var duration = 3f; // if (hero.Abilities.Any(x => x.Id == AbilityId.item_travel_boots && x.CanBeCasted(false))) { duration = this.GetDuration(heroId, position, start); } this.AddTeleport(new Teleport(particle, heroId, position, duration, start)); if (start) { hero.ChangeBasePosition(position); } else { UpdateManager.BeginInvoke(() => this.SetPosition(particle, position, hero), (int)(duration * 1000) - 200); } } catch (Exception e) { Logger.Error(e); } }
// Token: 0x060002ED RID: 749 RVA: 0x0001AF90 File Offset: 0x00019190 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { if (particle.GetControlPoint(1u) == new Vector3(-1f)) { return; } Unit9 unit; if (!base.SearchOwner && particle.Owner is Unit) { unit = EntityManager9.GetUnit(particle.Owner.Handle); } else { Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId && x.Owner.Team != allyTeam); unit = ((ability != null) ? ability.Owner : null); } Unit9 unit2 = unit; if (unit2 == null || unit2.IsVisible) { return; } string text; if (unit2.IsHero) { text = unit2.Name; } else { Unit9 owner = unit2.Owner; text = ((owner != null) ? owner.Name : null); if (text == null) { return; } } DrawableAbility drawableAbility = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = text + "_rounded", MinimapHeroTexture = text + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350)) }; if (base.Replace) { IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (drawableAbility2 != null) { drawableAbilities.Remove(drawableAbility2); } } drawableAbilities.Add(drawableAbility); }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); var startPosition = particle.GetControlPoint(0); var endPosition = particle.GetControlPoint(1); var obstacle = new LinearProjectileObstacle(this, startPosition, endPosition) { EndCastTime = time, EndObstacleTime = time + (this.RangedAbility.Range / this.RangedAbility.Speed) }; this.Pathfinder.AddObstacle(obstacle); }
// Token: 0x0600030D RID: 781 RVA: 0x0001B590 File Offset: 0x00019790 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { if (particle.Name.Contains("dash")) { drawableAbilities.RemoveAll((IDrawableAbility x) => x is DrawableFireRemnantAbility); return; } Unit9 unit = EntityManager9.GetUnit(particle.Owner.Owner.Handle); if (unit == null) { return; } Vector3 startPosition = particle.GetControlPoint(this.StartControlPoint); if (!unit.IsVisible) { DrawableAbility item = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = unit.Name + "_rounded", MinimapHeroTexture = unit.Name + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = startPosition.SetZ(new float?((float)350)) }; drawableAbilities.Add(item); } DrawableFireRemnantAbility[] remnants = drawableAbilities.OfType <DrawableFireRemnantAbility>().ToArray <DrawableFireRemnantAbility>(); Unit unit2 = ObjectManager.GetEntitiesFast <Unit>().Concat(ObjectManager.GetDormantEntities <Unit>()).FirstOrDefault((Unit x) => x.IsAlive && x.Name == "npc_dota_ember_spirit_remnant" && x.Distance2D(startPosition) < 1500f && remnants.All((DrawableFireRemnantAbility z) => z.Unit != x)); if (unit2 == null) { return; } DrawableFireRemnantAbility item2 = new DrawableFireRemnantAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = unit.Name + "_rounded", MinimapHeroTexture = unit.Name + "_icon", Position = particle.GetControlPoint(base.ControlPoint).SetZ(new float?((float)350)), Duration = base.Duration, ShowUntil = Game.RawGameTime + base.Duration, ShowHeroUntil = Game.RawGameTime + base.TimeToShow, Owner = unit.BaseEntity, Unit = unit2 }; drawableAbilities.Add(item2); }
// Token: 0x06000178 RID: 376 RVA: 0x0000D4B4 File Offset: 0x0000B6B4 private void OnParticleEffectAdded(Entity sender, ParticleEffectAddedEventArgs args) { try { string name = args.Name; if (!(name == "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_final.vpcf") && !(name == "particles/econ/items/ancient_apparition/aa_blast_ti_5/ancient_apparition_ice_blast_final_ti5.vpcf")) { if (name == "particles/econ/items/ancient_apparition/aa_blast_ti_5/ancient_apparition_ice_blast_explode_ti5.vpcf" || name == "particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_explode.vpcf") { Entity.OnParticleEffectAdded -= this.OnParticleEffectAdded; ParticleEffect particleEffect = this.effect; if (particleEffect != null) { particleEffect.Dispose(); } } } else { float time = Game.RawGameTime - Game.Ping / 1000f; UpdateManager.BeginInvoke(delegate { try { ParticleEffect particleEffect2 = args.ParticleEffect; if (particleEffect2.IsValid) { Vector3 controlPoint = particleEffect2.GetControlPoint(0u); Vector3 controlPoint2 = particleEffect2.GetControlPoint(1u); float num = time - this.unitAddTime; Vector3 to = controlPoint + controlPoint2; Vector3 v = controlPoint.Extend2D(to, num * this.speed.GetValue(1u)); float num2 = Math.Min(this.maxRadius.GetValue(1u), Math.Max(num * this.growRadius.GetValue(1u) + this.minRadius.GetValue(1u), this.minRadius.GetValue(1u))); this.effect = new ParticleEffect("particles/units/heroes/hero_ancient_apparition/ancient_apparition_ice_blast_marker.vpcf", v.SetZ(new float?((float)384))); this.effect.SetControlPoint(1u, new Vector3(num2, 1f, 1f)); } } catch (Exception exception2) { Logger.Error(exception2, null); } }, 0); } } catch (Exception exception) { Logger.Error(exception, null); } }
// Token: 0x060001C0 RID: 448 RVA: 0x0000EA5C File Offset: 0x0000CC5C private void CheckRune(ParticleEffect particle) { try { Entity owner = particle.Owner; if (!(owner != null) || (owner.Team != this.ownerTeam && !owner.IsVisible)) { Vector3 position = particle.GetControlPoint(0u); Vector3 item = this.bountySpawns.Find((Vector3 x) => x.Distance2D(position, false) < 500f); if (!item.IsZero) { if (!this.pickedRunes.Contains(item)) { if (this.pickedRunes.Count == 0) { this.context.Renderer.Draw += this.OnDraw; } this.pickedRunes.Add(item); } } } } catch (Exception exception) { Logger.Error(exception, null); } }
// Token: 0x06000316 RID: 790 RVA: 0x0001B808 File Offset: 0x00019A08 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Unit9 unit = EntityManager9.GetUnit(particle.Owner.Handle); if (unit == null || unit.IsVisible) { return; } Vector3 v = base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint); if (v.Distance2D(unit.BaseUnit.Position, false) < 50f) { return; } string name = unit.Name; DrawableAbility drawableAbility = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = name + "_rounded", MinimapHeroTexture = name + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = v.SetZ(new float?((float)350)) }; if (base.Replace) { IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (drawableAbility2 != null) { drawableAbilities.Remove(drawableAbility2); } } drawableAbilities.Add(drawableAbility); }
// Token: 0x060001D1 RID: 465 RVA: 0x0000EE84 File Offset: 0x0000D084 private void CheckAttack(ParticleEffect particle) { try { if (particle.IsValid && particle.Owner.Team == Team.Neutral && !particle.Owner.IsVisible) { Vector3 position = particle.GetControlPoint(0u); Sleeper value = this.attacks.FirstOrDefault((KeyValuePair <Vector3, Sleeper> x) => x.Key.Distance2D(position, false) < 500f).Value; if (value != null) { value.Sleep(3f); } else { if (this.attacks.Count == 0) { this.context.Renderer.Draw += this.OnDraw; } this.attacks[position] = new Sleeper(3f); } } } catch (Exception exception) { Logger.Error(exception, null); } }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); UpdateManager.BeginInvoke( () => { try { if (!particle.IsValid) { return; } var position = particle.GetControlPoint(0); var obstacle = new AreaOfEffectObstacle(this, position) { EndCastTime = time, EndObstacleTime = time + this.Ability.ActivationDelay }; this.Pathfinder.AddObstacle(obstacle); } catch (Exception e) { Logger.Error(e); } }); }
public void AddParticle(ParticleEffect particle, string name) { if (this.Owner.IsVisible) { return; } this.startTime = Game.RawGameTime - (Game.Ping / 2000); UpdateManager.BeginInvoke( () => { try { if (!particle.IsValid) { return; } this.startPosition = particle.GetControlPoint(1); } catch (Exception e) { Logger.Error(e); } }); }
// Token: 0x060002E4 RID: 740 RVA: 0x0001ACFC File Offset: 0x00018EFC public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Vector3 position = particle.GetControlPoint(base.ControlPoint); if (particle.Name.Contains("detonate")) { DrawableRemoteMinesAbility drawableRemoteMinesAbility = drawableAbilities.OfType <DrawableRemoteMinesAbility>().FirstOrDefault((DrawableRemoteMinesAbility x) => x.Position.Distance2D(position, false) < 10f); if (drawableRemoteMinesAbility != null) { if (drawableRemoteMinesAbility.IsShowingRange) { drawableRemoteMinesAbility.RemoveRange(); } drawableAbilities.Remove(drawableRemoteMinesAbility); return; } } else { if (ObjectManager.GetEntitiesFast <Unit>().FirstOrDefault((Unit x) => x.Name == "npc_dota_techies_remote_mine" && x.Distance2D(position) < 10f) != null) { return; } Unit9 owner = EntityManager9.GetUnit(particle.Owner.Handle); if (owner == null) { return; } UpdateManager.BeginInvoke(delegate { try { if (particle.IsValid) { DrawableRemoteMinesAbility drawableRemoteMinesAbility2 = new DrawableRemoteMinesAbility { AbilityTexture = this.AbilityId + "_rounded", HeroTexture = owner.Name + "_rounded", MinimapHeroTexture = owner.Name + "_icon", Position = position.SetZ(new float?((float)350)), Duration = this.Duration, IsShowingRange = this.ShowRange, Range = this.Range, RangeColor = this.RangeColor, ShowUntil = Game.RawGameTime + this.Duration, ShowHeroUntil = Game.RawGameTime + this.TimeToShow, Owner = owner.BaseEntity }; drawableRemoteMinesAbility2.DrawRange(); drawableAbilities.Add(drawableRemoteMinesAbility2); } } catch (Exception exception) { Logger.Error(exception, null); } }, 1000); } }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); var casterPosition = particle.GetControlPoint(0); var landPosition = particle.GetControlPoint(1); //todo improve evade timings var obstacle = new LinearProjectileObstacle( this, landPosition.Extend2D(casterPosition, this.RangedAbility.Radius / 2), casterPosition.Extend2D(landPosition, 2000)) { EndCastTime = time, EndObstacleTime = time + this.Ability.ActivationDelay + (this.RangedAbility.Range / this.RangedAbility.Speed) }; this.Pathfinder.AddObstacle(obstacle); }
public void AddParticle(ParticleEffect particle, string name) { if (name.Contains("impact")) { this.Pathfinder.CancelObstacle(this.Ability.Handle); return; } if (this.Owner.IsVisible) { return; } var time = Game.RawGameTime - (Game.Ping / 2000); UpdateManager.BeginInvoke( () => { try { if (!particle.IsValid) { return; } var startPosition = particle.GetControlPoint(0); var endPosition = particle.GetControlPoint(1); var obstacle = new LinearProjectileObstacle(this, startPosition, endPosition) { EndCastTime = time, EndObstacleTime = time + (this.RangedAbility.Range / this.RangedAbility.Speed) }; this.Pathfinder.AddObstacle(obstacle); } catch (Exception e) { Logger.Error(e); } }); }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); var obstacle = new AreaOfEffectSpeedObstacle(this, particle.GetControlPoint(0), 300) { EndCastTime = time, EndObstacleTime = time + (this.ActiveAbility.Radius / this.ActiveAbility.Speed) }; this.Pathfinder.AddObstacle(obstacle); }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); var position = particle.GetControlPoint(0); var obstacle = new AreaOfEffectObstacle(this, position) { EndCastTime = time, EndObstacleTime = time + this.Ability.Duration }; this.Pathfinder.AddObstacle(obstacle); }
public void AddParticle(ParticleEffect particle, string name) { var time = Game.RawGameTime - (Game.Ping / 2000); UpdateManager.BeginInvoke( () => { try { if (!particle.IsValid) { return; } var targetPosition = particle.GetControlPoint(0); var target = EntityManager9.Units .Where(x => x.IsAlive && x.IsEnemy(this.Owner) && x.Distance(targetPosition) < 200) .OrderBy(x => x.Distance(targetPosition)) .FirstOrDefault(); if (target == null) { return; } var obstacle = new GlimpseObstacle(this, target) { EndCastTime = time, EndObstacleTime = time + particle.GetControlPoint(2).X }; this.Pathfinder.AddObstacle(obstacle); } catch (Exception e) { Logger.Error(e); } }); }
public override void AddDrawableAbility( List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { var position = particle.GetControlPoint(this.ControlPoint); if (EntityManager9.Heroes.Any(x => x.IsUnit && x.Team == allyTeam && x.IsAlive && x.Distance(position) < 800)) { return; } var drawableAbility = new SimpleDrawableAbility { AbilityTexture = this.AbilityId + "_rounded", ShowUntil = Game.RawGameTime + this.TimeToShow, Position = (this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint)).SetZ(350) }; if (this.Replace) { var exist = drawableAbilities.LastOrDefault( x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (exist != null) { drawableAbilities.Remove(exist); } } drawableAbilities.Add(drawableAbility); if (this.ShowNotification) { notificator?.PushNotification(new AbilityNotification(null, this.AbilityId.ToString())); } }
// Token: 0x060002F2 RID: 754 RVA: 0x0001B110 File Offset: 0x00019310 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Vector3 position = (base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint)).SetZ(new float?((float)350)); if (EntityManager9.AllyUnits.Any((Unit9 x) => x.IsAlive && x.Distance(position) < 400f)) { return; } Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => (x.Id == this.AbilityId || x.Id == AbilityId.item_mjollnir) && x.Owner.Team != allyTeam && x.Owner.CanUseAbilities); Unit9 unit = (ability != null) ? ability.Owner : null; if (unit == null || unit.IsVisible) { return; } string text; if (unit.IsHero) { text = unit.Name; } else { Unit9 owner = unit.Owner; text = ((owner != null) ? owner.Name : null); if (text == null) { return; } } DrawableAbility drawableAbility = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = text + "_rounded", MinimapHeroTexture = text + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = position }; if (base.Replace) { IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (drawableAbility2 != null) { drawableAbilities.Remove(drawableAbility2); } } drawableAbilities.Add(drawableAbility); }
// Token: 0x06000322 RID: 802 RVA: 0x0001BBC4 File Offset: 0x00019DC4 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Unit9 unit; if (!base.SearchOwner && particle.Owner is Unit) { unit = EntityManager9.GetUnit(particle.Owner.Handle); } else { Ability9 ability = EntityManager9.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId && x.Owner.Team != allyTeam); unit = ((ability != null) ? ability.Owner : null); } Unit9 unit2 = unit; if (unit2 == null || unit2.IsVisible) { return; } if (Game.RawGameTime - unit2.LastVisibleTime >= 1f) { DrawableAbility item = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = unit2.Name + "_rounded", MinimapHeroTexture = unit2.Name + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = particle.GetControlPoint(base.ControlPoint) }; drawableAbilities.Add(item); return; } Ability9 ability2 = unit2.Abilities.FirstOrDefault((Ability9 x) => x.Id == this.AbilityId); if (ability2 == null) { return; } DrawableAbility item2 = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = unit2.Name + "_rounded", MinimapHeroTexture = unit2.Name + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = unit2.InFront(ability2.Range, 0f, true) }; drawableAbilities.Add(item2); }
public override void AddDrawableAbility( List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { var owner = EntityManager9.GetUnit(particle.Owner.Handle); if (owner?.IsVisible != false) { return; } var position = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint); if (position.IsZero || position.Distance2D(owner.BaseUnit.Position) < 50) { return; } var ownerName = owner.Name; var drawableAbility = new DrawableAbility { AbilityTexture = this.AbilityId + "_rounded", HeroTexture = ownerName + "_rounded", MinimapHeroTexture = ownerName + "_icon", ShowUntil = Game.RawGameTime + this.TimeToShow, Position = position.SetZ(350) }; owner.ChangeBasePosition(drawableAbility.Position); if (this.Replace) { var exist = drawableAbilities.LastOrDefault( x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (exist != null) { drawableAbilities.Remove(exist); } } drawableAbilities.Add(drawableAbility); }
// Token: 0x060002F8 RID: 760 RVA: 0x0001B2C0 File Offset: 0x000194C0 public override void AddDrawableAbility(List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { Vector3 position = base.RawParticlePosition ? particle.Position : particle.GetControlPoint(base.ControlPoint); if (position.IsZero) { Logger.Error("ParticleZero", particle.Name); return; } Ability9 ability = (from x in EntityManager9.Abilities where x.Id == this.AbilityId && x.Owner.CanUseAbilities orderby x.Owner.Position.Distance2D(position, false) select x).FirstOrDefault <Ability9>(); Unit9 unit = (ability != null) ? ability.Owner : null; if (unit == null || unit.IsVisible || unit.Team == allyTeam) { return; } string name = unit.Name; DrawableAbility drawableAbility = new DrawableAbility { AbilityTexture = base.AbilityId + "_rounded", HeroTexture = name + "_rounded", MinimapHeroTexture = name + "_icon", ShowUntil = Game.RawGameTime + base.TimeToShow, Position = position.SetZ(new float?((float)350)) }; if (base.Replace) { IDrawableAbility drawableAbility2 = drawableAbilities.LastOrDefault((IDrawableAbility x) => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (drawableAbility2 != null) { drawableAbilities.Remove(drawableAbility2); } } drawableAbilities.Add(drawableAbility); if (base.ShowNotification && notificator != null) { notificator.PushNotification(new AbilityNotification(name, base.AbilityId.ToString())); } }
public virtual void AddDrawableAbility( List <IDrawableAbility> drawableAbilities, ParticleEffect particle, Team allyTeam, INotificator notificator) { var owner = this.SearchOwner || !(particle.Owner is Unit) ? EntityManager9.Abilities.FirstOrDefault( x => x.Id == this.AbilityId && x.Owner.Team != allyTeam && x.Owner.CanUseAbilities) ?.Owner : EntityManager9.GetUnit(particle.Owner.Handle); if (owner?.IsVisible != false) { return; } string ownerName; if (owner.IsHero) { if (owner.Name == nameof(HeroId.npc_dota_hero_rubick) && (this.AbilityId != AbilityId.rubick_fade_bolt || this.AbilityId != AbilityId.rubick_telekinesis)) { return; } ownerName = owner.Name; } else { ownerName = owner.Owner?.Name; if (ownerName == null) { return; } } var position = this.RawParticlePosition ? particle.Position : particle.GetControlPoint(this.ControlPoint); if (position.IsZero || (owner.IsHero && owner.Distance(position) < 50)) { return; } var drawableAbility = new DrawableAbility { AbilityTexture = this.AbilityId + "_rounded", HeroTexture = ownerName + "_rounded", MinimapHeroTexture = ownerName + "_icon", ShowUntil = Game.RawGameTime + this.TimeToShow, Position = position.SetZ(350) }; owner.ChangeBasePosition(drawableAbility.Position); if (this.Replace) { var exist = drawableAbilities.LastOrDefault( x => x.AbilityTexture == drawableAbility.AbilityTexture && x.HeroTexture == drawableAbility.HeroTexture); if (exist != null) { drawableAbilities.Remove(exist); } } drawableAbilities.Add(drawableAbility); if (this.ShowNotification) { notificator?.PushNotification(new AbilityNotification(ownerName, this.AbilityId.ToString())); } }
private void OnDebugDrawOnMap(EventArgs args) { foreach (ObstacleParticle obstacleParticle in obstacleParticles) { if (!obstacleParticle.IsValid) { continue; } if (obstacleParticle.IsLine) { Vector2 startPos, endPos; //Debugging.WriteLine("Len {0}", (obstacleParticle.EndPosition - obstacleParticle.Position).Length()); var visible = Drawing.WorldToScreen(obstacleParticle.Position, out startPos); visible |= Drawing.WorldToScreen(obstacleParticle.EndPosition, out endPos); if (visible) { var ortho = (obstacleParticle.EndPosition - obstacleParticle.Position); ortho = ortho.Rotated(MathUtil.DegreesToRadians(90)); ortho.Normalize(); ortho *= obstacleParticle.Radius; var a = obstacleParticle.Position + ortho; var b = obstacleParticle.Position - ortho; var c = obstacleParticle.EndPosition - ortho; var d = obstacleParticle.EndPosition + ortho; Vector2 sa, sb, sc, sd; Drawing.WorldToScreen(a, out sa); Drawing.WorldToScreen(b, out sb); Drawing.WorldToScreen(c, out sc); Drawing.WorldToScreen(d, out sd); Drawing.DrawLine(sa, sb, Color.Blue); Drawing.DrawLine(sb, sc, Color.Blue); Drawing.DrawLine(sc, sd, Color.Blue); Drawing.DrawLine(sd, sa, Color.Blue); if (obstacleParticle.Position != obstacleParticle.CurrentPosition) { var t1 = obstacleParticle.CurrentPosition + ortho; var t2 = obstacleParticle.CurrentPosition - ortho; Vector2 st1, st2; Drawing.WorldToScreen(t1, out st1); Drawing.WorldToScreen(t2, out st2); Drawing.DrawLine(st1, st2, Color.Yellow); } } } else { Vector2 screenPos; if (Drawing.WorldToScreen(obstacleParticle.EndPosition, out screenPos)) { Vector2 radiusPos; var tmp = obstacleParticle.EndPosition; tmp.X += obstacleParticle.Radius; Drawing.WorldToScreen(tmp, out radiusPos); Drawing.DrawCircle(screenPos, (uint)(radiusPos - screenPos).Length(), 24, Color.Red); } } } if (testParticle != null && testParticle.IsValid) { Vector2 startPos, endPos; Drawing.WorldToScreen(testParticle.GetControlPoint(0), out startPos); Drawing.WorldToScreen(testParticle.GetControlPoint(1), out endPos); Console.WriteLine("TestParticle {0}:", testParticle.HighestControlPoint); for (uint i = 0; i < testParticle.HighestControlPoint; ++i) { Console.WriteLine(testParticle.GetControlPoint(i)); } Console.WriteLine(); /* * 0 == StartPosition * 1 == EndPosition * 3 == CurrenPosition */ // Drawing.DrawCircle(startPos, (uint)200, 24, Color.Red); Drawing.DrawLine(startPos, endPos, Color.Red); } //if (miranaArrow != null && miranaArrow.IsValid) //{ // Console.WriteLine(miranaArrow.MovementSpeed); //} }