Skip to content

Commit

Permalink
Added pending changes.
Browse files Browse the repository at this point in the history
  • Loading branch information
tomrus88 committed Nov 15, 2010
1 parent 0c68757 commit 349e6ed
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 47 deletions.
2 changes: 1 addition & 1 deletion src/game/DBCStores.cpp
Expand Up @@ -997,7 +997,7 @@ bool IsPointInAreaTriggerZone(AreaTriggerEntry const* atEntry, uint32 mapid, flo
// rotate the players position instead of rotating the whole cube, that way we can make a simplified
// is-in-cube check and we have to calculate only one point instead of 4

// 2PI = 360 , keep in mind that ingame orientation is counter-clockwise
// 2PI = 360
double rotation = 2*M_PI-atEntry->box_orientation;
double sinVal = sin(rotation);
double cosVal = cos(rotation);
Expand Down
18 changes: 9 additions & 9 deletions src/game/Group.h
Expand Up @@ -80,17 +80,17 @@ enum RollVoteMask
};


enum GroupMemberOnlineStatus
enum GroupMemberFlags
{
MEMBER_STATUS_OFFLINE = 0x0000,
MEMBER_STATUS_ONLINE = 0x0001,
MEMBER_STATUS_PVP = 0x0002,
MEMBER_STATUS_UNK0 = 0x0004, // dead? (health=0)
MEMBER_STATUS_UNK1 = 0x0008, // ghost? (health=1)
MEMBER_STATUS_UNK2 = 0x0010, // never seen
MEMBER_STATUS_UNK3 = 0x0020, // never seen
MEMBER_STATUS_UNK4 = 0x0040, // appears with dead and ghost flags
MEMBER_STATUS_UNK5 = 0x0080, // never seen
MEMBER_STATUS_ONLINE = 0x0001, // Lua_UnitIsConnected
MEMBER_STATUS_PVP = 0x0002, // Lua_UnitIsPVP
MEMBER_STATUS_DEAD = 0x0004, // Lua_UnitIsDead
MEMBER_STATUS_GHOST = 0x0008, // Lua_UnitIsGhost
MEMBER_STATUS_PVP_FFA = 0x0010, // Lua_UnitIsPVPFreeForAll
MEMBER_STATUS_UNK3 = 0x0020, // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
MEMBER_STATUS_AFK = 0x0040, // Lua_UnitIsAFK
MEMBER_STATUS_DND = 0x0080, // Lua_UnitIsDND
};

enum GroupType // group type flags?
Expand Down
40 changes: 19 additions & 21 deletions src/game/MiscHandler.cpp
Expand Up @@ -746,63 +746,61 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket & recv_data)

if(!GetPlayer()->isGameMaster())
{
uint32 missingLevel = 0;
bool missingItem = false;
bool missingLevel = false;
bool missingQuest = false;

if(GetPlayer()->getLevel() < at->requiredLevel && !sWorld.getConfig(CONFIG_BOOL_INSTANCE_IGNORE_LEVEL))
missingLevel = at->requiredLevel;
missingLevel = true;

// must have one or the other, report the first one that's missing
uint32 missingItem = 0;
if(at->requiredItem)
{
if(!GetPlayer()->HasItemCount(at->requiredItem, 1) &&
(!at->requiredItem2 || !GetPlayer()->HasItemCount(at->requiredItem2, 1)))
missingItem = at->requiredItem;
missingItem = true;
}
else if(at->requiredItem2 && !GetPlayer()->HasItemCount(at->requiredItem2, 1))
missingItem = at->requiredItem2;
missingItem = true;

MapEntry const* mapEntry = sMapStore.LookupEntry(at->target_mapId);
if(!mapEntry)
return;

bool isRegularTargetMap = GetPlayer()->GetDifficulty(mapEntry->IsRaid()) == REGULAR_DIFFICULTY;

uint32 missingKey = 0;
if (!isRegularTargetMap)
{
if(at->heroicKey)
{
if(!GetPlayer()->HasItemCount(at->heroicKey, 1) &&
(!at->heroicKey2 || !GetPlayer()->HasItemCount(at->heroicKey2, 1)))
missingKey = at->heroicKey;
missingItem = true;
}
else if(at->heroicKey2 && !GetPlayer()->HasItemCount(at->heroicKey2, 1))
missingKey = at->heroicKey2;
missingItem = true;
}

uint32 missingQuest = 0;
if (!isRegularTargetMap && mapEntry->IsDungeon())
{
if (at->requiredQuestHeroic && !GetPlayer()->GetQuestRewardStatus(at->requiredQuestHeroic))
missingQuest = at->requiredQuestHeroic;
missingQuest = true;
}
else
{
if (at->requiredQuest && !GetPlayer()->GetQuestRewardStatus(at->requiredQuest))
missingQuest = at->requiredQuest;
missingQuest = true;
}

if(missingLevel || missingItem || missingKey || missingQuest)
if(missingItem || missingLevel || missingQuest)
{
// TODO: all this is probably wrong
if(missingItem)
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED_AND_ITEM), at->requiredLevel, ObjectMgr::GetItemPrototype(missingItem)->Name1);
else if(missingKey)
GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, isRegularTargetMap ? DUNGEON_DIFFICULTY_NORMAL : DUNGEON_DIFFICULTY_HEROIC);
else if(missingQuest)
// hack for "Opening of the Dark Portal"
if(missingQuest && at->target_mapId == 269)
SendAreaTriggerMessage("%s", at->requiredFailedText.c_str());
else if(missingLevel)
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED), missingLevel);
// hack for TBC heroics
else if(missingLevel && !mapEntry->IsRaid() && GetPlayer()->GetDifficulty(false) == DUNGEON_DIFFICULTY_HEROIC && mapEntry->addon == 1)
SendAreaTriggerMessage(GetMangosString(LANG_LEVEL_MINREQUIRED), at->requiredLevel);
else
GetPlayer()->SendTransferAborted(at->target_mapId, TRANSFER_ABORT_DIFFICULTY, GetPlayer()->GetDifficulty(mapEntry->IsRaid()));
return;
}
}
Expand Down
7 changes: 5 additions & 2 deletions src/game/SharedDefines.h
Expand Up @@ -1971,6 +1971,9 @@ enum CreatureTypeFlags
CREATURE_TYPEFLAGS_UNK27 = 0x04000000, // creature has no type, or forces creature to be considered as in party, may be related to creature assistance
CREATURE_TYPEFLAGS_UNK28 = 0x08000000, // used in Lua_ForceGossip
CREATURE_TYPEFLAGS_UNK29 = 0x10000000, // no idea, but it used by client
CREATURE_TYPEFLAGS_UNK30 = 0x20000000,
CREATURE_TYPEFLAGS_UNK31 = 0x40000000,
CREATURE_TYPEFLAGS_QUEST_BOSS = 0x80000000, // Lua_UnitIsQuestBoss
};

