void CCastleCrown::CastleCrownAct(int iIndex) { if ( !gObjIsConnected(iIndex)) return; if ( gObj[iIndex].Type != OBJ_NPC || gObj[iIndex].Class != 216 ) return; if ( !gObjIsConnected(g_CastleSiege.GetCrownUserIndex()) ) { g_CastleSiege.ResetCrownUserIndex(); g_CastleSiege.SetCrownAccessUserX(0); g_CastleSiege.SetCrownAccessUserY(0); g_CastleSiege.ResetCrownAccessTickCount(); return; } LPOBJ lpObj = &gObj[iIndex]; LPOBJ lpUserObj = &gObj[g_CastleSiege.GetCrownUserIndex()]; if ( lpUserObj->MapNumber == MAP_INDEX_CASTLESIEGE && lpUserObj->m_btCsJoinSide >= 2 && lpUserObj->m_bCsGuildInvolved == 1 ) { if ( lpUserObj->Y == g_CastleSiege.GetCrownAccessUserY() && lpUserObj->X == g_CastleSiege.GetCrownAccessUserX() ) { if ( gObjIsConnected(g_CastleSiege.GetCrownUserIndex()) && gObjIsConnected(g_CastleSiege.GetCrownSwitchUserIndex(217)) && gObjIsConnected(g_CastleSiege.GetCrownSwitchUserIndex(218)) ) { if ( gObj[g_CastleSiege.GetCrownUserIndex()].m_btCsJoinSide == gObj[g_CastleSiege.GetCrownSwitchUserIndex(217)].m_btCsJoinSide && gObj[g_CastleSiege.GetCrownUserIndex()].m_btCsJoinSide == gObj[g_CastleSiege.GetCrownSwitchUserIndex(218)].m_btCsJoinSide ) { DWORD dwTime = GetTickCount() - g_CastleSiege.GetCrownAccessTickCount(); LogAddTD("[CastleSiege] [Reg. Accumulating] Accumulated Crown AccessTime : acc(%d) + %d [%s](%s)(%s)", lpUserObj->m_iAccumulatedCrownAccessTime, dwTime, lpUserObj->GuildName, lpUserObj->AccountID, lpUserObj->Name); } else { GCAnsCsAccessCrownState(lpUserObj->m_Index, 2); g_CastleSiege.ResetCrownUserIndex(); g_CastleSiege.SetCrownAccessUserX(0); g_CastleSiege.SetCrownAccessUserY(0); g_CastleSiege.ResetCrownAccessTickCount(); LogAddTD("[CastleSiege] [%s][%s] Register Castle Crown Canceled (GUILD:%s)", lpUserObj->AccountID, lpUserObj->Name, lpUserObj->GuildName); } } else { GCAnsCsAccessCrownState(lpUserObj->m_Index, 2); g_CastleSiege.ResetCrownUserIndex(); g_CastleSiege.SetCrownAccessUserX(0); g_CastleSiege.SetCrownAccessUserY(0); g_CastleSiege.ResetCrownAccessTickCount(); } } else { GCAnsCsAccessCrownState(lpUserObj->m_Index, 2); g_CastleSiege.ResetCrownUserIndex(); g_CastleSiege.SetCrownAccessUserX(0); g_CastleSiege.SetCrownAccessUserY(0); g_CastleSiege.ResetCrownAccessTickCount(); } } else { GCAnsCsAccessCrownState(lpUserObj->m_Index, 2); g_CastleSiege.ResetCrownUserIndex(); g_CastleSiege.SetCrownAccessUserX(0); g_CastleSiege.SetCrownAccessUserY(0); g_CastleSiege.ResetCrownAccessTickCount(); } }
BOOL NpcCastleCrown(LPOBJ lpNpc, LPOBJ lpObj) //GS-CS Decompiled 100% { #if(GS_CASTLE==1) if ( gObjIsConnected(lpObj->m_Index) == FALSE ) //Good { return TRUE; } if(g_CastleSiege.GetCastleState() != 7) //Good { return TRUE; } if(lpObj->m_btCsJoinSide < 2 || lpObj->m_bCsGuildInvolved == FALSE ) { return TRUE; } if(g_CastleSiege.CheckUnionGuildMaster(lpObj->m_Index) == FALSE ) { return TRUE; } if((lpObj->Y - lpNpc->Y) > 3 || (lpObj->X - lpNpc->X) > 3) { return TRUE; } if(g_CastleSiege.GetRegCrownAvailable() == FALSE ) { return TRUE; } int iUserIndex = g_CastleSiege.GetCrownUserIndex(); if(gObjIsConnected(iUserIndex) == FALSE ) { int iSwitchIndex1 = g_CastleSiege.GetCrownSwitchUserIndex(217); int iSwitchIndex2 = g_CastleSiege.GetCrownSwitchUserIndex(218); if(gObjIsConnected(iSwitchIndex1) == FALSE || gObjIsConnected(iSwitchIndex2) == FALSE ) { LogAddTD("[CastleSiege] [%s][%s] Failed to Register Castle Crown (GUILD:%s)",lpObj->AccountID,lpObj->Name,lpObj->GuildName); return TRUE; } if(lpObj->m_btCsJoinSide != gObj[iSwitchIndex1].m_btCsJoinSide || lpObj->m_btCsJoinSide != gObj[iSwitchIndex2].m_btCsJoinSide) { GCAnsCsAccessCrownState(lpObj->m_Index,4); LogAddTD("[CastleSiege] [%s][%s] Failed to Register Castle Crown (GUILD:%s) (S1:%s/%s)(S2:%s/%s)",lpObj->AccountID,lpObj->Name,lpObj->GuildName,gObj[iSwitchIndex1].Name,gObj[iSwitchIndex1].GuildName,gObj[iSwitchIndex2].Name,gObj[iSwitchIndex2].GuildName); return TRUE; } else { GCAnsCsAccessCrownState(lpObj->m_Index,0); g_CastleSiege.SetCrownUserIndex(lpObj->m_Index); g_CastleSiege.SetCrownAccessUserX(lpObj->X); g_CastleSiege.SetCrownAccessUserY(lpObj->Y); g_CastleSiege.SetCrownAccessTickCount(); g_CastleSiege.NotifyAllUserCsProgState(0,lpObj->GuildName); LogAddTD("[CastleSiege] [%s][%s] Start to Register Castle Crown (GUILD:%s)",lpObj->AccountID,lpObj->Name,lpObj->GuildName); } } else if(lpObj->m_Index != iUserIndex) { GCAnsCsAccessCrownState(lpObj->m_Index,3); } return TRUE; #else return TRUE; #endif }
BOOL NpcCastleCrown(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 || lpObj->m_bCsGuildInvolved == FALSE ) return TRUE; if( g_CastleSiege.CheckUnionGuildMaster(lpObj->m_Index) == FALSE ) return TRUE; if( abs( lpObj->Y - lpNpc->Y) > 3 || abs(lpObj->X - lpNpc->X) > 3) return TRUE; if( g_CastleSiege.GetRegCrownAvailable() == FALSE ) return TRUE; int iCrownUser = g_CastleSiege.GetCrownUserIndex(); if( gObjIsConnected( iCrownUser ) == FALSE ) { int iSwitchUser1 = g_CastleSiege.GetCrownSwitchUserIndex(217); int iSwitchUser2 = g_CastleSiege.GetCrownSwitchUserIndex(218); if( gObjIsConnected(iSwitchUser1) == FALSE || gObjIsConnected(iSwitchUser2) == FALSE ) { GCAnsCsAccessCrownState(lpObj->m_Index,4); LogAddTD("[CastleSiege] [%s][%s] Failed to Register Castle Crown (GUILD:%s)", lpObj->AccountID,lpObj->Name,lpObj->GuildName); return TRUE; } if( lpObj->m_btCsJoinSide != gObj[iSwitchUser1].m_btCsJoinSide || lpObj->m_btCsJoinSide != gObj[iSwitchUser2].m_btCsJoinSide ) { GCAnsCsAccessCrownState(lpObj->m_Index,4); LogAddTD("[CastleSiege] [%s][%s] Failed to Register Castle Crown (GUILD:%s) (S1:%s/%s)(S2:%s/%s)", lpObj->AccountID,lpObj->Name,lpObj->GuildName,gObj[iSwitchUser1].AccountID,gObj[iSwitchUser1].Name,gObj[iSwitchUser2].AccountID,gObj[iSwitchUser2].Name); return TRUE; } GCAnsCsAccessCrownState(lpObj->m_Index,0); g_CastleSiege.SetCrownUserIndex(lpObj->m_Index); g_CastleSiege.SetCrownAccessUserX(lpObj->X); g_CastleSiege.SetCrownAccessUserY(lpObj->Y); g_CastleSiege.SetCrownAccessTickCount(); g_CastleSiege.NotifyAllUserCsProgState(0,lpObj->GuildName); LogAddTD("[CastleSiege] [%s][%s] Start to Register Castle Crown (GUILD:%s)", lpObj->AccountID,lpObj->Name,lpObj->GuildName); } else if(lpObj->m_Index != iCrownUser) { GCAnsCsAccessCrownState(lpObj->m_Index,3); } #endif return TRUE; }