diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 812def559..b5903a6ed 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -306,14 +306,13 @@ bool Creature::UpdateEntry(uint32 Entry, uint32 team, const CreatureData *data ) SetCanModifyStats(true); UpdateAllStats(); - FactionTemplateEntry const* factionTemplate = sFactionTemplateStore.LookupEntry(GetCreatureInfo()->faction_A); - if (factionTemplate) // check and error show at loading templates + // checked and error show at loading templates + if (FactionTemplateEntry const* factionTemplate = sFactionTemplateStore.LookupEntry(GetCreatureInfo()->faction_A)) { - FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionTemplate->faction); - if (factionEntry) - if( !(GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_CIVILIAN) && - (factionEntry->team == ALLIANCE || factionEntry->team == HORDE) ) - SetPvP(true); + if (factionTemplate->factionFlags & FACTION_TEMPLATE_FLAG_PVP) + SetPvP(true); + else + SetPvP(false); } for(int i=0; i < CREATURE_MAX_SPELLS; ++i) @@ -1971,12 +1970,12 @@ bool Creature::LoadCreaturesAddon(bool reload) if (cainfo->bytes2 != 0) { // 0 SheathState - // 1 Bytes2Flags + // 1 UnitPVPStateFlags Set at Creature::UpdateEntry (SetPvp()) // 2 UnitRename Pet only, so always 0 for default creature // 3 ShapeshiftForm Must be determined/set by shapeshift spell/aura SetByteValue(UNIT_FIELD_BYTES_2, 0, uint8(cainfo->bytes2 & 0xFF)); - SetByteValue(UNIT_FIELD_BYTES_2, 1, uint8((cainfo->bytes2 >> 8) & 0xFF)); + //SetByteValue(UNIT_FIELD_BYTES_2, 1, uint8((cainfo->bytes2 >> 8) & 0xFF)); //SetByteValue(UNIT_FIELD_BYTES_2, 2, uint8((cainfo->bytes2 >> 16) & 0xFF)); SetByteValue(UNIT_FIELD_BYTES_2, 2, 0); //SetByteValue(UNIT_FIELD_BYTES_2, 3, uint8((cainfo->bytes2 >> 24) & 0xFF)); diff --git a/src/game/DBCEnums.h b/src/game/DBCEnums.h index d56cb7e14..9eae1082d 100644 --- a/src/game/DBCEnums.h +++ b/src/game/DBCEnums.h @@ -268,7 +268,8 @@ enum SpawnMask enum FactionTemplateFlags { - FACTION_TEMPLATE_FLAG_CONTESTED_GUARD = 0x00001000, // faction will attack players that were involved in PvP combats + FACTION_TEMPLATE_FLAG_PVP = 0x00000800, // flagged for PvP + FACTION_TEMPLATE_FLAG_CONTESTED_GUARD = 0x00001000, // faction will attack players that were involved in PvP combats }; enum FactionMasks diff --git a/src/game/Unit.h b/src/game/Unit.h index cfba59cd7..04ba5ec70 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -195,7 +195,7 @@ enum SheathState #define MAX_SHEATH_STATE 3 // byte (1 from 0..3) of UNIT_FIELD_BYTES_2 -enum UnitBytes2_Flags +enum UnitPVPStateFlags { UNIT_BYTE2_FLAG_PVP = 0x01, UNIT_BYTE2_FLAG_UNK1 = 0x02, diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 8dad645a8..ba758ebda 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 "8825" + #define REVISION_NR "8826" #endif // __REVISION_NR_H__