V21 WorldDialog doesn't contain the code for the NPC that teleports you into the Contamined Trails dungeon.
More infos about this dungeon and how to enter it

Here's the fix for this! (Note that in the server source, the define for this is SCRIPT_ENTER_INSTANCEDUNGEON).
Hope this kind of release will encourage you to use V21Quote:
+ in WorldDialog/FunctionsInfo.h
Find
Add right afterCode:typedef int (WINAPI *PFAddGPPoint)( NPCDIALOG_INFO* pInfo , int nAddGPPoint );
FindCode:typedef int (WINAPI* PFEnterInstanceDungeon)(NPCDIALOG_INFO* pInfo, DWORD dwTeleWorld, int nX, int nY, int nZ); typedef int (WINAPI* PFChkPartyLowLevel)(NPCDIALOG_INFO* pInfo, int nLv);
Add right afterCode:PFAddGPPoint AddGPPoint;
+ in WorldDialog/NpcScript.cppCode:PFEnterInstanceDungeon EnterInstanceDungeon; PFChkPartyLowLevel ChkPartyLowLevel;
Find the g_nKeys array, go at the end, you should have something like this
Add right after 866,Code:42, 43, 865, 866, };
FindCode:1812,
Add right afterCode:if (::strcmp("AddGPPoint", szFunc) == 0) { /*kNPCScript.*/AddGPPoint(args.at(0)); return 0; }
+ in WorldDialog/NpcScript.hCode:if (::strcmp("EnterInstanceDungeon", szFunc) == 0) { return EnterInstanceDungeon(static_cast<DWORD>(args.at(0)), args.at(1), args.at(2), args.at(3)); } if (::strcmp("ChkPartyLowLevel", szFunc) == 0) { return ChkPartyLowLevel(args.at(0)); }
Find
Add right afterCode:void AddGPPoint( int nAddGPPoint );
+ in WorldDialog/NpcScriptHelper.cppCode:int EnterInstanceDungeon(DWORD dwTeleWorld, int nX, int nY, int nZ); int ChkPartyLowLevel(int nLvl);
Find
Add right afterCode:void CNpcScript::AddGPPoint( int nAddGPPoint ) { if( m_pInfo != NULL ) { Functions* pTable = m_pInfo->GetFunctions(); if( pTable != NULL ) { pTable->AddGPPoint( m_pInfo , nAddGPPoint ); } } }
Code:int CNpcScript::EnterInstanceDungeon(DWORD dwTeleWorld, int nX, int nY, int nZ) { if (m_pInfo != NULL) { Functions* pTable = m_pInfo->GetFunctions(); if (pTable != NULL) { return pTable->EnterInstanceDungeon(m_pInfo, dwTeleWorld, nX, nY, nZ); } } return 0; } int CNpcScript::ChkPartyLowLevel(int nLvl) { if (m_pInfo != NULL) { Functions* pTable = m_pInfo->GetFunctions(); if (pTable != NULL) { return pTable->ChkPartyLowLevel(m_pInfo, nLvl); } } return 0; }

Ssam.