public virtual void OnTick() { if (CooldownTick > 0) { CooldownTick--; } if (!Entity.IsSpawned) { return; } if (IsDead) { return; } if (IsInvulnerable) { Health = MaxHealth; } if (Health <= 0) { Kill(); return; } if (Entity.KnownPosition.Y < 0 && !IsDead) { CooldownTick = 0; TakeHit(null, 300, DamageCause.Void); LastDamageCause = DamageCause.Void; return; } if (IsInWater(Entity.KnownPosition)) { Air--; if (Air <= 0) { if (Math.Abs(Air) % 10 == 0) { Health -= 10; var player = Entity as Player; if (player != null) { player.SendUpdateAttributes(); player.BroadcastEntityEvent(); } Entity.BroadcastSetEntityData(); LastDamageCause = DamageCause.Drowning; } } if (IsOnFire) { IsOnFire = false; FireTick = 0; Entity.BroadcastSetEntityData(); } } else { Air = 300; } if (IsInSolid(Entity.KnownPosition)) { if (SuffocationTicks <= 0) { Health -= 10; var player = Entity as Player; if (player != null) { player.SendUpdateAttributes(); player.BroadcastEntityEvent(); } Entity.BroadcastSetEntityData(); LastDamageCause = DamageCause.Suffocation; SuffocationTicks = 10; } else { SuffocationTicks--; } } else { SuffocationTicks = 10; } if (IsInLava(Entity.KnownPosition)) { if (LastDamageCause.Equals(DamageCause.Lava)) { FireTick += 2; } else { FireTick = 300; IsOnFire = true; Entity.BroadcastSetEntityData(); } if (LavaTicks <= 0) { Health -= 40; var player = Entity as Player; if (player != null) { player.SendUpdateAttributes(); player.BroadcastEntityEvent(); } Entity.BroadcastSetEntityData(); LastDamageCause = DamageCause.Lava; LavaTicks = 10; } else { LavaTicks--; } } else { LavaTicks = 0; } if (!IsInLava(Entity.KnownPosition) && IsOnFire) { FireTick--; if (FireTick <= 0) { IsOnFire = false; } if (Math.Abs(FireTick) % 20 == 0) { Health -= 10; var player = Entity as Player; if (player != null) { player.SendUpdateAttributes(); player.BroadcastEntityEvent(); } Entity.BroadcastSetEntityData(); LastDamageCause = DamageCause.FireTick; } } }
public virtual void OnTick() { if (!Entity.IsSpawned) { return; } if (IsDead) { return; } if (CooldownTick > 0) { CooldownTick--; } else { LastDamageSource = null; } if (IsInvulnerable) { Health = MaxHealth; } if (Health <= 0) { Kill(); return; } if (Entity.KnownPosition.Y < 0 && !IsDead) { CooldownTick = 0; TakeHit(null, 300, DamageCause.Void); return; } if (IsInWater(Entity.KnownPosition)) { Entity.IsInWater = true; Air--; if (Air <= 0) { if (Math.Abs(Air) % 10 == 0) { TakeHit(null, 1, DamageCause.Drowning); Entity.BroadcastSetEntityData(); } } Entity.BroadcastSetEntityData(); } else { Air = MaxAir; if (Entity.IsInWater) { Entity.IsInWater = false; Entity.BroadcastSetEntityData(); } } if (IsOnFire && (Entity.IsInWater || IsStandingInWater(Entity.KnownPosition))) { IsOnFire = false; FireTick = 0; Entity.BroadcastSetEntityData(); } if (IsInSolid(Entity.KnownPosition)) { if (SuffocationTicks <= 0) { TakeHit(null, 1, DamageCause.Suffocation); Entity.BroadcastSetEntityData(); SuffocationTicks = 10; } else { SuffocationTicks--; } } else { SuffocationTicks = 10; } if (IsInLava(Entity.KnownPosition)) { if (LastDamageCause.Equals(DamageCause.Lava)) { FireTick += 2; } else { Ignite(300); } if (LavaTicks <= 0) { TakeHit(null, 4, DamageCause.Lava); Entity.BroadcastSetEntityData(); LavaTicks = 10; } else { LavaTicks--; } } else { LavaTicks = 0; } if (!IsInLava(Entity.KnownPosition) && IsOnFire) { FireTick--; if (FireTick <= 0) { IsOnFire = false; Entity.BroadcastSetEntityData(); } if (Math.Abs(FireTick) % 20 == 0) { if (Entity is Player) { Player player = (Player)Entity; player.DamageCalculator.CalculatePlayerDamage(null, player, null, 1, DamageCause.FireTick); TakeHit(null, 1, DamageCause.FireTick); } else { TakeHit(null, 1, DamageCause.FireTick); } Entity.BroadcastSetEntityData(); } } }
public virtual void OnTick() { if (CooldownTick > 0) { CooldownTick--; } if (!Entity.IsSpawned) { return; } if (IsDead) { return; } if (IsInvulnerable) { Health = MaxHealth; } if (Health <= 0) { Kill(); return; } if (Entity.KnownPosition.Y < 0 && !IsDead) { CooldownTick = 0; TakeHit(null, 300, DamageCause.Void); return; } if (IsInWater(Entity.KnownPosition)) { Air--; if (Air <= 0) { if (Math.Abs(Air) % 10 == 0) { TakeHit(null, 1, DamageCause.Drowning); Entity.BroadcastSetEntityData(); } } if (IsOnFire) { IsOnFire = false; FireTick = 0; Entity.BroadcastSetEntityData(); } } else { Air = 300; } if (IsInSolid(Entity.KnownPosition)) { if (SuffocationTicks <= 0) { TakeHit(null, 1, DamageCause.Suffocation); Entity.BroadcastSetEntityData(); SuffocationTicks = 10; } else { SuffocationTicks--; } } else { SuffocationTicks = 10; } if (IsInLava(Entity.KnownPosition)) { if (LastDamageCause.Equals(DamageCause.Lava)) { FireTick += 2; } else { FireTick = 300; IsOnFire = true; Entity.BroadcastSetEntityData(); } if (LavaTicks <= 0) { TakeHit(null, 4, DamageCause.Lava); Entity.BroadcastSetEntityData(); LavaTicks = 10; } else { LavaTicks--; } } else { LavaTicks = 0; } if (!IsInLava(Entity.KnownPosition) && IsOnFire) { FireTick--; if (FireTick <= 0) { IsOnFire = false; } if (Math.Abs(FireTick) % 20 == 0) { TakeHit(null, 1, DamageCause.FireTick); Entity.BroadcastSetEntityData(); } } }