Source:
In this function:
BOOL CWndNavigator::OnEraseBkgnd(C2DRender* p2DRender)
replace:
to:
moverskill.cpp
this function:
int CMover:oUseItemKeep( ItemProp* pItemProp, CItemElem* pItemElem, int nPart)
from:
to:
BOOL CWndNavigator::OnEraseBkgnd(C2DRender* p2DRender)
replace:
Code:
if( pLand ) { pLand->m_texMiniMap.m_size = m_size; if( clipRect.RectLapRect( rectCur ) ) { if( pLand->m_texMiniMap.m_pTexture ) { pLand->m_texMiniMap.m_size = m_size; p2DRender->RenderTexture(point,&pLand->m_texMiniMap); if( bDrawGuildWarNum ) { m_GuildCombatTextureMask.m_size = pLand->m_texMiniMap.m_size; p2DRender->RenderTexture(point, &m_GuildCombatTextureMask); } } } } } } //p2DRender->RenderMiniMap( &m_ALPHACIRCLE ); AccuFrame(); // °£´ÜÇÑ ÇÁ·¹ÀÓ °è»êÀ» ÇØÁØ´Ù. if( pWorld->m_bIsIndoor == FALSE #if __VER >= 15 // __15TH_INSTANCE_DUNGEON && !pWorld->IsWorldInstanceDungeon() #endif // __15TH_INSTANCE_DUNGEON ) { // °´Ã¼ Ãâ·ÂÀ» À§ÇÑ ¼³Á¤ TEXTUREVERTEX vertex[ 1000 * 6 ]; TEXTUREVERTEX* pVertices = vertex; int nCount = 0; int xu = 0, yv = 0; CRect aRcArray[ 100 ]; int nRcCount = 0; //////////////////////////////////////////////////// // ¿ÀºêÁ§Æ® Ãâ·Â //////////////////////////////////////////////////// CObj* pObj; int nIndex = 0; int nPartyMap[ MAX_PTMEMBER_SIZE ]; CMover* apQuest[ 100 ]; int nQuestNum = 0; ZeroMemory( nPartyMap, sizeof(nPartyMap) ); int nPartyMapCount = 0; float fDistMap = rect.Width() / 2 / fx; FOR_LAND( pWorld, pLand, pWorld->m_nVisibilityLand, FALSE ) { FOR_OBJ( pLand, pObj, OT_MOVER ) { // BOOL bPartyMap = FALSE; if( pObj != g_pPlayer ) { CMover* pMover = (CMover*)pObj; if( g_pPlayer->m_idMurderer != pMover->m_idPlayer ) // ÂïÀ» Ÿ°ÙÀÌ ³¯ Á×ÀγÑÀ̸é Á¶°Ç¾øÀÌ ¹«Á¶°Ç Âï´Â´Ù. { // Ç÷¹À̾îÇÊÅÍ°¡ ¾Æ´Ñµ¥, Ç÷¹À̾î¶ó¸é if( m_bObjFilterPlayer == FALSE && pMover->IsPlayer() == TRUE ) { // °Ô´Ù°¡ ÆÄƼÇÊÅ͵µ ¾Æ´Ï¶ó¸é ½ºÅµ if( m_bObjFilterParty == FALSE ) continue; if( g_Party.IsMember( pMover->m_idPlayer ) == FALSE ) continue; } if( m_bObjFilterMonster == FALSE && ( pMover->IsPlayer() == FALSE && pMover->IsPeaceful() == FALSE /*&& pMover->IsSummon()*/ == FALSE ) ) continue; if( m_bObjFilterNPC == FALSE && ( pMover->IsPlayer() == FALSE && pMover->IsPeaceful() == TRUE ) ) { // »óÁ¡ÀÌ ¾Æ´Ï¶ó¸é ÄÁƼ´º. LPCHARACTER lpCharacter = pMover->GetCharacter(); if( lpCharacter == NULL || lpCharacter->m_nStructure == -1 ) continue; } if( pMover->IsMode( TRANSPARENT_MODE ) || pMover->IsAuthHigher( AUTH_GAMEMASTER ) ) // ´ë»óÀÌ Åõ¸í¸ðµåÀ̰ųª GMÀÏ°æ¿ì Ÿ°Ù ¾ÈµÊ. continue; } vPos = pObj->GetPos(); vPos.x *= fx; vPos.z *= fy; point.x = (LONG)( ( rect.Width() / 2 ) + vPos.x ); point.y = (LONG)( ( rect.Height() / 2 ) - vPos.z ); point.x -= xCenter; point.y -= yCenter; CRect rectHittest( point.x, point.y, point.x + 5, point.y + 5); //rectHittest.InflateRect( 4, 4 ); CPoint ptMouse = GetMousePoint(); if( rectHittest.PtInRect( ptMouse ) ) { ClientToScreen( &ptMouse ); ClientToScreen( &rectHittest ); g_toolTip.PutToolTip( 10000 + ((CMover*)pObj)->GetId(), ((CMover*)pObj)->GetName( TRUE ), rectHittest, ptMouse, 0 ); } // Äù½ºÆ® À̸ðƼÄÜ if( pMover->IsNPC() && pMover->m_nQuestEmoticonIndex != -1 ) { apQuest[ nQuestNum++ ] = pMover; } else if( g_pPlayer->m_idMurderer && g_pPlayer->m_idMurderer == pMover->m_idPlayer ) // ÂïÀ» Ÿ°ÙÀÌ ³¯ Á×ÀγÑÀÌ¸é »¡°²°Ô Ç¥½Ã nIndex = 5; else if( pMover->IsNPC() && pMover->IsPeaceful() ) { nIndex = 1; } else if( g_pPlayer->m_idGuild && g_pPlayer->m_idGuild == pMover->m_idGuild ) nIndex = 3; else if( pMover->IsNPC() && pMover->IsPeaceful() == FALSE ) nIndex = 2; //xu = 10, yv = 0; else if( pMover->IsPlayer() ) { nPartyMap[nPartyMapCount] = g_Party.FindMember( pMover->m_idPlayer ); if( nPartyMap[nPartyMapCount] != -1 ) { g_Party.m_aMember[ nPartyMap[nPartyMapCount] ].m_vPos = pMover->GetPos(); ++nPartyMapCount; nIndex = 4; } else nIndex = 0; } if( nCount < 1000 ) { nCount++; LPCHARACTER lpCharacter = pMover->GetCharacter(); if( lpCharacter && lpCharacter->m_nStructure != -1 ) m_texNavObjs.MakeVertex( p2DRender, CPoint( point.x - 8, point.y - 8 ), 6 + lpCharacter->m_nStructure, &pVertices ); else { // Äù½ºÆ®°¡ ¾ø´Â °Í¸¸ Ãâ·Â if( pMover->m_nQuestEmoticonIndex == -1 ) m_texNavObjs.MakeVertex( p2DRender, CPoint( point.x - 2, point.y - 2 ), nIndex, &pVertices ); } } } } END_OBJ } END_LAND
to:
Code:
if( pLand ) { if( g_pPlayer->HasBuffByIk3( IK3_MAPOPEN_DUNGEON ) || ( pWorld->m_bIsIndoor == FALSE && !pWorld->IsWorldInstanceDungeon() ) ) { pLand->m_texMiniMap.m_size = m_size; if( clipRect.RectLapRect( rectCur ) ) { if( pLand->m_texMiniMap.m_pTexture ) { pLand->m_texMiniMap.Render( p2DRender, point, 200 ); if( bDrawGuildWarNum ) { m_GuildCombatTextureMask.m_size = pLand->m_texMiniMap.m_size; m_GuildCombatTextureMask.Render( p2DRender, point, 200 ); } } } } else { m_texDunFog.m_size = CSize( rect.Width(), rect.Height() ); p2DRender->RenderTexture( CPoint( 0, 0 ), &m_texDunFog, 255 ); } } } } AccuFrame(); if( g_pPlayer->HasBuffByIk3( IK3_MAPOPEN_DUNGEON ) || ( pWorld->m_bIsIndoor == FALSE && !pWorld->IsWorldInstanceDungeon() ) ) { TEXTUREVERTEX vertex[ 1000 * 6 ]; TEXTUREVERTEX* pVertices = vertex; int nCount = 0; int xu = 0, yv = 0; CRect aRcArray[ 100 ]; int nRcCount = 0; CObj* pObj; int nIndex = 0; int nPartyMap[ MAX_PTMEMBER_SIZE ]; CMover* apQuest[ 100 ]; int nQuestNum = 0; ZeroMemory( nPartyMap, sizeof(nPartyMap) ); int nPartyMapCount = 0; float fDistMap = rect.Width() / 2 / fx; FOR_LAND( pWorld, pLand, pWorld->m_nVisibilityLand, FALSE ) { FOR_OBJ( pLand, pObj, OT_MOVER ) { if( pObj != g_pPlayer ) { CMover* pMover = (CMover*)pObj; if( g_pPlayer->m_idMurderer != pMover->m_idPlayer ) { if( m_bObjFilterPlayer == FALSE && pMover->IsPlayer() == TRUE ) { if( m_bObjFilterParty == FALSE ) continue; if( g_Party.IsMember( pMover->m_idPlayer ) == FALSE ) continue; } if( m_bObjFilterMonster == FALSE && ( pMover->IsPlayer() == FALSE && pMover->IsPeaceful() == FALSE ) ) continue; if( m_bObjFilterNPC == FALSE && ( pMover->IsPlayer() == FALSE && pMover->IsPeaceful() == TRUE ) ) { LPCHARACTER lpCharacter = pMover->GetCharacter(); if( lpCharacter == NULL || lpCharacter->m_nStructure == -1 ) continue; } if( pMover->IsMode( TRANSPARENT_MODE ) || pMover->IsAuthHigher( AUTH_GAMEMASTER ) ) continue; } vPos = pObj->GetPos(); vPos.x *= fx; vPos.z *= fy; point.x = (LONG)( ( rect.Width() / 2 ) + vPos.x ); point.y = (LONG)( ( rect.Height() / 2 ) - vPos.z ); point.x -= xCenter; point.y -= yCenter; CRect rectHittest( point.x, point.y, point.x + 5, point.y + 5); //rectHittest.InflateRect( 4, 4 ); CPoint ptMouse = GetMousePoint(); if( rectHittest.PtInRect( ptMouse ) ) { ClientToScreen( &ptMouse ); ClientToScreen( &rectHittest ); g_toolTip.PutToolTip( 10000 + ((CMover*)pObj)->GetId(), ((CMover*)pObj)->GetName( TRUE ), rectHittest, ptMouse, 0 ); } if( pMover->IsNPC() && pMover->m_nQuestEmoticonIndex != -1 ) { apQuest[ nQuestNum++ ] = pMover; } else if( g_pPlayer->m_idMurderer && g_pPlayer->m_idMurderer == pMover->m_idPlayer ) nIndex = 5; else if( pMover->IsNPC() && pMover->IsPeaceful() ) { nIndex = 1; } else if( g_pPlayer->m_idGuild && g_pPlayer->m_idGuild == pMover->m_idGuild ) nIndex = 3; else if( pMover->IsNPC() && pMover->IsPeaceful() == FALSE ) nIndex = 2; else if( pMover->IsPlayer() ) { nPartyMap[nPartyMapCount] = g_Party.FindMember( pMover->m_idPlayer ); if( nPartyMap[nPartyMapCount] != -1 ) { g_Party.m_aMember[ nPartyMap[nPartyMapCount] ].m_vPos = pMover->GetPos(); ++nPartyMapCount; nIndex = 4; } else nIndex = 0; } if( nCount < 1000 ) { nCount++; LPCHARACTER lpCharacter = pMover->GetCharacter(); if( lpCharacter && lpCharacter->m_nStructure != -1 ) m_texNavObjs.MakeVertex( p2DRender, CPoint( point.x - 8, point.y - 8 ), 6 + lpCharacter->m_nStructure, &pVertices ); else { if( pMover->m_nQuestEmoticonIndex == -1 ) m_texNavObjs.MakeVertex( p2DRender, CPoint( point.x - 2, point.y - 2 ), nIndex, &pVertices ); } } } } END_OBJ } END_LAND
moverskill.cpp
this function:
int CMover:oUseItemKeep( ItemProp* pItemProp, CItemElem* pItemElem, int nPart)
from:
Code:
{ #ifdef __WORLDSERVER #ifdef __NEW_STACKABLE_AMPS // First Check how many Amps are currently active. int nAmount = 0; for( MAPBUFF::iterator i = m_buffs.m_mapBuffs.begin(); i != m_buffs.m_mapBuffs.end(); ++i ) { ItemProp* pItemProp = prj.GetItemProp( i->second->GetId()); if( pItemProp ) { if( pItemProp->dwItemKind3 == IK3_EXP_RATE ) { nAmount++; } } } // Cant hold more Amps if( nAmount >= MAX_AMP_STACK_COUNT ) { return 2; } // Check Level if( GetLevel() < pItemProp->nMinLimitLevel || GetLevel() > pItemProp->nMaxLimitLevel ) { return 1; } // Can hold more Amps. Try activating scroll if( HasBuff( BUFF_ITEM, (WORD) ( pItemProp->dwID ))) { MAPAMPSTORE::iterator i = prj.m_mapAmpStore.find( pItemProp->dwID ); if( i != prj.m_mapAmpStore.end() ) { AMP_STORE_INFO* info = i->second; if( HasBuff( BUFF_ITEM, (WORD)(info->dwIDSecond))) { if( HasBuff( BUFF_ITEM, (WORD)(info->dwIDThird))) { if( HasBuff( BUFF_ITEM, (WORD) (info->dwIDFourth))) { if( HasBuff( BUFF_ITEM, (WORD) (info->dwIDFifth))) { return 2; } else { if( pItemProp->nMaxDuplication >= 5 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDFifth ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 4 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDFourth ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 3 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDThird ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 2 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDSecond ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } } else { // DoApplySkill( (CCtrl*)this, pItemProp, NULL ); Error( "%d", (DWORD)pItemProp->dwSkillTime ); AddBuff( BUFF_ITEM, (WORD)(pItemProp->dwID), 0, pItemProp->dwSkillTime, GetId() ); return 4; } case IK3_MAPOPEN_DUNGEON: { if( HasBuffByIk3( pItemProp->dwItemKind3 )) return 2; DoApplySkill( (CCtrl*)this, pItemProp, NULL ); return 0; } default: { if( HasBuff( BUFF_ITEM, (WORD) ( pItemProp->dwID ))) return 2; AddBuff( BUFF_ITEM, (WORD)(pItemProp->dwID), 0, pItemProp->dwSkillTime, GetId() ); Error( "DoUseItemKeep IK3_ELSE pItemProp->dwId = %d, pItemProp->dwSkillTime = %d", pItemProp->dwID, pItemProp->dwSkillTime ); return 0; } #endif // __NEW_STACKABLE_AMPS #endif // __WORLDSERVER return 3; }
to:
Code:
{ #ifdef __WORLDSERVER // Check Level if( GetLevel() < pItemProp->nMinLimitLevel || GetLevel() > pItemProp->nMaxLimitLevel ) { return 1; } switch( pItemProp->dwItemKind3 ) { #ifdef __NEW_STACKABLE_AMPS case IK3_EXP_RATE: { // First Check how many Amps are currently active. int nAmount = 0; for( MAPBUFF::iterator i = m_buffs.m_mapBuffs.begin(); i != m_buffs.m_mapBuffs.end(); ++i ) { ItemProp* pItemProp = prj.GetItemProp( i->second->GetId()); if( pItemProp ) { if( pItemProp->dwItemKind3 == IK3_EXP_RATE ) { nAmount++; } } } // Cant hold more Amps if( nAmount >= MAX_AMP_STACK_COUNT ) { return 2; } // Can hold more Amps. Try activating scroll if( HasBuff( BUFF_ITEM, (WORD) ( pItemProp->dwID ))) { MAPAMPSTORE::iterator i = prj.m_mapAmpStore.find( pItemProp->dwID ); if( i != prj.m_mapAmpStore.end() ) { AMP_STORE_INFO* info = i->second; if( HasBuff( BUFF_ITEM, (WORD)(info->dwIDSecond))) { if( HasBuff( BUFF_ITEM, (WORD)(info->dwIDThird))) { if( HasBuff( BUFF_ITEM, (WORD) (info->dwIDFourth))) { if( HasBuff( BUFF_ITEM, (WORD) (info->dwIDFifth))) { return 2; } else { if( pItemProp->nMaxDuplication >= 5 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDFifth ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 4 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDFourth ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 3 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDThird ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } else { if( pItemProp->nMaxDuplication >= 2 ) { ItemProp* pAmpProp = prj.GetItemProp( info->dwIDSecond ); DoApplySkill( (CCtrl*)this, pAmpProp, NULL ); return 4; } } } } else { DoApplySkill( (CCtrl*)this, pItemProp, NULL ); return 4; } } break; case IK3_SCROLL: case IK3_LOOKRESTOREITEM: case IK3_MADRIGALBLESS: { if( HasBuff( BUFF_ITEM, (WORD) ( pItemProp->dwID ))) return 2; DoApplySkill( (CCtrl*)this, pItemProp, NULL ); return 0; } break; case IK3_MOREGETITEMSCROLL: case IK3_PARTYPOINTFREE: case IK3_PKPENALTYSCROLL_C: case IK3_TRADEREGISTERITEM: case IK3_MAPOPEN_DUNGEON: { if( HasBuffByIk3( pItemProp->dwItemKind3 )) return 2; DoApplySkill( (CCtrl*)this, pItemProp, NULL ); return 0; } default: { if( HasBuff( BUFF_ITEM, (WORD) ( pItemProp->dwID ))) return 2; AddBuff( BUFF_ITEM, (WORD)(pItemProp->dwID), 0, pItemProp->dwSkillTime, GetId() ); Error( "DoUseItemKeep IK3_ELSE pItemProp->dwId = %d, pItemProp->dwSkillTime = %d", pItemProp->dwID, pItemProp->dwSkillTime ); return 0; } #endif // __NEW_STACKABLE_AMPS } #endif // __WORLDSERVER return 3; }
Resource:
v19 Reading Parameter(ONLY):
defineitem.h
spec_item.txt
mdldyna.inc
Propitem.txt.txt
defineitem.h
Code:
#define II_SYS_SYS_SCR_MAPOPENAREA 23268 #define II_SYS_SYS_SCR_MAPOPENDUNGEON 23269
spec_item.txt
Code:
//RHYDER TORCH 17 II_SYS_SYS_SCR_MAPOPENAREA IDS_PROPITEM_TXT_014200 1 99 IK1_EFFECT IK2_KEEP IK3_MAPOPEN_DUNGEON = 0 1 = 0 = = = = = = = 0 = = 1 = = 1 1 = = 1440 = _NONE 0 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = XI_SYS_RELEASE01 = = = = 86400000 = WUI_NOW = = = = = = = = = 0 0 0 0 0 1 = = = = = = = = = = = = 1 = = = """Itm_WorldTorchArea-32.dds""" 0 """""" IDS_PROPITEM_TXT_014201 1 300 0 0 1 0 0 0 0 0 2 = = = = = = = = = = 1 1 1 1 1 1 ITEM_GRADE_NORMAL 1 TYPE1_CONSUME TYPE2_CONSUME_SCROLL 1 0 0 0 17 II_SYS_SYS_SCR_MAPOPENDUNGEON IDS_PROPITEM_TXT_014202 1 99 IK1_EFFECT IK2_KEEP IK3_MAPOPEN_DUNGEON = 0 1 = 0 = = = = = = = 0 = = 1 = = 1 1 = = 10080 = _NONE 0 = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = XI_SYS_RELEASE01 = = = = 604800000 = WUI_NOW = = = = = = = = = 0 0 0 0 0 1 = = = = = = = = = = = = 1 = = = """Itm_WorldTorchArea-32.dds""" 0 """""" IDS_PROPITEM_TXT_014203 1 300 0 0 1 0 0 0 0 0 2 = = = = = = = = = = 1 1 1 1 1 1 ITEM_GRADE_NORMAL 1 TYPE1_CONSUME TYPE2_CONSUME_SCROLL 1 0 0 0
mdldyna.inc
Code:
"SysSysScrBxCom" II_SYS_SYS_SCR_MAPOPENAREA MODELTYPE_MESH "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1 "SysSysScrBxCom" II_SYS_SYS_SCR_MAPOPENDUNGEON MODELTYPE_MESH "" 0 MD_NEAR 0 1.0f 0 1 ATEX_NONE 1
Propitem.txt.txt
Code:
IDS_PROPITEM_TXT_014200 Torch of Raon IDS_PROPITEM_TXT_014201 When activated, allows you to view the map of all Premium EXP Areas and dungeons (Including instanced dungeons) for 1 day. IDS_PROPITEM_TXT_014202 Torch of Isilrute IDS_PROPITEM_TXT_014203 When activated, allows you to view the map of all Premium EXP Areas and dungeons (Including instanced dungeons) for 7 days.
Screens:
From:
when i use the scroll should be look like this:
when i use the scroll should be look like this:
Additional for Timer:
NOTE: USE THE Spec_Item.txt for us to get the right timer.Quote:
at WndManager.cpp
Below:
Add:Code:if( dwSkillTimeTmp == 0 || g_pPlayer->HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01 ) || g_pPlayer->HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP02 ) || g_pPlayer->HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01_01 )
=======================Code:/*************************TORCH RHYDER******************/ || g_pPlayer->HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENAREA ) || g_pPlayer->HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENDUNGEON )
Below:
Add:Code:if( dwSkillTimeTmp == 0 || g_pPlayer->m_SkillState.HasSkill( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01 ) || g_pPlayer->m_SkillState.HasSkill( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP02 ) || g_pPlayer->m_SkillState.HasSkill( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01_01 )
at MoverSkill.cppCode:/***************************TORCH RHYDER****************/ || g_pPlayer->m_SkillState.HasSkill( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENAREA ) || g_pPlayer->m_SkillState.HasSkill( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENDUNGEON )
Below:
Add:Code:else if( pItemProp->dwID == II_SYS_SYS_SCR_PARTYSKILLUP01 || pItemProp->dwID == II_SYS_SYS_SCR_PARTYSKILLUP02 || pItemProp->dwID == II_SYS_SYS_SCR_PARTYSKILLUP01_01
Below:Code:/*************************TORCH RHYDER******************/ || pItemProp->dwID == II_SYS_SYS_SCR_MAPOPENAREA || pItemProp->dwID == II_SYS_SYS_SCR_MAPOPENDUNGEON /*************************TORCH RHYDER******************/
Add:Code:if( HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01 ) || HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP02 ) || HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_PARTYSKILLUP01_01 )
at CmnHdr.h:Code:/*********************TORCH**********************/ || HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENAREA ) || HasBuff( BUFF_ITEM2, II_SYS_SYS_SCR_MAPOPENDUNGEON ) /*********************TORCH**********************/
Below:
Add:Code:SM_SHOUT001, SM_BANK001,
Below:Code:/**********TORCH*************/ SM_TORCH,
Add:Code:dwSMItemID[SM_ESCAPE] = II_CHR_SYS_SCR_ESCAPEBLINKWING;
Code:dwSMItemID [SM_TORCH] = II_SYS_SYS_SCR_MAPOPENAREA; dwSMItemID [SM_TORCH] = II_SYS_SYS_SCR_MAPOPENDUNGEON;
Quote:
at WndField.cpp
Replace:
to this:Code:m_wndPlace.EnableWindow( !pWorld->m_bIsIndoor );
for the navigator menu.Code:m_wndPlace.EnableWindow( pWorld->m_bIsIndoor );
Credits goes to:
Rhyder'