diff mm7_2.cpp @ 548:0ca16f606be8

TavernDialog clean
author zipi
date Sun, 03 Mar 2013 20:11:22 +0000
parents 4475d81889e6
children b8339415fa98 9caf59edb1ee
line wrap: on
line diff
--- a/mm7_2.cpp	Sun Mar 03 19:47:48 2013 +0000
+++ b/mm7_2.cpp	Sun Mar 03 20:11:22 2013 +0000
@@ -570,41 +570,57 @@
     v7 = 1;
     v83 = 1;
   }
-  if ( dword_F8B19C > 101 )
-  {
-    if ( dword_F8B19C == 102 )
-    {
-      v65 = pFontArrus;
-      pOutString = pFontArrus;
-      strcpy(pTmpBuf, pNPCTopics[354].pText);
-      v78.uFrameWidth = 460;
-      v78.uFrameZ = 452;
-      v62 = v65->CalcTextHeight(pTmpBuf, &v78, 12, 0) + 7;
-      if ( 352 - v62 < 8 )
-      {
-        pOutString = pFontCreate;
-        v62 = pFontCreate->CalcTextHeight(pTmpBuf, &v78, 12, 0) + 7;
-      }
-
-      auto pTex = (uTextureID_Leather != -1 ? &pIcons_LOD->pTextures[uTextureID_Leather] : 0);
-      pRenderer->_4A6A68(
-        8u,
-        352 - v62,
-        pTex,
-        (pTex ? pTex->uTextureHeight : 26) - v62);
-
-      pRenderer->DrawTextureIndexed(8u, 347 - v62, pTexture_591428);
-      v73 = 0;
-      v70 = 0;
-      v68 = 0;
-      v63 = FitTextInAWindow(pTmpBuf, pOutString, &v78, 0xCu, 0);
-      v64 = pOutString;
-    }
-    else
-    {
-      if ( dword_F8B19C != 103 )
-      {
-        if ( dword_F8B19C != 104 || pArcomageGame->bGameInProgress == 1 )
+  switch(dword_F8B19C)
+  {
+	case 102:
+		{
+		v65 = pFontArrus;
+		pOutString = pFontArrus;
+		strcpy(pTmpBuf, pNPCTopics[354].pText);
+		v78.uFrameWidth = 460;
+		v78.uFrameZ = 452;
+		v62 = v65->CalcTextHeight(pTmpBuf, &v78, 12, 0) + 7;
+		if ( 352 - v62 < 8 )
+		{
+			pOutString = pFontCreate;
+			v62 = pFontCreate->CalcTextHeight(pTmpBuf, &v78, 12, 0) + 7;
+		}
+
+		auto pTex = (uTextureID_Leather != -1 ? &pIcons_LOD->pTextures[uTextureID_Leather] : 0);
+		pRenderer->_4A6A68(8u, 352 - v62, pTex, (pTex ? pTex->uTextureHeight : 26) - v62);
+
+		pRenderer->DrawTextureIndexed(8u, 347 - v62, pTexture_591428);
+		v73 = 0;
+		v70 = 0;
+		v68 = 0;
+		v63 = FitTextInAWindow(pTmpBuf, pOutString, &v78, 0xCu, 0);
+		v64 = pOutString;
+		window_SpeakInHouse->DrawText(v64, 12, 354 - v62, 0, v63, v68, v70, v73);
+		break;
+		}
+	case 103:
+		{
+		strcpy(pTmpBuf, pNPCTopics[(uint)window_SpeakInHouse->ptr_1C + 247].pText);
+		v78.uFrameWidth = 460;
+		v78.uFrameZ = 452;
+		v61 = pFontArrus->CalcTextHeight(pTmpBuf, &v78, 12, 0);
+		v62 = v61 + 7;
+
+		auto pTex = (uTextureID_Leather != -1 ? &pIcons_LOD->pTextures[uTextureID_Leather] : nullptr);
+		pRenderer->_4A6A68(8u, 352 - (v61 + 7), pTex, (pTex ? pTex->uTextureHeight : 26) - (v61 + 7));
+
+		pRenderer->DrawTextureIndexed(8u, 347 - v62, pTexture_591428);
+		v73 = 0;
+		v70 = 0;
+		v68 = 0;
+		v63 = FitTextInAWindow(pTmpBuf, pFontArrus, &v78, 0xCu, 0);
+		v64 = pFontArrus;
+		window_SpeakInHouse->DrawText(v64, 12, 354 - v62, 0, v63, v68, v70, v73);
+		break;
+		}
+	case 104:
+		{
+		if ( pArcomageGame->bGameInProgress == 1 )
           return;
         v26 = pTmpBuf;
         if ( pArcomageGame->uGameResult )
@@ -619,42 +635,16 @@
           v72 = pGlobalTXT_LocalizationStrings[639];// A tie!
         }
         strcpy(pTmpBuf, v72);
-LABEL_97:
+//LABEL_97:
         v71 = 3;
         v69 = v26;
         v67 = v84[0];
         v66 = (174 - pFontArrus->CalcTextHeight(v26, &v79, 0, 0)) / 2 + 138;
-        goto LABEL_98;
-      }
-      strcpy(pTmpBuf, pNPCTopics[(uint)window_SpeakInHouse->ptr_1C + 247].pText);
-      v78.uFrameWidth = 460;
-      v78.uFrameZ = 452;
-      v61 = pFontArrus->CalcTextHeight(pTmpBuf, &v78, 12, 0);
-      v62 = v61 + 7;
-
-      auto pTex = (uTextureID_Leather != -1 ? &pIcons_LOD->pTextures[uTextureID_Leather] : nullptr);
-      pRenderer->_4A6A68(
-        8u,
-        352 - (v61 + 7),
-        pTex,
-        (pTex ? pTex->uTextureHeight : 26) - (v61 + 7));
-
-      pRenderer->DrawTextureIndexed(8u, 347 - v62, pTexture_591428);
-      v73 = 0;
-      v70 = 0;
-      v68 = 0;
-      v63 = FitTextInAWindow(pTmpBuf, pFontArrus, &v78, 0xCu, 0);
-      v64 = pFontArrus;
-    }
-    window_SpeakInHouse->DrawText(v64, 12, 354 - v62, 0, v63, v68, v70, v73);
-    return;
-  }
-  if ( dword_F8B19C != 101 )
-  {
-    if ( dword_F8B19C != 1 )
-    {
-      if ( dword_F8B19C == 15 )
-      {
+        v79.DrawTitleText(pFontArrus, 0, v66, v67, v69, v71);
+		break;
+		}
+	case 15:
+		{
         if ( pParty->uNumGold >= (unsigned int)pOutString )
         {
           Party::TakeGold((unsigned int)pOutString);
@@ -677,96 +667,106 @@
           ++pMessageQueue_50CBD0->uNumMessages;
           return;
         }
-      }
-      else
-      {
-        if ( dword_F8B19C != 16 )
-        {
-          if ( dword_F8B19C != 96 || !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
-            return;
-          v8 = pDialogueWindow;
-          *(float *)&v89 = 0.0;
-
-          //v9 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0);
-          v9 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0);
-
-          pOutString = (GUIFont *)(v9 * (100 - v85->GetMerchant()) / 100);
-          if ( (signed int)pOutString < v9 / 3 )
-            pOutString = (GUIFont *)(v9 / 3);
-          v10 = v8->pStartingPosActiveItem;
-          v11 = v10 + v8->pNumPresenceButton;
-          v86 = 0;
-          if ( (signed int)v10 < v11 )
-          {
-            do
-            {
-              v12 = v8->GetControl(v10)->uControlParam - 36;
-              if ( byte_4ED970_skill_learn_ability_by_class_table[v85->classType][v12] && !v85->pActiveSkills[v12] )
-              {
-                v13 = pFontArrus->CalcTextHeight(pSkillNames[v12], &v79, 0, 0);
-                v89 += v13;
-                ++v86;
-              }
-              ++v10;
-            }
-            while ( (signed int)v10 < v8->pStartingPosActiveItem + v8->pNumPresenceButton );
-            if ( v86 )
-            {
-              sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[401], pOutString);
-              v79.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf, 3u);
-              pOutString = (GUIFont *)((149 - v89) / v86);
-              if ( (149 - v89) / v86 > 32 )
-                pOutString = (GUIFont *)32;
-              v14 = (149 - v86 * (signed int)pOutString - v89) / 2 - (signed int)pOutString / 2 + 162;
-              v89 = v8->pStartingPosActiveItem;
-              v83 = v14;
-              if ( v89 < v89 + v8->pNumPresenceButton )
-              {
-                v86 = 2;
-                do
-                {
-                  v15 = v8->GetControl(v89);
-                  v16 = v15;
-                  v17 = v15->uControlParam - 36;
-                  if ( !byte_4ED970_skill_learn_ability_by_class_table[v85->classType][v17] || v85->pActiveSkills[v17] )
-                  {
-                    v16->uW = 0;
-                    v16->uHeight = 0;
-                    v16->uY = 0;
-                  }
-                  else
-                  {
-                    v18 = pSkillNames[v17];
-                    v16->uY = (unsigned int)((char *)pOutString + v83);
-                    Str[1] = v18;
-                    v19 = pFontArrus->CalcTextHeight(v18, &v79, 0, 0);
-                    v20 = v16->uY;
-                    v21 = v86;
-                    v16->uHeight = v19;
-                    v22 = v19 + v20 - 1;
-                    v16->uW = v22;
-                    v83 = v22;
-                    v23 = v84[0];
-                    if ( pDialogueWindow->pCurrentPosActiveItem != v21 )
-                      v23 = v81;
-                    v79.DrawTitleText(pFontArrus, 0, v20, v23, Str[1], 3u);
-                  }
-                  v24 = v8->pNumPresenceButton;
-                  ++v89;
-                  v25 = v8->pStartingPosActiveItem + v24;
-                  ++v86;
-                }
-                while ( v89 < v25 );
-              }
-              return;
-            }
-          }
-          v26 = pTmpBuf;
-          sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], v85->pName, pClassNames[v85->classType]);
-          strcat(pTmpBuf, "\n \n");
-          strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);
-          goto LABEL_97;
-        }
+		ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u);
+        HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, 4);
+        pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, v5, 0);
+		break;
+		}
+	case 96:
+		{
+		if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
+			return;
+		v8 = pDialogueWindow;
+		*(float *)&v89 = 0.0;
+
+		//v9 = (signed __int64)(*(float *)&p2DEvents_minus1__24[13 * (unsigned int)ptr_507BC0->ptr_1C] * 500.0);
+		v9 = (signed __int64)(p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0);
+
+		pOutString = (GUIFont *)(v9 * (100 - v85->GetMerchant()) / 100);
+		if ( (signed int)pOutString < v9 / 3 )
+			pOutString = (GUIFont *)(v9 / 3);
+		v10 = v8->pStartingPosActiveItem;
+		v11 = v10 + v8->pNumPresenceButton;
+		v86 = 0;
+		if ( (signed int)v10 < v11 )
+		{
+			do
+			{
+				v12 = v8->GetControl(v10)->uControlParam - 36;
+				if ( byte_4ED970_skill_learn_ability_by_class_table[v85->classType][v12] && !v85->pActiveSkills[v12] )
+				{
+					v13 = pFontArrus->CalcTextHeight(pSkillNames[v12], &v79, 0, 0);
+					v89 += v13;
+					++v86;
+				}
+				++v10;
+			}
+			while ( (signed int)v10 < v8->pStartingPosActiveItem + v8->pNumPresenceButton );
+			if ( v86 )
+			{
+				sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[401], pOutString);
+				v79.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf, 3u);
+				pOutString = (GUIFont *)((149 - v89) / v86);
+				if ( (149 - v89) / v86 > 32 )
+					pOutString = (GUIFont *)32;
+				v14 = (149 - v86 * (signed int)pOutString - v89) / 2 - (signed int)pOutString / 2 + 162;
+				v89 = v8->pStartingPosActiveItem;
+				v83 = v14;
+				if ( v89 < v89 + v8->pNumPresenceButton )
+				{
+					v86 = 2;
+					do
+					{
+						v15 = v8->GetControl(v89);
+						v16 = v15;
+						v17 = v15->uControlParam - 36;
+						if ( !byte_4ED970_skill_learn_ability_by_class_table[v85->classType][v17] || v85->pActiveSkills[v17] )
+						{
+							v16->uW = 0;
+							v16->uHeight = 0;
+							v16->uY = 0;
+						}
+						else
+						{
+							v18 = pSkillNames[v17];
+							v16->uY = (unsigned int)((char *)pOutString + v83);
+							Str[1] = v18;
+							v19 = pFontArrus->CalcTextHeight(v18, &v79, 0, 0);
+							v20 = v16->uY;
+							v21 = v86;
+							v16->uHeight = v19;
+							v22 = v19 + v20 - 1;
+							v16->uW = v22;
+							v83 = v22;
+							v23 = v84[0];
+							if ( pDialogueWindow->pCurrentPosActiveItem != v21 )
+								v23 = v81;
+							v79.DrawTitleText(pFontArrus, 0, v20, v23, Str[1], 3u);
+						}
+						v24 = v8->pNumPresenceButton;
+						++v89;
+						v25 = v8->pStartingPosActiveItem + v24;
+						++v86;
+					}
+					while ( v89 < v25 );
+				}
+				return;
+			}
+		}
+		v26 = pTmpBuf;
+		sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], v85->pName, pClassNames[v85->classType]);
+		strcat(pTmpBuf, "\n \n");
+		strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);
+		v71 = 3;
+		v69 = v26;
+		v67 = v84[0];
+		v66 = (174 - pFontArrus->CalcTextHeight(v26, &v79, 0, 0)) / 2 + 138;
+		v79.DrawTitleText(pFontArrus, 0, v66, v67, v69, v71);
+		return;
+		break;
+		}
+	case 16:
+		{
         *(_QWORD *)Str = pParty->uNumFoodRations;
         //if ( (double)pParty->uNumFoodRations >= p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C] )
         if ( (double)pParty->uNumFoodRations >= p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier )
@@ -774,7 +774,8 @@
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[140], 2u);
           if ( uActiveCharacter )
             pPlayers[uActiveCharacter]->PlaySound(SPEECH_67, 0);
