Mercurial > mm7
comparison Items.cpp @ 1604:4b79ff62df3a
Moved enchantment attribute bonus list to items.cpp/h, created static function that create the enchantments + helper functions to get the enchantment strength, moved the whole logic of Player::GetItemsBonus to a case
author | Grumpy7 |
---|---|
date | Sat, 14 Sep 2013 06:04:18 +0200 |
parents | c58916c53d8e |
children | a4390cef284c |
comparison
equal
deleted
inserted
replaced
1603:c58916c53d8e | 1604:4b79ff62df3a |
---|---|
790 pItems[item_counter]._bonus_type=0; | 790 pItems[item_counter]._bonus_type=0; |
791 if (pItems[item_counter].uMaterial==MATERIAL_SPECIAL) | 791 if (pItems[item_counter].uMaterial==MATERIAL_SPECIAL) |
792 { | 792 { |
793 for(int ii=0; ii<24; ++ii) | 793 for(int ii=0; ii<24; ++ii) |
794 { | 794 { |
795 if (_stricmp(test_string,pEnchantments[ii].pBonusStat)) | 795 if (!_stricmp(test_string,pEnchantments[ii].pOfName)) |
796 { | 796 { |
797 pItems[item_counter]._bonus_type=ii+1; | 797 pItems[item_counter]._bonus_type=ii+1; |
798 break; | 798 break; |
799 } | 799 } |
800 } | 800 } |
801 if (!pItems[item_counter]._bonus_type) | 801 if (!pItems[item_counter]._bonus_type) |
802 { | 802 { |
803 for(int ii=0; ii<72; ++ii) | 803 for(int ii=0; ii<72; ++ii) |
804 { | 804 { |
805 if (_stricmp(test_string,pSpecialEnchantments[ii].pBonusStatement)) | 805 if (!_stricmp(test_string,pSpecialEnchantments[ii].pNameAdd)) |
806 { | 806 { |
807 pItems[item_counter]._additional_value=ii+1; | 807 pItems[item_counter]._additional_value=ii+1; |
808 } | 808 } |
809 } | 809 } |
810 } | 810 } |
1242 } | 1242 } |
1243 ++decode_step; | 1243 ++decode_step; |
1244 test_string=tmp_pos+1; | 1244 test_string=tmp_pos+1; |
1245 } while ((decode_step<2)&&!break_loop); | 1245 } while ((decode_step<2)&&!break_loop); |
1246 } | 1246 } |
1247 | |
1248 | |
1249 | |
1250 ItemGen::PopulateSpecialBonusMap(); | |
1251 ItemGen::PopulateArtifactBonusMap(); | |
1252 ItemGen::PopulateRegularBonusMap(); | |
1253 | |
1247 | 1254 |
1248 } | 1255 } |
1249 | 1256 |
1250 //----- (00456D17) -------------------------------------------------------- | 1257 //----- (00456D17) -------------------------------------------------------- |
1251 void ItemsTable::SetSpecialBonus(ItemGen *pItem) | 1258 void ItemsTable::SetSpecialBonus(ItemGen *pItem) |
1913 } | 1920 } |
1914 else | 1921 else |
1915 return false; | 1922 return false; |
1916 | 1923 |
1917 } | 1924 } |
1925 | |
1926 std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* >ItemGen::regularBonusMap; | |
1927 std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* >ItemGen::specialBonusMap; | |
1928 std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* >ItemGen::artifactBonusMap; | |
1929 | |
1930 #define NEWBONUSINTOSPECIALLIST(x,y) AddToMap(ItemGen::specialBonusMap, enchId, x, y); | |
1931 #define NEWBONUSINTOSPECIALLIST2(x,y,z) AddToMap(ItemGen::specialBonusMap, enchId, x, y, z); | |
1932 | |
1933 #define NEWBONUSINTOREGULARLIST(x) AddToMap(ItemGen::regularBonusMap, enchId, x); | |
1934 | |
1935 #define NEWBONUSINTOARTIFACTLIST(x,y) AddToMap(ItemGen::artifactBonusMap, itemId, x, y); | |
1936 #define NEWBONUSINTOARTIFACTLIST2(x,y,z) AddToMap(ItemGen::artifactBonusMap, itemId, x, y, z); | |
1937 | |
1938 void ItemGen::AddToMap( std::map<int, std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* > &maptoadd, int enchId, CHARACTER_ATTRIBUTE_TYPE attrId, int bonusValue /*= 0*/, unsigned __int16 Player::* skillPtr /*= NULL*/ ) | |
1939 { | |
1940 auto key = maptoadd.find(enchId); | |
1941 std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* currMap; | |
1942 if (key == maptoadd.end()) | |
1943 { | |
1944 currMap = new std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>; | |
1945 maptoadd[enchId] = currMap; | |
1946 } | |
1947 else | |
1948 { | |
1949 currMap = key->second; | |
1950 } | |
1951 Assert(currMap->find(attrId) == currMap->end(), "Attribute %d already present for enchantment %d", attrId, enchId); | |
1952 (*currMap)[attrId] = new CEnchantment(bonusValue, skillPtr); | |
1953 } | |
1954 | |
1955 void ItemGen::PopulateSpecialBonusMap() | |
1956 { | |
1957 int enchId = 1;// of Protection, +10 to all Resistances | |
1958 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, 10); | |
1959 NEWBONUSINTOSPECIALLIST( CHARACTER_ATTRIBUTE_RESIST_AIR, 10); | |
1960 NEWBONUSINTOSPECIALLIST( CHARACTER_ATTRIBUTE_RESIST_WATER, 10); | |
1961 NEWBONUSINTOSPECIALLIST( CHARACTER_ATTRIBUTE_RESIST_EARTH, 10); | |
1962 NEWBONUSINTOSPECIALLIST( CHARACTER_ATTRIBUTE_RESIST_MIND, 10); | |
1963 NEWBONUSINTOSPECIALLIST( CHARACTER_ATTRIBUTE_RESIST_BODY, 10); | |
1964 | |
1965 enchId = 2;//of The Gods, +10 to all Seven Statistics | |
1966 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_STRENGTH, 10); | |
1967 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 10); | |
1968 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 10); | |
1969 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 10); | |
1970 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ACCURACY, 10); | |
1971 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_SPEED, 10); | |
1972 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_LUCK, 10); | |
1973 | |
1974 enchId = 26;//of Air Magic | |
1975 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_AIR,0, &Player::skillAir); | |
1976 | |
1977 enchId = 27;//of Body Magic | |
1978 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_BODY,0, &Player::skillBody); | |
1979 | |
1980 enchId = 28;//of Dark Magic | |
1981 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_DARK,0, &Player::skillDark); | |
1982 | |
1983 enchId = 29;//of Earth Magic | |
1984 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_EARTH,0, &Player::skillEarth); | |
1985 | |
1986 enchId = 30;//of Fire Magic | |
1987 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_FIRE,0, &Player::skillFire); | |
1988 | |
1989 enchId = 31;//of Light Magic | |
1990 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_LIGHT,0, &Player::skillLight); | |
1991 | |
1992 enchId = 32;//of Mind Magic | |
1993 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_MIND,0, &Player::skillMind); | |
1994 | |
1995 enchId = 33;//of Spirit Magic | |
1996 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_SPIRIT,0, &Player::skillSpirit); | |
1997 | |
1998 enchId = 34;//of Water Magic | |
1999 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_WATER,0, &Player::skillWater); | |
2000 | |
2001 enchId = 42;//of Doom | |
2002 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_STRENGTH, 1); | |
2003 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 1); | |
2004 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 1); | |
2005 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 1); | |
2006 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ACCURACY, 1); | |
2007 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_SPEED, 1); | |
2008 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_LUCK, 1); | |
2009 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_HEALTH, 1); | |
2010 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_MANA, 1); | |
2011 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_AC_BONUS, 1); | |
2012 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, 1); | |
2013 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, 1); | |
2014 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_WATER, 1); | |
2015 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_EARTH, 1); | |
2016 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_MIND, 1); | |
2017 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_BODY, 1); | |
2018 | |
2019 enchId = 43;//of Earth | |
2020 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 10); | |
2021 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_AC_BONUS, 10); | |
2022 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_HEALTH, 10); | |
2023 | |
2024 enchId = 44;//of Life | |
2025 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_HEALTH, 10); | |
2026 | |
2027 enchId = 45;//Rogues | |
2028 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_SPEED, 5); | |
2029 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ACCURACY, 5); | |
2030 | |
2031 enchId = 46;//of The Dragon | |
2032 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_STRENGTH, 25); | |
2033 | |
2034 enchId = 47;//of The Eclipse | |
2035 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_MANA, 10); | |
2036 | |
2037 enchId = 48;//of The Golem | |
2038 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 15); | |
2039 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_AC_BONUS, 5); | |
2040 | |
2041 enchId = 49;//of The Moon | |
2042 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 10); | |
2043 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_LUCK, 10); | |
2044 | |
2045 enchId = 50;//of The Phoenix | |
2046 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, 30); | |
2047 | |
2048 enchId = 51;//of The Sky | |
2049 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_MANA, 10); | |
2050 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_SPEED, 10); | |
2051 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 10); | |
2052 | |
2053 enchId = 52;//of The Stars | |
2054 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 10); | |
2055 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ACCURACY, 10); | |
2056 | |
2057 enchId = 53;//of The Sun | |
2058 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_STRENGTH, 10); | |
2059 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 10); | |
2060 | |
2061 enchId = 54;//of The Troll | |
2062 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 15); | |
2063 | |
2064 enchId = 55;//of The Unicorn | |
2065 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_LUCK, 15); | |
2066 | |
2067 enchId = 56;//Warriors | |
2068 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_STRENGTH, 5); | |
2069 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 5); | |
2070 | |
2071 enchId = 57;//Wizards | |
2072 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 5); | |
2073 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 5); | |
2074 | |
2075 enchId = 60;//Monks' | |
2076 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_DODGE, 3, &Player::skillDodge); | |
2077 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_UNARMED, 3, &Player::skillUnarmed); | |
2078 | |
2079 enchId = 61;//Thieves' | |
2080 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM, 3, &Player::skillStealing); | |
2081 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_STEALING, 3, &Player::skillDisarmTrap); | |
2082 | |
2083 enchId = 62;//of Identifying | |
2084 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_ITEM_ID, 3, &Player::skillItemId); | |
2085 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID, 3, &Player::skillMonsterId); | |
2086 | |
2087 enchId = 67;//Assassins' | |
2088 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM, 2, &Player::skillDisarmTrap); | |
2089 | |
2090 enchId = 68;//Barbarians' | |
2091 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_AC_BONUS, 5); | |
2092 | |
2093 enchId = 69;//of the Storm | |
2094 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, 20); | |
2095 | |
2096 enchId = 70;//of the Ocean | |
2097 NEWBONUSINTOSPECIALLIST(CHARACTER_ATTRIBUTE_RESIST_WATER, 10); | |
2098 NEWBONUSINTOSPECIALLIST2(CHARACTER_ATTRIBUTE_SKILL_ALCHEMY, 2, &Player::skillAlchemy); | |
2099 } | |
2100 | |
2101 void ItemGen::PopulateRegularBonusMap() | |
2102 { | |
2103 int enchId = 1;//of Might | |
2104 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_STRENGTH); | |
2105 | |
2106 enchId = 2;//of Thought | |
2107 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE); | |
2108 | |
2109 enchId = 3;//of Charm | |
2110 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_WILLPOWER); | |
2111 | |
2112 enchId = 4;//of Vigor | |
2113 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_ENDURANCE); | |
2114 | |
2115 enchId = 5;//of Precision | |
2116 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_ACCURACY); | |
2117 | |
2118 enchId = 6;//of Speed | |
2119 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SPEED); | |
2120 | |
2121 enchId = 7;//of Luck | |
2122 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_LUCK); | |
2123 | |
2124 enchId = 8;//of Health | |
2125 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_HEALTH); | |
2126 | |
2127 enchId = 9;//of Magic | |
2128 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_MANA); | |
2129 | |
2130 enchId = 10;//of Defense | |
2131 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_AC_BONUS); | |
2132 | |
2133 enchId = 11;//of Fire Resistance | |
2134 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE); | |
2135 | |
2136 enchId = 12;//of Air Resistance | |
2137 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_AIR); | |
2138 | |
2139 enchId = 13;//of Water Resistance | |
2140 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_WATER); | |
2141 | |
2142 enchId = 14;//of Earth Resistance | |
2143 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_EARTH); | |
2144 | |
2145 enchId = 15;//of Mind Resistance | |
2146 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_MIND); | |
2147 | |
2148 enchId = 16;//of Body Resistance | |
2149 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_RESIST_BODY); | |
2150 | |
2151 enchId = 17;//of Alchemy | |
2152 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_ALCHEMY); | |
2153 | |
2154 enchId = 18;//of Stealing | |
2155 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_STEALING); | |
2156 | |
2157 enchId = 19;//of Disarming | |
2158 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM); | |
2159 | |
2160 enchId = 20;//of Items | |
2161 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_ITEM_ID); | |
2162 | |
2163 enchId = 21;//of Monsters | |
2164 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID); | |
2165 | |
2166 enchId = 22;//of Arms | |
2167 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER); | |
2168 | |
2169 enchId = 23;//of Dodging | |
2170 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_DODGE); | |
2171 | |
2172 enchId = 24;//of the Fist | |
2173 NEWBONUSINTOREGULARLIST(CHARACTER_ATTRIBUTE_SKILL_UNARMED); | |
2174 } | |
2175 | |
2176 void ItemGen::PopulateArtifactBonusMap() | |
2177 { | |
2178 int itemId; | |
2179 itemId = ITEM_ARTIFACT_PUCK; | |
2180 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 40); | |
2181 | |
2182 itemId = ITEM_ARTIFACT_IRON_FEATHER; | |
2183 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 40); | |
2184 | |
2185 itemId = ITEM_ARTIFACT_WALLACE; | |
2186 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 40); | |
2187 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER, 10); | |
2188 | |
2189 itemId = ITEM_ARTIFACT_CORSAIR; | |
2190 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_LUCK, 40); | |
2191 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM, 5); | |
2192 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_STEALING, 5); | |
2193 | |
2194 itemId = ITEM_ARTICACT_GOVERNONS_ARMOR; | |
2195 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 10); | |
2196 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 10); | |
2197 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 10); | |
2198 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 10); | |
2199 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ACCURACY, 10); | |
2200 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, 10); | |
2201 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_LUCK, 10); | |
2202 | |
2203 itemId = ITEM_ARTIFACT_YORUBA; | |
2204 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 25); | |
2205 | |
2206 itemId = ITEM_ARTIFACT_SPLITTER; | |
2207 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, 50); | |
2208 | |
2209 itemId = ITEM_ARTEFACT_ULLYSES, | |
2210 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ACCURACY, 50); | |
2211 | |
2212 itemId = ITEM_ARTEFACT_HANDS_OF_THE_MASTER, | |
2213 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_DODGE, 10); | |
2214 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_UNARMED, 10); | |
2215 | |
2216 itemId = ITEM_ARTIFACT_LEAGUE_BOOTS; | |
2217 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, 40); | |
2218 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_WATER, 0, &Player::skillWater); | |
2219 | |
2220 itemId = ITEM_ARTIFACT_RULERS_RING; | |
2221 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_MIND, 0, &Player::skillMind); | |
2222 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_DARK, 0, &Player::skillDark); | |
2223 | |
2224 itemId = ITEM_RELIC_MASH; | |
2225 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 150); | |
2226 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, -40); | |
2227 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, -40); | |
2228 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, -40); | |
2229 | |
2230 itemId = ITEM_RELIC_ETHRICS_STAFF; | |
2231 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_DARK, 0, &Player::skillDark); | |
2232 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_MEDITATION, 15); | |
2233 | |
2234 itemId = ITEM_RELIC_HARECS_LEATHER; | |
2235 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM, 5); | |
2236 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_STEALING, 5); | |
2237 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_LUCK, 50); | |
2238 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, -10); | |
2239 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_WATER, -10); | |
2240 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, -10); | |
2241 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_EARTH, -10); | |
2242 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_MIND, -10); | |
2243 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_BODY, -10); | |
2244 | |
2245 itemId = ITEM_RELIC_OLD_NICK; | |
2246 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM, 5); | |
2247 | |
2248 itemId = ITEM_RELIC_AMUCK; | |
2249 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 100); | |
2250 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 100); | |
2251 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_AC_BONUS, -15); | |
2252 | |
2253 itemId = ITEM_RELIC_GLORY_SHIELD; | |
2254 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_SPIRIT, 0, &Player::skillSpirit); | |
2255 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_SHIELD, 5); | |
2256 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_MIND, -10); | |
2257 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_BODY, -10); | |
2258 | |
2259 itemId = ITEM_RELIC_KELEBRIM; | |
2260 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 50); | |
2261 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_EARTH, -30); | |
2262 | |
2263 itemId = ITEM_RELIC_TALEDONS_HELM; | |
2264 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_LIGHT, 0, &Player::skillLight); | |
2265 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 15); | |
2266 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 15); | |
2267 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_LUCK, -40); | |
2268 | |
2269 itemId = ITEM_RELIC_SCHOLARS_CAP; | |
2270 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_LEARNING, +15); | |
2271 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, -50); | |
2272 | |
2273 itemId = ITEM_RELIC_PHYNAXIAN_CROWN; | |
2274 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_FIRE, 0, &Player::skillFire); | |
2275 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_WATER, +50); | |
2276 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 30); | |
2277 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_AC_BONUS, -20); | |
2278 | |
2279 itemId = ITEM_RILIC_TITANS_BELT; | |
2280 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 75); | |
2281 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, -40); | |
2282 | |
2283 itemId = ITEM_RELIC_TWILIGHT; | |
2284 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, 50); | |
2285 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_LUCK, 50); | |
2286 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, -15); | |
2287 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_WATER, -15); | |
2288 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, -15); | |
2289 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_EARTH, -15); | |
2290 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_MIND, -15); | |
2291 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_BODY, -15); | |
2292 | |
2293 itemId = ITEM_RELIC_ANIA_SELVING; | |
2294 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ACCURACY, 150); | |
2295 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_BOW, 5); | |
2296 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_AC_BONUS, -25); | |
2297 | |
2298 itemId = ITEM_RELIC_JUSTICE; | |
2299 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_MIND, 0, &Player::skillMind); | |
2300 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_BODY, 0, &Player::skillBody); | |
2301 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, -40); | |
2302 | |
2303 itemId = ITEM_RELIC_MEKORIGS_HAMMER; | |
2304 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_SPIRIT, 0, &Player::skillSpirit); | |
2305 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 75); | |
2306 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, -50); | |
2307 | |
2308 itemId = ITEM_ARTIFACT_HERMES_SANDALS; | |
2309 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, 100); | |
2310 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ACCURACY, 50); | |
2311 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_AIR, 50); | |
2312 | |
2313 itemId = ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP; | |
2314 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, -20); | |
2315 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, -20); | |
2316 | |
2317 itemId = ITEM_ARTIFACT_MINDS_EYE; | |
2318 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_WILLPOWER, 15); | |
2319 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_INTELLIGENCE, 15); | |
2320 | |
2321 itemId = ITEM_ELVEN_CHAINMAIL; | |
2322 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SPEED, 15); | |
2323 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ACCURACY, 15); | |
2324 | |
2325 itemId = ITEM_FORGE_GAUNTLETS; | |
2326 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 15); | |
2327 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_ENDURANCE, 15); | |
2328 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_RESIST_FIRE, 30); | |
2329 | |
2330 itemId = ITEM_ARTIFACT_HEROS_BELT; | |
2331 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_STRENGTH, 15); | |
2332 NEWBONUSINTOARTIFACTLIST(CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER, 5); | |
2333 } | |
2334 | |
2335 void ItemGen::GetItemBonusSpecialEnchantment( Player* owner, CHARACTER_ATTRIBUTE_TYPE attrToGet, int* additiveBonus, int* halfSkillBonus ) | |
2336 { | |
2337 auto bonusList = ItemGen::specialBonusMap.find(this->uSpecEnchantmentType); | |
2338 if (bonusList == ItemGen::specialBonusMap.end()) | |
2339 { | |
2340 return; | |
2341 } | |
2342 std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* currList = bonusList->second; | |
2343 if (currList->find(attrToGet) != currList->end()) | |
2344 { | |
2345 CEnchantment* currBonus = (*currList)[attrToGet]; | |
2346 if (currBonus->statPtr != NULL) | |
2347 { | |
2348 if (currBonus->statBonus == 0) | |
2349 { | |
2350 *halfSkillBonus = owner->*currBonus->statPtr / 2; | |
2351 } | |
2352 else | |
2353 { | |
2354 if (*additiveBonus < currBonus->statBonus) | |
2355 { | |
2356 *additiveBonus = currBonus->statBonus; | |
2357 } | |
2358 } | |
2359 } | |
2360 else | |
2361 { | |
2362 *additiveBonus += currBonus->statBonus; | |
2363 } | |
2364 } | |
2365 } | |
2366 | |
2367 void ItemGen::GetItemBonusArtifact( Player* owner, CHARACTER_ATTRIBUTE_TYPE attrToGet, int* bonusSum ) | |
2368 { | |
2369 auto bonusList = ItemGen::artifactBonusMap.find(this->uItemID); | |
2370 if (bonusList == ItemGen::artifactBonusMap.end()) | |
2371 { | |
2372 return; | |
2373 } | |
2374 std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* currList = bonusList->second; | |
2375 if (currList->find(attrToGet) != currList->end()) | |
2376 { | |
2377 CEnchantment* currBonus = (*currList)[attrToGet]; | |
2378 if (currBonus->statPtr != NULL) | |
2379 { | |
2380 *bonusSum = owner->*currBonus->statPtr / 2; | |
2381 } | |
2382 else | |
2383 { | |
2384 *bonusSum += currBonus->statBonus; | |
2385 } | |
2386 } | |
2387 } | |
2388 | |
2389 bool ItemGen::IsRegularEnchanmentForAttribute( CHARACTER_ATTRIBUTE_TYPE attrToGet ) | |
2390 { | |
2391 auto bonusList = ItemGen::specialBonusMap.find(this->uSpecEnchantmentType); | |
2392 if (bonusList == ItemGen::specialBonusMap.end()) | |
2393 { | |
2394 return false; | |
2395 } | |
2396 std::map<CHARACTER_ATTRIBUTE_TYPE, CEnchantment*>* currList = bonusList->second; | |
2397 return (currList->find(attrToGet) != currList->end()); | |
2398 return false; | |
2399 } | |
2400 | |
1918 //----- (004B8E3D) -------------------------------------------------------- | 2401 //----- (004B8E3D) -------------------------------------------------------- |
1919 void GenerateStandartShopItems() | 2402 void GenerateStandartShopItems() |
1920 { | 2403 { |
1921 signed int item_count; | 2404 signed int item_count; |
1922 signed int shop_index; | 2405 signed int shop_index; |