protected override void OnUnitEntersRange(Unit unit) { base.OnUnitEntersRange(unit); var b = (Buff)ApplyBuff.Clone(); if(unit.AddBuff(b, Performer, Mediator)) activeBuffs.Add(unit, b); }
public Projectile(Projectile copy) : base(copy) { velocity = copy.velocity; timeToLive = TimeToLive = copy.TimeToLive; performer = copy.performer; }
protected override void OnUnitExitsRange(Unit unit) { base.OnUnitExitsRange(unit); Buff b; if (activeBuffs.TryGetValue(unit, out b)) { unit.RemoveBuff(b); activeBuffs.Remove(unit); } }
public override void DoPickup(Unit unit) { unit.PistolAmmo += Ammo; Interface.ScrollingCombatText s; Game.Instance.Interface.AddChild(s = new Interface.ScrollingCombatText { Text = "+" + Ammo + Locale.Resource.GenLCBullets, WorldPosition = Translation + Vector3.UnitZ * 1 }); s.Font.Color = System.Drawing.Color.Green; var sm = Program.Instance.SoundManager; sm.GetSFX(global::Client.Sound.SFX.AmmoPickup1).Play(new Sound.PlayArgs()); base.DoPickup(unit); }
public override void DoPickup(Unit unit) { new FinishScript { InitDelay = 0.2f, State = GameState.Won, Reason = "Finished map" }.TryStartPerform(); base.DoPickup(unit); }
public override void DoPickup(Unit unit) { ((Units.MainCharacter)unit).TalismansCollected++; Interface.ScrollingCombatText s; Game.Instance.Interface.AddChild(s = new Interface.ScrollingCombatText { Text = "+1 talisman", WorldPosition = Translation + Vector3.UnitZ * 1 }); s.Font.Color = System.Drawing.Color.Green; base.DoPickup(unit); }
protected virtual void OnUnitEntersRange(Unit unit) { }
void u_StartPerformAbility(Unit arg1, Ability arg2) { if (!Ability.IsAssignableFrom(arg2.GetType())) return; Script.TryStartPerform(); nUsed++; if (NUses >= 0 && nUsed >= NUses) TryEndPerform(false); }
public override float AIPriority(Unit performer, Vector3 targetPosition, Destructible targetUnit) { if (IsPerforming) return 2; if (!IsValidTarget(targetUnit)) return -100; if (!IsEffectiveTowardsTarget(targetPosition, targetUnit)) return -50; if (CurrentCooldown >= 0) return 0.1f; if (!IsInEffectiveRange(targetUnit)) return 0.5f; return 1; }
public override void DoPickup(Unit unit) { if (unit.HitPoints >= unit.MaxHitPoints) return; //Sound and visual effect Program.Instance.SoundManager.GetSFX(Client.Sound.SFX.PotionPickup1).Play(new Client.Sound.PlayArgs { }); unit.AddChild(new Client.Game.Map.Effects.RageSac { Translation = Vector3.UnitZ * 1.5f }); unit.Heal(null, (int)(HealPerc * unit.MaxHitPoints)); Interface.ScrollingCombatText s; Game.Instance.Interface.AddChild(s = new Interface.ScrollingCombatText { Text = "+" + (int)(100 * HealPerc) + "% " + Locale.Resource.GenLCHP, WorldPosition = Translation + Vector3.UnitZ * 1 }); s.Font.Color = System.Drawing.Color.Green; base.DoPickup(unit); }
protected override void OnKilled(Unit perpetrator, Script script) { base.OnKilled(perpetrator, script); var sm = Program.Instance.SoundManager; //if (onKilledSoundCooldown == 0 && onKilledSoundPlaybackCount < onKilledSoundLimit) //{ // onKilledSoundCooldown = onHitSoundCooldownLength; // onKilledSoundPlaybackCount++; if(random.NextDouble() < 0.4) sm.GetSFX(global::Client.Sound.SFX.OrgansOnGround1).Play(new Sound.PlayArgs { Position = Position, Velocity = Vector3.Zero }); //} sm.GetSFX(global::Client.Sound.SFX.FleshExplode1).Play(new Sound.PlayArgs { Position = Position, Velocity = Vector3.Zero }); UpdatePlaybackCount(float.MaxValue, ref onHitSoundCooldown, ref onHitSoundPlaybackCount); }
public void MakeAwareOfUnit(Unit unit) { if (State != UnitState.Alive) return; if (unit != null) if (Mechanics.TeamReleations.IsHostile(this.Team, unit.Team)) { InCombat = true; ChangeState(TryFindBetterState(aiState, unit)); } }
protected virtual void OnUnitExitsRange(Unit unit) { }
public bool AddBuff(Buff buff, Unit performer, GameEntity mediator) { if (!CanAddBuff(buff)) return false; buff.Performer = performer; buff.Mediator = mediator; if (IsInGame) { if (CanAddBuff(buff)) { buff.TargetPosition = this.Position; buff.TargetEntity = this; if(buff.TryStartPerform()) ActiveBuffs.Add(buff); } } else ActiveBuffs.Add(buff); return true; }
public virtual void DoPickup(Unit unit) { Remove(); }
protected override void OnKilled(Unit perpetrator, Script script) { base.OnKilled(perpetrator, script); InCombat = false; if (isDrowning) OnEndsPiranhas(); }
public override void DoPickup(Unit unit) { ((Units.MainCharacter)unit).AddRageLevelProgress(Rage); //Sound and visual effect Program.Instance.SoundManager.GetSFX(Client.Sound.SFX.PotionPickup1).Play(new Client.Sound.PlayArgs { }); unit.AddChild(new Client.Game.Map.Effects.HpSac { Translation = Vector3.UnitZ * 1.5f }); Interface.ScrollingCombatText s; Game.Instance.Interface.AddChild(s = new Interface.ScrollingCombatText { Text = "+" + Rage + " " + Locale.Resource.GenLCRage, WorldPosition = Translation + Vector3.UnitZ * 1 }); s.Font.Color = System.Drawing.Color.Orange; base.DoPickup(unit); }
public override float AIPriority(Unit performer, Vector3 targetPosition, Destructible targetUnit) { float d = Math.Max(1, (targetUnit.Position - Game.Instance.Map.MainCharacter.Position).Length()); return base.AIPriority(performer, targetPosition, targetUnit) + 0.01f / d; }
public override void DoPickup(Unit unit) { Program.Instance.Profile.AvailableMeleeWeapons |= MeleeWeapons.Spear; base.DoPickup(unit); new DialogScript { Title = "Spear!", Text = "You've picked up a spear! You can select this weapon the next time you start a map.", }.TryStartPerform(); }
void Mechanics_UnitKilled(Unit obj, Unit perp, Script script) { if(Units.IsInGroup(obj)) { if (Ability != null && Ability.IsAssignableFrom(script.GetType())) KilledWithAbilityScript.TryStartPerform(); else { if(KilledWithOtherAbilityScript != null) KilledWithOtherAbilityScript.TryStartPerform(); } nUsed++; if (NUses >= 0 && nUsed >= NUses) TryEndPerform(false); } }
public virtual float AIPriority(Unit performer, Vector3 targetPosition, Destructible targetEntity) { return 1; }