BOOL NpcTalk(LPOBJ lpNpc, LPOBJ lpObj) { int npcnum = lpNpc->Class; if ( npcnum < 0) { return FALSE; } if (g_ResetSystem.ProcDialog(lpObj, lpNpc)) { return TRUE; } if ( (lpObj->m_IfState.use) > 0 ) { return TRUE; } if ( npcnum == 229 ) // Marlon { gQeustNpcTeleport.TalkRefAdd(); lpObj->TargetShopNumber = npcnum; } #if(__CUSTOM_QUEST__ == 1) if ( npcnum == 371 ) { g_MyQuest.NpcTalk(lpObj,lpNpc); return TRUE; } #endif if ( NpcQuestCheck(lpNpc, lpObj) != FALSE ) { return TRUE; } switch ( npcnum ) { case 254: return NpcFasi ( lpNpc, lpObj ); case 241: return NpcGuildMasterTalk( lpNpc, lpObj ); case 239: return NpcBattleAnnouncer( lpNpc, lpObj ); case 249: return NpcRolensiaGuard( lpNpc, lpObj ); case 238: return NpcChaosGoblelin( lpNpc, lpObj ); case 237: return NpcRusipher( lpNpc, lpObj ); case 253: return NpcPosionGirl( lpNpc, lpObj ); case 245: return NpcDeviasWizard( lpNpc, lpObj ); case 247: return NpcDeviasGuard( lpNpc, lpObj ); case 240: return NpcWarehouse( lpNpc, lpObj ); case 226: return NpcDarkSpiritTrainer( lpNpc, lpObj ); case 242: return NpcNoriaRara( lpNpc, lpObj ); case 244: return NpcDeviasMadam( lpNpc, lpObj ); case 236: return NpcEventChipNPC( lpNpc, lpObj ); case 234: return NpcServerDivision( lpNpc, lpObj ); case 232: return NpcAngelKing( lpNpc, lpObj ); case 233: return NpcAngelMessanger( lpNpc, lpObj ); case 255: return NpcRolensiaMadam( lpNpc, lpObj ); case 250: return NpcRoadMerchant( lpNpc, lpObj ); case 246: return NpcDeviasWeapon( lpNpc, lpObj ); case 251: return NpcRorensiaSmith( lpNpc, lpObj ); case 243: return NpcNoriJangIn( lpNpc, lpObj ); case 256: return NpcJewelMixDealer( lpNpc, lpObj ); #if (GS_CASTLE == 0 || GS_SPEC == 1) case 367: return NpcMainatenceMachine ( lpNpc, lpObj ); #endif case 221: return NpcSiegeMachine_Attack( lpNpc, lpObj ); case 222: return NpcSiegeMachine_Defense( lpNpc, lpObj ); case 223: return NpcElderCircle( lpNpc, lpObj ); case 224: return NpcCastleGuard( lpNpc, lpObj ); case 219: return NpcCastleGateLever( lpNpc, lpObj ); case 216: return NpcCastleCrown( lpNpc, lpObj ); case 217: case 218: return NpcCastleSwitch( lpNpc, lpObj ); #if (GS_CASTLE == 1) case 220: return NpcCastleHuntZoneGuard( lpNpc, lpObj ); #endif case 257: return NpcShadowPhantom( lpNpc, lpObj ); #if (GS_CASTLE == 1) case 205: return NpcCrywolfAltar(lpNpc,lpObj); case 206: return NpcCrywolfAltar(lpNpc,lpObj); case 207: return NpcCrywolfAltar(lpNpc,lpObj); case 208: return NpcCrywolfAltar(lpNpc,lpObj); case 209: return NpcCrywolfAltar(lpNpc,lpObj); #endif #if (CUSTOM_OLYMP==1) case 258: return g_CustomOlymp.NpcTalk(lpNpc,lpObj); #endif case 259: return NpcReira ( lpNpc, lpObj ); case 368: case 369: case 370: return g_kJewelOfHarmonySystem.NpcJewelOfHarmony( lpNpc, lpObj ); case 375: return NpcChaosCardMaster( lpNpc, lpObj ); case 376: return NpcDrinkSellerHillary( lpNpc, lpObj ); case 377: return NpcDrinkSellerLindsay( lpNpc, lpObj ); case 379: return NpcFireWorkGirl( lpNpc, lpObj ); case 385: return NpcIllusionMaster( lpNpc, lpObj ); case 380: return NpcIllusionHolyStatue( lpNpc, lpObj ); case 383: return NpcAlliedTeamForge( lpNpc, lpObj ); case 384: return NpcIllusionTeamForge( lpNpc, lpObj ); case 415: return NpcSilvia( lpNpc, lpObj ); case 416: return NpcLeah( lpNpc, lpObj ); case 417: return NpcMarseille( lpNpc, lpObj ); case 452: return NpcSeedMaster( lpNpc, lpObj ); case 453: return NpcSeedResearch( lpNpc, lpObj ); case 450: return NpcCherryBlossom( lpNpc, lpObj ); case 465: return NpcSanta( lpNpc,lpObj); case 467: return NpcSnowman( lpNpc,lpObj); case 468: return NpcLitleSanta( lpNpc,lpObj,0x5E); case 469: return NpcLitleSanta( lpNpc,lpObj,0x5F); case 470: return NpcLitleSanta( lpNpc,lpObj,0); case 471: return NpcLitleSanta( lpNpc,lpObj,1); case 472: return NpcLitleSanta( lpNpc,lpObj,0x5C); case 473: return NpcLitleSanta( lpNpc,lpObj,0x5D); case 474: return NpcLitleSanta( lpNpc,lpObj,0x60); case 475: return NpcLitleSanta( lpNpc,lpObj,0x61); case 478: return NpcDelgado( lpNpc, lpObj ); break; case 479: return NpcTitus( lpNpc, lpObj ); case 522: return NpcImperialFort( lpNpc, lpObj ); case 540: return NpcLugard( lpNpc, lpObj ); case 541: return NpcCompensationBox( lpNpc, lpObj ); case 542: return NpcGoldCompensationBox( lpNpc, lpObj ); case 543: return NpcDuprianSteward( lpNpc, lpObj ); case 544: return NpcVanertSteward( lpNpc, lpObj ); case 547: return NpcJulia( lpNpc, lpObj ); case 579: return NpcDavid( lpNpc, lpObj ); case 580: return NpcCaptainSlaugh( lpNpc, lpObj ); case 582: return NpcAdniel( lpNpc, lpObj ); case 584: return NpcSirLesnar( lpNpc, lpObj ); case 651: return NpcPrivateStoreBoard(lpNpc, lpObj); } return FALSE; }
BOOL NpcTalk(LPOBJ lpNpc, LPOBJ lpObj) { int npcnum = lpNpc->Class; if ( npcnum < 0 ) { return FALSE; } //ChatSend(lpObj, ShopC[lpNpc->ShopNumber].Messsage); if(lpNpc->ShopNumber > -1) { npcMSG->PM(lpObj->m_Index , ShopC[lpNpc->ShopNumber].Messsage); } if ( (lpObj->m_IfState.use) > 0 ) { return TRUE; } if ( npcnum == 247 || npcnum == 371 || npcnum == 249) { return g_PKClear.NpcTallk(lpNpc , lpObj); } if ( npcnum == 229 ) // Marlon { gQeustNpcTeleport.TalkRefAdd(); lpObj->TargetShopNumber = npcnum; } if ( NpcQuestCheck(lpNpc, lpObj) != FALSE ) { return TRUE; } switch ( npcnum ) { case 367: if ( NpcMainatenceMachine ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 259: if ( NpcReira ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 254: if ( NpcFasi ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 241: if ( NpcGuildMasterTalk( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 239: if ( NpcBattleAnnouncer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 249: if ( NpcRolensiaGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 238: if ( NpcChaosGoblelin( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 237: if ( NpcRusipher( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 253: if ( NpcPosionGirl( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 245: if ( NpcDeviasWizard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 247: if ( NpcDeviasGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 240: if ( NpcWarehouse( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 226: if ( NpcDarkSpiritTrainer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 242: if ( NpcNoriaRara( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 244: if ( NpcDeviasMadam( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 236: if ( NpcEventChipNPC( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 234: if ( NpcServerDivision( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 232: if ( NpcAngelKing( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 233: if ( NpcAngelMessanger( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 255: if ( NpcRolensiaMadam( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 250: if ( NpcRoadMerchant( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 246: if ( NpcDeviasWeapon( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 251: if ( NpcRorensiaSmith( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 243: if ( NpcNoriJangIn( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 256: if ( NpcJewelMixDealer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 221: if ( NpcSiegeMachine_Attack( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 222: if ( NpcSiegeMachine_Defense( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 223: if ( NpcElderCircle( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 224: if ( NpcCastleGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 219: if ( NpcCastleGateLever( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 216: if ( NpcCastleCrown( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 217: case 218: if ( NpcCastleSwitch( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 257: if ( NpcShadowPhantom( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 368: case 369: case 370: if ( g_kJewelOfHarmonySystem.NpcJewelOfHarmony( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 375: if ( NpcChaosCardMaster( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; } return FALSE; }
BOOL NpcTalk(LPOBJ lpNpc, LPOBJ lpObj) { int npcnum = lpNpc->Class; if ( npcnum < 0 ) { return FALSE; } if ( lpObj->m_IfState.use > 0 ) { return TRUE; } if ( lpObj->CloseCount >= 0 ) { if(ReadConfig.AHLog == TRUE) { ANTI_HACK_LOG.Output("[ANTI-HACK][NPC] - Try to open NPC during server quit [%s][%s]", lpObj->AccountID, lpObj->Name); } return FALSE; } if ( lpObj->m_bMapSvrMoveQuit == true || lpObj->m_bMapAntiHackMove == true ) { if(ReadConfig.AHLog == TRUE) { ANTI_HACK_LOG.Output("[ANTI-HACK][NPC] - Try to open NPC during MapServer Move [%s][%s]", lpObj->AccountID, lpObj->Name); } return FALSE; } if ( npcnum == 229 ) // Marlon { gQuestNpcTeleport.TalkRefAdd(); lpObj->TargetShopNumber = npcnum; } if ( NpcQuestCheck(lpNpc, lpObj) != FALSE ) { return TRUE; } switch ( npcnum ) { case 367: if ( NpcMainatenceMachine ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 259: if ( NpcReira ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 254: if ( NpcFasi ( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 241: if ( NpcGuildMasterTalk( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 239: if ( NpcBattleAnnouncer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 249: if ( NpcLorenciaGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 238: if ( NpcChaosGoblin( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 237: if ( NpcRusipher( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 253: if ( NpcPotionsGirl( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 245: if ( NpcDeviasWizard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 247: if ( NpcDeviasGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 240: if ( NpcWarehouse( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 226: if ( NpcDarkSpiritTrainer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 242: if ( NpcNoriaRara( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 244: if ( NpcDeviasMadam( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 236: if ( NpcEventChipNPC( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 234: if ( NpcServerDivision( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 232: if ( NpcAngelKing( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 233: if ( NpcAngelMessanger( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 255: if ( NpcLorenciaMadam( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 250: if ( NpcRoadMerchant( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 246: if ( NpcDeviasWeapon( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 251: if ( NpcLorenciaSmith( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 243: if ( NpcNoriJangIn( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 256: if ( NpcJewelMixDealer( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 221: if ( NpcSiegeMachine_Attack( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 222: if ( NpcSiegeMachine_Defense( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 223: if ( NpcElderCircle( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 224: if ( NpcCastleGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 219: if ( NpcCastleGateLever( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 216: if ( NpcCastleCrown( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 217: case 218: if ( NpcCastleSwitch( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 220: if ( NpcCastleTrialsGuard( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 566: { if(ReadConfig.S5E2 == TRUE) { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 105; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x36,0x02,0x00,0x00,0x00,0x00,0x00,0x00}; ::DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); } }break; case 567: { if(ReadConfig.S5E2 == TRUE) { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 103; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x37,0x02,0x00,0x00,0x00,0x00,0x00,0x00}; ::DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); } }break; case 568: { if(ReadConfig.S5E2 == TRUE) { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 104; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x38,0x02,0x00,0x00,0x00,0x00,0x00,0x00}; ::DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); } }break; case 257: { if(ReadConfig.S5E2 == FALSE) { if ( NpcShadowPhantom(lpObj ) == TRUE ) { return TRUE; } }else { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 102; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00}; ::DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); } } break; case 368: case 369: case 370: if ( g_kJewelOfHarmonySystem.NpcJewelOfHarmony( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 375: if ( NpcChaosCardMaster( lpNpc, lpObj ) == TRUE ) { return TRUE; } break; case 380: //[ILLUSION TEMPLE] STONE STATUE { IllusionTemple.SelectHero(lpObj,lpObj->MapNumber); }break; case 383: //[ILLUSION TEMPLE] BLUE STORAGE { IllusionTemple.ReturnGift(lpObj,lpObj->MapNumber-45,npcnum); }break; case 384: //[ILLUSION TEMPLE] ORANGE STORAGE { IllusionTemple.ReturnGift(lpObj,lpObj->MapNumber-45,npcnum); }break; case 385: { if ( NpcAlchemist(lpNpc, lpObj ) == TRUE) { return TRUE; } }break; case 406: { if ( NpcPriestDevin(lpNpc, lpObj ) == TRUE) { return TRUE; } }break; case 407: { if ( NpcWerewolfQuarrel(lpNpc, lpObj ) == TRUE) { return TRUE; } }break; case 408: { if ( NpcKeepergate(lpNpc, lpObj ) == TRUE) { return TRUE; } }break; #if (PACK_EDITION>=2) //case 450: //{ // if ( SkyEvent.NpcTalk(lpNpc, lpObj ) == TRUE) // { // return TRUE; // } //}break; #endif case 468: case 469: case 470: case 471: case 474: #if (PACK_EDITION>=2) case 475: { if ( NpcLittleSanta(lpNpc, lpObj ) == TRUE) { return TRUE; } }break; #endif case 479: { if ( g_DuelManager.NPCTalk_GateKeeper(lpNpc, lpObj)==TRUE ) { return TRUE; } }break; case 478: { if ( NpcLuckyCoins(lpNpc, lpObj)==TRUE ) { return TRUE; } }break; //case 579: //{ // if ( NpcLuckyItems(lpNpc, lpObj)==TRUE ) // { // return TRUE; // } //}break; #if (PACK_EDITION>=2) case 522: { if ( NpcImperialGuardian(lpNpc, lpObj)==TRUE ) { return TRUE; } }break; #endif #if (PACK_EDITION>=3) case 540: { if ( NpcDoubleGoer(lpNpc, lpObj)==TRUE ) { return TRUE; } }break; case 541: { g_DoppelGanger.InterimChestOpen(lpObj,lpNpc); return TRUE; }break; case 542: { g_DoppelGanger.FinalChestOpen(lpObj,lpNpc); return TRUE; }break; #endif #if (PACK_EDITION>=2) case 465: { if (XMasEvent.AllowGifts == 1) { if(XMasEventItemBoxOpen(lpObj, lpObj->MapNumber, lpObj->X, lpObj->Y) == 0) { ChatTargetSend(lpNpc, lMsg.Get(MSGGET(14, 114)), lpObj->m_Index); } else { ChatTargetSend(lpNpc, lMsg.Get(MSGGET(4, 124)), lpObj->m_Index); ChatTargetSend(lpNpc, "Ho-Ho-Ho!", lpObj->m_Index); } } else { ChatTargetSend(lpNpc, "XMas Season is Over!", lpObj->m_Index); } if (XMasEvent.BlessingBuffOnTalk == 1) { if ( NpcLittleSanta(lpNpc, lpObj ) == TRUE) { //Do Nothing Either Way } } return TRUE; }break; #endif case 543: { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 100; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x1F,0x02,0x00,0x00,0x00,0x00,0x00,0x00}; DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); }break; case 544: { lpObj->m_IfState.use = 1; lpObj->m_IfState.type = 101; lpObj->m_IfState.state = 1; char sa[12] = {0xC1,0x0C,0xF9,0x01,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00}; DataSend(lpObj->m_Index ,(UCHAR*)sa, sizeof(sa)); }break; } return FALSE; }