enum CreatureEliteType
Expand Down Expand Up @@ -2765,9 +2768,9 @@ enum TradeStatus

// we need to stick to 1 version or half of the stuff will work for someone
// others will not and opposite
// will only support WoW, WoW:TBC, WoW:WotLK and WoW:Cataclysm 4.0.3 client build 13221...
// will only support WoW, WoW:TBC, WoW:WotLK and WoW:Cataclysm 4.0.3 client build 13287...

#define EXPECTED_MANGOSD_CLIENT_BUILD {13221, 0}
#define EXPECTED_MANGOSD_CLIENT_BUILD {13287, 0}

// max supported expansion level in mangosd
// NOTE: not set it more that supported by targeted client version with all expansions installed
Expand Down
30 changes: 16 additions & 14 deletions src/game/UpdateFields.h
Expand Up @@ -19,7 +19,7 @@
#ifndef _UPDATEFIELDS_AUTO_H
#define _UPDATEFIELDS_AUTO_H

// Auto generated for version 4, 0, 3, 13221
// Auto generated for version 4, 0, 3, 13287

enum EObjectFields
{
Expand Down Expand Up @@ -174,19 +174,21 @@ enum EUnitFields
UNIT_FIELD_BASE_HEALTH = OBJECT_END + 0x0083, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_BYTES_2 = OBJECT_END + 0x0084, // Size: 1, Type: BYTES, Flags: PUBLIC
UNIT_FIELD_ATTACK_POWER = OBJECT_END + 0x0085, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MODS = OBJECT_END + 0x0086, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0087, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x0088, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MODS = OBJECT_END + 0x0089, // Size: 1, Type: TWO_SHORT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x008A, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x008B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x008C, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x008D, // Size: 7, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0094, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x009B, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x009C, // Size: 1, Type: FLOAT, Flags: PUBLIC
UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x009D, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_END = OBJECT_END + 0x009E,
UNIT_FIELD_ATTACK_POWER_MOD_POS = OBJECT_END + 0x0086, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x0087, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x0088, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER = OBJECT_END + 0x0089, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MOD_POS = OBJECT_END + 0x008A, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MOD_NEG = OBJECT_END + 0x008B, // Size: 1, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_RANGED_ATTACK_POWER_MULTIPLIER = OBJECT_END + 0x008C, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MINRANGEDDAMAGE = OBJECT_END + 0x008D, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXRANGEDDAMAGE = OBJECT_END + 0x008E, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MODIFIER = OBJECT_END + 0x008F, // Size: 7, Type: INT, Flags: PRIVATE, OWNER
UNIT_FIELD_POWER_COST_MULTIPLIER = OBJECT_END + 0x0096, // Size: 7, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_MAXHEALTHMODIFIER = OBJECT_END + 0x009D, // Size: 1, Type: FLOAT, Flags: PRIVATE, OWNER
UNIT_FIELD_HOVERHEIGHT = OBJECT_END + 0x009E, // Size: 1, Type: FLOAT, Flags: PUBLIC
UNIT_FIELD_MAXITEMLEVEL = OBJECT_END + 0x009F, // Size: 1, Type: INT, Flags: PUBLIC
UNIT_END = OBJECT_END + 0x00A0,

PLAYER_DUEL_ARBITER = UNIT_END + 0x0000, // Size: 2, Type: LONG, Flags: PUBLIC
PLAYER_FLAGS = UNIT_END + 0x0002, // Size: 1, Type: INT, Flags: PUBLIC
Expand Down

0 comments on commit 349e6ed

Please sign in to comment.