Mercurial > mm7
comparison Player.cpp @ 1008:446175a32a15
player math fix
author | Gloval |
---|---|
date | Sat, 18 May 2013 22:41:26 +0400 |
parents | e865f349aa41 |
children | f73e1a219d38 |
comparison
equal
deleted
inserted
replaced
1007:7e4045b6f191 | 1008:446175a32a15 |
---|---|
1980 { | 1980 { |
1981 v6 = 5; | 1981 v6 = 5; |
1982 } | 1982 } |
1983 else | 1983 else |
1984 { | 1984 { |
1985 if ( v1 >= 0 ) | 1985 if ( (v1&0xFF) >= 0 ) |
1986 { | 1986 { |
1987 v4 = ((v1 & 0x40) != 0) + 1; | 1987 v4 = ((v1 & 0x40) != 0) + 1; |
1988 return v2 * v4; | 1988 return v2 * v4; |
1989 } | 1989 } |
1990 v6 = 3; | 1990 v6 = 3; |
1995 | 1995 |
1996 //----- (004910A8) -------------------------------------------------------- | 1996 //----- (004910A8) -------------------------------------------------------- |
1997 int Player::GetMeditation() | 1997 int Player::GetMeditation() |
1998 { | 1998 { |
1999 char v1; // al@1 | 1999 char v1; // al@1 |
2000 int v2; // ecx@1 | 2000 int base_level; // ecx@1 |
2001 int v4; // eax@3 | 2001 int v4; // eax@3 |
2002 signed int v6; // [sp-4h] [bp-4h]@2 | 2002 signed int v6; // [sp-4h] [bp-4h]@2 |
2003 | 2003 |
2004 v1 = GetActualSkillLevel(PLAYER_SKILL_MEDITATION); | 2004 v1 = GetActualSkillLevel(PLAYER_SKILL_MEDITATION); |
2005 v2 = v1 & 0x3F; | 2005 base_level = v1 & 0x3F; |
2006 if ( v1 & 0x100 ) | 2006 if ( v1 & 0x100 ) |
2007 { | 2007 { |
2008 v6 = 5; | 2008 v6 = 5; |
2009 } | 2009 } |
2010 else | 2010 else |
2011 { | 2011 { |
2012 if ( v1 >= 0 ) | 2012 if ( (v1&0xFF) >= 0 ) |
2013 { | 2013 { |
2014 v4 = ((v1 & 0x40) != 0) + 1; | 2014 v4 = ((v1 & 0x40) != 0) + 1; |
2015 return v2 * v4; | 2015 return base_level * v4; |
2016 } | 2016 } |
2017 v6 = 3; | 2017 v6 = 3; |
2018 } | 2018 } |
2019 v4 = v6; | 2019 v4 = v6; |
2020 return v2 * v4; | 2020 return base_level * v4; |
2021 } | 2021 } |
2022 | 2022 |
2023 //----- (004910D3) -------------------------------------------------------- | 2023 //----- (004910D3) -------------------------------------------------------- |
2024 int Player::CanIdentify(ItemGen *pItem) | 2024 int Player::CanIdentify(ItemGen *pItem) |
2025 { | 2025 { |
5642 } | 5642 } |
5643 return result; | 5643 return result; |
5644 } | 5644 } |
5645 | 5645 |
5646 //----- (0048F882) -------------------------------------------------------- | 5646 //----- (0048F882) -------------------------------------------------------- |
5647 char Player::GetActualSkillLevel(PLAYER_SKILL_TYPE uSkillType) | 5647 int Player::GetActualSkillLevel( PLAYER_SKILL_TYPE uSkillType ) |
5648 { | 5648 { |
5649 signed int v2; // esi@1 | 5649 signed int v2; // esi@1 |
5650 unsigned __int16 v3; // ax@126 | 5650 unsigned __int16 v3; // ax@126 |
5651 char result; // al@127 | 5651 char result; // al@127 |
5652 unsigned int v5; // [sp-4h] [bp-14h]@13 | 5652 unsigned int v5; // [sp-4h] [bp-14h]@13 |
5653 signed int v6; // [sp-4h] [bp-14h]@27 | 5653 signed int v6; // [sp-4h] [bp-14h]@27 |
5873 } | 5873 } |
5874 break; | 5874 break; |
5875 } | 5875 } |
5876 | 5876 |
5877 v3 = pActiveSkills[uSkillType]; | 5877 v3 = pActiveSkills[uSkillType]; |
5878 if ( v2 + (pActiveSkills[uSkillType] & 0x3F) < 60 ) | 5878 if ( v2 + (v3 & 0x3F) < 60 ) |
5879 result = v2 + v3; | 5879 result = v2 + v3; |
5880 else | 5880 else |
5881 result = v3 & 0xFC | 0x3C; | 5881 result = v3 & 0xFFFC | 0x3C; //al |
5882 return result; | 5882 return result; |
5883 } | 5883 } |
5884 | 5884 |
5885 //----- (0048FC00) -------------------------------------------------------- | 5885 //----- (0048FC00) -------------------------------------------------------- |
5886 int Player::GetSkillBonus(enum CHARACTER_ATTRIBUTE_TYPE a2) | 5886 int Player::GetSkillBonus(enum CHARACTER_ATTRIBUTE_TYPE a2) |