BOOL NpcCastleSwitch(LPOBJ lpNpc, LPOBJ lpObj) //GS-CS Decompiled 100% { #if(GS_CASTLE==1) if(gObjIsConnected(lpObj->m_Index) == FALSE ) { return TRUE; } if(g_CastleSiege.GetCastleState() != 7) { return TRUE; } if(lpObj->m_btCsJoinSide < 2) { return TRUE; } if((lpObj->Y - lpNpc->Y) > 3 || (lpObj->X - lpNpc->X) > 3) { return TRUE; } if(g_CastleSiege.CheckGuardianStatueExist()) { MsgOutput(lpObj->m_Index,lMsg.Get(MSGGET(6, 200))); return TRUE; } int iUserIndex = g_CastleSiege.GetCrownSwitchUserIndex(lpNpc->Class); if(!gObjIsConnected(iUserIndex)) { GCAnsCsAccessSwitchState(lpObj->m_Index,lpNpc->m_Index,-1,1); g_CastleSiege.SetCrownSwitchUserIndex(lpNpc->Class,lpObj->m_Index); LogAddTD("[CastleSiege] [%s][%s] Start to Push Castle Crown Switch (GUILD:%s) - CS X:%d/Y:%d",lpObj->AccountID,lpObj->Name,lpObj->GuildName,lpNpc->X,lpNpc->Y); } else if(lpObj->m_Index != iUserIndex) { GCAnsCsAccessSwitchState(lpObj->m_Index,lpNpc->m_Index,iUserIndex,2); } return TRUE; #else return TRUE; #endif }
BOOL NpcCastleSwitch(LPOBJ lpNpc, LPOBJ lpObj) { #if (GS_CASTLE == 1) if(gObjIsConnected(lpObj->m_Index) == FALSE) return TRUE; if(g_CastleSiege.GetCastleState() != CASTLESIEGE_STATE_STARTSIEGE) return TRUE; if(lpObj->m_btCsJoinSide < 2) return TRUE; if( abs( lpObj->Y - lpNpc->Y) > 3 || abs(lpObj->X - lpNpc->X) > 3) return TRUE; if(g_CastleSiege.CheckGuardianStatueExist() == TRUE) { MsgOutput(lpObj->m_Index,lMsg.Get(MSGGET(6,200))); return TRUE; } int SwitchIndex = g_CastleSiege.GetCrownSwitchUserIndex(lpNpc->Class); if( gObjIsConnected(SwitchIndex) == FALSE) { GCAnsCsAccessSwitchState(lpObj->m_Index,lpNpc->m_Index,-1,1); g_CastleSiege.SetCrownSwitchUserIndex(lpNpc->Class,lpObj->m_Index); LogAddTD("[CastleSiege] [%s][%s] Start to Push Castle Crown Switch (GUILD:%s) - CS X:%d/Y:%d", lpObj->AccountID,lpObj->Name,lpObj->GuildName,lpNpc->X,lpNpc->Y); } else if(lpObj->m_Index != SwitchIndex) { GCAnsCsAccessSwitchState(lpObj->m_Index,lpNpc->m_Index,SwitchIndex,2); } #endif return TRUE; }
void CCastleCrownSwitch::CastleCrownSwitchAct(int iIndex) { if ( !gObjIsConnected(iIndex)) return; if ( gObj[iIndex].Type != OBJ_NPC || ((gObj[iIndex].Class < 217 )?FALSE:(gObj[iIndex].Class > 219-1 )?FALSE:TRUE)==FALSE ) return; if ( !gObjIsConnected(g_CastleSiege.GetCrownSwitchUserIndex(gObj[iIndex].Class)) ) { g_CastleSiege.ResetCrownSwitchUserIndex(gObj[iIndex].Class); if ( g_CastleSiege.GetRegCrownAvailable() == 1 ) { g_CastleSiege.SetRegCrownAvailable(FALSE); g_CastleSiege.NotifyCrownState(1); } return; } LPOBJ lpObj= &gObj[iIndex]; LPOBJ lpUserObj = &gObj[g_CastleSiege.GetCrownSwitchUserIndex(gObj[iIndex].Class)]; g_CastleSiege.NotifyCrownSwitchInfo(iIndex); if ( lpUserObj->MapNumber == MAP_INDEX_CASTLESIEGE && lpUserObj->m_btCsJoinSide >= 2 ) { if ( abs(lpObj->Y - lpUserObj->Y) <= 3 && abs(lpObj->X - lpUserObj->X) <= 3 ) { int iCrownIndex1 = g_CastleSiege.GetCrownSwitchUserIndex(217); int iCrownIndex2 = g_CastleSiege.GetCrownSwitchUserIndex(218); if (gObjIsConnected(iCrownIndex1) && gObjIsConnected(iCrownIndex2) ) { if ( gObj[iCrownIndex1].m_btCsJoinSide == gObj[iCrownIndex2].m_btCsJoinSide ) { if ( g_CastleSiege.GetRegCrownAvailable() == 0 ) { g_CastleSiege.SetRegCrownAvailable(TRUE); g_CastleSiege.NotifyCrownState(0); } } } } else { GCAnsCsAccessSwitchState(lpUserObj->m_Index, lpObj->m_Index, -1, 0); g_CastleSiege.ResetCrownSwitchUserIndex(gObj[iIndex].Class); if ( g_CastleSiege.GetRegCrownAvailable() == 1 ) { g_CastleSiege.SetRegCrownAvailable(FALSE); g_CastleSiege.NotifyCrownState(1); } LogAddTD("[CastleSiege] [%s][%s] Push Castle Crown Switch Canceled (GUILD:%s) - CS X:%d/Y:%d", lpUserObj->AccountID, lpUserObj->Name, lpUserObj->GuildName, lpObj->X, lpObj->Y); } } else { GCAnsCsAccessSwitchState(lpUserObj->m_Index, lpObj->m_Index, -1, 0); g_CastleSiege.ResetCrownSwitchUserIndex(gObj[iIndex].Class); if ( g_CastleSiege.GetRegCrownAvailable() == 1 ) { g_CastleSiege.SetRegCrownAvailable(FALSE); g_CastleSiege.NotifyCrownState(1); } } }