annotate GUI/UI/UIPopup.cpp @ 2541:a902abdfc7f2

1. Renamed class Game to class Engine. 2. Separated game logic as state of FSM from game logic as engine. 3. Found out that many UI screen initializers were optimized away, intially they all returned newly created window as separate object like it is done in CharacterUI_Initialize.
author a.parshin
date Sun, 10 May 2015 01:29:11 +0200
parents 1bcadc6dd203
children c674d547cc7c
rev   line source
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1 #define _CRTDBG_MAP_ALLOC
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2 #include <stdlib.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
3 #include <crtdbg.h>
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
5 #define _CRT_SECURE_NO_WARNINGS
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
6
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
7 #include "Engine/Engine.h"
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
8
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
9 #include "UIPopup.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
10 #include "Books\UIMapBook.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
11 #include "UIShops.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
12
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
13 #include "..\../IO/Mouse.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
14
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
15 #include "..\../Engine/Graphics/Sprites.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
16 #include "..\../Engine/Graphics/Vis.h"
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
17 #include "..\../GUI/GUIWindow.h"
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
18 #include "..\../GUI/GUIFont.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
19 #include "..\../Engine/Party.h"
2502
a77c34acdbc9 Media folder
Ritor1
parents: 2501
diff changeset
20 #include "..\../Media/Audio/AudioPlayer.h"
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
21 #include "..\../Engine/LOD.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
22 #include "..\../Engine/Objects/Actor.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
23 #include "..\../Engine/Graphics/Viewport.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
24 #include "..\../Engine/Objects/SpriteObject.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
25 #include "..\../Engine/Objects/ObjectList.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
26 #include "..\../Engine/Objects/Chest.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
27 #include "..\../Engine/Graphics/PaletteManager.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
28 #include "..\../Engine/Timer.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
29 #include "..\../Engine/texts.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
30 #include "..\../Engine/Events.h"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
31
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
32 static char static_sub_417BB5_out_string[1200]; // static to a file, not sub actually
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
33
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
34
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
35 //----- (004179BC) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
36 void CharacterUI_DrawTooltip(const char *Title, const char *content)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
37 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
38 GUIWindow popup_window; // [sp+Ch] [bp-5Ch]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
39 POINT v6; // [sp+60h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
40
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
41 memset(&popup_window, 0, 0x54u);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
42 popup_window.uFrameWidth = 384;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
43 popup_window.uFrameHeight = 256;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
44 popup_window.uFrameX = 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
45 popup_window.uFrameY = pMouse->GetCursorPos(&v6)->y + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
46 popup_window.uFrameHeight = pFontSmallnum->CalcTextHeight(content, &popup_window, 24, 0) + 2 * LOBYTE(pFontLucida->uFontHeight) + 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
47 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
48 popup_window.uFrameW = popup_window.uFrameY + popup_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
49 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
50
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
51 popup_window.uFrameX += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
52 popup_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
53 popup_window.uFrameY += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
54 popup_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
55 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
56 popup_window.uFrameW = popup_window.uFrameY + popup_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
57 sprintf(pTmpBuf.data(), "\f%05d%s\f00000\n", ui_character_tooltip_header_default_color, Title);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
58 popup_window.DrawTitleText(pFontCreate, 0, 0, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
59 popup_window.DrawText(pFontSmallnum, 1, LOBYTE(pFontLucida->uFontHeight), 0, content, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
60 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
61
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
62 //----- (004151D9) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
63 void __fastcall DrawPopupWindow(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
64 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
65 unsigned int uNumTiles; // [sp+2Ch] [bp-Ch]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
66 unsigned int coord_x; // [sp+2Ch] [bp-Ch]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
67 unsigned int coord_y; // [sp+34h] [bp-4h]@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
68
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
69 auto parchment = pIcons_LOD->GetTexture(uTextureID_Parchment);
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
70
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
71 if ( parchment->uTextureWidth && parchment->uTextureHeight)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
72 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
73 pRenderer->SetUIClipRect(uX, uY, uX + uWidth, uY + uHeight);
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
74
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
75 uNumTiles = uWidth / parchment->uTextureWidth;
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
76 if ( uWidth % parchment->uTextureWidth )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
77 ++uNumTiles;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
78 coord_y = uY;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
79 for ( uint j = 0; j <= uHeight / parchment->uTextureHeight; j++ )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
80 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
81 coord_x = uX - parchment->uTextureWidth;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
82 for ( uint i = uNumTiles + 1; i; --i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
83 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
84 coord_x += parchment->uTextureWidth;
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
85 pRenderer->DrawTextureIndexed(coord_x, coord_y, parchment);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
86 }
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
87 coord_y += parchment->uTextureHeight;
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
88 }
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
89 pRenderer->DrawTextureIndexedAlpha(uX, uY, pIcons_LOD->GetTexture(uTextureID_5076AC));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
90 pRenderer->DrawTextureIndexedAlpha(uX, uY + uHeight - 32, pIcons_LOD->GetTexture(uTextureID_5076B4));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
91 pRenderer->DrawTextureIndexedAlpha(uX + uWidth - 32, uY, pIcons_LOD->GetTexture(uTextureID_5076A8));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
92 pRenderer->DrawTextureIndexedAlpha(uX + uWidth - 32, uY + uHeight - 32, pIcons_LOD->GetTexture(uTextureID_5076B0));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
93 if ( uWidth > 64 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
94 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
95 pRenderer->SetUIClipRect(uX + 32, uY, uX + uWidth - 32, uY + uHeight);
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
96 pRenderer->DrawTextureIndexedAlpha(uX + 32, uY, pIcons_LOD->GetTexture(uTextureID_507698));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
97 pRenderer->DrawTextureIndexedAlpha(uX + 32, uY + uHeight - 10, pIcons_LOD->GetTexture(uTextureID_5076A4));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
98 if ( uWidth > 512 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
99 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
100 pRenderer->DrawTextureIndexedAlpha(uX + 544, uY, pIcons_LOD->GetTexture(uTextureID_507698));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
101 pRenderer->DrawTextureIndexedAlpha(uX + 544, uY + uHeight - 10, pIcons_LOD->GetTexture(uTextureID_5076A4));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
102 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
103 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
104 if ( uHeight > 64 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
105 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
106 pRenderer->SetUIClipRect(uX, uY + 32, uX + uWidth, uY + uHeight - 32);
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
107 pRenderer->DrawTextureIndexedAlpha(uX, uY + 32, pIcons_LOD->GetTexture(uTextureID_5076A0));
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
108 pRenderer->DrawTextureIndexedAlpha(uX + uWidth - 10, uY + 32, pIcons_LOD->GetTexture(uTextureID_50769C));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
109 }
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
110 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
111 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
112 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
113
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
114 //----- (0041D895) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
115 void GameUI_DrawItemInfo( struct ItemGen* inspect_item )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
116 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
117 unsigned int v2; // eax@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
118 const char *v28; // edi@69
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
119 int v34; // esi@81
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
120 const char *pText; // [sp-14h] [bp-28Ch]@110
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
121 char out_text[300]; // [sp+8h] [bp-270h]@40
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
122 char v65[120]; // [sp+134h] [bp-144h]@92
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
123 stru351_summoned_item v67;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
124 int v77; // [sp+200h] [bp-78h]@12
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
125 int v78; // [sp+204h] [bp-74h]@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
126 GUIWindow iteminfo_window; // [sp+208h] [bp-70h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
127 POINT a2; // [sp+25Ch] [bp-1Ch]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
128 int v81; // [sp+264h] [bp-14h]@5
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
129 PlayerSpeech v83; // [sp+26Ch] [bp-Ch]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
130 char* v84;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
131 int v85;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
132 char *Str; // [sp+270h] [bp-8h]@65
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
133
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
134 int r_mask = 0xF800;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
135 int g_mask = 0x7E0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
136 int b_mask = 0x1F;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
137
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
138 if (!inspect_item->uItemID)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
139 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
140 iteminfo_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
141 iteminfo_window.uFrameWidth = 384;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
142 iteminfo_window.uFrameHeight = 180;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
143 iteminfo_window.uFrameY = 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
144 if ( pMouse->GetCursorPos(&a2)->x <= 320 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
145 v2 = pMouse->GetCursorPos(&a2)->x + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
146 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
147 v2 = pMouse->GetCursorPos(&a2)->x - iteminfo_window.uFrameWidth - 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
148 iteminfo_window.uFrameX = v2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
149 v78 = 100 - pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->uTextureWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
150 v81 = 144 - pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->uTextureHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
151 if ( v78 > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
152 v78 = v78 / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
153 if ( v81 <= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
154 v81 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
155 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
156 v81 = v81 / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
157 if ( !pItemsTable->pItems[inspect_item->uItemID].uItemID_Rep_St )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
158 inspect_item->SetIdentified();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
159 v77 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
160 if (inspect_item->GetItemEquipType() == EQUIP_GOLD)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
161 v77 = inspect_item->uSpecEnchantmentType;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
162 if ( uActiveCharacter )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
163 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
164 //try to identify
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
165 if (!inspect_item->IsIdentified())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
166 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
167 if ( pPlayers[uActiveCharacter]->CanIdentify(inspect_item) == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
168 inspect_item->SetIdentified();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
169 v83 = SPEECH_9;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
170 if ( !inspect_item->IsIdentified() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
171 ShowStatusBarString(pGlobalTXT_LocalizationStrings[446], 2);//"Identify Failed"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
172 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
173 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
174 v83 = SPEECH_8;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
175 if ( inspect_item->GetValue() < 100 * (pPlayers[uActiveCharacter]->uLevel + 5) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
176 v83 = SPEECH_7;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
177 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
178 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
179 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
180 pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
181 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
182 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
183 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
184 inspect_item->UpdateTempBonus(pParty->uTimePlayed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
185 if (inspect_item->IsBroken())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
186 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
187 if ( pPlayers[uActiveCharacter]->CanRepair(inspect_item) == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
188 inspect_item->uAttributes = inspect_item->uAttributes & 0xFFFFFFFD | 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
189 v83 = SPEECH_11;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
190 if ( !inspect_item->IsBroken() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
191 v83 = SPEECH_10;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
192 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
193 ShowStatusBarString(pGlobalTXT_LocalizationStrings[448], 2);//"Repair Failed"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
194 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
195 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
196 pPlayers[uActiveCharacter]->PlaySound(v83, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
197 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
198 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
199 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
200 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
201 if (inspect_item->IsBroken())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
202 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
203 iteminfo_window.DrawMessageBox(0);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
204 pRenderer->SetUIClipRect(iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
205 iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
206 iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
207 iteminfo_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
208 iteminfo_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
209 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
210 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
211 pRenderer->DrawTransparentRedShade(iteminfo_window.uFrameX + v78, v81 + iteminfo_window.uFrameY + 30, pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
212 if ( inspect_item->IsIdentified())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
213 pText = (char *)inspect_item->GetIdentifiedName();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
214 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
215 pText = pItemsTable->pItems[inspect_item->uItemID].pUnidentifiedName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
216 iteminfo_window.DrawTitleText(pFontArrus, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), pText, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
217 iteminfo_window.DrawTitleText(pFontArrus, 0x64u, ((signed int)iteminfo_window.uFrameHeight >> 1) - pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[32], &iteminfo_window, 0, 0) / 2,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
218 Color16(0xFFu, 0x19u, 0x19u), pGlobalTXT_LocalizationStrings[32], 3); //"Broken Item"
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
219 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
220 if ( !areWeLoadingTexture )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
221 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
222 pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->Release();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
223 pIcons_LOD->SyncLoadedFilesCount();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
224 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
225 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
226 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
227 if (!inspect_item->IsIdentified())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
228 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
229 iteminfo_window.DrawMessageBox(0);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
230 pRenderer->SetUIClipRect(iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
231 iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12, iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
232 iteminfo_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
233 iteminfo_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
234 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
235 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
236 pRenderer->DrawTextureIndexedAlpha(iteminfo_window.uFrameX + v78, v81 + iteminfo_window.uFrameY + 30, pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE));
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
237 iteminfo_window.DrawTitleText(pFontArrus, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), pItemsTable->pItems[inspect_item->uItemID].pUnidentifiedName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
238 iteminfo_window.DrawTitleText(pFontArrus, 0x64u, ((signed int)iteminfo_window.uFrameHeight >> 1) - pFontArrus->CalcTextHeight(pGlobalTXT_LocalizationStrings[232], &iteminfo_window, 0, 0) / 2,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
239 Color16(0xFFu, 0x19u, 0x19u), pGlobalTXT_LocalizationStrings[232], 3);//"Not Identified"
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
240 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
241 if ( !areWeLoadingTexture )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
242 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
243 pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->Release();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
244 pIcons_LOD->SyncLoadedFilesCount();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
245 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
246 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
247 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
248 sprintfex(out_text, pGlobalTXT_LocalizationStrings[463], pItemsTable->pItems[inspect_item->uItemID].pUnidentifiedName); //"Type: %s"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
249 out_text[100] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
250 out_text[200] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
251 switch (inspect_item->GetItemEquipType())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
252 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
253 case EQUIP_SINGLE_HANDED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
254 case EQUIP_TWO_HANDED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
255 sprintfex(out_text + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[LOCSTR_ATTACK],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
256 (int)inspect_item->GetDamageMod(), pGlobalTXT_LocalizationStrings[53],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
257 (int)inspect_item->GetDamageDice(), (int)inspect_item->GetDamageRoll()); //"Damage"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
258 if (inspect_item->GetDamageMod())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
259 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
260 char mod[16];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
261 sprintf(mod, "+%d", (int)inspect_item->GetDamageMod());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
262 strcat(out_text + 100, mod);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
263 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
264 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
265
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
266 case EQUIP_BOW:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
267 sprintfex(out_text + 100, "%s: +%d %s: %dd%d", pGlobalTXT_LocalizationStrings[203], //"Shoot"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
268 (int)inspect_item->GetDamageMod(), pGlobalTXT_LocalizationStrings[53], //"Damage"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
269 (int)inspect_item->GetDamageDice(), (int)inspect_item->GetDamageRoll());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
270 if (inspect_item->GetDamageMod())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
271 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
272 char mod[16];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
273 sprintf(mod, "+%d", (int)inspect_item->GetDamageMod());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
274 strcat(out_text + 100, mod);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
275 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
276 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
277
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
278 case EQUIP_ARMOUR:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
279 case EQUIP_SHIELD:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
280 case EQUIP_HELMET:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
281 case EQUIP_BELT:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
282 case EQUIP_CLOAK:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
283 case EQUIP_GAUNTLETS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
284 case EQUIP_BOOTS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
285 case EQUIP_RING:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
286 case EQUIP_AMULET:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
287 if (inspect_item->GetDamageDice()) //"Armor"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
288 sprintfex(out_text + 100, "%s: +%d", pGlobalTXT_LocalizationStrings[11],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
289 inspect_item->GetDamageDice() + inspect_item->GetDamageMod());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
290 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
291 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
292
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
293 if ( !v77 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
294 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
295 if (inspect_item->GetItemEquipType() ==EQUIP_POTION) //this is CORRECT! do not move to switch!
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
296 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
297 if ( inspect_item->uEnchantmentType )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
298 sprintf(out_text + 200, "%s: %d",pGlobalTXT_LocalizationStrings[449] , inspect_item->uEnchantmentType); //"Power"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
299 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
300 else if (inspect_item->GetItemEquipType() == EQUIP_REAGENT)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
301 sprintf(out_text + 200, "%s: %d", pGlobalTXT_LocalizationStrings[449], inspect_item->GetDamageDice()); //"Power"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
302 else if ( inspect_item->uEnchantmentType )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
303 sprintf(out_text + 200, "%s: %s +%d", pGlobalTXT_LocalizationStrings[210], pItemsTable->pEnchantments[inspect_item->uEnchantmentType-1].pBonusStat, inspect_item->m_enchantmentStrength); //"Special"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
304 else if ( inspect_item->uSpecEnchantmentType )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
305 sprintf(out_text + 200, "%s: %s", pGlobalTXT_LocalizationStrings[210], pItemsTable->pSpecialEnchantments[inspect_item->uSpecEnchantmentType-1].pBonusStatement);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
306 else if ( inspect_item->uNumCharges )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
307 sprintf(out_text + 200, "%s: %lu", pGlobalTXT_LocalizationStrings[464], inspect_item->uNumCharges); //"Charges"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
308 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
309 iteminfo_window.uFrameWidth -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
310 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
311 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
312 Str = (char *)(3 * (LOBYTE(pFontArrus->uFontHeight) + 8));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
313 v84 = &out_text[0];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
314 for ( uint i = 1; i <= 3; i++ )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
315 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
316 if ( *v84 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
317 Str += pFontComic->CalcTextHeight(v84, &iteminfo_window, 100, 0) + 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
318 v84 += 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
319 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
320 v28 = pItemsTable->pItems[inspect_item->uItemID].pDescription;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
321 if ( *v28 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
322 Str += pFontSmallnum->CalcTextHeight(pItemsTable->pItems[inspect_item->uItemID].pDescription, &iteminfo_window, 100, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
323 iteminfo_window.uFrameHeight = pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(),
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
324 TEXTURE_16BIT_PALETTE)->uTextureHeight + v81 + 54;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
325 if ( (signed int)Str > (signed int)iteminfo_window.uFrameHeight )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
326 iteminfo_window.uFrameHeight = (unsigned int)Str;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
327 if ( inspect_item->uAttributes & ITEM_TEMP_BONUS && (inspect_item->uSpecEnchantmentType || inspect_item->uEnchantmentType) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
328 iteminfo_window.uFrameHeight += LOBYTE(pFontComic->uFontHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
329 v85 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
330 if ( pFontArrus->uFontHeight )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
331 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
332 iteminfo_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
333 if ( pFontArrus->CalcTextHeight(inspect_item->GetIdentifiedName(), &iteminfo_window, 0, 0) / (signed int)pFontArrus->uFontHeight )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
334 v85 = pFontArrus->uFontHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
335 iteminfo_window.uFrameWidth += 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
336 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
337 iteminfo_window.uFrameWidth += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
338 iteminfo_window.uFrameHeight += (unsigned int)v85;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
339 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
340 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
341 iteminfo_window.DrawMessageBox(0);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
342 pRenderer->SetUIClipRect(iteminfo_window.uFrameX + 12, iteminfo_window.uFrameY + 12,
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
343 iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 12, iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 12);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
344 iteminfo_window.uFrameWidth -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
345 iteminfo_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
346 iteminfo_window.uFrameZ = iteminfo_window.uFrameX + iteminfo_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
347 iteminfo_window.uFrameW = iteminfo_window.uFrameY + iteminfo_window.uFrameHeight - 1;
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
348 pRenderer->DrawTextureIndexedAlpha(iteminfo_window.uFrameX + v78,
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
349 iteminfo_window.uFrameY + (signed int)(iteminfo_window.uFrameHeight - pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->uTextureHeight) / 2,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
350 pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
351
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
352 v34 = (int)(v85 + 35);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
353 Str = out_text;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
354 for ( uint i = 1; i <= 3; i++ )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
355 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
356 if ( *Str )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
357 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
358 iteminfo_window.DrawText(pFontComic, 100, v34, 0, Str, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
359 v34 += pFontComic->CalcTextHeight(Str, &iteminfo_window, 100, 0) + 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
360 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
361 Str += 100;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
362 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
363 v28 = pItemsTable->pItems[inspect_item->uItemID].pDescription;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
364 if ( *v28 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
365 iteminfo_window.DrawText(pFontSmallnum, 100, v34, 0, v28, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
366 iteminfo_window.uFrameX += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
367 iteminfo_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
368 iteminfo_window.DrawTitleText(pFontArrus, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), inspect_item->GetIdentifiedName(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
369 iteminfo_window.uFrameWidth += 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
370 iteminfo_window.uFrameX -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
371 if ( v77 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
372 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
373 sprintf(pTmpBuf.data(), "%s: %lu", pGlobalTXT_LocalizationStrings[465], v77);//"Value"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
374 iteminfo_window.DrawText(pFontComic, 100, iteminfo_window.uFrameHeight - LOBYTE(pFontComic->uFontHeight), 0, pTmpBuf.data(), 0, 0, 0);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
375 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
376 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
377 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
378 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
379 if ( (inspect_item->uAttributes & ITEM_TEMP_BONUS) && (inspect_item->uSpecEnchantmentType || inspect_item->uEnchantmentType) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
380 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
381 init_summoned_item(&v67, inspect_item->uExpireTime - pParty->uTimePlayed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
382 strcpy(pTmpBuf.data(), "Duration:");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
383 Str = (char *)(v67.field_18_expire_year - game_starting_year);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
384 if (v67.field_18_expire_year != 1168 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
385 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
386 sprintf(v65, " %d:yr", v67.field_18_expire_year - game_starting_year);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
387 strcat(pTmpBuf.data(), v65);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
388 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
389 if ( (((v67.field_14_exprie_month || Str) &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
390 ((sprintf(v65, " %d:mo", v67.field_14_exprie_month), strcat(pTmpBuf.data(), v65), v67.field_14_exprie_month) || Str)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
391 || v67.field_C_expire_day)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
392 && ((sprintf(v65, " %d:dy", v67.field_C_expire_day), strcat(pTmpBuf.data(), v65), v67.field_14_exprie_month) || Str ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
393 v67.field_C_expire_day)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
394 || v67.field_8_expire_hour)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
395 && ((sprintf(v65, " %d:hr", v67.field_8_expire_hour), strcat(pTmpBuf.data(), v65), v67.field_14_exprie_month) || Str ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
396 v67.field_C_expire_day || v67.field_8_expire_hour)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
397 || v67.field_4_expire_minute )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
398 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
399 sprintf(v65, " %d:mn", v67.field_4_expire_minute);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
400 strcat(pTmpBuf.data(), v65);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
401 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
402 iteminfo_window.DrawText(pFontComic, 100, iteminfo_window.uFrameHeight - 2 * LOBYTE(pFontComic->uFontHeight), 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
403 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
404 sprintf(pTmpBuf.data(), "%s: %lu", pGlobalTXT_LocalizationStrings[465], inspect_item->GetValue());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
405 iteminfo_window.DrawText(pFontComic, 100, iteminfo_window.uFrameHeight - LOBYTE(pFontComic->uFontHeight), 0, pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
406 if ( inspect_item->uAttributes & ITEM_STOLEN )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
407 pText = pGlobalTXT_LocalizationStrings[187]; //"Stolen"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
408 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
409 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
410 if ( !(inspect_item->uAttributes & ITEM_HARDENED) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
411 {
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
412 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
413 if ( !areWeLoadingTexture )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
414 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
415 pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->Release();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
416 pIcons_LOD->SyncLoadedFilesCount();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
417 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
418 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
419 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
420 pText = pGlobalTXT_LocalizationStrings[651]; //"Hardened"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
421 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
422 LOWORD(inspect_item->uAttributes) = r_mask;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
423 iteminfo_window.DrawText(pFontComic, pFontComic->GetLineWidth(pTmpBuf.data()) + 132,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
424 iteminfo_window.uFrameHeight - LOBYTE(pFontComic->uFontHeight), inspect_item->uAttributes, pText, 0, 0, 0);
2524
c7264ab7132f Main menu rendered using d3d11
a.parshin
parents: 2506
diff changeset
425 pRenderer->ResetUIClipRect();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
426 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
427 if ( !areWeLoadingTexture )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
428 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
429 pIcons_LOD->LoadTexturePtr(inspect_item->GetIconName(), TEXTURE_16BIT_PALETTE)->Release();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
430 pIcons_LOD->SyncLoadedFilesCount();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
431 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
432 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
433 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
434 // 4E455C: using guessed type int dword_4E455C;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
435 // 506128: using guessed type int areWeLoadingTexture;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
436
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
437 //----- (0041E360) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
438 void MonsterPopup_Draw(unsigned int uActorID, GUIWindow *pWindow)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
439 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
440 unsigned __int16 v9; // dx@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
441 SpriteFrame *v10; // edi@17
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
442 unsigned int v18; // ecx@19
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
443 unsigned int v19; // eax@21
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
444 int skill_points; // edi@61
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
445 unsigned int skill_level; // eax@61
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
446 int pTextHeight; // edi@90
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
447 PlayerSpeech speech; // [sp-8h] [bp-1F4h]@79
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
448 DDBLTFX Dst; // [sp+Ch] [bp-1E0h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
449 DDSURFACEDESC2 pDesc; // [sp+70h] [bp-17Ch]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
450 RECT dest_rect; // [sp+ECh] [bp-100h]@26
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
451 const char *string_name[10]; // [sp+FCh] [bp-F0h]@145
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
452 const char *content[11]; // [sp+124h] [bp-C8h]@127
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
453 unsigned char resistances[11]; // [sp+124h] [bp-C8h]@127
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
454 RenderBillboardTransform_local0 v106; // [sp+150h] [bp-9Ch]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
455 unsigned int v107; // [sp+1A0h] [bp-4Ch]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
456 bool for_effects; // [sp+1C0h] [bp-2Ch]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
457 bool normal_level; // [sp+1D0h] [bp-1Ch]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
458 bool expert_level; // [sp+1C4h] [bp-28h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
459 bool master_level; // [sp+1C8h] [bp-24h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
460 bool grandmaster_level; // [sp+1B4h] [bp-38h]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
461 const char *pText; // [sp+1D4h] [bp-18h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
462 int pTextColorID; // [sp+1E4h] [bp-8h]@18
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
463 int v115;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
464
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
465 bool monster_full_informations = false;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
466 static Actor pMonsterInfoUI_Doll;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
467 if ( !uActiveCharacter ) //
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
468 uActiveCharacter = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
469
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
470 /*if ( !(bMonsterInfoUI_bDollInitialized & 1) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
471 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
472 bMonsterInfoUI_bDollInitialized |= 1u;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
473 Actor::Actor(&pMonsterInfoUI_Doll);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
474 atexit(nullsub_3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
475 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
476 v106.sParentBillboardID = -1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
477 v115 = monster_popup_y_offsets[((signed __int16)pActors[uActorID].pMonsterInfo.uID - 1) / 3] - 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
478 if ( pActors[uActorID].pMonsterInfo.uID == pMonsterInfoUI_Doll.pMonsterInfo.uID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
479 v9 = pMonsterInfoUI_Doll.uCurrentActionLength;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
480 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
481 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
482 memcpy(&pMonsterInfoUI_Doll, &pActors[uActorID], sizeof(pMonsterInfoUI_Doll));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
483 pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Bored;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
484 pMonsterInfoUI_Doll.uCurrentActionTime = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
485 v9 = rand() % 256 + 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
486 pMonsterInfoUI_Doll.uCurrentActionLength = v9;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
487 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
488
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
489 if ( (signed int)pMonsterInfoUI_Doll.uCurrentActionTime > (signed __int16)v9 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
490 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
491 pMonsterInfoUI_Doll.uCurrentActionTime = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
492 if ( pMonsterInfoUI_Doll.uCurrentActionAnimation == ANIM_Bored || pMonsterInfoUI_Doll.uCurrentActionAnimation == ANIM_AtkMelee)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
493 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
494 pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Standing;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
495 pMonsterInfoUI_Doll.uCurrentActionLength = rand() % 128 + 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
496 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
497 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
498 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
499 //rand();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
500 pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_Bored;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
501 if ( (pMonsterInfoUI_Doll.pMonsterInfo.uID < 115 || pMonsterInfoUI_Doll.pMonsterInfo.uID > 186) &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
502 (pMonsterInfoUI_Doll.pMonsterInfo.uID < 232 || pMonsterInfoUI_Doll.pMonsterInfo.uID > 249) && rand() % 30 < 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
503 pMonsterInfoUI_Doll.uCurrentActionAnimation = ANIM_AtkMelee;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
504 pMonsterInfoUI_Doll.uCurrentActionLength = 8 * pSpriteFrameTable->pSpriteSFrames[pActors[uActorID].pSpriteIDs[(signed __int16)pMonsterInfoUI_Doll.uCurrentActionAnimation]].uAnimLength;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
505 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
506 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
507 v10 = pSpriteFrameTable->GetFrame( pActors[uActorID].pSpriteIDs[pMonsterInfoUI_Doll.uCurrentActionAnimation], pMonsterInfoUI_Doll.uCurrentActionTime);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
508 v106.pTarget = pRenderer->pTargetSurface;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
509 v106.pTargetZ = pRenderer->pActiveZBuffer;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
510 v106.uTargetPitch = pRenderer->uTargetSurfacePitch;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
511 v106.uViewportX = pWindow->uFrameX + 13;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
512 v106.uViewportY = pWindow->uFrameY + 52;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
513 v106.uViewportW = (pWindow->uFrameY + 52) + 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
514 v106.uViewportZ = v106.uViewportX + 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
515 v106.uScreenSpaceX = (signed int)(v106.uViewportX + 128 + v106.uViewportX) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
516 v106._screenspace_x_scaler_packedfloat = 65536;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
517 v106._screenspace_y_scaler_packedfloat = 65536;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
518 v106.uScreenSpaceY = v115 + (pWindow->uFrameY + 52) + pSprites_LOD->pSpriteHeaders[v10->pHwSpriteIDs[0]].uHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
519 v106.pPalette = PaletteManager::Get_Dark_or_Red_LUT(v10->uPaletteIndex, 0, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
520 v106.sZValue = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
521 v106.uFlags = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
522 pRenderer->SetRasterClipRect(0, 0, window->GetWidth() - 1, window->GetHeight() - 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
523 pRenderer->RasterLine2D(v106.uViewportX - 1, v106.uViewportY - 1, v106.uViewportX + 129, v106.uViewportY - 1, Color16(0xE1u, 255, 0x9Bu));//ãîðèçîíòàëüíàÿ âåðõíÿÿ ëèíèÿ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
524 pRenderer->RasterLine2D(v106.uViewportX - 1, v106.uViewportW + 1, v106.uViewportX - 1, v106.uViewportY - 1, Color16(0xE1u, 255, 0x9Bu));//ãîðèçîíòàëüíàÿ íèæíÿÿ ëèíèÿ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
525 pRenderer->RasterLine2D(v106.uViewportX + 129, v106.uViewportW + 1, v106.uViewportX - 1, v106.uViewportW + 1, Color16(0xE1u, 255, 0x9Bu));//ëåâàÿ âåðòèêàëüíàÿ ëèíèÿ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
526 pRenderer->RasterLine2D(v106.uViewportX + 129, v106.uViewportY - 1, v106.uViewportX + 129, v106.uViewportW + 1, Color16(0xE1u, 255, 0x9Bu));//ïðàâàÿ âåðòèêàëüíàÿ ëèíèÿ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
527 //if ( pRenderer->pRenderD3D )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
528 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
529 v106.uScreenSpaceY = v115 + v106.uViewportY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
530
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
531 memset(&Dst, 0, sizeof(Dst));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
532 Dst.dwSize = sizeof(Dst);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
533 Dst.dwFillColor = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
534
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
535 memset(&pDesc, 0, sizeof(pDesc));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
536 pDesc.dwSize = sizeof(pDesc);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
537
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
538 pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface->GetSurfaceDesc(&pDesc);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
539 v107 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
540 uint i = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
541 int dst_x = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
542 int dst_y = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
543 uint dst_z = v106.uScreenSpaceX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaX + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaWidth + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth / 2 - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
544 uint dst_w = v106.uScreenSpaceY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaY + pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaHeight - pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uBufferHeight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
545 if (dst_x < v106.uViewportX)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
546 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
547 v18 = v106.uViewportX - dst_x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
548 dst_x = v106.uViewportX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
549 v107 = v18;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
550 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
551 if (dst_y < v106.uViewportY)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
552 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
553 v19 = v106.uViewportY - dst_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
554 dst_y = v106.uViewportY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
555 i = v19;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
556 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
557 if (dst_z > v106.uViewportZ)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
558 dst_z = v106.uViewportZ;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
559 if (dst_w > v106.uViewportW)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
560 dst_w = v106.uViewportW;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
561 pRenderer->FillRectFast(v106.uViewportX, v106.uViewportY, v106.uViewportZ - v106.uViewportX, v106.uViewportW - v106.uViewportY, 0x7FF);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
562 pRenderer->FillRectFast(v106.uViewportX, v106.uViewportY, v106.uViewportZ - v106.uViewportX, v106.uViewportW - v106.uViewportY, 0x7FF);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
563 dest_rect.left = v106.uViewportX;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
564 dest_rect.top = v106.uViewportY;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
565 dest_rect.right = v106.uViewportZ;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
566 dest_rect.bottom = v106.uViewportW;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
567
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
568 ErrD3D(pRenderer->pBackBuffer4->Blt(&dest_rect, NULL, NULL, DDBLT_COLORFILL | DDBLT_WAIT, &Dst));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
569 /*if ( pRenderer->uTargetGBits == 5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
570 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
571 __debugbreak(); // no monster popup for r5g5b5 will be
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
572 memset(&pDesc, 0, 0x7Cu);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
573 pDesc.dwSize = 124;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
574 if ( pRenderer->LockSurface_DDraw4(pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface, &pDesc, DDLOCK_WAIT))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
575 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
576 v20 = (char *)dst_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
577 v110 = pDesc.lpSurface;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
578 if (dst_y < dst_w)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
579 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
580 v21 = dst_x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
581 //v22 = &pRenderer->pTargetSurface[dst_y * pRenderer->uTargetSurfacePitch + dst_x];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
582 ushort* _v22_2 = v22;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
583 v23 = i - dst_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
584 v115 = i - dst_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
585 while ( 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
586 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
587 dst_y = v21;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
588 if ( v21 < dst_z )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
589 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
590 v25 = v107 - v21;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
591 v109 = (int)&v20[v23];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
592 for ( i = v107 - v21; ; v25 = i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
593 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
594 v108 = (unsigned __int16 *)((pDesc.lPitch >> 1) * pDesc.dwHeight * v109 / pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
595 v26 = (char *)v108 + pDesc.dwWidth * (v25 + dst_y++) / pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
596 *v22 = *((short *)v110 + (int)v26);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
597 ++v22;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
598 if ( dst_y >= dst_z )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
599 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
600 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
601 v23 = v115;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
602 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
603 v22 = (unsigned __int16 *)((char *)_v22_2 + 2 * pRenderer->uTargetSurfacePitch);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
604 _v22_2 = v22;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
605 v20 = (char *)(dst_y + 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
606 v28 = __OFSUB__(dst_y + 1, dst_w);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
607 v27 = (signed int)(dst_y++ + 1 - dst_w) < 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
608 if ( !(v27 ^ v28) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
609 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
610 v21 = dst_x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
611 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
612 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
613 pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface->Unlock(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
614 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
615 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
616 else*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
617 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
618 memset(&pDesc, 0, sizeof(pDesc));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
619 pDesc.dwSize = sizeof(pDesc);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
620 if ( pRenderer->LockSurface_DDraw4(pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface, &pDesc, DDLOCK_WAIT) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
621 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
622 ushort* src = (unsigned __int16 *)pDesc.lpSurface;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
623 uint num_top_scanlines_above_frame_y = i - dst_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
624 for (uint y = dst_y; y < dst_w; ++y)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
625 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
626 //ushort* dst = &pRenderer->pTargetSurface[y * pRenderer->uTargetSurfacePitch + dst_x];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
627
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
628 uint src_y = num_top_scanlines_above_frame_y + y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
629 for (uint x = dst_x; x < dst_z; ++x)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
630 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
631 uint src_x = v107 - dst_x + x; // num scanlines left to frame_x + current x
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
632
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
633 uint idx = pDesc.dwHeight * src_y / pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaHeight * (pDesc.lPitch / sizeof(short)) +
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
634 pDesc.dwWidth * src_x / pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].uAreaWidth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
635 uint b = src[idx] & 0x1F;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
636 //*dst++ = b | 2 * (src[idx] & 0xFFE0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
637 pRenderer->WritePixel16(x, y, b | 2 * (src[idx] & 0xFFE0));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
638 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
639 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
640 pSprites_LOD->pHardwareSprites[v10->pHwSpriteIDs[0]].pTextureSurface->Unlock(NULL);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
641 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
642 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
643 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
644 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
645 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
646 pRenderer->FillRectFast(v106.uViewportX, v106.uViewportY, v106.uViewportZ - v106.uViewportX, v106.uViewportW - v106.uViewportY, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
647 if ( v10->pHwSpriteIDs[0] >= 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
648 pSprites_LOD->pSpriteHeaders[v10->pHwSpriteIDs[0]].DrawSprite_sw(&v106, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
649 }*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
650 //name and profession
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
651 if ( pActors[uActorID].sNPC_ID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
652 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
653 if (GetNPCData(pActors[uActorID].sNPC_ID)->uProfession)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
654 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[429], GetNPCData(pActors[uActorID].sNPC_ID)->pName, aNPCProfessionNames[GetNPCData(pActors[uActorID].sNPC_ID)->uProfession]); // "%s the %s" / ^Pi[%s] %s
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
655 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
656 strncpy(pTmpBuf.data(), GetNPCData(pActors[uActorID].sNPC_ID)->pName, 2000);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
657 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
658 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
659 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
660 if ( pActors[uActorID].dword_000334_unique_name )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
661 strncpy(pTmpBuf.data(), pMonsterStats->pPlaceStrings[pActors[uActorID].dword_000334_unique_name], 2000);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
662 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
663 strncpy(pTmpBuf.data(), pMonsterStats->pInfos[pActors[uActorID].pMonsterInfo.uID].pName, 2000);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
664 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
665 pWindow->DrawTitleText(pFontComic, 0, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
666 //health bar
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
667 Actor::DrawHealthBar(&pActors[uActorID], pWindow);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
668
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
669 normal_level = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
670 expert_level = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
671 master_level = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
672 grandmaster_level = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
673 for_effects = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
674 pMonsterInfoUI_Doll.uCurrentActionTime += pMiscTimer->uTimeElapsed;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
675 if ( pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
676 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
677 skill_points = (unsigned __int8)pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID) & 0x3F;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
678 skill_level = SkillToMastery(pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID)) - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
679 if ( skill_level == 0 )//(normal)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
680 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
681 if ( skill_points + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
682 normal_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
683 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
684 else if ( skill_level == 1 )//(expert)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
685 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
686 if ( 2 * skill_points + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
687 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
688 normal_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
689 expert_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
690 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
691 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
692 else if ( skill_level == 2 )//(master)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
693 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
694 if ( 3 * skill_points + 10 >= pActors[uActorID].pMonsterInfo.uLevel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
695 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
696 normal_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
697 expert_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
698 master_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
699 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
700 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
701 else if ( skill_level == 3 )//grandmaster
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
702 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
703 normal_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
704 expert_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
705 master_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
706 grandmaster_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
707 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
708 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
709 if ( pActors[uActorID].uAIState != Dead
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
710 && pActors[uActorID].uAIState != Dying
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
711 && !dword_507BF0_is_there_popup_onscreen && pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
712 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
713 if ( normal_level | expert_level | master_level | grandmaster_level )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
714 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
715 if ( pActors[uActorID].pMonsterInfo.uLevel >= pPlayers[uActiveCharacter]->uLevel - 5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
716 speech = SPEECH_IDENTIFY_MONSTER_STRONGER;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
717 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
718 speech = SPEECH_IDENTIFY_MONSTER_WEAKER;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
719 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
720 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
721 speech = SPEECH_IDENTIFY_MONSTER_106;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
722 pPlayers[uActiveCharacter]->PlaySound(speech, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
723 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
724
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
725 if ( (signed int)SkillToMastery(pParty->pPlayers[uActiveCharacter - 1].GetActualSkillLevel(PLAYER_SKILL_MONSTER_ID)) >= 3 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
726 for_effects = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
727
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
728 if ( monster_full_informations == true )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
729 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
730 normal_level = 1;//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
731 expert_level = 1;//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
732 master_level = 1;//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
733 grandmaster_level = 1;//
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
734 for_effects = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
735 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
736
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
737 pWindow->DrawText(pFontSmallnum, 12, 196, Color16(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[631], 0, 0, 0);//Effects
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
738 if ( !for_effects && false)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
739 pWindow->DrawText(pFontSmallnum, 28, LOBYTE(pFontSmallnum->uFontHeight) + 193, Color16(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[630], 0, 0, 0);//?
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
740 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
742 pText = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
743 pTextHeight = LOBYTE(pFontSmallnum->uFontHeight) + 193;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
744 for ( uint i = 1; i <= 21; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
745 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
746 if ( pActors[uActorID].pActorBuffs[i].uExpireTime > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
747 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
748 switch ( i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
749 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
750 case ACTOR_BUFF_CHARM:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
751 pTextColorID = 60;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
752 pText = pGlobalTXT_LocalizationStrings[591];//Charmed
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
753 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
754 case ACTOR_BUFF_SUMMONED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
755 pTextColorID = 82;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
756 pText = pGlobalTXT_LocalizationStrings[649];//Summoned
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
757 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
758 case ACTOR_BUFF_SHRINK:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
759 pTextColorID = 92;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
760 pText = pGlobalTXT_LocalizationStrings[592];//Shrunk
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
761 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
762 case ACTOR_BUFF_AFRAID:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
763 pTextColorID = 63;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
764 pText = pGlobalTXT_LocalizationStrings[4];//Afraid
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
765 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
766 case ACTOR_BUFF_STONED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
767 pText = pGlobalTXT_LocalizationStrings[220];//Stoned
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
768 pTextColorID = 81;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
769 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
770 case ACTOR_BUFF_PARALYZED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
771 pText = pGlobalTXT_LocalizationStrings[162];//Paralyzed
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
772 pTextColorID = 81;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
773 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
774 case ACTOR_BUFF_SLOWED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
775 pText = pGlobalTXT_LocalizationStrings[593];//Slowed
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
776 pTextColorID = 35;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
777 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
778 case ACTOR_BUFF_BERSERK:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
779 pText = pGlobalTXT_LocalizationStrings[608];//Berserk
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
780 pTextColorID = 62;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
781 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
782 case ACTOR_BUFF_SOMETHING_THAT_HALVES_AC:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
783 case ACTOR_BUFF_MASS_DISTORTION:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
784 pText = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
785 pTextColorID = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
786 continue;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
787 case ACTOR_BUFF_FATE:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
788 pTextColorID = 47;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
789 pText = pGlobalTXT_LocalizationStrings[221];//Fate
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
790 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
791 case ACTOR_BUFF_ENSLAVED:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
792 pTextColorID = 66;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
793 pText = pGlobalTXT_LocalizationStrings[607];//Enslaved
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
794 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
795 case ACTOR_BUFF_DAY_OF_PROTECTION:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
796 pTextColorID = 85;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
797 pText = pGlobalTXT_LocalizationStrings[610];//Day of Protection
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
798 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
799 case ACTOR_BUFF_HOUR_OF_POWER:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
800 pTextColorID = 86;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
801 pText = pGlobalTXT_LocalizationStrings[609];//Hour of Power
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
802 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
803 case ACTOR_BUFF_SHIELD:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
804 pTextColorID = 17;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
805 pText = pGlobalTXT_LocalizationStrings[279];//Shield
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
806 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
807 case ACTOR_BUFF_STONESKIN:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
808 pTextColorID = 38;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
809 pText = pGlobalTXT_LocalizationStrings[442];//Stoneskin
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
810 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
811 case ACTOR_BUFF_BLESS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
812 pTextColorID = 46;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
813 pText = pGlobalTXT_LocalizationStrings[443];//Bless
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
814 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
815 case ACTOR_BUFF_HEROISM:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
816 pTextColorID = 51;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
817 pText = pGlobalTXT_LocalizationStrings[440];//Heroism
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
818 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
819 case ACTOR_BUFF_HASTE:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
820 pTextColorID = 5;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
821 pText = pGlobalTXT_LocalizationStrings[441];//Haste
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
822 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
823 case ACTOR_BUFF_PAIN_REFLECTION:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
824 pTextColorID = 95;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
825 pText = pGlobalTXT_LocalizationStrings[229];//Pain Reflection
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
826 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
827 case ACTOR_BUFF_PAIN_HAMMERHANDS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
828 pTextColorID = 73;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
829 pText = pGlobalTXT_LocalizationStrings[228];//Hammerhands
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
830 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
831 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
832 pText = "";
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
833 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
834 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
835 if ( _stricmp(pText, "" ))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
836 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
837 pWindow->DrawText(pFontSmallnum, 28, pTextHeight, GetSpellColor(pTextColorID), pText, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
838 pTextHeight = pTextHeight + *(char *)((int)pFontSmallnum + 5) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
839 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
840 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
841 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
842 if ( !_stricmp(pText,"" ))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
843 pWindow->DrawText(pFontSmallnum, 28, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[153], 0, 0, 0);//Íåò
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
844 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
845
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
846 if ( normal_level )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
847 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
848 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\n", pGlobalTXT_LocalizationStrings[108], 0, pActors[uActorID].pMonsterInfo.uHP);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
849 pWindow->DrawText(pFontSmallnum, 150, (int)v106.uViewportY, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
850 pTextHeight = v106.uViewportY + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
851 sprintf(pTmpBuf.data(), "%s\f%05u\t100%d\n", pGlobalTXT_LocalizationStrings[12], 0, pActors[uActorID].pMonsterInfo.uAC);//Armor Class
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
852 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
853 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
854 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
855 sprintf(pTmpBuf.data(), "%s\f%05u\t100%s\n", pGlobalTXT_LocalizationStrings[108], 0, pGlobalTXT_LocalizationStrings[630]);//? - [630] actually displays a question mark
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
856 pWindow->DrawText(pFontSmallnum, 150, (int)v106.uViewportY, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
857 pTextHeight = v106.uViewportY + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
858 sprintf(pTmpBuf.data(), "%s\f%05u\t100%s\n", pGlobalTXT_LocalizationStrings[12], 0, pGlobalTXT_LocalizationStrings[630]);//? - [630] actually displays a question mark
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
859 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
860 pWindow->DrawText(pFontSmallnum, 150, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
861 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 6 + LOBYTE(pFontSmallnum->uFontHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
862
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
863 content[0] = pGlobalTXT_LocalizationStrings[87];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
864 content[1] = pGlobalTXT_LocalizationStrings[6];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
865 content[2] = pGlobalTXT_LocalizationStrings[240];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
866 content[3] = pGlobalTXT_LocalizationStrings[70];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
867 content[4] = pGlobalTXT_LocalizationStrings[624];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
868 content[5] = pGlobalTXT_LocalizationStrings[138];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
869 content[6] = pGlobalTXT_LocalizationStrings[214];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
870 content[7] = pGlobalTXT_LocalizationStrings[142];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
871 content[8] = pGlobalTXT_LocalizationStrings[29];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
872 content[9] = pGlobalTXT_LocalizationStrings[133];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
873 content[10] = pGlobalTXT_LocalizationStrings[54];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
874
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
875 if ( expert_level )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
876 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
877 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, content[pActors[uActorID].pMonsterInfo.uAttack1Type]);//Attack
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
878 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
879 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
880 if ( pActors[uActorID].pMonsterInfo.uAttack1DamageBonus )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
881 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d+%d\n", pGlobalTXT_LocalizationStrings[53],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
882 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides, pActors[uActorID].pMonsterInfo.uAttack1DamageBonus);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
883 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
884 sprintf(pTmpBuf.data(), "%s\f%05u\t080%dd%d\n", pGlobalTXT_LocalizationStrings[53],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
885 0, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceRolls, pActors[uActorID].pMonsterInfo.uAttack1DamageDiceSides);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
886 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
887 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
888 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
889 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[18], 0, pGlobalTXT_LocalizationStrings[630]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
890 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
891 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
892 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[53], 0, pGlobalTXT_LocalizationStrings[630]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
893 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
894 pWindow->DrawText(pFontSmallnum, 150, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
895 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 6 + LOBYTE(pFontSmallnum->uFontHeight);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
896
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
897 if ( !master_level )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
898 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
899 sprintf(pTmpBuf.data(), "%s\f%05u\t080%s\n", pGlobalTXT_LocalizationStrings[628], 0, pGlobalTXT_LocalizationStrings[630]);//"Spell" "?"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
900 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
901 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
902 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
903 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
904 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
905 pText = pGlobalTXT_LocalizationStrings[628];//Spell
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
906 if ( pActors[uActorID].pMonsterInfo.uSpell1ID && pActors[uActorID].pMonsterInfo.uSpell2ID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
907 pText = pGlobalTXT_LocalizationStrings[629];//Spells
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
908 if ( pActors[uActorID].pMonsterInfo.uSpell1ID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
909 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
910 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", pText, 0, pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell1ID].pShortName);//"%s\f%05u\t060%s\n"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
911 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
912 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
913 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
914 if ( pActors[uActorID].pMonsterInfo.uSpell2ID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
915 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
916 sprintf(pTmpBuf.data(), "\f%05u\t070%s\n", 0, pSpellStats->pInfos[pActors[uActorID].pMonsterInfo.uSpell2ID].pShortName);//"%s\f%05u\t060%s\n"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
917 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
918 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
919 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
920 if ( !pActors[uActorID].pMonsterInfo.uSpell1ID && !pActors[uActorID].pMonsterInfo.uSpell2ID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
921 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
922 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", pGlobalTXT_LocalizationStrings[628], 0, pGlobalTXT_LocalizationStrings[153]);//"%s\f%05u\t060%s\n"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
923 pWindow->DrawText(pFontSmallnum, 150, (int)pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
924 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
925 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
926 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
927 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
928 pWindow->DrawText(pFontSmallnum, 150, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pGlobalTXT_LocalizationStrings[626], 0, 0, 0);//Immune
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
929 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
930
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
931 string_name[0] = pGlobalTXT_LocalizationStrings[87];//Fire
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
932 string_name[1] = pGlobalTXT_LocalizationStrings[6];//Air
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
933 string_name[2] = pGlobalTXT_LocalizationStrings[240];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
934 string_name[3] = pGlobalTXT_LocalizationStrings[70];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
935 string_name[4] = pGlobalTXT_LocalizationStrings[142];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
936 string_name[5] = pGlobalTXT_LocalizationStrings[214];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
937 string_name[6] = pGlobalTXT_LocalizationStrings[29];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
938 string_name[7] = pGlobalTXT_LocalizationStrings[133];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
939 string_name[8] = pGlobalTXT_LocalizationStrings[54];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
940 string_name[9] = pGlobalTXT_LocalizationStrings[624];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
941
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
942 resistances[0] = pActors[uActorID].pMonsterInfo.uResFire;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
943 resistances[1] = pActors[uActorID].pMonsterInfo.uResAir;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
944 resistances[2] = pActors[uActorID].pMonsterInfo.uResWater;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
945 resistances[3] = pActors[uActorID].pMonsterInfo.uResEarth;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
946 resistances[4] = pActors[uActorID].pMonsterInfo.uResMind;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
947 resistances[5] = pActors[uActorID].pMonsterInfo.uResSpirit;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
948 resistances[6] = pActors[uActorID].pMonsterInfo.uResBody;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
949 resistances[7] = pActors[uActorID].pMonsterInfo.uResLight;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
950 resistances[8] = pActors[uActorID].pMonsterInfo.uResPhysical;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
951 resistances[9] = pActors[uActorID].pMonsterInfo.uResDark;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
952
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
953 if ( grandmaster_level )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
954 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
955 for ( uint i = 0; i < 10; i++ )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
956 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
957 if ( resistances[i] == 200 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
958 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
959 pText = pGlobalTXT_LocalizationStrings[625];//Immune
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
960 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
961 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
962 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
963 if ( resistances[i] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
964 pText = pGlobalTXT_LocalizationStrings[627];//Resistant
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
965 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
966 pText = pGlobalTXT_LocalizationStrings[153];//None
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
967 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
968 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", string_name[i], 0, pText);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
969 pWindow->DrawText(pFontSmallnum, 170, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
970 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
971 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
972 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
973 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
974 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
975 for ( uint i = 0; i < 10; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
976 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
977 sprintf(pTmpBuf.data(), "%s\f%05u\t070%s\n", string_name[i], 0, pGlobalTXT_LocalizationStrings[630]); // "?"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
978 pWindow->DrawText(pFontSmallnum, 170, pTextHeight, Color16(0xE1u, 255, 0x9Bu), pTmpBuf.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
979 pTextHeight = pTextHeight + LOBYTE(pFontSmallnum->uFontHeight) - 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
980 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
981 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
982 //cast spell: Detect life
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
983 if ( (signed __int64)pParty->pPartyBuffs[PARTY_BUFF_DETECT_LIFE].uExpireTime > 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
984 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
985 sprintf(pTmpBuf.data(), "%s: %d", pGlobalTXT_LocalizationStrings[650], pActors[uActorID].sCurrentHP);//Current Hit Points
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
986 pFontSmallnum->GetLineWidth(pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
987 pWindow->DrawTitleText(pFontSmallnum, 0, pWindow->uFrameHeight - LOBYTE(pFontSmallnum->uFontHeight) - 12, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
988 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
989 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
990
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
991 //----- (00417BB5) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
992 const char *CharacterUI_GetSkillDescText(unsigned int uPlayerID, PLAYER_SKILL_TYPE uPlayerSkillType)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
993 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
994 char a2[1200]; // [sp+Ch] [bp-538h]@7
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
995 char Source[120]; // [sp+4BCh] [bp-88h]@7
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
996 int v35; // [sp+53Ch] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
997
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
998 v35 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[431]);// Normal
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
999 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[433]) > (signed int)v35 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1000 v35 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[433]);// Expert
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1001 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[432]) > (signed int)v35 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1002 v35 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[432]);// Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1003 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[96]) > (signed int)v35 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1004 v35 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[96]);// Grand
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1005
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1006 a2[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1007 Source[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1008 strcpy(a2, "%s\n\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1009 sprintf(Source, "\f%05d", GetSkillColor(pParty->pPlayers[uPlayerID].classType, uPlayerSkillType, 1));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1010 strcat(a2, Source);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1011 strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1012 sprintf(Source, "\f%05d", GetSkillColor(pParty->pPlayers[uPlayerID].classType, uPlayerSkillType, 2));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1013 strcat(a2, Source);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1014 strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1015 sprintf(Source, "\f%05d", GetSkillColor(pParty->pPlayers[uPlayerID].classType, uPlayerSkillType, 3));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1016 strcat(a2, Source);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1017 strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1018 sprintf(Source, "\f%05d", GetSkillColor(pParty->pPlayers[uPlayerID].classType, uPlayerSkillType, 4));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1019 strcat(a2, Source);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1020 strcat(a2, "%s\t%03d:\t%03d%s\t000\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1021 if ( (pParty->pPlayers[uPlayerID].pActiveSkills[uPlayerSkillType] & 0x3F) == (pParty->pPlayers[uPlayerID].GetActualSkillLevel(uPlayerSkillType) & 0x3F) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1022 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1023 sprintf(static_sub_417BB5_out_string, a2, pSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1024 pGlobalTXT_LocalizationStrings[431], v35 + 3, v35 + 5, pNormalSkillDesc[uPlayerSkillType], // Normal
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1025 pGlobalTXT_LocalizationStrings[433], v35 + 3, v35 + 5, pExpertSkillDesc[uPlayerSkillType], // Expert
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1026 pGlobalTXT_LocalizationStrings[432], v35 + 3, v35 + 5, pMasterSkillDesc[uPlayerSkillType], // Master
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1027 pGlobalTXT_LocalizationStrings[96], v35 + 3, v35 + 5, pGrandSkillDesc[uPlayerSkillType]); // Grand
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1028 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1029 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1030 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1031 sprintf(Source, "\f%05d", Color16(0xFFu, 0xFFu, 0xFFu));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1032 strcat(a2, Source);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1033 strcat(a2, "%s: +%d");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1034 sprintf(static_sub_417BB5_out_string, a2, pSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1035 pGlobalTXT_LocalizationStrings[431], v35 + 3, v35 + 5, pNormalSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1036 pGlobalTXT_LocalizationStrings[433], v35 + 3, v35 + 5, pExpertSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1037 pGlobalTXT_LocalizationStrings[432], v35 + 3, v35 + 5, pMasterSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1038 pGlobalTXT_LocalizationStrings[96], v35 + 3, v35 + 5, pGrandSkillDesc[uPlayerSkillType],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1039 pGlobalTXT_LocalizationStrings[623], //Bonus
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1040 (pParty->pPlayers[uPlayerID].GetActualSkillLevel(uPlayerSkillType) & 0x3F) - (pParty->pPlayers[uPlayerID].pActiveSkills[uPlayerSkillType] & 0x3F));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1041 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1042 return static_sub_417BB5_out_string;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1043 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1044
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1045 //----- (00417FE5) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1046 void CharacterUI_SkillsTab_ShowHint()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1047 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1048 GUIButton *pButton; // esi@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1049 unsigned int pX; // [sp+4h] [bp-8h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1050 unsigned int pY; // [sp+8h] [bp-4h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1051
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1052 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1053 if ( (signed int)pX < 24 || (signed int)pX > 455 || (signed int)pY < 18 || (signed int)pY > 36 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1054 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1055 for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1056 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1057 if ( pButton->msg == UIMSG_SkillUp
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1058 && (signed int)pX >= (signed int)pButton->uX
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1059 && (signed int)pX <= (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1060 && (signed int)pY >= (signed int)pButton->uY
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1061 && (signed int)pY <= (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1062 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1063 CharacterUI_DrawTooltip(pSkillNames[pButton->msg_param], CharacterUI_GetSkillDescText(uActiveCharacter - 1, (PLAYER_SKILL_TYPE)pButton->msg_param));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1064 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1065 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1066 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1067 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1068 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[207], pSkillPointsAttributeDescription);//Î÷êè íàâûêîâ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1069 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1070
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1071 //----- (00418083) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1072 void CharacterUI_StatsTab_ShowHint()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1073 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1074 int pStringNum; // edi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1075 signed int pTextColor; // eax@15
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1076 const char *pHourWord; // ecx@17
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1077 const char *pDayWord; // eax@20
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1078 int v15; // ebx@28
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1079 POINT a2; // [sp+Ch] [bp-24h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1080 int pHour; // [sp+14h] [bp-1Ch]@15
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1081 unsigned int pDay; // [sp+24h] [bp-Ch]@15
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1082
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1083 pMouse->GetCursorPos(&a2);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1084 for ( pStringNum = 0; pStringNum < stat_string_coord.size(); ++pStringNum )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1085 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1086 if (a2.x >= stat_string_coord[pStringNum].x && a2.x <= stat_string_coord[pStringNum].x + stat_string_coord[pStringNum].width )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1087 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1088 if (a2.y >= stat_string_coord[pStringNum].y && a2.y <= stat_string_coord[pStringNum].y + stat_string_coord[pStringNum].height )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1089 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1090 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1091 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1092
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1093 switch ( pStringNum )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1094 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1095 case 0:// Attributes
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1096 case 1:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1097 case 2:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1098 case 3:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1099 case 4:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1100 case 5:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1101 case 6:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1102 if ( aAttributeNames[pStringNum] && pAttributeDescriptions[pStringNum] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1103 CharacterUI_DrawTooltip(aAttributeNames[pStringNum], pAttributeDescriptions[pStringNum]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1104 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1105 case 7:// Health Points
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1106 if ( pGlobalTXT_LocalizationStrings[108] && pHealthPointsAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1107 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[108], pHealthPointsAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1108 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1109 case 8:// Spell Points
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1110 if ( pGlobalTXT_LocalizationStrings[212] && pSpellPointsAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1111 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[212], pSpellPointsAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1112 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1113 case 9:// Armor Class
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1114 if ( pGlobalTXT_LocalizationStrings[12] && pArmourClassAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1115 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[12], pArmourClassAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1116 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1117 case 10:// Player Condition
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1118 strcpy(pTmpBuf2.data(), pPlayerConditionAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1119 strcat(pTmpBuf2.data(), "\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1120 extern std::array<unsigned int, 18> pConditionImportancyTable;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1121 for ( uint i = 0; i < 18; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1122 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1123 if ( pPlayers[uActiveCharacter]->pConditions[pConditionImportancyTable[i]] )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1124 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1125 strcat(pTmpBuf2.data(), " \n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1126 pHour = pParty->uTimePlayed - pPlayers[uActiveCharacter]->pConditions[pConditionImportancyTable[i]];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1127 pHour = (unsigned int)((pHour * 0.234375) / 60 / 60);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1128 pDay = (unsigned int)pHour / 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1129 pHour %= 24i64;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1130 pTextColor = GetConditionDrawColor(pConditionImportancyTable[i]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1131 sprintfex(pTmpBuf.data(), format_4E2DE8, pTextColor, aCharacterConditionNames[pConditionImportancyTable[i]]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1132 strcat(pTmpBuf2.data(), pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1133 if ( pHour && pHour <= 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1134 pHourWord = pGlobalTXT_LocalizationStrings[109];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1135 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1136 pHourWord = pGlobalTXT_LocalizationStrings[110];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1137 if ( !pDay || (pDayWord = pGlobalTXT_LocalizationStrings[56], pDay > 1) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1138 pDayWord = pGlobalTXT_LocalizationStrings[57];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1139 sprintfex(pTmpBuf.data(), "%lu %s, %lu %s", pDay, pDayWord, pHour, pHourWord);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1140 strcat(pTmpBuf2.data(), pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1141 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1142 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1143 if ( pGlobalTXT_LocalizationStrings[47] && pTmpBuf2.data() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1144 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[47], pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1145 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1146 case 11:// Fast Spell
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1147 if ( pGlobalTXT_LocalizationStrings[172] && pFastSpellAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1148 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[172], pFastSpellAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1149 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1150 case 12:// Player Age
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1151 if ( pGlobalTXT_LocalizationStrings[5] && pPlayerAgeAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1152 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[5], pPlayerAgeAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1153 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1154 case 13:// Player Level
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1155 if ( pGlobalTXT_LocalizationStrings[131] && pPlayerLevelAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1156 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[131], pPlayerLevelAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1157 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1158 case 14://Experience
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1159 v15 = pPlayers[uActiveCharacter]->uLevel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1160 do
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1161 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1162 if ( (signed __int64)pPlayers[uActiveCharacter]->uExperience < (unsigned int)GetExperienceRequiredForLevel(v15) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1163 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1164 ++v15;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1165 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1166 while ( v15 <= 10000 );
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1167 pTmpBuf[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1168 pTmpBuf2[0] = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1169 if ( v15 > pPlayers[uActiveCharacter]->uLevel )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1170 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[147], v15);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1171 sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[538], GetExperienceRequiredForLevel(v15) - LODWORD(pPlayers[uActiveCharacter]->uExperience), v15 + 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1172 strcat(pTmpBuf.data(), "\n");
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1173 strcat(pTmpBuf.data(), pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1174 sprintf(pTmpBuf2.data(), "%s\n \n%s", pPlayerExperienceAttributeDescription, pTmpBuf.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1175 if ( pGlobalTXT_LocalizationStrings[83] && pTmpBuf2.data() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1176 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[83], pTmpBuf2.data());
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1177 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1178 case 15:// Attack Bonus
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1179 if ( pGlobalTXT_LocalizationStrings[587] && pAttackBonusAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1180 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[587], pAttackBonusAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1181 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1182 case 16:// Attack Damage
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1183 if ( pGlobalTXT_LocalizationStrings[588] && pAttackDamageAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1184 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[588], pAttackDamageAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1185 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1186 case 17:// Missle Bonus
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1187 if ( pGlobalTXT_LocalizationStrings[589] && pMissleBonusAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1188 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[589], pMissleBonusAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1189 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1190 case 18:// Missle Damage
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1191 if ( pGlobalTXT_LocalizationStrings[590] && pMissleDamageAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1192 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[590], pMissleDamageAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1193 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1194 case 19:// Fire Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1195 if ( pGlobalTXT_LocalizationStrings[87] && pFireResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1196 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[87], pFireResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1197 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1198 case 20:// Air Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1199 if ( pGlobalTXT_LocalizationStrings[6] && pAirResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1200 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[6], pAirResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1201 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1202 case 21:// Water Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1203 if ( pGlobalTXT_LocalizationStrings[240] && pWaterResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1204 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[240], pWaterResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1205 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1206 case 22:// Earth Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1207 if ( pGlobalTXT_LocalizationStrings[70] && pEarthResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1208 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[70], pEarthResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1209 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1210 case 23:// Mind Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1211 if ( pGlobalTXT_LocalizationStrings[142] && pMindResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1212 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[142], pMindResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1213 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1214 case 24:// Body Resistance
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1215 if ( pGlobalTXT_LocalizationStrings[29] && pBodyResistanceAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1216 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[29], pBodyResistanceAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1217 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1218 case 25: // Skill Points
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1219 if ( pGlobalTXT_LocalizationStrings[207] && pSkillPointsAttributeDescription )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1220 CharacterUI_DrawTooltip(pGlobalTXT_LocalizationStrings[207], pSkillPointsAttributeDescription);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1221 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1222 case 26: // Class description
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1223 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1224 if (pClassDescriptions[pPlayers[uActiveCharacter]->classType] && pClassNames[pPlayers[uActiveCharacter]->classType])
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1225 CharacterUI_DrawTooltip(pClassNames[pPlayers[uActiveCharacter]->classType], pClassDescriptions[pPlayers[uActiveCharacter]->classType]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1226 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1227 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1228
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1229 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1230 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1231 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1232 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1233
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1234 //----- (00410B28) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1235 void DrawSpellDescriptionPopup(int spell_index)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1236 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1237 SpellInfo *spell; // esi@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1238 unsigned int v3; // eax@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1239 LONG v5; // ecx@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1240 GUIWindow spell_info_window; // [sp+Ch] [bp-68h]@4
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1241 POINT mouse; // [sp+64h] [bp-10h]@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1242
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1243 spell = &pSpellStats->pInfos[spell_index + 11 * pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 1];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1244 if ( pMouse->GetCursorPos(&mouse)->y <= 250 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1245 v3 = pMouse->GetCursorPos(&mouse)->y + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1246 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1247 v3 = 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1248 spell_info_window.uFrameY = v3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1249 spell_info_window.uFrameWidth = 328;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1250 spell_info_window.uFrameHeight = 68;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1251 spell_info_window.uFrameX = 90;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1252 spell_info_window.uFrameZ = 417;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1253 spell_info_window.uFrameW = v3 + 67;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1254 spell_info_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1255 v5 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_NORMAL]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1256 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_MASTER]) > v5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1257 v5 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_MASTER]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1258 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_EXPERT]) > v5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1259 v5 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_EXPERT]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1260 if ( pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_GRAND]) > v5 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1261 v5 = pFontSmallnum->GetLineWidth(pGlobalTXT_LocalizationStrings[LOCSTR_GRAND]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1262 sprintf(pTmpBuf2.data(),
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1263 "%s\n\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s",
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1264 spell->pDescription,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1265 pGlobalTXT_LocalizationStrings[LOCSTR_NORMAL], v5 + 3, v5 + 10, spell->pBasicSkillDesc,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1266 pGlobalTXT_LocalizationStrings[LOCSTR_EXPERT], v5 + 3, v5 + 10, spell->pExpertSkillDesc,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1267 pGlobalTXT_LocalizationStrings[LOCSTR_MASTER], v5 + 3, v5 + 10, spell->pMasterSkillDesc,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1268 pGlobalTXT_LocalizationStrings[LOCSTR_GRAND], v5 + 3, v5 + 10, spell->pGrandmasterSkillDesc);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1269 spell_info_window.uFrameHeight += pFontSmallnum->CalcTextHeight(pTmpBuf2.data(), &spell_info_window, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1270 if ( (signed int)spell_info_window.uFrameHeight < 150 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1271 spell_info_window.uFrameHeight = 150;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1272 spell_info_window.uFrameWidth = game_viewport_width;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1273 spell_info_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1274 spell_info_window.uFrameWidth -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1275 spell_info_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1276 spell_info_window.uFrameZ = spell_info_window.uFrameX + spell_info_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1277 spell_info_window.uFrameW = spell_info_window.uFrameHeight + spell_info_window.uFrameY - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1278 spell_info_window.DrawTitleText(pFontArrus, 0x78u, 0xCu, Color16(0xFFu, 0xFFu, 0x9Bu), spell->pName, 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1279 spell_info_window.DrawText(pFontSmallnum, 120, 44, 0, pTmpBuf2.data(), 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1280 spell_info_window.uFrameWidth = 108;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1281 spell_info_window.uFrameZ = spell_info_window.uFrameX + 107;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1282 int skill_level = SkillToMastery(pPlayers[uActiveCharacter]->pActiveSkills[pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 12]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1283 spell_info_window.DrawTitleText(pFontComic, 12, 75, 0, pSkillNames[pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 12], 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1284 sprintf( pTmpBuf.data(), "%s\n%d", pGlobalTXT_LocalizationStrings[LOCSTR_SP_COST],
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1285 pSpellDatas[spell_index + 11 * pPlayers[uActiveCharacter]->lastOpenedSpellbookPage + 1].mana_per_skill[skill_level - 1]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1286 spell_info_window.DrawTitleText(pFontComic, 12, spell_info_window.uFrameHeight - LOBYTE(pFontComic->uFontHeight) - 16, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1287 dword_507B00_spell_info_to_draw_in_popup = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1288 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1289 // 507B00: using guessed type int dword_507B00_spell_info_to_draw_in_popup;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1290
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1291 //----- (00416D62) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1292 void UI_OnMouseRightClick(Vec2_int_ *_this)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1293 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1294 int v5; // esi@62
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1295 GUIButton *pButton; // esi@84
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1296 const char *pStr; // edi@85
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1297 const char *pHint; // edx@113
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1298 GUIWindow popup_window; // [sp+4h] [bp-74h]@32
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1299 struct tagPOINT Point; // [sp+60h] [bp-18h]@6
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1300 unsigned int pX; // [sp+70h] [bp-8h]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1301 unsigned int pY; // [sp+74h] [bp-4h]@3
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1302
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
1303 if ( current_screen_type == SCREEN_VIDEO || GetCurrentMenuID() == MENU_MAIN )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1304 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1305 if ( _this )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1306 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1307 pX = _this->x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1308 pY = _this->y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1309 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1310 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1311 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1312 pMouse->GetClickPos(&pX, &pY);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1313 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1314 //if ( pRenderer->bWindowMode )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1315 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1316 GetCursorPos(&Point);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1317 ScreenToClient(window->GetApiHandle(), &Point);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1318 if ( Point.x < 1 || Point.y < 1 || Point.x > 638 || Point.y > 478 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1319 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1320 back_to_game();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1321 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1322 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1323 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1324 if ( pParty->pPickedItem.uItemID )//íàæàòèå íà ïîðòðåò ïåðñà ïðàâîé êíîïêîé ìûøè ñ ðàñòâîðîì
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1325 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1326 for ( uint i = 0; i < 4; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1327 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1328 if ( (signed int)pX > RightClickPortraitXmin[i] && (signed int)pX < RightClickPortraitXmax[i]
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1329 && (signed int)pY > 375 && (signed int)pY < 466 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1330 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1331 pPlayers[uActiveCharacter]->UseItem_DrinkPotion_etc(i + 1, 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1332 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1333 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1334 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1335 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1336
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1337 pEventTimer->Pause();
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
1338 switch(current_screen_type)
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1339 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1340 case SCREEN_CASTING:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1341 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1342 Inventory_ItemPopupAndAlchemy();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1343 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1344 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1345 case SCREEN_CHEST:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1346 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1347 if ( !pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1348 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1349 sprintf(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[427], pPlayers[uActiveCharacter]->pName, pGlobalTXT_LocalizationStrings[541]);//%s íå â ñîñòîÿíèè %s Îïîçíàòü ïðåäìåòû
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1350 popup_window.Hint = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1351 popup_window.uFrameWidth = 384;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1352 popup_window.uFrameHeight = 180;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1353 popup_window.uFrameY = 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1354 if ( (signed int)pX <= 320 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1355 popup_window.uFrameX = pX + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1356 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1357 popup_window.uFrameX = pX - 414;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1358 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1359 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1360 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1361 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1362 if ( pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]] & 0xFFFF )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1363 GameUI_DrawItemInfo(&pChests[pChestWindow->par1C].igChestItems[pChests[pChestWindow->par1C].pInventoryIndices[(pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]] & 0xFFFF) - 1] - 1]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1364 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1365 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1366 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1367 case SCREEN_GAME://In the main menu displays a pop-up window(Â ãëàâíîì ìåíþ ïîêàçûâàåò âñïëûâàþùåå îêíî)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1368 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1369 if (GetCurrentMenuID() > 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1370 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1371 if ( (signed int)pY > (signed int)pViewport->uViewportBR_Y )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1372 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1373 popup_window.ptr_1C = (void *)((signed int)pX / 118);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1374 if ( (signed int)pX / 118 < 4 )//portaits zone
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1375 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1376 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1377 popup_window.uFrameWidth = 400;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1378 popup_window.uFrameHeight = 200;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1379 popup_window.uFrameX = 38;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1380 popup_window.uFrameY = 60;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1381 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1382 GameUI_CharacterQuickRecord_Draw(&popup_window, pPlayers[(int)popup_window.ptr_1C + 1]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1383 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1384 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1385 else if ( (signed int)pX > (signed int)pViewport->uViewportBR_X )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1386 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1387 if ( (signed int)pY >= 130 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1388 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1389 if ( (signed int)pX >= 476 && (signed int)pX <= 636 && (signed int)pY >= 240 && (signed int)pY <= 300 )//buff_tooltip zone
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1390 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1391 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1392 popup_window.uFrameWidth = 400;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1393 popup_window.uFrameHeight = 200;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1394 popup_window.uFrameX = 38;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1395 popup_window.uFrameY = 60;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1396 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1397 popup_window._41D73D_draw_buff_tooltip();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1398 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1399 else if ( (signed int)pX < 485 || (signed int)pX > 548 || (signed int)pY < 156 || (signed int)pY > 229 )//NPC zone
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1400 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1401 if (!( (signed int)pX < 566 || (signed int)pX > 629 || (signed int)pY < 156 || (signed int)pY > 229 ))
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1402 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1403 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1404 GameUI_DrawNPCPopup((void *)1);//NPC 2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1405 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1406 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1407 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1408 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1409 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1410 GameUI_DrawNPCPopup(0);//NPC 1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1411 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1412 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1413 else//minimap zone
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1414 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1415 popup_window.Hint = (char *)GameUI_GetMinimapHintText();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1416 popup_window.uFrameWidth = 256;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1417 popup_window.uFrameX = 130;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1418 popup_window.uFrameY = 140;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1419 popup_window.uFrameHeight = 64;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1420 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1421 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1422 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1423 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1424 else//game zone
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1425 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1426 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1427 popup_window.uFrameWidth = 320;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1428 popup_window.uFrameHeight = 320;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1429 popup_window.uFrameX = pX - 350;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1430 if ( (signed int)pX <= 320 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1431 popup_window.uFrameX = pX + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1432 popup_window.uFrameY = 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1433 //if ( pRenderer->pRenderD3D )
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
1434 v5 = pEngine->pVisInstance->get_picked_object_zbuf_val();
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1435 /*else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1436 v5 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1437 if (PID_TYPE((unsigned __int16)v5) == OBJECT_Actor)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1438 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1439 /*if ( pRenderer->uNumSceneBegins )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1440 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1441 popup_window.DrawMessageBox(1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1442 MonsterPopup_Draw(PID_ID((unsigned __int16)v5), &popup_window);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1443 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1444 else*/
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1445 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1446 pRenderer->BeginScene();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1447 popup_window.DrawMessageBox(1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1448 MonsterPopup_Draw(PID_ID((unsigned __int16)v5), &popup_window);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1449 pRenderer->EndScene();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1450 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1451 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1452 if (PID_TYPE((unsigned __int16)v5) == OBJECT_Item)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1453 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1454 if ( !(pObjectList->pObjects[pSpriteObjects[PID_ID((unsigned __int16)v5)].uObjectDescID].uFlags & 0x10 ) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1455 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1456 GameUI_DrawItemInfo(&pSpriteObjects[PID_ID((unsigned __int16)v5)].stru_24);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1457 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1458 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1459 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1460 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1461 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1462 case SCREEN_BOOKS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1463 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1464 if ( !dword_506364
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1465 || (signed int)pX < (signed int)pViewport->uViewportTL_X || (signed int)pX > (signed int)pViewport->uViewportBR_X
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1466 || (signed int)pY < (signed int)pViewport->uViewportTL_Y || (signed int)pY > (signed int)pViewport->uViewportBR_Y
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1467 || ((popup_window.Hint = (char *)GetMapBookHintText()) == 0) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1468 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1469 popup_window.uFrameWidth = (pFontArrus->GetLineWidth(popup_window.Hint) + 32) + 0.5f;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1470 popup_window.uFrameX = pX + 5;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1471 popup_window.uFrameY = pY + 5;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1472 popup_window.uFrameHeight = 64;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1473 pAudioPlayer->StopChannels(-1, -1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1474 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1475 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1476 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1477 case SCREEN_CHARACTERS:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1478 case SCREEN_E:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1479 case SCREEN_CHEST_INVENTORY:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1480 {
2541
a902abdfc7f2 1. Renamed class Game to class Engine.
a.parshin
parents: 2534
diff changeset
1481 if ( (signed int)pX > 467 && current_screen_type != SCREEN_E )
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1482 Inventory_ItemPopupAndAlchemy();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1483 else if ( (signed int)pY >= 345 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1484 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1485 else if ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] == 100 )//2DEvent - CharacerScreenStats
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1486 CharacterUI_StatsTab_ShowHint();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1487 else if ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] == 101 )//2DEvent - CharacerScreenSkills
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1488 CharacterUI_SkillsTab_ShowHint();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1489 else if ( pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] == 103 )//2DEvent - CharacerScreenInventory
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1490 Inventory_ItemPopupAndAlchemy();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1491 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1492 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1493 case SCREEN_SPELL_BOOK:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1494 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1495 if ( dword_507B00_spell_info_to_draw_in_popup )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1496 DrawSpellDescriptionPopup(dword_507B00_spell_info_to_draw_in_popup - 1);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1497 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1498 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1499 case SCREEN_HOUSE:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1500 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1501 if ( (signed int)pY < 345 && (signed int)pX < 469 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1502 ShowPopupShopItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1503 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1504 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1505 case SCREEN_PARTY_CREATION:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1506 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1507 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1508 pStr = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1509 for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1510 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1511 if ( pButton->uButtonType == 1 && pButton->uButtonType != 3 && (signed int)pX > (signed int)pButton->uX && (signed int)pX < (signed int)pButton->uZ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1512 && (signed int)pY > (signed int)pButton->uY && (signed int)pY < (signed int)pButton->uW )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1513 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1514 switch ( pButton->msg )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1515 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1516 case UIMSG_0: //stats info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1517 popup_window.Hint = pAttributeDescriptions[(signed int)pButton->msg_param % 7];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1518 pStr = aAttributeNames[(signed int)pButton->msg_param % 7];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1519 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1520 case UIMSG_PlayerCreationClickPlus: //Plus button info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1521 pStr = pGlobalTXT_LocalizationStrings[670];//Äîáàâèòü
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1522 popup_window.Hint = pGlobalTXT_LocalizationStrings[671];//"Äîáàâëÿåò î÷êî ê âûäåëåííîìó íàâûêó, çàáèðàÿ åãî èç íàêîïèòåëÿ î÷êîâ"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1523 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1524 case UIMSG_PlayerCreationClickMinus: //Minus button info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1525 pStr = pGlobalTXT_LocalizationStrings[668];//Âû÷åñòü
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1526 popup_window.Hint = pGlobalTXT_LocalizationStrings[669];//"Âû÷èòàåò î÷êî èç âûäåëåííîãî íàâûêà, âîçâðàùàÿ åãî â íàêîïèòåëü î÷êîâ"
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1527 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1528 case UIMSG_PlayerCreationSelectActiveSkill: //Available skill button info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1529 pStr = pSkillNames[pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(pButton->msg_param + 4)];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1530 popup_window.Hint = pSkillDesc[pParty->pPlayers[uPlayerCreationUI_SelectedCharacter].GetSkillIdxByOrder(pButton->msg_param + 4)];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1531 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1532 case UIMSG_PlayerCreationSelectClass: //Available Class Info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1533 popup_window.Hint = pClassDescriptions[pButton->msg_param];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1534 pStr = pClassNames[pButton->msg_param];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1535 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1536 case UIMSG_PlayerCreationClickOK: //OK Info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1537 popup_window.Hint = pGlobalTXT_LocalizationStrings[664];//Ùåëêíèòå çäåñü äëÿ óòâåðæäåíèÿ ñîñòàâà îòðÿäà è ïðîäîëæåíèÿ èãðû.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1538 pStr = pGlobalTXT_LocalizationStrings[665];//Êíîïêà ÎÊ
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1539 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1540 case UIMSG_PlayerCreationClickReset: //Clear info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1541 popup_window.Hint = pGlobalTXT_LocalizationStrings[666];//Ñáðàñûâàåò âñå ïàðàìåòðû è íàâûêè îòðÿäà.
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1542 pStr = pGlobalTXT_LocalizationStrings[667];//Êíîïêà Î÷èñòèòü
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1543 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1544 case UIMSG_PlayerCreation_SelectAttribute: // Character info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1545 pStr = pParty->pPlayers[pButton->msg_param].pName;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1546 popup_window.Hint = pClassDescriptions[pParty->pPlayers[pButton->msg_param].classType];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1547 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1548 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1549 if ( pButton->msg > UIMSG_44 && pButton->msg <= UIMSG_PlayerCreationRemoveDownSkill ) //Sellected skills info
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1550 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1551 pY = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1552 if ( (signed int)pParty->pPlayers[pButton->msg_param].GetSkillIdxByOrder(pButton->msg - UIMSG_48) < 37 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1553 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1554 strcpy(pTmpBuf2.data(), CharacterUI_GetSkillDescText(pButton->msg_param, (PLAYER_SKILL_TYPE)pParty->pPlayers[pButton->msg_param].GetSkillIdxByOrder(pButton->msg - UIMSG_48)));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1555 popup_window.Hint = pTmpBuf2.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1556 pStr = pSkillNames[pParty->pPlayers[pButton->msg_param].GetSkillIdxByOrder(pButton->msg - UIMSG_48)];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1557 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1558 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1559 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1560 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1561 if ( popup_window.Hint )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1562 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1563 pHint = popup_window.Hint;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1564 popup_window.Hint = nullptr;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1565 popup_window.uFrameWidth = 384;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1566 popup_window.uFrameHeight = 256;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1567 popup_window.uFrameX = 128;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1568 popup_window.uFrameY = 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1569 popup_window.uFrameHeight = pFontSmallnum->CalcTextHeight(pHint, &popup_window, 24, 0) + 2 * LOBYTE(pFontLucida->uFontHeight) + 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1570 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1571 popup_window.uFrameW = popup_window.uFrameY + popup_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1572 popup_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1573 popup_window.uFrameX += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1574 popup_window.uFrameWidth -= 24;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1575 popup_window.uFrameY += 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1576 popup_window.uFrameHeight -= 12;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1577 popup_window.uFrameZ = popup_window.uFrameX + popup_window.uFrameWidth - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1578 popup_window.uFrameW = popup_window.uFrameY + popup_window.uFrameHeight - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1579 sprintf(pTmpBuf.data(), "\f%05d%s\f00000\n", Color16(0xFF, 0xFF, 0x9B), pStr);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1580 popup_window.DrawTitleText(pFontCreate, 0, 0, 0, pTmpBuf.data(), 3);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1581 popup_window.DrawText(pFontSmallnum, 1, pFontLucida->uFontHeight, 0, pHint, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1582 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1583 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1584 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1585 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1586 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1587 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1588 dword_507BF0_is_there_popup_onscreen = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1589 viewparams->bRedrawGameUI = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1590 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1591 int no_rightlick_in_inventory = false; // 0050CDCC
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1592 //----- (00416196) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1593 void Inventory_ItemPopupAndAlchemy()
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1594 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1595 int potion1_id; // edx@25
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1596 unsigned int potion2_id; // edi@25
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1597 signed int potionID; // edx@27
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1598 unsigned int pOut_y; // edx@57
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1599 double v31; // st7@112
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1600 Vec3_int_ v39; // [sp-18h] [bp-A8h]@83
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1601 GUIWindow message_window; // [sp+Ch] [bp-84h]@137
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1602 POINT cursor; // [sp+78h] [bp-18h]@2
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1603 unsigned int damage_level; // [sp+8Ch] [bp-4h]@23
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1604
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1605 if (no_rightlick_in_inventory)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1606 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1607
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1608 pMouse->GetCursorPos(&cursor);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1609 int item_pid = (pRenderer->pActiveZBuffer[cursor.x + pSRZBufferLineOffsets[cursor.y]] & 0xFFFF) - 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1610 if (item_pid == -1) //added here to avoid crash
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1611 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1612 ItemGen* item = &pPlayers[uActiveCharacter]->pInventoryItemList[item_pid];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1613
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1614 if (cursor.x <= 13 || cursor.x >= 462)//items out of inventory(âåùè âíå èíâåíòàðÿ)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1615 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1616 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1617 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1618 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1619
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1620 if (!item_pid)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1621 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1622 int inventory_mouse_x = cursor.x - 14;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1623 int inventory_mouse_y = cursor.y - 17;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1624
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1625 int mouse_cell_x = inventory_mouse_x / 32;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1626 int mouse_cell_y = inventory_mouse_y / 32;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1627
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1628 if (mouse_cell_x + mouse_cell_y < 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1629 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1630
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1631 int inventory_idx = mouse_cell_x + 14 * mouse_cell_y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1632 if (inventory_idx > 126)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1633 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1634
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1635 if (pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex(&inventory_idx) == 0)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1636 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1637
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1638 item_pid = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex(&inventory_idx);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1639 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1640 //check character condition(ïðîâåðêà ñîñòîÿíèÿ ïåðñîíàæà)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1641 if (!pPlayers[uActiveCharacter]->CanAct())
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1642 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1643 sprintfex(pTmpBuf.data(), pGlobalTXT_LocalizationStrings[427], pPlayers[uActiveCharacter]->pName, pGlobalTXT_LocalizationStrings[541]);//%s íå â ñîñòîÿíèè %s Îïîçíàòü ïðåäìåòû
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1644 message_window.Hint = pTmpBuf.data();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1645 message_window.uFrameWidth = 384;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1646 message_window.uFrameHeight = 180;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1647 if (cursor.x <= 320 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1648 message_window.uFrameX = cursor.x + 30;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1649 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1650 message_window.uFrameX = cursor.x - 414;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1651 message_window.uFrameY = 40;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1652 message_window.DrawMessageBox(0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1653 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1654 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1655
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1656 int alchemy_skill_points = (int8_t)pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_ALCHEMY) & 0x3F;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1657 int alchemy_skill_level = SkillToMastery(pPlayers[uActiveCharacter]->GetActualSkillLevel(PLAYER_SKILL_ALCHEMY));
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1658
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1659 // for potion bottle(ïðîñòàÿ áóòûëêà)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1660 if (pParty->pPickedItem.uItemID == ITEM_POTION_BOTTLE)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1661 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1662 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1663 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1664 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1665 //for recharge potion(çåëüå ïåðåçàðÿäêà)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1666 if (pParty->pPickedItem.uItemID == ITEM_POTION_RECHARGE_ITEM)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1667 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1668 if (item->uItemID < ITEM_POTION_BOTTLE || item->uItemID > ITEM_POTION_REJUVENATION)// all potions
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1669 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1670 if (item->GetItemEquipType() != EQUIP_WAND) // can recharge only wands
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1671 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1672 pAudioPlayer->PlaySound(SOUND_error, 0, 0, -1, 0, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1673 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1674 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1675
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1676 v31 = (70.0 - (double)pParty->pPickedItem.uEnchantmentType) * 0.01;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1677 if ( v31 < 0.0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1678 v31 = 0.0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1679 item->uMaxCharges = (signed __int64)((double)item->uMaxCharges - v31 * (double)item->uMaxCharges);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1680 item->uNumCharges = (signed __int64)((double)item->uMaxCharges - v31 * (double)item->uMaxCharges);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1681
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1682 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1683 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1684 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1685 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1686 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1687 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1688 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1689 // for harden potion(çåëüå çàêàëêà)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1690 else if (pParty->pPickedItem.uItemID == ITEM_POTION_HARDEN_ITEM)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1691 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1692 if (item->uItemID < ITEM_POTION_BOTTLE || item->uItemID > ITEM_POTION_REJUVENATION) // bottle and all potions
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1693 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1694 if (item->IsBroken() || // cant harden broken items
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1695 item->uItemID >= ITEM_ARTIFACT_PUCK || // cant harden artifacts
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1696 item->GetItemEquipType() < EQUIP_SINGLE_HANDED ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1697 item->GetItemEquipType() > EQUIP_WAND)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1698 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1699 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1700 no_rightlick_in_inventory = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1701 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1702 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1703
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1704 item->uAttributes |= ITEM_AURA_EFFECT_RED | ITEM_HARDENED;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1705
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1706 _50C9A8_item_enchantment_timer = 256;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1707 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1708 no_rightlick_in_inventory = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1709 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1710 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1711 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1712 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1713 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1714 // several potions(íåñêîëüêî çåëèé)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1715 else if (pParty->pPickedItem.uItemID >= ITEM_POTION_FLAMING_POTION && pParty->pPickedItem.uItemID <= ITEM_POTION_SWIFT_POTION ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1716 pParty->pPickedItem.uItemID == ITEM_POTION_SLAYING_POTION)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1717 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1718 if ( item->uItemID < ITEM_POTION_BOTTLE || item->uItemID > ITEM_POTION_REJUVENATION) // all potions
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1719 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1720 if (item->uItemID >= ITEM_BLASTER && item->uItemID <= ITEM_LASER_RIFLE ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1721 item->uItemID >= ITEM_ARTIFACT_PUCK ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1722 item->IsBroken() ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1723 item->uSpecEnchantmentType ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1724 item->uEnchantmentType ||
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1725 item->GetItemEquipType() >= EQUIP_ARMOUR) // only melee weapons and bows
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1726 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1727 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1728 no_rightlick_in_inventory = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1729 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1730 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1731
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1732 item->UpdateTempBonus(pParty->uTimePlayed);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1733 if (pParty->pPickedItem.uItemID == ITEM_POTION_SLAYING_POTION)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1734 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1735 item->uSpecEnchantmentType = 40; // of Slaying
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1736 v31 = (double)(1800 * pParty->pPickedItem.uEnchantmentType * 128);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1737 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1738 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1739 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1740 static int _4E2904_enchantment_by_potion_lut[] =
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1741 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1742 164, 93, 22,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1743 164, 93, 22,
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1744 11, 5, 13, 7, 59
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1745 };
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1746 item->uSpecEnchantmentType = _4E2904_enchantment_by_potion_lut[pParty->pPickedItem.uItemID - 240];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1747 v31 = (double)(1800 * pParty->pPickedItem.uEnchantmentType * 128);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1748 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1749
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1750 item->uExpireTime = pParty->uTimePlayed + v31 * 0.033333335;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1751 item->uAttributes = alchemy_skill_level | 0x18;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1752
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1753 _50C9A8_item_enchantment_timer = 256;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1754 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1755 no_rightlick_in_inventory = true;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1756 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1757 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1758 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1759 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1760 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1761 // use reagents(ïðèìåíåíèå ðåàãåíòîâ)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1762 if (pParty->pPickedItem.uItemID >= ITEM_REAGENT_WIDOWSWEEP_BERRIES && pParty->pPickedItem.uItemID <= ITEM_REAGENT_PHILOSOPHERS_STONE &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1763 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID == ITEM_POTION_BOTTLE)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1764 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1765 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uEnchantmentType = alchemy_skill_points + pParty->pPickedItem.GetDamageDice();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1766 switch ( pParty->pPickedItem.uItemID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1767 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1768 case 200:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1769 case 201:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1770 case 202:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1771 case 203:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1772 case 204:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1773 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = 222;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1774 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1775 case 205:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1776 case 206:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1777 case 207:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1778 case 208:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1779 case 209:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1780 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = 223;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1781 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1782 case 210:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1783 case 211:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1784 case 212:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1785 case 213:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1786 case 214:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1787 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = 224;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1788 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1789 case 215:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1790 case 216:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1791 case 217:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1792 case 218:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1793 case 219:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1794 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = 221;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1795 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1796 default:
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1797 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1798 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1799 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1800 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1801 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1802 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1803 pPlayers[uActiveCharacter]->PlaySound(SPEECH_DO_POTION_FINE, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1804 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1805 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1806 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1807 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1808 //potions mixing(ñìåøèâàíèå äâóõ çåëèé)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1809 if (pParty->pPickedItem.uItemID >= ITEM_POTION_CATALYST && pParty->pPickedItem.uItemID <= ITEM_POTION_REJUVENATION &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1810 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID >= ITEM_POTION_CATALYST &&
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1811 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID <= ITEM_POTION_REJUVENATION)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1812 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1813 potion1_id = item->uItemID - ITEM_POTION_CURE_WOUNDS;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1814 potion2_id = pParty->pPickedItem.uItemID - ITEM_POTION_CURE_WOUNDS;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1815
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1816 if ( pParty->pPickedItem.uItemID == ITEM_POTION_CATALYST || item->uItemID == ITEM_POTION_CATALYST )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1817 potionID = 5;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1818 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1819 potionID = pItemsTable->potion_data[potion2_id][potion1_id];
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1820 damage_level = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1821 if ( alchemy_skill_points )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1822 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1823 if ( potionID < ITEM_POTION_CURE_DISEASE || potionID > ITEM_POTION_AWAKEN )//< 225 >227
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1824 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1825 if ( potionID >= ITEM_POTION_HASTE && potionID <= ITEM_POTION_CURE_INSANITY && alchemy_skill_level == 1)//228 >= potionID <= 239
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1826 damage_level = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1827 if ( potionID >= ITEM_POTION_MIGHT_BOOST && potionID <= ITEM_POTION_BODY_RESISTANE && alchemy_skill_level <= 2)//240 >= potionID <= 261
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1828 damage_level = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1829 if ( potionID >= ITEM_POTION_STONE_TO_FLESH && alchemy_skill_level <= 3 )// 262 < potionID
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1830 damage_level = 4;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1831 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1832 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1833 else//no skill(íåò íàâûêà)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1834 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1835 if ( potionID >= ITEM_POTION_CURE_DISEASE && potionID <= ITEM_POTION_AWAKEN )//225 <= v16 <= 227
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1836 damage_level = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1837 if ( potionID >= ITEM_POTION_HASTE && potionID <= ITEM_POTION_CURE_INSANITY )//228 <= v16 <= 239
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1838 damage_level = 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1839 if ( potionID >= ITEM_POTION_MIGHT_BOOST && potionID <= ITEM_POTION_BODY_RESISTANE )//240 <= v16 <= 261
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1840 damage_level = 3;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1841 if ( potionID >= ITEM_POTION_STONE_TO_FLESH )//262 <= v16
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1842 damage_level = 4;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1843 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1844
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1845 int pOut_x = item_pid + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1846 for ( uint i = 0; i < 126; ++i )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1847 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1848 if ( pPlayers[uActiveCharacter]->pInventoryMatrix[i] == pOut_x )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1849 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1850 pOut_y = i;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1851 break;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1852 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1853 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1854 if ( !potionID )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1855 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1856 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1857 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1858 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1859 if ( damage_level == 1 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1860 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1861 pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1862 pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 11 + 10, DMGT_FIRE);
2534
1bcadc6dd203 enum SOUND_
Ritor1
parents: 2524
diff changeset
1863 pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1864 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1865 v39.z = pParty->vPosition.z + pParty->sEyelevel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1866 v39.x = pParty->vPosition.x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1867 v39.y = pParty->vPosition.y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1868
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1869 int rot_x, rot_y, rot_z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1870 Vec3_int_::Rotate(64, pParty->sRotationY, pParty->sRotationX, v39, &rot_x, &rot_y, &rot_z);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1871 SpriteObject::sub_42F7EB_DropItemAt(0x41Bu, rot_x, rot_y, rot_z, 0, 1, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1872 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1873 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1874 if ( pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1875 pPlayers[uActiveCharacter]->PlaySound(SPEECH_17, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1876 ShowStatusBarString(pGlobalTXT_LocalizationStrings[444], 2);//Îé!
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1877 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1878 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1879 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1880 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1881 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1882 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1883 if ( damage_level == 2 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1884 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1885 pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1886 pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 71 + 30, DMGT_FIRE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1887 pPlayers[uActiveCharacter]->ItemsEnchant(1);
2534
1bcadc6dd203 enum SOUND_
Ritor1
parents: 2524
diff changeset
1888 pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1889 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1890
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1891 v39.z = pParty->vPosition.z + pParty->sEyelevel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1892 v39.x = pParty->vPosition.x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1893 v39.y = pParty->vPosition.y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1894
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1895 int rot_x, rot_y, rot_z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1896 Vec3_int_::Rotate(64, pParty->sRotationY, pParty->sRotationX, v39, &rot_x, &rot_y, &rot_z);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1897 SpriteObject::sub_42F7EB_DropItemAt(0x41Bu, rot_x, rot_y, rot_z, 0, 1, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1898 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1899 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1900 if ( pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1901 pPlayers[uActiveCharacter]->PlaySound(SPEECH_17, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1902 ShowStatusBarString(pGlobalTXT_LocalizationStrings[444], 2);//Îé!
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1903 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1904 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1905 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1906 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1907 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1908 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1909 if ( damage_level == 3 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1910 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1911 pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1912 pPlayers[uActiveCharacter]->ReceiveDamage(rand() % 201 + 50, DMGT_FIRE);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1913 pPlayers[uActiveCharacter]->ItemsEnchant(5);
2534
1bcadc6dd203 enum SOUND_
Ritor1
parents: 2524
diff changeset
1914 pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1915
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1916 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1917
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1918 v39.z = pParty->vPosition.z + pParty->sEyelevel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1919 v39.x = pParty->vPosition.x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1920 v39.y = pParty->vPosition.y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1921
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1922 int rot_x, rot_y, rot_z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1923 Vec3_int_::Rotate(64, pParty->sRotationY, pParty->sRotationX, v39, &rot_x, &rot_y, &rot_z);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1924 SpriteObject::sub_42F7EB_DropItemAt(0x41Bu, rot_x, rot_y, rot_z, 0, 1, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1925 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1926 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1927 if ( pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1928 pPlayers[uActiveCharacter]->PlaySound(SPEECH_17, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1929 ShowStatusBarString(pGlobalTXT_LocalizationStrings[444], 2);//Îé!
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1930 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1931 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1932 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1933 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1934 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1935 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1936 if ( damage_level == 4 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1937 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1938 pPlayers[uActiveCharacter]->RemoveItemAtInventoryIndex(pOut_y);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1939 pPlayers[uActiveCharacter]->SetCondition(Condition_Eradicated, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1940 pPlayers[uActiveCharacter]->ItemsEnchant(0);
2534
1bcadc6dd203 enum SOUND_
Ritor1
parents: 2524
diff changeset
1941 pAudioPlayer->PlaySound(SOUND_fireBall, 0, 0, -1, 0, 0, 0, 0);
2501
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1942
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1943 pMessageQueue_50CBD0->AddGUIMessage(UIMSG_Escape, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1944
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1945 v39.z = pParty->vPosition.z + pParty->sEyelevel;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1946 v39.x = pParty->vPosition.x;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1947 v39.y = pParty->vPosition.y;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1948
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1949 int rot_x, rot_y, rot_z;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1950 Vec3_int_::Rotate(64, pParty->sRotationY, pParty->sRotationX, v39, &rot_x, &rot_y, &rot_z);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1951 SpriteObject::sub_42F7EB_DropItemAt(0x41Bu, rot_x, rot_y, rot_z, 0, 1, 0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1952 if ( dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1953 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1954 if ( pPlayers[uActiveCharacter]->CanAct() )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1955 pPlayers[uActiveCharacter]->PlaySound(SPEECH_17, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1956 ShowStatusBarString(pGlobalTXT_LocalizationStrings[444], 2);//Îé!
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1957 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1958 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1959 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1960 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1961 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1962 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1963 if ( damage_level == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1964 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1965 if ( alchemy_skill_points )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1966 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1967 if ( pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID == 221 || pParty->pPickedItem.uItemID == 221 )//catalyst(êàòàëèçàòîð)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1968 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1969 if ( pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID == 221 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1970 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = pParty->pPickedItem.uItemID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1971 if ( pParty->pPickedItem.uItemID == 221 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1972 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uEnchantmentType = pParty->pPickedItem.uEnchantmentType;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1973 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1974 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1975 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1976 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID = potionID;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1977 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uEnchantmentType = (pParty->pPickedItem.uEnchantmentType
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1978 + pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uEnchantmentType) / 2;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1979 pPlayers[uActiveCharacter]->SetVariable(VAR_AutoNotes, pItemsTable->potion_note[potion1_id][potion2_id]);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1980 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1981 int bottle = pPlayers[uActiveCharacter]->AddItem(-1, 220);//áóòûëêà
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1982 if ( bottle )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1983 pPlayers[uActiveCharacter]->pOwnItems[bottle - 1].uAttributes = ITEM_IDENTIFIED;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1984 if ( !(pItemsTable->pItems[pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uItemID].uItemID_Rep_St) )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1985 pPlayers[uActiveCharacter]->pInventoryItemList[item_pid].uAttributes |= 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1986 if ( !dword_4E455C )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1987 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1988 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1989 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1990 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1991 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1992 pPlayers[uActiveCharacter]->PlaySound(SPEECH_DO_POTION_FINE, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1993 dword_4E455C = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1994 pMouse->RemoveHoldingItem();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1995 no_rightlick_in_inventory = 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1996 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1997 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1998 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
1999 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2000 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2001 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2002 GameUI_DrawItemInfo(item);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2003 return;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2004 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2005
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2006
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2007 //----- (0045828B) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2008 unsigned int __fastcall GetSpellColor(signed int a1)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2009 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2010 if ( a1 == 0 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2011 return Color16(0, 0, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2012 if ( a1 < 12 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2013 return Color16(255, 85, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2014 if ( a1 < 23 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2015 return Color16(150, 212, 255);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2016 if ( a1 < 34 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2017 return Color16(0, 128, 255);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2018 if ( a1 < 45 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2019 return Color16(128, 128, 128);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2020 if ( a1 < 56 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2021 return Color16(225, 225, 225);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2022 if ( a1 < 67 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2023 return Color16(235, 15, 255);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2024 if ( a1 < 78 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2025 return Color16(255, 128, 0);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2026 if ( a1 < 89 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2027 return Color16(255, 255, 155);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2028 if ( a1 < 100 )
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2029 return Color16(192, 192, 240);
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2030 else
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2031 __debugbreak();
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2032 }
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2033
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2034 //----- (004B46F8) --------------------------------------------------------
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2035 __int64 GetExperienceRequiredForLevel(int level)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2036 {
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2037 __int64 v1; // eax@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2038 int i; // edx@1
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2039
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2040 v1 = 0;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2041 for (i = 0; i < level; ++i)
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2042 v1 += i + 1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2043 return 1000 * v1;
0ff6a9e9bf7f GUI folger
Ritor1
parents:
diff changeset
2044 }