comparison Items.cpp @ 526:214d9d47cf1f

Chest working, but items are not laid correctly
author Gloval
date Sun, 03 Mar 2013 01:55:57 +0400
parents 4bd56919f075
children 09108e73f2f4
comparison
equal deleted inserted replaced
525:e7b3fa10d58d 526:214d9d47cf1f
23 unsigned __int16 treasure_level; 23 unsigned __int16 treasure_level;
24 unsigned __int16 item_class[4]; 24 unsigned __int16 item_class[4];
25 }; 25 };
26 26
27 27
28 char uItemsAmountPerShopType[5]={ 0, 6, 8, 12, 12}; 28 const char uItemsAmountPerShopType[5]={ 0, 6, 8, 12, 12};
29 29
30 ITEM_VARIATION shopWeap_variation_ord[15] ={ 30 const ITEM_VARIATION shopWeap_variation_ord[15] ={
31 { 0, { 0, 0, 0, 0 }}, 31 { 0, { 0, 0, 0, 0 }},
32 { 1, { 23, 27, 20, 20 }}, 32 { 1, { 23, 27, 20, 20 }},
33 { 1, { 23, 24, 28, 20 }}, 33 { 1, { 23, 24, 28, 20 }},
34 { 2, { 23, 24, 25, 20 }}, 34 { 2, { 23, 24, 25, 20 }},
35 { 2, { 27, 27, 26, 26 }}, 35 { 2, { 27, 27, 26, 26 }},
42 { 2, { 23, 23, 24, 24 }}, 42 { 2, { 23, 23, 24, 24 }},
43 { 3, { 23, 23, 26, 26 }}, 43 { 3, { 23, 23, 26, 26 }},
44 { 2, { 30, 26, 26, 26 }}, 44 { 2, { 30, 26, 26, 26 }},
45 { 2, { 28, 25, 28, 29 }}}; 45 { 2, { 28, 25, 28, 29 }}};
46 46
47 ITEM_VARIATION shopArmr_variation_ord[28] ={ 47 const ITEM_VARIATION shopArmr_variation_ord[28] ={
48 { 1, { 35, 35, 38, 38 }}, 48 { 1, { 35, 35, 38, 38 }},
49 { 1, { 31, 31, 31, 34 }}, 49 { 1, { 31, 31, 31, 34 }},
50 { 1, { 35, 35, 38, 38 }}, 50 { 1, { 35, 35, 38, 38 }},
51 { 1, { 31, 31, 32, 34 }}, 51 { 1, { 31, 31, 32, 34 }},
52 { 2, { 35, 35, 38, 38 }}, 52 { 2, { 35, 35, 38, 38 }},
74 { 4, { 35, 35, 38, 38 }}, 74 { 4, { 35, 35, 38, 38 }},
75 { 4, { 33, 31, 32, 34 }}}; 75 { 4, { 33, 31, 32, 34 }}};
76 76
77 77
78 78
79 unsigned __int16 shopMagic_treasure_lvl[14]= {0, 1, 1, 2, 2, 4, 4, 3, 2, 2, 2, 2, 2, 2}; 79 const unsigned __int16 shopMagic_treasure_lvl[14]= {0, 1, 1, 2, 2, 4, 4, 3, 2, 2, 2, 2, 2, 2};
80 unsigned __int16 shopAlch_treasure_lvl[13] = {0, 1, 1, 2, 2, 3, 3, 4, 4, 2, 2, 2, 2}; 80 const unsigned __int16 shopAlch_treasure_lvl[13] = {0, 1, 1, 2, 2, 3, 3, 4, 4, 2, 2, 2, 2};
81 81
82 ITEM_VARIATION shopWeap_variation_spc[15]={ 82 const ITEM_VARIATION shopWeap_variation_spc[15]={
83 { 0, { 0, 0, 0, 0 }}, 83 { 0, { 0, 0, 0, 0 }},
84 { 2, { 25, 30, 20, 20}}, 84 { 2, { 25, 30, 20, 20}},
85 { 2, { 23, 24, 28, 20}}, 85 { 2, { 23, 24, 28, 20}},
86 { 3, { 23, 24, 25, 20}}, 86 { 3, { 23, 24, 25, 20}},
87 { 3, { 27, 27, 26, 26}}, 87 { 3, { 27, 27, 26, 26}},
94 { 4, { 23, 23, 24, 24}}, 94 { 4, { 23, 23, 24, 24}},
95 { 4, { 24, 24, 27, 20}}, 95 { 4, { 24, 24, 27, 20}},
96 { 4, { 30, 26, 26, 26}}, 96 { 4, { 30, 26, 26, 26}},
97 { 4, { 28, 25, 28, 29}}}; 97 { 4, { 28, 25, 28, 29}}};
98 98
99 ITEM_VARIATION shopArmr_variation_spc[28]={ 99 const ITEM_VARIATION shopArmr_variation_spc[28]={
100 { 2, { 35, 35, 38, 38 }}, 100 { 2, { 35, 35, 38, 38 }},
101 { 2, { 31, 31, 31, 34 }}, 101 { 2, { 31, 31, 31, 34 }},
102 { 2, { 35, 35, 38, 38 }}, 102 { 2, { 35, 35, 38, 38 }},
103 { 2, { 31, 31, 32, 34 }}, 103 { 2, { 31, 31, 32, 34 }},
104 { 3, { 35, 35, 38, 38 }}, 104 { 3, { 35, 35, 38, 38 }},
125 { 4, { 34, 34, 34, 34 }}, 125 { 4, { 34, 34, 34, 34 }},
126 { 5, { 35, 35, 38, 38 }}, 126 { 5, { 35, 35, 38, 38 }},
127 { 5, { 33, 33, 33, 33 }} 127 { 5, { 33, 33, 33, 33 }}
128 }; 128 };
129 129
130 unsigned __int16 shopMagicSpc_treasure_lvl[14] = {0, 2, 2, 3, 3, 5, 5, 4, 3, 3, 3, 3, 3, 3}; 130 const unsigned __int16 shopMagicSpc_treasure_lvl[14] = {0, 2, 2, 3, 3, 5, 5, 4, 3, 3, 3, 3, 3, 3};
131 unsigned __int16 shopAlchSpc_treasure_lvl[13] = {0, 2, 2, 3, 3, 4, 4, 5, 5, 3, 2, 2, 2}; 131 const unsigned __int16 shopAlchSpc_treasure_lvl[13] = {0, 2, 2, 3, 3, 4, 4, 5, 5, 3, 2, 2, 2};
132
133
134 char byte_4E8168[7][14]={ //byte_4E8178
135 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
136 { 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
137 { 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3},
138 { 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4},
139 { 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5},
140 { 2, 2, 2, 2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6},
141 { 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}};
132 142
133 int sub_4BE571(int a1, int *a2, int a3, int a4); 143 int sub_4BE571(int a1, int *a2, int a3, int a4);
134 144
135 ItemGen *ptr_50C9A4; 145 ItemGen *ptr_50C9A4;
136 146
2041 pParty->InTheShopFlags[shop_index] = 0; 2051 pParty->InTheShopFlags[shop_index] = 0;
2042 } 2052 }
2043 2053
2044 2054
2045 //----- (00450218) -------------------------------------------------------- 2055 //----- (00450218) --------------------------------------------------------
2046 void __cdecl sub_450218_prolly_generate_chests_loot() 2056 void sub_450218_prolly_generate_chests_loot()
2047 { 2057 {
2048 unsigned int v0; // eax@1 2058 unsigned int v0; // eax@1
2049 Chest *v1; // ebx@1 2059 Chest *v1; // ebx@1
2050 MapInfo *v2; // esi@1 2060 MapInfo *v2; // esi@1
2051 ItemGen *v3; // ebx@2 2061 ItemGen *v3; // ebx@2
2052 int v4; // ebp@4 2062 int v4; // ebp@4
2074 v0 = pMapStats->GetMapInfo(pCurrentMapName); 2084 v0 = pMapStats->GetMapInfo(pCurrentMapName);
2075 v1 = pChests; 2085 v1 = pChests;
2076 v2 = &pMapStats->pInfos[v0]; 2086 v2 = &pMapStats->pInfos[v0];
2077 v21 = pChests; 2087 v21 = pChests;
2078 v20 = &pMapStats->pInfos[v0]; 2088 v20 = &pMapStats->pInfos[v0];
2079 do 2089 for(int i=0; i<20;++i)
2080 { 2090 {
2081 v3 = v1->mm7__vector_pItems; 2091 for(int j=0; j<140;++j)
2082 v23 = 140;
2083 do
2084 { 2092 {
2085 if ( (v3->uItemID & 0x80000000u) == 0 ) 2093 v3 = &pChests[i].igChestItems[j];
2086 goto LABEL_56; 2094 if ( v3->uItemID < 0 )
2095 {
2087 v4 = rand() % 5 + 1; 2096 v4 = rand() % 5 + 1;
2088 v5 = (unsigned __int8)byte_4E8168[abs((int)v3->uItemID)-1][2*v2->Treasure_prob];//[2 * (v2->Treasure_prob + 7 * abs((int)v3->uItemID)) + 2]; 2097 v5 = (unsigned __int8)byte_4E8168[abs((int)v3->uItemID)-1][2*v2->Treasure_prob];//[2 * (v2->Treasure_prob + 7 * abs((int)v3->uItemID)) + 2];
2089 v6 = (unsigned __int8)byte_4E8168[abs((int)v3->uItemID)-1][2*v2->Treasure_prob+1];//[2 * (v2->Treasure_prob + 7 * abs((int)v3->uItemID)) + 3]; 2098 v6 = (unsigned __int8)byte_4E8168[abs((int)v3->uItemID)-1][2*v2->Treasure_prob+1];//[2 * (v2->Treasure_prob + 7 * abs((int)v3->uItemID)) + 3];
2090 v7 = rand(); 2099 v7 = rand();
2091 v8 = v6 - v5 + 1; 2100 v8 = v6 - v5 + 1;
2092 v9 = v5 + v7 % v8; 2101 v9 = v5 + v7 % v8;
2093 v19 = v5 + v7 % v8; 2102 v19 = v5 + v7 % v8;
2103 /* switch (v9)
2104 {
2105 default:
2106
2107 }*/
2108
2109
2094 if ( v9 < 7 ) 2110 if ( v9 < 7 )
2095 { 2111 {
2096 if ( v18 < 20 ) 2112 if ( v18 < 20 )
2097 { 2113 {
2098 v3->Reset(); 2114 v3->Reset();
2144 while ( 1 ) 2160 while ( 1 )
2145 { 2161 {
2146 v13 = v12; 2162 v13 = v12;
2147 if ( v12 >= 140 ) 2163 if ( v12 >= 140 )
2148 goto LABEL_52; 2164 goto LABEL_52;
2149 v14 = &v21->mm7__vector_pItems[v12]; 2165 v14 = &v21->igChestItems[v12];
2150 while ( v14->uItemID ) 2166 while ( v14->uItemID )
2151 { 2167 {
2152 ++v13; 2168 ++v13;
2153 ++v14; 2169 ++v14;
2154 if ( v13 >= 140 ) 2170 if ( v13 >= 140 )
2224 } 2240 }
2225 pItemsTable->GenerateItem(v9, 0, v3); 2241 pItemsTable->GenerateItem(v9, 0, v3);
2226 goto LABEL_25; 2242 goto LABEL_25;
2227 } 2243 }
2228 v3->GenerateArtifact(); 2244 v3->GenerateArtifact();
2245
2229 LABEL_55: 2246 LABEL_55:
2230 v2 = v20; 2247 v2 = v20;
2231 LABEL_56: 2248 LABEL_56: ;
2232 ++v3; 2249 }
2233 --v23; 2250 }
2234 } 2251 }
2235 while ( v23 ); 2252
2236 v1 = v21 + 1;
2237 ++v21;
2238 }
2239 while ( (signed int)v21 < (signed int)&uNumChests );
2240 } 2253 }
2241 2254
2242 2255
2243 2256
2244 2257