aboutsummaryrefslogtreecommitdiff
path: root/src/game/Object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Object.cpp')
-rw-r--r--src/game/Object.cpp57
1 files changed, 32 insertions, 25 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index e2d50d89753..9af456989c7 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -1756,23 +1756,31 @@ TempSummon *Map::SummonCreature(uint32 entry, float x, float y, float z, float a
uint32 mask = UNIT_MASK_SUMMON;
if(properties)
{
- if(properties->Category == SUMMON_CATEGORY_PET
- || properties->Type == SUMMON_TYPE_GUARDIAN
- || properties->Type == SUMMON_TYPE_MINION)
- mask = UNIT_MASK_GUARDIAN;
- else if(properties->Type == SUMMON_TYPE_TOTEM)
- mask = UNIT_MASK_TOTEM;
- else if(properties->Category == SUMMON_CATEGORY_VEHICLE)
- mask = UNIT_MASK_MINION;
- else if(properties->Type == SUMMON_TYPE_VEHICLE
- || properties->Type == SUMMON_TYPE_VEHICLE2)
- mask = UNIT_MASK_SUMMON;
- else if(properties->Category == SUMMON_CATEGORY_PUPPET)
- mask = UNIT_MASK_PUPPET;
- else if(properties->Type == SUMMON_TYPE_MINIPET)
- mask = UNIT_MASK_MINION;
- else if (properties->Flags & 512) // Mirror Image, Summon Gargoyle
- mask = UNIT_MASK_GUARDIAN;
+ switch(properties->Category)
+ {
+ case SUMMON_CATEGORY_PET: mask = UNIT_MASK_GUARDIAN; break;
+ case SUMMON_CATEGORY_PUPPET: mask = UNIT_MASK_PUPPET; break;
+ case SUMMON_CATEGORY_VEHICLE: mask = UNIT_MASK_MINION; break;
+ default:
+ switch(properties->Type)
+ {
+ case SUMMON_TYPE_MINION:
+ case SUMMON_TYPE_GUARDIAN:
+ mask = UNIT_MASK_GUARDIAN; break;
+ case SUMMON_TYPE_TOTEM:
+ mask = UNIT_MASK_TOTEM; break;
+ case SUMMON_TYPE_VEHICLE:
+ case SUMMON_TYPE_VEHICLE2:
+ mask = UNIT_MASK_SUMMON; break;
+ case SUMMON_TYPE_MINIPET:
+ mask = UNIT_MASK_MINION; break;
+ default:
+ if(properties->Flags & 512) // Mirror Image, Summon Gargoyle
+ mask = UNIT_MASK_GUARDIAN;
+ break;
+ }
+ break;
+ }
}
uint32 phase = PHASEMASK_NORMAL, team = 0;
@@ -1872,20 +1880,19 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
return NULL;
}
- Map *map = GetMap();
- uint32 pet_number = objmgr.GeneratePetNumber();
- if(!pet->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, GetPhaseMask(), entry, pet_number))
+ pet->Relocate(x, y, z, ang);
+ if(!pet->IsPositionValid())
{
- sLog.outError("no such creature entry %u", entry);
+ sLog.outError("ERROR: Pet (guidlow %d, entry %d) not summoned. Suggested coordinates isn't valid (X: %f Y: %f)",pet->GetGUIDLow(),pet->GetEntry(),pet->GetPositionX(),pet->GetPositionY());
delete pet;
return NULL;
}
- pet->Relocate(x, y, z, ang);
-
- if(!pet->IsPositionValid())
+ Map *map = GetMap();
+ uint32 pet_number = objmgr.GeneratePetNumber();
+ if(!pet->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, GetPhaseMask(), entry, pet_number))
{
- sLog.outError("ERROR: Pet (guidlow %d, entry %d) not summoned. Suggested coordinates isn't valid (X: %f Y: %f)",pet->GetGUIDLow(),pet->GetEntry(),pet->GetPositionX(),pet->GetPositionY());
+ sLog.outError("no such creature entry %u", entry);
delete pet;
return NULL;
}