Beispiel #1
0
void ReputationMgr::UpdateReputationFlags()
{
    _visibleFactionCount = 0;

    for (FactionStateList::iterator itr = _factions.begin(); itr != _factions.end(); itr++)
    {
        FactionState* faction = &itr->second;
        if (!faction)
            continue;

        FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction->ID);
        if (!factionEntry)
            continue;

        if (faction->Flags != GetDefaultStateFlags(factionEntry))
        {
            faction->Flags |= GetDefaultStateFlags(factionEntry); // Bitwise OR in case of some DB flags
            faction->needSave = true;
            faction->needSend = true;
        }
        
        if (faction->Flags & FACTION_FLAG_VISIBLE)
            _visibleFactionCount++;
    }
}
Beispiel #2
0
void ReputationMgr::Initialize()
{
    _factions.clear();
    _visibleFactionCount = 0;
    _honoredFactionCount = 0;
    _reveredFactionCount = 0;
    _exaltedFactionCount = 0;
    _sendFactionIncreased = false;

    for (unsigned int i = 1; i < sFactionStore.GetNumRows(); i++)
    {
        FactionEntry const* factionEntry = sFactionStore.LookupEntry(i);

        if (factionEntry && (factionEntry->reputationListID >= 0))
        {
            FactionState newFaction;
            newFaction.ID = factionEntry->ID;
            newFaction.ReputationListID = factionEntry->reputationListID;
            newFaction.Standing = 0;
            newFaction.Flags = GetDefaultStateFlags(factionEntry);
            newFaction.needSend = true;
            newFaction.needSave = true;

            if (newFaction.Flags & FACTION_FLAG_VISIBLE)
                ++_visibleFactionCount;

            UpdateRankCounters(REP_HOSTILE, GetBaseRank(factionEntry));

            _factions[newFaction.ReputationListID] = newFaction;
        }
    }
}
Beispiel #3
0
/**
 * This method is called to set the defaults for the originally visible, at peace,
 * at war, or invisible for the current race.
 *
 */
void ReputationMgr::SetBaseDefaults()
{
    for(unsigned int i = 1; i < sFactionStore.GetNumRows(); i++)
    {
        FactionEntry const *factionEntry = sFactionStore.LookupEntry(i);

        if( factionEntry && (factionEntry->reputationListID >= 0))
        {
            FactionState* faction = &m_factions[factionEntry->reputationListID];
            uint32 defaultFlags = GetDefaultStateFlags(factionEntry);

            // if faction matches any flags then update
            // this resets the default standings to 0, should be better way for this
            if( (defaultFlags & FACTION_FLAG_VISIBLE) ||
                (defaultFlags & FACTION_FLAG_INVISIBLE_FORCED) ||
                (defaultFlags & FACTION_FLAG_AT_WAR) ||
                (defaultFlags & FACTION_FLAG_PEACE_FORCED) )
            {
                if (faction->Standing != 0)
                {
                    faction->Standing = 0;
                    faction->needSend = true;
                }

                if (faction->Flags != defaultFlags)
                {
                    faction->Flags = defaultFlags;
                    faction->needSend = true;
                }
            }
        }
    }
}
Beispiel #4
0
void ReputationMgr::Initialize()
{
    m_factions.clear();

    for(unsigned int i = 1; i < sFactionStore.GetNumRows(); i++)
    {
        FactionEntry const *factionEntry = sFactionStore.LookupEntry(i);

        if( factionEntry && (factionEntry->reputationListID >= 0))
        {
            FactionState newFaction;
            newFaction.ID = factionEntry->ID;
            newFaction.ReputationListID = factionEntry->reputationListID;
            newFaction.Standing = 0;
            newFaction.Flags = GetDefaultStateFlags(factionEntry);
            newFaction.Changed = true;

            m_factions[newFaction.ReputationListID] = newFaction;
        }
    }
}