-          goto LABEL_43;
+          pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, v5, 0);
+          return;
         }
         if ( pParty->uNumGold >= v7 )
         {
@@ -783,172 +784,193 @@
           pParty->uNumFoodRations = (signed __int64)p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier;
           HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, 3);
           v5 = 1;
-LABEL_43:
+//LABEL_43:
           pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, v5, 0);
           return;
           //goto LABEL_51;
         }
-      }
-      ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u);
-      HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, 4);
-      goto LABEL_43;
-    }
-    if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
-      return;
-    v28 = *(int *)v84;
-    if ( pDialogueWindow->pCurrentPosActiveItem != 2 )
-      v28 = v81;
-    sprintf(Dest, format_4E2DC8, v28);
-    sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[178], pOutString);
-    strcat(Dest, pTmpBuf2);
-    v90 = pFontArrus->CalcTextHeight(Dest, &v79, 0, 0);
-    strcat(Dest, "\n \n");
-    v29 = *(int *)v84;
-    if ( pDialogueWindow->pCurrentPosActiveItem != 3 )
-      v29 = v81;
-    sprintf(a1, format_4E2DC8, v29);
-    sprintf(pTmpBuf2,
-      pGlobalTXT_LocalizationStrings[86],
-      //(signed __int64)p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C],
-      (signed __int64)p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier,
-      v83);
-    strcat(a1, pTmpBuf2);
-    v88 = pFontArrus->CalcTextHeight(a1, &v79, 0, 0);
-    strcat(a1, "\n \n");
-    v30 = *(int *)v84;
-    if ( pDialogueWindow->pCurrentPosActiveItem != 4 )
-      v30 = v81;
-    sprintf(v77, format_4E2DC8, v30);
-    strcat(v77, pGlobalTXT_LocalizationStrings[160]);
-    v82 = pFontArrus->CalcTextHeight(v77, &v79, 0, 0);
-    strcat(v77, "\n \n");
-    v75[0] = 0;
-    v87 = 0;
-    v31 = (signed int)window_SpeakInHouse->ptr_1C;
-    if ( v31 >= 108 && v31 <= 120 )
-    {
-      v32 = *(int *)v84;
-      if ( pDialogueWindow->pCurrentPosActiveItem != 5 )
-        v32 = v81;
-      sprintf(v75, format_4E2DC8, v32);
-      strcat(v75, pGlobalTXT_LocalizationStrings[611]);
-      v87 = pFontArrus->CalcTextHeight(v75, &v79, 0, 0);
-    }
-    v33 = pDialogueWindow;
-    Str[1] = (char *)pDialogueWindow;
-    v34 = pDialogueWindow->pStartingPosActiveItem;
-    v35 = v34 + pDialogueWindow->pNumPresenceButton;
-    v36 = LOBYTE(pFontArrus->uFontHeight) - 3;
-    v37 = -pDialogueWindow->pNumPresenceButton < 0;
-    pOutString = (GUIFont *)pDialogueWindow->pStartingPosActiveItem;
-    if ( !(v37 ^ __OFSUB__(v34, v35)) )
-    {
-LABEL_75:
-      sprintf(pTmpBuf, "%s%s%s%s", &Dest, &a1, &v77, &v75);
-      v71 = 3;
-      v69 = pTmpBuf;
-      v67 = 0;
-      v66 = 146;
-LABEL_98:
-      v79.DrawTitleText(pFontArrus, 0, v66, v67, v69, v71);
-      return;
-    }
-    while ( 1 )
-    {
-      v38 = v33->GetControl((unsigned int)pOutString);
-      if ( v38->uControlParam == 15 )
-      {
-        v46 = v90;
-        v38->uHeight = v90;
-        v38->uY = 146;
-        v41 = v46 + 145;
-        goto LABEL_73;
-      }
-      if ( v38->uControlParam == 16 )
-      {
-        v44 = v88;
-        v45 = v90 + v36 + 146;
-        v38->uHeight = v88;
-        v38->uY = v45;
-        v41 = v45 + v44 - 1;
-        goto LABEL_73;
-      }
-      if ( v38->uControlParam == 96 )
-        break;
-      if ( v38->uControlParam == 101 )
-      {
-        v39 = v90 + 3 * v36 + v87 + v88 + 146;
-        v33 = (GUIWindow *)Str[1];
-        v40 = v87;
-        v38->uHeight = v87;
-        v38->uY = v39;
-        v41 = v39 + v40 - 1;
-LABEL_73:
-        v38->uW = v41;
-      }
-      v47 = v33->pStartingPosActiveItem;
-      pOutString = (GUIFont *)((char *)pOutString + 1);
-      if ( (signed int)pOutString >= v33->pNumPresenceButton + v47 )
-        goto LABEL_75;
-    }
-    v42 = v90 + v88 + 2 * v36 + 146;
-    v43 = v82;
-    v38->uY = v42;
-    v38->uHeight = v43;
-    v41 = v43 + v42 - 1;
-    goto LABEL_73;
-  }
-  if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
-  {
-    v48 = 2;
-    pShopOptions[0] = pGlobalTXT_LocalizationStrings[620];
-    pOutString = 0;
-    pShopOptions[1] = pGlobalTXT_LocalizationStrings[622];
-    if ( pParty->HasItem(0x28Bu) )
-    {
-      pShopOptions[2] = pGlobalTXT_LocalizationStrings[621];
-      v48 = 3;
-    }
-    for ( i = 0; i < v48; ++i )
-    {
-      v50 = pFontArrus->CalcTextHeight(pShopOptions[i], &v79, 0, 0);
-      pOutString = (GUIFont *)((char *)pOutString + v50);
-    }
-    v86 = (174 - (signed int)pOutString) / v48;
-    v51 = pDialogueWindow;
-    v52 = 174 - v48 * (174 - (signed int)pOutString) / v48 - (signed int)pOutString;
-    v53 = v52 - HIDWORD(v52);
-    LODWORD(v52) = pDialogueWindow->pStartingPosActiveItem;
-    HIDWORD(v52) = v52 + pDialogueWindow->pNumPresenceButton;
-    v54 = (v53 >> 1) - v86 / 2 + 138;
-    v37 = -pDialogueWindow->pNumPresenceButton < 0;
-    v89 = pDialogueWindow->pStartingPosActiveItem;
-    if ( v37 ^ __OFSUB__((int)v52, HIDWORD(v52)) )
-    {
-      v85 = (Player *)2;
-      pOutString = (GUIFont *)pShopOptions;
-      do
-      {
-        v55 = v51->GetControl(v89);
-        v56 = (const char **)pOutString;
-        v55->uY = v86 + v54;
-        v57 = pFontArrus->CalcTextHeight(*v56, &v79, 0, 0);
-        v58 = v55->uY;
-        v59 = v85;
-        v55->uHeight = v57;
-        v54 = v57 + v58 - 1;
-        v55->uW = v54;
-        v60 = v84[0];
-        if ( (Player *)pDialogueWindow->pCurrentPosActiveItem != v59 )
-          v60 = v81;
-        v79.DrawTitleText(pFontArrus, 0, v58, v60, *(const char **)&pOutString->cFirstChar, 3u);
-        v51 = pDialogueWindow;
-        v85 = (Player *)((char *)v85 + 1);
-        pOutString = (GUIFont *)((char *)pOutString + 4);
-        ++v89;
-      }
-      while ( v89 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem );
-    }
+		ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2u);
+        HousePlaySomeSound((unsigned int)window_SpeakInHouse->ptr_1C, 4);
+        pMessageQueue_50CBD0->AddMessage(UIMSG_Escape, v5, 0);
+		break;
+		}
+	case 1:
+		{
+		if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
+		  return;
+		v28 = *(int *)v84;
+		if ( pDialogueWindow->pCurrentPosActiveItem != 2 )
+		  v28 = v81;
+		sprintf(Dest, format_4E2DC8, v28);
+		sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[178], pOutString);
+		strcat(Dest, pTmpBuf2);
+		v90 = pFontArrus->CalcTextHeight(Dest, &v79, 0, 0);
+		strcat(Dest, "\n \n");
+		v29 = *(int *)v84;
+		if ( pDialogueWindow->pCurrentPosActiveItem != 3 )
+		  v29 = v81;
+		sprintf(a1, format_4E2DC8, v29);
+		sprintf(pTmpBuf2,
+		  pGlobalTXT_LocalizationStrings[86],
+		  //(signed __int64)p2DEvents_minus1__20[13 * (unsigned int)ptr_507BC0->ptr_1C],
+		  (signed __int64)p2DEvents[(unsigned int)window_SpeakInHouse->ptr_1C - 1].fPriceMultiplier,
+		  v83);
+		strcat(a1, pTmpBuf2);
+		v88 = pFontArrus->CalcTextHeight(a1, &v79, 0, 0);
+		strcat(a1, "\n \n");
+		v30 = *(int *)v84;
+		if ( pDialogueWindow->pCurrentPosActiveItem != 4 )
+		  v30 = v81;
+		sprintf(v77, format_4E2DC8, v30);
+		strcat(v77, pGlobalTXT_LocalizationStrings[160]);
+		v82 = pFontArrus->CalcTextHeight(v77, &v79, 0, 0);
+		strcat(v77, "\n \n");
+		v75[0] = 0;
+		v87 = 0;
+		v31 = (signed int)window_SpeakInHouse->ptr_1C;
+		if ( v31 >= 108 && v31 <= 120 )
+		{
+		  v32 = *(int *)v84;
+		  if ( pDialogueWindow->pCurrentPosActiveItem != 5 )
+			v32 = v81;
+		  sprintf(v75, format_4E2DC8, v32);
+		  strcat(v75, pGlobalTXT_LocalizationStrings[611]);
+		  v87 = pFontArrus->CalcTextHeight(v75, &v79, 0, 0);
+		}
+		v33 = pDialogueWindow;
+		Str[1] = (char *)pDialogueWindow;
+		v34 = pDialogueWindow->pStartingPosActiveItem;
+		v35 = v34 + pDialogueWindow->pNumPresenceButton;
+		v36 = LOBYTE(pFontArrus->uFontHeight) - 3;
+		v37 = -pDialogueWindow->pNumPresenceButton < 0;
+		pOutString = (GUIFont *)pDialogueWindow->pStartingPosActiveItem;
+		if ( !(v37 ^ __OFSUB__(v34, v35)) )
+		{
+	//LABEL_75:
+		  sprintf(pTmpBuf, "%s%s%s%s", &Dest, &a1, &v77, &v75);
+		  v71 = 3;
+		  v69 = pTmpBuf;
+		  v67 = 0;
+		  v66 = 146;
+	//LABEL_98:
+		  v79.DrawTitleText(pFontArrus, 0, v66, v67, v69, v71);
+		  return;
+		}
+		while ( 1 )
+		{
+		  v38 = v33->GetControl((unsigned int)pOutString);
+		  if ( v38->uControlParam == 15 )
+		  {
+			v46 = v90;
+			v38->uHeight = v90;
+			v38->uY = 146;
+			v41 = v46 + 145;
+			v38->uW = v41;
+		  }
+		  else if ( v38->uControlParam == 16 )
+		  {
+			v44 = v88;
+			v45 = v90 + v36 + 146;
+			v38->uHeight = v88;
+			v38->uY = v45;
+			v41 = v45 + v44 - 1;
+			v38->uW = v41;
+		  }
+		  else if ( v38->uControlParam == 96 )
+		  {
+			v42 = v90 + v88 + 2 * v36 + 146;
+			v43 = v82;
+			v38->uY = v42;
+			v38->uHeight = v43;
+			v41 = v43 + v42 - 1;
+			v38->uW = v41;
+		  }
+		  else if ( v38->uControlParam == 101 )
+		  {
+			v39 = v90 + 3 * v36 + v87 + v88 + 146;
+			v33 = (GUIWindow *)Str[1];
+			v40 = v87;
+			v38->uHeight = v87;
+			v38->uY = v39;
+			v41 = v39 + v40 - 1;
+	//LABEL_73:
+			v38->uW = v41;
+		  }
+		  v47 = v33->pStartingPosActiveItem;
+		  pOutString = (GUIFont *)((char *)pOutString + 1);
+		  if ( (signed int)pOutString >= v33->pNumPresenceButton + v47 )
+		  {
+			  sprintf(pTmpBuf, "%s%s%s%s", &Dest, &a1, &v77, &v75);
+			  v71 = 3;
+			  v69 = pTmpBuf;
+			  v67 = 0;
+			  v66 = 146;
+			  v79.DrawTitleText(pFontArrus, 0, v66, v67, v69, v71);
+			  return;
+		  }
+		}
+		break;
+		}
+	case 101:
+		{
+		if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() )
+		{
+			v48 = 2;
+			pShopOptions[0] = pGlobalTXT_LocalizationStrings[620];
+			pOutString = 0;
+			pShopOptions[1] = pGlobalTXT_LocalizationStrings[622];
+			if ( pParty->HasItem(0x28Bu) )
+			{
+				pShopOptions[2] = pGlobalTXT_LocalizationStrings[621];
+				v48 = 3;
+			}
+			for ( i = 0; i < v48; ++i )
+			{
+				v50 = pFontArrus->CalcTextHeight(pShopOptions[i], &v79, 0, 0);
+				pOutString = (GUIFont *)((char *)pOutString + v50);
+			}
+			v86 = (174 - (signed int)pOutString) / v48;
+			v51 = pDialogueWindow;
+			v52 = 174 - v48 * (174 - (signed int)pOutString) / v48 - (signed int)pOutString;
+			v53 = v52 - HIDWORD(v52);
+			LODWORD(v52) = pDialogueWindow->pStartingPosActiveItem;
+			HIDWORD(v52) = v52 + pDialogueWindow->pNumPresenceButton;
+			v54 = (v53 >> 1) - v86 / 2 + 138;
+			v37 = -pDialogueWindow->pNumPresenceButton < 0;
+			v89 = pDialogueWindow->pStartingPosActiveItem;
+			if ( v37 ^ __OFSUB__((int)v52, HIDWORD(v52)) )
+			{
+				v85 = (Player *)2;
+				pOutString = (GUIFont *)pShopOptions;
+				do
+				{
+					v55 = v51->GetControl(v89);
+					v56 = (const char **)pOutString;
+					v55->uY = v86 + v54;
+					v57 = pFontArrus->CalcTextHeight(*v56, &v79, 0, 0);
+					v58 = v55->uY;
+					v59 = v85;
+					v55->uHeight = v57;
+					v54 = v57 + v58 - 1;
+					v55->uW = v54;
+					v60 = v84[0];
+					if ( (Player *)pDialogueWindow->pCurrentPosActiveItem != v59 )
+						v60 = v81;
+					v79.DrawTitleText(pFontArrus, 0, v58, v60, *(const char **)&pOutString->cFirstChar, 3u);
+					v51 = pDialogueWindow;
+					v85 = (Player *)((char *)v85 + 1);
+					pOutString = (GUIFont *)((char *)pOutString + 4);
+					++v89;
+				}
+				while ( v89 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem );
+			}
+		}
+		break;
+		}
+	default:
+		{
+		break;
+		}
   }
 }