changeset 669:fb87a8249794

some cleaning
author zipi
date Thu, 14 Mar 2013 20:44:54 +0000
parents 28109e4eee44
children 2bb0e9da8302
files mm7_2.cpp
diffstat 1 files changed, 356 insertions(+), 358 deletions(-) [+]
line wrap: on
line diff
--- a/mm7_2.cpp	Thu Mar 14 20:20:55 2013 +0000
+++ b/mm7_2.cpp	Thu Mar 14 20:44:54 2013 +0000
@@ -1220,7 +1220,7 @@
   }
   if ( uMessageParam > 95 )
   {
-LABEL_196:
+//LABEL_196:
     switch ( uMessageParam )
     {
       case 96:
@@ -1646,367 +1646,365 @@
     pAudioPlayer->PlaySound(SOUND_27, v46, v47, v48, v49, v50, v52, v56);
     return;
   }
-  if ( dialog_menu_id > 18 )
-  {
-    if ( dialog_menu_id < 36 )
-      return;
-    if ( dialog_menu_id <= 72 )
-    {
-      v42 = dialog_menu_id - 36;
-      //v43 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0);
-      v43 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0);
-      v44 = v43 * (100 - v0->GetMerchant()) / 100;
-      if ( v44 < v43 / 3 )
-        v44 = v43 / 3;
-      if ( byte_4ED970_skill_learn_ability_by_class_table[v0->classType][v42] )
-      {
-        pSkill = &v0->pActiveSkills[v42];
-        if ( !*pSkill )
-        {
-          if ( pParty->uNumGold < v44 )
-          {
-            ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u);// "You don't have enough gold"
-            v13 = window_SpeakInHouse->ptr_1C;
-            if ( in_current_building_type == BildingType_Training )
-              v55 = 4;
-            else
-              v55 = 2;
-            HousePlaySomeSound((unsigned int)v13, v55);
-            return;
-          }
-          Party::TakeGold(v44);
-          v53 = 0;
-          dword_F8B1E4 = 1;
-          *pSkill = 1;
-          v51 = 78;
-          v27 = v0;
-		  v27->PlaySound((PlayerSpeech)v51, v53);
-		  return;
-        }
-      }
-      return;
-    }
-    if ( dialog_menu_id != 94 )
-    {
-      if ( dialog_menu_id != 95 )
-        return;
-      goto LABEL_49;
-    }
-    pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
-//LABEL_73:
-    sub_421EA6_OnInventoryLeftClick();
-    return;
-  }
-  if ( dialog_menu_id == 18 )
-  {
-    v17 = pMouse->GetCursorPos(&v63);
-    v18 = pRenderer->pActiveZBuffer[v17->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v61)->y]] & 0xFFFF;
-    if ( !v18 )
-      return;
-    v19 = window_SpeakInHouse->ptr_1C;
-    v20 = (ItemGen *)(&pParty->pPlayers[1].uExpressionTimeLength + 18 * (v18 + 12 * (int)v19));
-    //v21 = p2DEvents_minus1__20[13 * (signed int)v19];
-    v21 = p2DEvents[(signed int)v19 - 1].fPriceMultiplier;
-    _this = v20;
-    v22 = v20->GetValue();
-    v23 = v0->_4B8142(v22, v21);
-    v80 = v23;
-    GetAsyncKeyState(VK_CONTROL);
-    if ( pParty->uNumGold < v23 )
-    {
-      v24 = 2;
-//LABEL_62:
-      HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, v24);
-      v9 = pGlobalTXT_LocalizationStrings[155];
-      v54 = 2;
-      ShowStatusBarString(v9, v54);
-      return;
-    }
-    v25 = v0->AddItem(0xFFFFFFFFu, v20->uItemID);
-    if ( v25 )
-    {
-      v26 = 1;
-      v20->SetIdentified();
-      memcpy(&v0->pInventoryItems[v25-1], v20, 0x24u);
-      dword_F8B1E4 = v26;
-      Party::TakeGold(v80);
-      viewparams->bRedrawGameUI = v26;
-      _this->Reset();
-      pRenderer->ClearZBuffer(0, 479);
-      v27 = v77;
-      v53 = 0;
-      v51 = SPEECH_75;
-      v27->PlaySound((PlayerSpeech)v51, v53);
-      return;
-    }
-    v0->PlaySound(SPEECH_NoRoom, 0);
-    v54 = 5;
-//LABEL_70:
-    v9 = pGlobalTXT_LocalizationStrings[563];   // "Pack is Full!"
-    ShowStatusBarString(v9, v54);
-    return;
-  }
-  if ( dialog_menu_id == 2 )
-  {
-LABEL_49:
-    v28 = pMouse->GetCursorPos(&v59);
-    v29 = pRenderer->pActiveZBuffer[v28->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v57)->y]] & 0xFFFF;
-    if ( !v29 )
-      return;
-    v30 = window_SpeakInHouse->ptr_1C;
-   // v31 = 9 * (v29 - 1 + 12 * (int)v30);
-    if ( dialog_menu_id == 2 )
-    {
-      v32 = (ItemGen *)&pParty->StandartItemsInShops[(int)v30][v29-1];
-      _this = (ItemGen *)&pParty->StandartItemsInShops[(int)v30][v29-1];
-    }
-    else
-    {
-      _this =&pParty->SpecialItemsInShops[(int)v30][v29-1]; //(ItemGen *)&pParty->field_C59C[v31 + 724];
-      v32 = &pParty->SpecialItemsInShops[(int)v30][v29-1];//(ItemGen *)&pParty->field_C59C[v31 + 724];
-    }
-    //v33 = p2DEvents_minus1__20[13 * (signed int)v30];
-    v33 = p2DEvents[(signed int)v30 - 1].fPriceMultiplier;
-    v34 = v32->GetValue();
-    v80 = v0->_4B8142(v34, v33);
-    LOWORD(v35) = GetAsyncKeyState(VK_CONTROL);
-    v74 = v35;
-    v36 = v0->CanSteal();
-    uNumSeconds = 0;
-    a3 = 0;
-    v73 = v36;
-    v37 = pMapStats->GetMapInfo(pCurrentMapName);
-    if ( v37 )
-      a3 = pMapStats->pInfos[v37]._steal_perm;
-    v38 = GetPartyReputation();
-    v26 = 1;
-    if ( v73 == 1 )
-    {
-      if ( (short)v74 )
-      {
-        uNumSeconds = v0->StealFromShop(v32, a3, v38, 0, &a6);
-        if ( !uNumSeconds )
-        {
-          sub_4B1447_party_fine((int)window_SpeakInHouse->ptr_1C, 0, a6);
-          return;
-        }
-      }
-    }
-    if ( pParty->uNumGold < v80 )
-    {
-      v24 = 2;
-      if ( uNumSeconds != 2 )
-      {
-        if ( uNumSeconds != 1 )
+  switch(dialog_menu_id)
+  {
+	case 94:
+		{
+			pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 103;
+			sub_421EA6_OnInventoryLeftClick();
+			break;
+		}
+	case 18:
+		{
+		v17 = pMouse->GetCursorPos(&v63);
+		v18 = pRenderer->pActiveZBuffer[v17->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v61)->y]] & 0xFFFF;
+		if ( !v18 )
+			return;
+		v19 = window_SpeakInHouse->ptr_1C;
+		v20 = (ItemGen *)(&pParty->pPlayers[1].uExpressionTimeLength + 18 * (v18 + 12 * (int)v19));
+		//v21 = p2DEvents_minus1__20[13 * (signed int)v19];
+		v21 = p2DEvents[(signed int)v19 - 1].fPriceMultiplier;
+		_this = v20;
+		v22 = v20->GetValue();
+		v23 = v0->_4B8142(v22, v21);
+		v80 = v23;
+		GetAsyncKeyState(VK_CONTROL);
+		if ( pParty->uNumGold < v23 )
+		{
+			v24 = 2;
+	//LABEL_62:
+			HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, v24);
+			v9 = pGlobalTXT_LocalizationStrings[155];
+			v54 = 2;
+			ShowStatusBarString(v9, v54);
+			return;
+		}
+		v25 = v0->AddItem(0xFFFFFFFFu, v20->uItemID);
+		if ( v25 )
+		{
+			v26 = 1;
+			v20->SetIdentified();
+			memcpy(&v0->pInventoryItems[v25-1], v20, 0x24u);
+			dword_F8B1E4 = v26;
+			Party::TakeGold(v80);
+			viewparams->bRedrawGameUI = v26;
+			_this->Reset();
+			pRenderer->ClearZBuffer(0, 479);
+			v27 = v77;
+			v53 = 0;
+			v51 = SPEECH_75;
+			v27->PlaySound((PlayerSpeech)v51, v53);
+			return;
+		}
+		v0->PlaySound(SPEECH_NoRoom, 0);
+		v54 = 5;
+	//LABEL_70:
+		v9 = pGlobalTXT_LocalizationStrings[563];   // "Pack is Full!"
+		ShowStatusBarString(v9, v54);
+		break;
+		}
+	case 3:
+		{
+		v14 = pMouse->GetCursorPos(&v71)->x - 14;
+		v79 = (v14 >> 5) + 14 * ((pMouse->GetCursorPos(&v69)->y - 17) >> 5);
+		if ( pMouse->GetCursorPos(&v67)->x <= 13
+			|| pMouse->GetCursorPos(&v65)->x >= 462
+			|| (v15 = v0->GetItemIDAtInventoryIndex((int *)&v79), (v77 = (Player *)v15) == 0) )
+			return;
+		v16 = window_SpeakInHouse;
+		if ( sub_4BDAAF((ItemGen *)&v0->pInventoryItems[v15-1], (int)window_SpeakInHouse->ptr_1C) )
 		{
-		  HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, v24);
-		  v9 = pGlobalTXT_LocalizationStrings[155];
-		  v54 = 2;
-          ShowStatusBarString(v9, v54);
-          return;
+			dword_F8B1E4 = 1;
+			v0->_4BE2DD(v79, (int)((char *)v77 - 1), (int)v16->ptr_1C);
+			viewparams->bRedrawGameUI = 1;
+			pRenderer->ClearZBuffer(0, 479);
+			v53 = 0;
+			v51 = 77;
+			v27 = v0;
+			v27->PlaySound((PlayerSpeech)v51, v53);
+			return;
+		}
+		v0->PlaySound(SPEECH_79, 0);
+		v56 = 0;
+		v52 = 0;
+		v50 = 0;
+		v49 = 0;
+		v48 = -1;
+		v47 = 0;
+		v46 = 0;
+		//LABEL_87:
+		pAudioPlayer->PlaySound(SOUND_27, v46, v47, v48, v49, v50, v52, v56);
+		break;
+		}
+	case 4:
+		{
+		v10 = pMouse->GetCursorPos(&v62)->x - 14;
+		v79 = (v10 >> 5) + 14 * ((pMouse->GetCursorPos(&v66)->y - 17) >> 5);
+		if ( pMouse->GetCursorPos(&v58)->x > 13 )
+		{
+			if ( pMouse->GetCursorPos(&v64)->x < 462 )
+			{
+			v11 = v0->GetItemIDAtInventoryIndex((int *)&v79);
+			if ( v11 )
+			{
+				//v80 = v0->_4B8179(p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C]);
+				v80 = v0->_4B8179(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier);
+				v12 = (int)&v0->pInventoryItems[v11-1];
+				if ( !(*(char *)(v12 + 20) & 1) )
+				{
+				_this = (ItemGen *)window_SpeakInHouse->ptr_1C;
+				if ( sub_4BDAAF((ItemGen *)v12, (int)_this) )
+				{
+					if ( pParty->uNumGold >= v80 )
+					{
+					dword_F8B1E4 = 1;
+					Party::TakeGold(v80);
+					*(int *)(v12 + 20) |= 1u;
+					v0->PlaySound(SPEECH_73, 0);
+					v9 = pGlobalTXT_LocalizationStrings[569];
+					v54 = 2;
+					ShowStatusBarString(v9, v54);
+					return;
+					}
+					v13 = _this;
+					v55 = 2;
+					HousePlaySomeSound((unsigned int)v13, v55);
+					return;
+				}
+				pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0);
+				v53 = 0;
+				v51 = 79;
+				v27 = v0;
+				v27->PlaySound((PlayerSpeech)v51, v53);
+				return;
+				}
+				v53 = 0;
+	//LABEL_30:
+				v51 = 76;
+				v27 = v0;
+				v27->PlaySound((PlayerSpeech)v51, v53);
+				return;
+			}
+			}
+		}
+		break;
 		}
