Mercurial > mm7
comparison Player.cpp @ 1560:a0cd6465ae0d
Player::CalculateIncommingDamage, liches shouldn't be immune to damage if above 200 resistance to it
author | Grumpy7 |
---|---|
date | Sun, 08 Sep 2013 01:03:04 +0200 |
parents | 1f3f01d39300 |
children | f8c15e45de7e |
comparison
equal
deleted
inserted
replaced
1559:1f3f01d39300 | 1560:a0cd6465ae0d |
---|---|
1347 | 1347 |
1348 lastOpenedSpellbookPage = 0; | 1348 lastOpenedSpellbookPage = 0; |
1349 } | 1349 } |
1350 | 1350 |
1351 //----- (0048C6F6) -------------------------------------------------------- | 1351 //----- (0048C6F6) -------------------------------------------------------- |
1352 bool Party::AddItemToParty(ItemGen *pItem) | 1352 bool Party::AddItemToParty(ItemGen *pItem) //TODO move to party.cpp |
1353 { | 1353 { |
1354 unsigned int v2; // eax@1 | 1354 unsigned int v2; // eax@1 |
1355 char *v5; // eax@8 | 1355 char *v5; // eax@8 |
1356 Texture *v7; // ebx@10 | 1356 Texture *v7; // ebx@10 |
1357 signed int v8; // esi@10 | 1357 signed int v8; // esi@10 |
1910 int resist_value; // edi@8 | 1910 int resist_value; // edi@8 |
1911 int player_luck; // eax@21 | 1911 int player_luck; // eax@21 |
1912 signed int res_rand_divider; // ebx@2 | 1912 signed int res_rand_divider; // ebx@2 |
1913 int armor_skill; // eax@29 | 1913 int armor_skill; // eax@29 |
1914 | 1914 |
1915 | |
1916 if ( classType == PLAYER_CLASS_LICH && (dmg_type == CHARACTER_ATTRIBUTE_RESIST_MIND || dmg_type == CHARACTER_ATTRIBUTE_RESIST_BODY || dmg_type == CHARACTER_ATTRIBUTE_RESIST_SPIRIT )) //TODO: determine if spirit resistance should be handled by body res. modifier | |
1917 return 0; | |
1918 | |
1915 resist_value = 0; | 1919 resist_value = 0; |
1916 switch(dmg_type) | 1920 switch(dmg_type) |
1917 { | 1921 { |
1918 case DMGT_FIRE: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE); break; | 1922 case DMGT_FIRE: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_FIRE); break; |
1919 case DMGT_ELECTR: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_AIR); break; | 1923 case DMGT_ELECTR: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_AIR); break; |
1920 case DMGT_COLD: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_WATER); break; | 1924 case DMGT_COLD: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_WATER); break; |
1921 case DMGT_EARTH: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH); break; | 1925 case DMGT_EARTH: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_EARTH); break; |
1922 | 1926 |
1923 case DMGT_SPIRIT: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_SPIRIT);break; | 1927 case DMGT_SPIRIT: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_SPIRIT);break; |
1924 case DMGT_MIND: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_MIND); break; | 1928 case DMGT_MIND: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_MIND); break; |
1925 case DMGT_BODY: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_BODY); break; | 1929 case DMGT_BODY: resist_value = GetActualResistance(CHARACTER_ATTRIBUTE_RESIST_BODY); break; |
1926 } | 1930 } |
1927 | 1931 |
1928 if ( classType == PLAYER_CLASS_LICH && resist_value >= 200 ) | |
1929 return 0; | |
1930 player_luck = GetActualLuck(); | 1932 player_luck = GetActualLuck(); |
1931 res_rand_divider = GetParameterBonus(player_luck) + resist_value + 30; | 1933 res_rand_divider = GetParameterBonus(player_luck) + resist_value + 30; |
1932 | 1934 |
1933 if ( GetParameterBonus(player_luck) + resist_value > 0 ) | 1935 if ( GetParameterBonus(player_luck) + resist_value > 0 ) |
1934 { | 1936 { |