Mercurial > mm7
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 |