RevivingZombie.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Server.MirDatabase;
  2. namespace Server.MirObjects.Monsters
  3. {
  4. public class RevivingZombie : MonsterObject
  5. {
  6. public byte RevivalCount;
  7. public int LifeCount;
  8. public long RevivalTime, DieTime;
  9. public override uint Experience
  10. {
  11. get { return (uint)(Info.Experience * (100 - (25 * RevivalCount)) / 100); }
  12. }
  13. protected internal RevivingZombie(MonsterInfo info)
  14. : base(info)
  15. {
  16. RevivalCount = 0;
  17. LifeCount = Envir.Random.Next(3);
  18. }
  19. public override void Die()
  20. {
  21. DieTime = Envir.Time;
  22. RevivalTime = (4 + Envir.Random.Next(20)) * 1000;
  23. base.Die();
  24. }
  25. protected override void ProcessAI()
  26. {
  27. if (Dead && Envir.Time > DieTime + RevivalTime && RevivalCount < LifeCount)
  28. {
  29. RevivalCount++;
  30. int newhp = Stats[Stat.HP] * (100 - (25 * RevivalCount)) / 100;
  31. Revive(newhp, false);
  32. }
  33. base.ProcessAI();
  34. }
  35. }
  36. }