-      }
-    }
-    v39 = v0->AddItem(0xFFFFFFFFu, v32->uItemID);
-    if ( v39 )
-    {
-      v32->SetIdentified();
-      v7 = v73 == 1;
-      v40 = (int)((char *)v0 + 36 * v39);
-      memcpy((void *)(v40 + 496), v32, 0x24u);
-      if ( v7 )
-      {
-        if ( (short)v74 )
-        {
-          v41 = uNumSeconds;
-          if ( uNumSeconds == 1 || uNumSeconds == 2 )
-          {
-            *(char *)(v40 + 517) |= 1u;
-            sub_4B1447_party_fine((int)window_SpeakInHouse->ptr_1C, v41, a6);
-		    viewparams->bRedrawGameUI = v26;
-		    _this->Reset();
-		    pRenderer->ClearZBuffer(0, 479);
-		    v27 = v77;
-		    v53 = 0;
-		    v51 = SPEECH_75;
-		    v27->PlaySound((PlayerSpeech)v51, v53);
-		    return;
-          }
-        }
-      }
-//LABEL_42:
-      dword_F8B1E4 = v26;
-      Party::TakeGold(v80);
-//LABEL_43:
-      viewparams->bRedrawGameUI = v26;
-      _this->Reset();
-      pRenderer->ClearZBuffer(0, 479);
-      v27 = v77;
-      v53 = 0;
-      v51 = SPEECH_75;
-//LABEL_81:
-      v27->PlaySound((PlayerSpeech)v51, v53);
-      return;
-    }
-    v0->PlaySound(SPEECH_NoRoom, 0);
-    v54 = 2;
-    v9 = pGlobalTXT_LocalizationStrings[563];   // "Pack is Full!"
-    ShowStatusBarString(v9, v54);
-    return;
-  }
-  if ( dialog_menu_id == 3 )
-  {
-    v14 = pMouse->GetCursorPos(&v71)->x - 14;
-    v79 = (v14 >> 5) + 14 * ((pMouse->GetCursorPos(&v69)->y - 17) >> 5);
-    if ( pMouse->GetCursorPos(&v67)->x <= 13
-      || pMouse->GetCursorPos(&v65)->x >= 462
-      || (v15 = v0->GetItemIDAtInventoryIndex((int *)&v79), (v77 = (Player *)v15) == 0) )
-      return;
-    v16 = window_SpeakInHouse;
-    if ( sub_4BDAAF((ItemGen *)&v0->pInventoryItems[v15-1], (int)window_SpeakInHouse->ptr_1C) )
-    {
-      dword_F8B1E4 = 1;
-      v0->_4BE2DD(v79, (int)((char *)v77 - 1), (int)v16->ptr_1C);
-      viewparams->bRedrawGameUI = 1;
-      pRenderer->ClearZBuffer(0, 479);
-      v53 = 0;
-      v51 = 77;
-      v27 = v0;
-      v27->PlaySound((PlayerSpeech)v51, v53);
-      return;
-	}
-    v0->PlaySound(SPEECH_79, 0);
-    v56 = 0;
-    v52 = 0;
-    v50 = 0;
-    v49 = 0;
-    v48 = -1;
-    v47 = 0;
-    v46 = 0;
-//LABEL_87:
-    pAudioPlayer->PlaySound(SOUND_27, v46, v47, v48, v49, v50, v52, v56);
-    return;
-  }
-  if ( dialog_menu_id == 4 )
-  {
-    v10 = pMouse->GetCursorPos(&v62)->x - 14;
-    v79 = (v10 >> 5) + 14 * ((pMouse->GetCursorPos(&v66)->y - 17) >> 5);
-    if ( pMouse->GetCursorPos(&v58)->x > 13 )
-    {
-      if ( pMouse->GetCursorPos(&v64)->x < 462 )
-      {
-        v11 = v0->GetItemIDAtInventoryIndex((int *)&v79);
-        if ( v11 )
-        {
-          //v80 = v0->_4B8179(p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C]);
-          v80 = v0->_4B8179(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier);
-          v12 = (int)&v0->pInventoryItems[v11-1];
-          if ( !(*(char *)(v12 + 20) & 1) )
-          {
-            _this = (ItemGen *)window_SpeakInHouse->ptr_1C;
-            if ( sub_4BDAAF((ItemGen *)v12, (int)_this) )
-            {
-              if ( pParty->uNumGold >= v80 )
-              {
-                dword_F8B1E4 = 1;
-                Party::TakeGold(v80);
-                *(int *)(v12 + 20) |= 1u;
-                v0->PlaySound(SPEECH_73, 0);
-                v9 = pGlobalTXT_LocalizationStrings[569];
-                v54 = 2;
-                ShowStatusBarString(v9, v54);
-                return;
-              }
-              v13 = _this;
-              v55 = 2;
-              HousePlaySomeSound((unsigned int)v13, v55);
-              return;
-            }
-            pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0);
-            v53 = 0;
-            v51 = 79;
-            v27 = v0;
-	        v27->PlaySound((PlayerSpeech)v51, v53);
-		    return;
-          }
-          v53 = 0;
-//LABEL_30:
-          v51 = 76;
-          v27 = v0;
-	      v27->PlaySound((PlayerSpeech)v51, v53);
-		  return;
+	case 5:
+		{
+		v1 = pMouse->GetCursorPos(&a2)->x - 14;
+		v79 = (v1 >> 5) + 14 * ((pMouse->GetCursorPos(&v70)->y - 17) >> 5);
+		if ( pMouse->GetCursorPos(&v60)->x > 13 )
+		{
+			if ( pMouse->GetCursorPos(&v72)->x < 462 )
+			{
+				v2 = v0->GetItemIDAtInventoryIndex((int *)&v79);
+				if ( v2 )
+				{
+					v3 = (int)&v0->pInventoryItems[v2-1];
+					//v4 = p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C];
+					v4 = p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier;
+
+					auto _v = (ItemGen *)&v0->pInventoryItems[v2-1];
+					v5 = _v->GetValue();
+
+					v6 = v0->_4B81C3(v5, v4);
+					v7 = (*(char *)(v3 + 20) & 2) == 0;
+					v80 = v6;
+					if ( !v7 )
+					{
+						_this = (ItemGen *)window_SpeakInHouse->ptr_1C;
+						if ( sub_4BDAAF((ItemGen *)v3, (int)_this) )
+						{
+						if ( pParty->uNumGold >= v80 )
+						{
+							dword_F8B1E4 = 1;
+							Party::TakeGold(v80);
+							v8 = *(int *)(v3 + 20);
+							LOBYTE(v8) = v8 & 0xFD;
+							*(int *)(v3 + 20) = v8 | 1;
+							v0->PlaySound(SPEECH_74, 0);
+							v9 = pGlobalTXT_LocalizationStrings[570];
+			//LABEL_25:
+							v54 = 2;
+			//LABEL_71:
+							ShowStatusBarString(v9, v54);
+							return;
+						}
+			//LABEL_26:
+						v13 = _this;
+						v55 = 2;
+			//LABEL_84:
+						HousePlaySomeSound((unsigned int)v13, v55);
+						return;
+						}
+						pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0);
+						v53 = 0;
+			//LABEL_28:
+						v51 = 79;
+			//LABEL_80:
+						v27 = v0;
+						v27->PlaySound((PlayerSpeech)v51, v53);
+					return;
+					}
+					v53 = 0;
+					v51 = 76;
+					v27 = v0;
+					v27->PlaySound((PlayerSpeech)v51, v53);
+					return;          
+				}
+			}
+		}
+		break;
+		}
+	case 2:
+	case 95:
+		{
+	//LABEL_49:
+		v28 = pMouse->GetCursorPos(&v59);
+		v29 = pRenderer->pActiveZBuffer[v28->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v57)->y]] & 0xFFFF;
+		if ( !v29 )
+			return;
+		v30 = window_SpeakInHouse->ptr_1C;
+		// v31 = 9 * (v29 - 1 + 12 * (int)v30);
+		if ( dialog_menu_id == 2 )
+		{
+			v32 = (ItemGen *)&pParty->StandartItemsInShops[(int)v30][v29-1];
+			_this = (ItemGen *)&pParty->StandartItemsInShops[(int)v30][v29-1];
+		}
+		else
+		{
+			_this =&pParty->SpecialItemsInShops[(int)v30][v29-1]; //(ItemGen *)&pParty->field_C59C[v31 + 724];
+			v32 = &pParty->SpecialItemsInShops[(int)v30][v29-1];//(ItemGen *)&pParty->field_C59C[v31 + 724];
 		}
-      }
-    }
-  }
-  else
-  {
-    if ( dialog_menu_id == 5 )
-    {
-      v1 = pMouse->GetCursorPos(&a2)->x - 14;
-      v79 = (v1 >> 5) + 14 * ((pMouse->GetCursorPos(&v70)->y - 17) >> 5);
-      if ( pMouse->GetCursorPos(&v60)->x > 13 )
-      {
-        if ( pMouse->GetCursorPos(&v72)->x < 462 )
-        {
-          v2 = v0->GetItemIDAtInventoryIndex((int *)&v79);
-          if ( v2 )
-          {
-            v3 = (int)&v0->pInventoryItems[v2-1];
-            //v4 = p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C];
-            v4 = p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier;
-
-            auto _v = (ItemGen *)&v0->pInventoryItems[v2-1];
-            v5 = _v->GetValue();
-
-            v6 = v0->_4B81C3(v5, v4);
-            v7 = (*(char *)(v3 + 20) & 2) == 0;
-            v80 = v6;
-            if ( !v7 )
-            {
-              _this = (ItemGen *)window_SpeakInHouse->ptr_1C;
-              if ( sub_4BDAAF((ItemGen *)v3, (int)_this) )
-              {
-                if ( pParty->uNumGold >= v80 )
-                {
-                  dword_F8B1E4 = 1;
-                  Party::TakeGold(v80);
-                  v8 = *(int *)(v3 + 20);
-                  LOBYTE(v8) = v8 & 0xFD;
-                  *(int *)(v3 + 20) = v8 | 1;
-                  v0->PlaySound(SPEECH_74, 0);
-                  v9 = pGlobalTXT_LocalizationStrings[570];
-//LABEL_25:
-                  v54 = 2;
-//LABEL_71:
-                  ShowStatusBarString(v9, v54);
-                  return;
-                }
-//LABEL_26:
-                v13 = _this;
-                v55 = 2;
-//LABEL_84:
-                HousePlaySomeSound((unsigned int)v13, v55);
-                return;
-              }
-              pAudioPlayer->PlaySound(SOUND_27, 0, 0, -1, 0, 0, 0, 0);
-              v53 = 0;
-//LABEL_28:
-              v51 = 79;
-//LABEL_80:
-              v27 = v0;
-			  v27->PlaySound((PlayerSpeech)v51, v53);
+		//v33 = p2DEvents_minus1__20[13 * (signed int)v30];
+		v33 = p2DEvents[(signed int)v30 - 1].fPriceMultiplier;
+		v34 = v32->GetValue();
+		v80 = v0->_4B8142(v34, v33);
+		LOWORD(v35) = GetAsyncKeyState(VK_CONTROL);
+		v74 = v35;
+		v36 = v0->CanSteal();
+		uNumSeconds = 0;
+		a3 = 0;
+		v73 = v36;
+		v37 = pMapStats->GetMapInfo(pCurrentMapName);
+		if ( v37 )
+			a3 = pMapStats->pInfos[v37]._steal_perm;
+		v38 = GetPartyReputation();
+		v26 = 1;
+		if ( v73 == 1 )
+		{
+			if ( (short)v74 )
+			{
+			uNumSeconds = v0->StealFromShop(v32, a3, v38, 0, &a6);
+			if ( !uNumSeconds )
+			{
+				sub_4B1447_party_fine((int)window_SpeakInHouse->ptr_1C, 0, a6);
+				return;
+			}
+			}
+		}
+		if ( pParty->uNumGold < v80 )
+		{
+			v24 = 2;
+			if ( uNumSeconds != 2 )
+			{
+				if ( uNumSeconds != 1 )
+				{
+					HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, v24);
+					v9 = pGlobalTXT_LocalizationStrings[155];
+					v54 = 2;
+					ShowStatusBarString(v9, v54);
+					return;
+				}
+			}
+		}
+		v39 = v0->AddItem(0xFFFFFFFFu, v32->uItemID);
+		if ( v39 )
+		{
+			v32->SetIdentified();
+			v7 = v73 == 1;
+			v40 = (int)((char *)v0 + 36 * v39);
+			memcpy((void *)(v40 + 496), v32, 0x24u);
+			if ( v7 )
+			{
+				if ( (short)v74 )
+				{
+					v41 = uNumSeconds;
+					if ( uNumSeconds == 1 || uNumSeconds == 2 )
+					{
+						*(char *)(v40 + 517) |= 1u;
+						sub_4B1447_party_fine((int)window_SpeakInHouse->ptr_1C, v41, a6);
+						viewparams->bRedrawGameUI = v26;
+						_this->Reset();
+						pRenderer->ClearZBuffer(0, 479);
+						v27 = v77;
+						v53 = 0;
+						v51 = SPEECH_75;
+						v27->PlaySound((PlayerSpeech)v51, v53);
+						return;
+					}
+				}
+			}
+	//LABEL_42:
+			dword_F8B1E4 = v26;
+			Party::TakeGold(v80);
+	//LABEL_43:
+			viewparams->bRedrawGameUI = v26;
+			_this->Reset();
+			pRenderer->ClearZBuffer(0, 479);
+			v27 = v77;
+			v53 = 0;
+			v51 = SPEECH_75;
+	//LABEL_81:
+			v27->PlaySound((PlayerSpeech)v51, v53);
 			return;
-            }
-            v53 = 0;
-            v51 = 76;
-            v27 = v0;
-	        v27->PlaySound((PlayerSpeech)v51, v53);
-		    return;          
-		  }
-        }
-      }
-    }
+		}
+		v0->PlaySound(SPEECH_NoRoom, 0);
+		v54 = 2;
+		v9 = pGlobalTXT_LocalizationStrings[563];   // "Pack is Full!"
+		ShowStatusBarString(v9, v54);
+		break;
+		}
+
+	default:
+		{
+		if( dialog_menu_id >= 36 && dialog_menu_id <= 72 )
+		{
+			v42 = dialog_menu_id - 36;
+			//v43 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0);
+			v43 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0);
+			v44 = v43 * (100 - v0->GetMerchant()) / 100;
+			if ( v44 < v43 / 3 )
+			v44 = v43 / 3;
+			if ( byte_4ED970_skill_learn_ability_by_class_table[v0->classType][v42] )
+			{
+				pSkill = &v0->pActiveSkills[v42];
+				if ( !*pSkill )
+				{
+					if ( pParty->uNumGold < v44 )
+					{
+						ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u);// "You don't have enough gold"
+						v13 = window_SpeakInHouse->ptr_1C;
+						if ( in_current_building_type == BildingType_Training )
+							v55 = 4;
+						else
+							v55 = 2;
+						HousePlaySomeSound((unsigned int)v13, v55);
+						return;
+					}
+					Party::TakeGold(v44);
+					v53 = 0;
+					dword_F8B1E4 = 1;
+					*pSkill = 1;
+					v51 = 78;
+					v27 = v0;
+					v27->PlaySound((PlayerSpeech)v51, v53);
+					return;
+				}
+			}
+		}
+		break;
+		}
   }
 }