Advertisement
Guest User

Untitled

a guest
May 29th, 2017
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.56 KB | None | 0 0
  1. diff --git a/src/game/GameObject.cpp b/src/game/GameObject.cpp
  2. --- a/src/game/GameObject.cpp
  3. +++ b/src/game/GameObject.cpp
  4. @@ -1582,7 +1582,7 @@
  5.  {
  6.      if (!m_goValue->building.health)
  7.          return;
  8. -
  9. +    uint8 hitType;
  10.      Player* pwho = NULL;
  11.      if (who)
  12.      {
  13. @@ -1597,5 +1597,5 @@
  14.      else
  15.          m_goValue->building.health = 0;
  16.  
  17. -    if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED)) // from damaged to destroyed
  18. +    if (!HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED) && !HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED))// from intact to damaged"
  19.      {
  20. @@ -1601,26 +1601,6 @@
  21.      {
  22. -        uint8 hitType = BG_OBJECT_DMG_HIT_TYPE_HIGH_DAMAGED;
  23. -        if (!m_goValue->building.health)
  24. -        {
  25. -            RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
  26. -
  27. -            SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
  28. -            SetUInt32Value(GAMEOBJECT_DISPLAYID, m_goInfo->building.destroyedDisplayId);
  29. -            EventInform(m_goInfo->building.destroyedEvent);
  30. -            if (pwho)
  31. -                if (BattleGround* bg = pwho->GetBattleGround())
  32. -                    bg->DestroyGate(pwho, this, m_goInfo->building.destroyedEvent);
  33. -            hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_DESTROYED;
  34. -            sScriptMgr.GODestroyed(pwho, this, m_goInfo->building.destroyedEvent);
  35. -        }
  36. -        if (pwho)
  37. -            if (BattleGround* bg = pwho->GetBattleGround())
  38. -                bg->EventPlayerDamagedGO(pwho, this, hitType, m_goInfo->building.destroyedEvent);
  39. -    }
  40. -    else // from intact to damaged
  41. -    {
  42. -        uint8 hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_DAMAGED;
  43. +        hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_DAMAGED;
  44.          if (m_goValue->building.health + damage < m_goInfo->building.intactNumHits + m_goInfo->building.damagedNumHits)
  45.              hitType = BG_OBJECT_DMG_HIT_TYPE_DAMAGED;
  46.  
  47.          if (m_goValue->building.health <= m_goInfo->building.damagedNumHits)
  48. @@ -1623,11 +1603,6 @@
  49.          if (m_goValue->building.health + damage < m_goInfo->building.intactNumHits + m_goInfo->building.damagedNumHits)
  50.              hitType = BG_OBJECT_DMG_HIT_TYPE_DAMAGED;
  51.  
  52.          if (m_goValue->building.health <= m_goInfo->building.damagedNumHits)
  53. -        {
  54. -            if (!m_goInfo->building.destroyedDisplayId)
  55. -                m_goValue->building.health = 0;
  56. -            else if (!m_goValue->building.health)
  57. -                m_goValue->building.health = 1;
  58. -
  59. +        {            
  60.              SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
  61. @@ -1633,4 +1608,3 @@
  62.              SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
  63. -            SetUInt32Value(GAMEOBJECT_DISPLAYID, m_goInfo->building.damagedDisplayId);
  64.              EventInform(m_goInfo->building.damagedEvent);
  65.              hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_HIGH_DAMAGED;
  66. @@ -1635,3 +1609,9 @@
  67.              EventInform(m_goInfo->building.damagedEvent);
  68.              hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_HIGH_DAMAGED;
  69. +
  70. +            if (m_goInfo->building.damagedDisplayId)
  71. +                SetUInt32Value(GAMEOBJECT_DISPLAYID, m_goInfo->building.damagedDisplayId);
  72. +
  73. +            if (!m_goValue->building.health)
  74. +                m_goValue->building.health = 1;
  75.          }
  76. @@ -1637,5 +1617,2 @@
  77.          }
  78. -        if (pwho)
  79. -            if (BattleGround* bg = pwho->GetBattleGround())
  80. -                 bg->EventPlayerDamagedGO(pwho, this, hitType, m_goInfo->building.destroyedEvent);
  81.      }
  82. @@ -1641,4 +1618,27 @@
  83.      }
  84. +    
  85. +    if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED)) // from damaged to destroyed
  86. +    {
  87. +        hitType = BG_OBJECT_DMG_HIT_TYPE_HIGH_DAMAGED;
  88. +        if (!m_goValue->building.health)
  89. +        {
  90. +            RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED);
  91. +            SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED);
  92. +            EventInform(m_goInfo->building.destroyedEvent);
  93. +            hitType = BG_OBJECT_DMG_HIT_TYPE_JUST_DESTROYED;
  94. +            sScriptMgr.GODestroyed(pwho, this, m_goInfo->building.destroyedEvent);
  95. +            if (m_goInfo->building.destroyedDisplayId)
  96. +                SetUInt32Value(GAMEOBJECT_DISPLAYID, m_goInfo->building.destroyedDisplayId);
  97. +        }
  98. +    }
  99. +    if (HasFlag(GAMEOBJECT_FLAGS, GO_FLAG_DESTROYED)) //destroyed
  100. +    {
  101. +        if (damage)
  102. +            damage = 0;
  103. +    }
  104. +    if (pwho)
  105. +        if (BattleGround* bg = pwho->GetBattleGround())
  106. +             bg->EventPlayerDamagedGO(pwho, this, hitType, m_goInfo->building.destroyedEvent);
  107.      SetGoAnimProgress(m_goValue->building.health*255/(m_goInfo->building.intactNumHits + m_goInfo->building.damagedNumHits));
  108.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement