Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.55 KB | None | 0 0
  1.     DWORD dwId1, dwId2, dwId3, dwId4;
  2.    
  3.     ar >> dwId1; // Baruna Weapon
  4.     ar >> dwId2; // Baruna Rune
  5.     ar >> dwId3; // Baruna Pprotect
  6.     ar >> dwId4; // Baruna Piercing Rate
  7.    
  8.     CUser* pUser    = g_UserMng.GetUser( dpidCache, dpidUser );
  9.  
  10.     if( IsValidObj( pUser ) )
  11.     {
  12.         CItemElem* pItemElem0   = pUser->m_Inventory.GetAtId( dwId1 );
  13.         CItemElem* pItemElem1   = pUser->m_Inventory.GetAtId( dwId2 );
  14.         CItemElem* pItemElem2   = pUser->m_Inventory.GetAtId( dwId3 );
  15.         CItemElem* pItemElem3   = pUser->m_Inventory.GetAtId( dwId4 );
  16.  
  17.         if( IsUsableItem( pItemElem0 ) == FALSE || IsUsableItem( pItemElem1 ) == FALSE )
  18.             return;
  19.  
  20.         if( pUser->m_vtInfo.GetOther() )
  21.             return;
  22.  
  23.         if( pUser->m_vtInfo.VendorIsVendor() )
  24.             return;
  25.  
  26.         if( pUser->m_Inventory.IsEquip( pItemElem0->m_dwObjId ) )
  27.             return;
  28.  
  29.         if( pItemElem0->GetProp()->dwReferStat1 != BARUNA_D ||
  30.             ( pItemElem0->GetProp()->dwItemKind2 != IK2_WEAPON_DIRECT && pItemElem0->GetProp()->dwItemKind2 != IK2_WEAPON_MAGIC ) )
  31.             return;
  32.  
  33.         if( pItemElem0->GetPiercingSize() >= MAX_PIERCING_BARUNA )
  34.             return;
  35.  
  36.         if( pItemElem1->GetProp()->dwItemKind3 != IK3_BARUNAWEA_PIERCE_RUNE )
  37.             return;
  38.  
  39.         if( IsUsableItem( pItemElem2 ) && pItemElem2->m_dwItemId != II_SYS_SYS_SCR_BARUNAPRPROTECT )
  40.             return;
  41.  
  42.         if( IsUsableItem( pItemElem3 ) && pItemElem3->m_dwItemId != II_SYS_SYS_SCR_BARUNAPRRATE )
  43.             return;
  44.  
  45.         int nProb = 0;
  46.         nProb = pItemElem1->GetProp()->nEffectValue;
  47.  
  48.         if( pItemElem3 != NULL )
  49.             nProb += pItemElem3->GetProp()->nEffectValue;
  50.  
  51.         if( xRandom( 10000 ) > (DWORD)nProb )
  52.         {
  53.             pUser->AddPlaySound( SND_INF_UPGRADEFAIL );
  54.             g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_FAIL, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
  55.  
  56.             if( pItemElem2 == NULL )
  57.             {
  58.                 pUser->RemoveItem( (BYTE)dwId2, (short)1 );
  59.                 pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_2 , "" );
  60.             }
  61.             else
  62.                 pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_3 , "" );
  63.         }
  64.         else
  65.         {
  66.             pUser->UpdateItem( (BYTE)pItemElem0->m_dwObjId, UI_PIERCING_SIZE, pItemElem0->GetPiercingSize() + 1 );
  67.             pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );         
  68.             g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
  69.             pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_1 , "" );
  70.             pUser->Pierce( pItemElem0, pItemElem1->m_dwItemId );
  71.             pUser->RemoveItem( (BYTE)dwId2, (short)1 );
  72.         }
  73.    
  74.         if( pItemElem2 != NULL )
  75.             pUser->RemoveItem( (BYTE)dwId3, (short)1 );
  76.  
  77.         if( pItemElem3 != NULL )
  78.             pUser->RemoveItem( (BYTE)dwId4, (short)1 );
  79.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement