예제 #1
0
bool OPvPCapturePointEP_EWT::Update(uint32 diff)
{
    if(OPvPCapturePoint::Update(diff))
    {
        if(m_OldState != m_State || fabs(m_ShiftPhase) == m_ShiftMaxPhase)  // state won't change, only phase when maxed out!
        {
            // if changing from controlling alliance to horde or vice versa
            if( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
            {
                sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetRibonStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_A));
                ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
            }
            else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
            {
                sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetRibonStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_H));
                ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
            }

            uint32 artkit = 21;

            switch(m_State)
            {
            case OBJECTIVESTATE_ALLIANCE:
                if(m_ShiftPhase == m_ShiftMaxPhase)
                    m_TowerState = EP_TS_A;
                else
                    m_TowerState = EP_TS_A_P;
                artkit = 2;
                SummonSupportUnitAtNorthpassTower(ALLIANCE);
                ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = ALLIANCE;
                if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetRibonStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A));
                break;
            case OBJECTIVESTATE_HORDE:
                if(m_ShiftPhase == -m_ShiftMaxPhase)
                    m_TowerState = EP_TS_H;
                else
                    m_TowerState = EP_TS_H_P;
                artkit = 1;
                SummonSupportUnitAtNorthpassTower(HORDE);
                ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = HORDE;
                if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,objmgr.GetRibonStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_H));
                break;
            case OBJECTIVESTATE_NEUTRAL:
                m_TowerState = EP_TS_N;
                break;
            case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
            case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
                m_TowerState = EP_TS_N_A;
                break;
            case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
            case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
                m_TowerState = EP_TS_N_H;
                break;
            }

            GameObject* flag = HashMapHolder<GameObject>::Find(m_CapturePointGUID);
            GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_EWT_FLAGS]);
            if(flag)
            {
                flag->SetGoArtKit(artkit);
                flag->SendUpdateObjectToAllExcept(NULL);
            }
            if(flag2)
            {
                flag2->SetGoArtKit(artkit);
                flag2->SendUpdateObjectToAllExcept(NULL);
            }


            UpdateTowerState();

            // complete quest objective
            if(m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
                SendObjectiveComplete(EP_EWT_CM, 0);
        }

        if(m_ShiftPhase != m_OldPhase)
        {
            // send this too, sometimes the slider disappears, dunno why :(
            SendUpdateWorldState(EP_UI_TOWER_SLIDER_DISPLAY, 1);
            // send these updates to only the ones in this objective
            uint32 phase = (uint32)ceil(( m_ShiftPhase + m_ShiftMaxPhase) / ( 2 * m_ShiftMaxPhase ) * 100.0f);
            SendUpdateWorldState(EP_UI_TOWER_SLIDER_POS, phase);
            // send this too, sometimes it resets :S
            SendUpdateWorldState(EP_UI_TOWER_SLIDER_N, m_NeutralValue);
        }
        return m_OldState != m_State;
    }
    return false;
}
예제 #2
0
void OPvPCapturePointEP_EWT::ChangeState()
{
    // if changing from controlling alliance to horde or vice versa
    if ( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
    {
        sWorld->SendZoneText(EP_GraveYardZone,sObjectMgr->GetStrawberryStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_A));
        ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
    }
    else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
    {
        sWorld->SendZoneText(EP_GraveYardZone,sObjectMgr->GetStrawberryStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_H));
        ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
    }

    uint32 artkit = 21;

    switch (m_State)
    {
        case OBJECTIVESTATE_ALLIANCE:
            m_TowerState = EP_TS_A;
            artkit = 2;
            SummonSupportUnitAtNorthpassTower(ALLIANCE);
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = ALLIANCE;
            if (m_OldState != m_State) sWorld->SendZoneText(EP_GraveYardZone,sObjectMgr->GetStrawberryStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A));
            break;
        case OBJECTIVESTATE_HORDE:
            m_TowerState = EP_TS_H;
            artkit = 1;
            SummonSupportUnitAtNorthpassTower(HORDE);
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = HORDE;
            if (m_OldState != m_State) sWorld->SendZoneText(EP_GraveYardZone,sObjectMgr->GetStrawberryStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_H));
            break;
        case OBJECTIVESTATE_NEUTRAL:
            m_TowerState = EP_TS_N;
            break;
        case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
        case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
            m_TowerState = EP_TS_N_A;
            break;
        case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
        case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
            m_TowerState = EP_TS_N_H;
            break;
    }

    GameObject* flag = HashMapHolder<GameObject>::Find(m_capturePointGUID);
    GameObject* flag2 = HashMapHolder<GameObject>::Find(m_Objects[EP_EWT_FLAGS]);
    if (flag)
    {
        flag->SetGoArtKit(artkit);
    }
    if (flag2)
    {
        flag2->SetGoArtKit(artkit);
    }

    UpdateTowerState();

    // complete quest objective
    if (m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
        SendObjectiveComplete(EP_EWT_CM, 0);
}
예제 #3
0
void OPvPCapturePointEP_EWT::ChangeState()
{
    if(fabs(m_value) == m_maxValue)  // state won't change, only phase when maxed out!
    {
        // if changing from controlling alliance to horde or vice versa
        if( m_OldState == OBJECTIVESTATE_ALLIANCE && m_OldState != m_State )
        {
            sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetMangosStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_A));
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
        }
        else if ( m_OldState == OBJECTIVESTATE_HORDE && m_OldState != m_State )
        {
            sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetMangosStringForDBCLocale(LANG_OPVP_EP_LOOSE_EWT_H));
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = 0;
        }

        uint32 artkit = 21;

        switch(m_State)
        {
        case OBJECTIVESTATE_ALLIANCE:
            if(m_value == m_maxValue)
                m_TowerState = EP_TS_A;
            else
                m_TowerState = EP_TS_A_P;
            artkit = 2;
            SummonSupportUnitAtNorthpassTower(ALLIANCE);
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = ALLIANCE;
            if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetMangosStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_A));
            break;
        case OBJECTIVESTATE_HORDE:
            if(m_value == -m_maxValue)
                m_TowerState = EP_TS_H;
            else
                m_TowerState = EP_TS_H_P;
            artkit = 1;
            SummonSupportUnitAtNorthpassTower(HORDE);
            ((OutdoorPvPEP*)m_PvP)->EP_Controls[EP_EWT] = HORDE;
            if(m_OldState != m_State) sWorld.SendZoneText(EP_GraveYardZone,sObjectMgr.GetMangosStringForDBCLocale(LANG_OPVP_EP_CAPTURE_EWT_H));
            break;
        case OBJECTIVESTATE_NEUTRAL:
            m_TowerState = EP_TS_N;
            break;
        case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE:
        case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE:
            m_TowerState = EP_TS_N_A;
            break;
        case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE:
        case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE:
            m_TowerState = EP_TS_N_H;
            break;
        }

        GameObject* flag = ObjectAccessor::GetGameObjectInWorld(ObjectGuid(HIGHGUID_GAMEOBJECT, m_capturePointGUID));
        GameObject * flag2 = ObjectAccessor::GetGameObjectInWorld(ObjectGuid(HIGHGUID_GAMEOBJECT, m_Objects[EP_EWT_FLAGS]));
        if(flag)
        {
            flag->SetGoArtKit(artkit);
        }
        if(flag2)
        {
            flag2->SetGoArtKit(artkit);
        }

        UpdateTowerState();

        // complete quest objective
        if(m_TowerState == EP_TS_A || m_TowerState == EP_TS_H)
            SendObjectiveComplete(EP_EWT_CM, 0);
    }
}