diff options
| author | megamage <none@none> | 2009-01-06 13:50:42 -0600 | 
|---|---|---|
| committer | megamage <none@none> | 2009-01-06 13:50:42 -0600 | 
| commit | 5b2c61e95e3c46fbeaef53f4651c8198b68e4d3d (patch) | |
| tree | b2be63e5404d1b6ed35dde6e7ce11957c4cb85a6 /src | |
| parent | 8b876b08173f92062af449bccfb430b2b2f28bac (diff) | |
*Mangos [7039] Implement mangosd.conf options Death.Bones. By VladimirMangos.
*for disable bones creating from corpse in world zones or in arena/bg.
*Note: in case apply insignia bones still created as required for looting.
--HG--
branch : trunk
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/GlobalEvents.cpp | 2 | ||||
| -rw-r--r-- | src/game/ObjectAccessor.cpp | 8 | ||||
| -rw-r--r-- | src/game/ObjectAccessor.h | 2 | ||||
| -rw-r--r-- | src/game/Player.cpp | 2 | ||||
| -rw-r--r-- | src/game/World.cpp | 2 | ||||
| -rw-r--r-- | src/game/World.h | 2 | ||||
| -rw-r--r-- | src/mangosd/mangosd.conf.dist.in | 8 | ||||
| -rw-r--r-- | src/shared/revision_nr.h | 2 | 
8 files changed, 22 insertions, 6 deletions
diff --git a/src/game/GlobalEvents.cpp b/src/game/GlobalEvents.cpp index 635d426f694..27de7df03b4 100644 --- a/src/game/GlobalEvents.cpp +++ b/src/game/GlobalEvents.cpp @@ -55,7 +55,7 @@ static void CorpsesEraseCallBack(QueryResult *result, bool bones)          {              if(!ObjectAccessor::Instance().ConvertCorpseForPlayer(player_guid))              { -                sLog.outDebug("Corpse %u not found in world. Delete from DB.",guidlow); +                sLog.outDebug("Corpse %u not found in world or bones creating forbidden. Delete from DB.",guidlow);                  CharacterDatabase.PExecute("DELETE FROM corpse WHERE guid = '%u'",guidlow);              }          } diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp index 45429824b9c..872cf8280f5 100644 --- a/src/game/ObjectAccessor.cpp +++ b/src/game/ObjectAccessor.cpp @@ -38,6 +38,7 @@  #include "Opcodes.h"  #include "ObjectDefines.h"  #include "MapInstanced.h" +#include "World.h"  #include <cmath> @@ -432,7 +433,7 @@ ObjectAccessor::AddCorpsesToGrid(GridPair const& gridpair,GridType& grid,Map* ma  }  Corpse* -ObjectAccessor::ConvertCorpseForPlayer(uint64 player_guid) +ObjectAccessor::ConvertCorpseForPlayer(uint64 player_guid, bool insignia)  {      Corpse *corpse = GetCorpseForPlayerGUID(player_guid);      if(!corpse) @@ -458,7 +459,10 @@ ObjectAccessor::ConvertCorpseForPlayer(uint64 player_guid)      Corpse *bones = NULL;      // create the bones only if the map and the grid is loaded at the corpse's location -    if(map && !map->IsRemovalGrid(corpse->GetPositionX(), corpse->GetPositionY())) +    // ignore bones creating option in case insignia +    if (map && (insignia || +        (map->IsBattleGroundOrArena() ? sWorld.getConfig(CONFIG_DEATH_BONES_BG_OR_ARENA) : sWorld.getConfig(CONFIG_DEATH_BONES_WORLD))) && +        !map->IsRemovalGrid(corpse->GetPositionX(), corpse->GetPositionY()))      {          // Create bones, don't change Corpse          bones = new Corpse; diff --git a/src/game/ObjectAccessor.h b/src/game/ObjectAccessor.h index 91b80eaa7e1..3cb743be573 100644 --- a/src/game/ObjectAccessor.h +++ b/src/game/ObjectAccessor.h @@ -194,7 +194,7 @@ class TRINITY_DLL_DECL ObjectAccessor : public Trinity::Singleton<ObjectAccessor          void RemoveCorpse(Corpse *corpse);          void AddCorpse(Corpse* corpse);          void AddCorpsesToGrid(GridPair const& gridpair,GridType& grid,Map* map); -        Corpse* ConvertCorpseForPlayer(uint64 player_guid); +        Corpse* ConvertCorpseForPlayer(uint64 player_guid, bool insignia = false);          static void UpdateObject(Object* obj, Player* exceptPlayer);          static void _buildUpdateObject(Object* obj, UpdateDataMapType &); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 863699a225f..20b6a911fa9 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -7324,7 +7324,7 @@ void Player::RemovedInsignia(Player* looterPlr)      // We have to convert player corpse to bones, not to be able to resurrect there      // SpawnCorpseBones isn't handy, 'cos it saves player while he in BG -    Corpse *bones = ObjectAccessor::Instance().ConvertCorpseForPlayer(GetGUID()); +    Corpse *bones = ObjectAccessor::Instance().ConvertCorpseForPlayer(GetGUID(),true);      if (!bones)          return; diff --git a/src/game/World.cpp b/src/game/World.cpp index bd265182f2f..3f1fc1773f1 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -904,6 +904,8 @@ void World::LoadConfigSettings(bool reload)      m_configs[CONFIG_DEATH_SICKNESS_LEVEL] = sConfig.GetIntDefault("Death.SicknessLevel", 11);      m_configs[CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP] = sConfig.GetBoolDefault("Death.CorpseReclaimDelay.PvP", true);      m_configs[CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE] = sConfig.GetBoolDefault("Death.CorpseReclaimDelay.PvE", true); +    m_configs[CONFIG_DEATH_BONES_WORLD]       = sConfig.GetBoolDefault("Death.Bones.World", true); +    m_configs[CONFIG_DEATH_BONES_BG_OR_ARENA] = sConfig.GetBoolDefault("Death.Bones.BattlegroundOrArena", true);      m_configs[CONFIG_THREAT_RADIUS] = sConfig.GetIntDefault("ThreatRadius", 60); diff --git a/src/game/World.h b/src/game/World.h index 4309ed030c1..615cd950231 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -173,6 +173,8 @@ enum WorldConfigs      CONFIG_DEATH_SICKNESS_LEVEL,      CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVP,      CONFIG_DEATH_CORPSE_RECLAIM_DELAY_PVE, +    CONFIG_DEATH_BONES_WORLD, +    CONFIG_DEATH_BONES_BG_OR_ARENA,      CONFIG_THREAT_RADIUS,      CONFIG_INSTANT_LOGOUT,      CONFIG_DISABLE_BREATHING, diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index 62ff7a296ee..0c845141ccb 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -1079,6 +1079,12 @@ Visibility.Distance.Grey.Object = 10  #         Default: 1 (enabled)  #                  0 (disabled)  # +#    Death.Bones.World +#    Death.Bones.BattlegroundOrArena +#         Enabled/disabled creating bones instead corpse at resurrection (in normal zones/instacnes, or battleground/arenas) +#         Default: 1 (enabled) +#                  0 (disabled) +#  ###################################################################################################################  Rate.Health = 1 @@ -1132,6 +1138,8 @@ DurabilityLossChance.Block  = 0.05  Death.SicknessLevel = 11  Death.CorpseReclaimDelay.PvP = 1  Death.CorpseReclaimDelay.PvE = 1 +Death.Bones.World = 1 +Death.Bones.BattlegroundOrArena = 1  ###################################################################################################################  # diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 1425e069fb3..c956a070555 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@  #ifndef __REVISION_NR_H__  #define __REVISION_NR_H__ - #define REVISION_NR "7038" + #define REVISION_NR "7039"  #endif // __REVISION_NR_H__  | 
