changeset 1357:06926081358f

Player::CanEquip_RaceAndAlignmentCheck fixed 3 missing return values, started using new race and gender functions, moved everything to a switch
author Grumpy7
date Sat, 13 Jul 2013 16:15:35 +0200
parents 301e227439e7
children 61010a655c94
files Player.cpp Player.h
diffstat 2 files changed, 24 insertions(+), 80 deletions(-) [+]
line wrap: on
line diff
--- a/Player.cpp	Sat Jul 13 16:05:24 2013 +0200
+++ b/Player.cpp	Sat Jul 13 16:15:35 2013 +0200
@@ -680,86 +680,21 @@
 //----- (00492C4E) --------------------------------------------------------
 bool Player::CanEquip_RaceAndAlignmentCheck(unsigned int uItemID)
 {
-  char v2; // zf@9
-  __int16 v4; // dx@13
-  char v5; // zf@15
-  //  if (uItemID == 530)                         // item093  Гибель Эльфа              артефакт, гоблин
-  if ( (signed int)uItemID > 532 )              //  if (uItemID == 514 ||                       // item233  Посох Этрика              артефакт, зло
-    //      uItemID == 516 ||                       // item221  Старый Ник                артефакт, зло
-      //      uItemID == 524)                         // item325  Сумрак                    реликвия, зло
-  {
-    if ( uItemID == 533 )                      //  if (uItemID == 533)                         // item113  Кованые Латные Рукавицы   артефакт, гном
-    {
-      v2 = GetRace() == CHARACTER_RACE_ELF;
-    }
-    else if ( uItemID == 534 )                 //  if (uItemID == 534)                         // item104  Пояс Героя                артефакт, мужчина
-    {
-      v2 = GetRace() == CHARACTER_RACE_DWARF; 
-    }
-    else if ( uItemID == 535 )                   // 
-    {
-      if (this->GetSexByVoice() == SEX_MALE)//  if (uItemID == 535)                         // item129  Эскорт Леди               артефакт, женщина
-      {
-        return 1;
-      }
-      else
-      {
-        return 0;
-      }
-    }
-    else if ( uItemID == 536 )              
-    {
-      if (this->GetSexByVoice() == SEX_FEMALE)
-      {
-        return 1;
-      }
-      else
-      {
-        return 0;
-      }
-    }
-    else if ( uItemID == 604 ) 
-    {
-      v5 = NothingOrJustBlastersEquipped() == 0;
-      if ( !v5 )
-        return 1;
-      return 0;
-    }
-    else                 
-      return 1;
-  }
-  else
-  {
-    if ( uItemID == 532 )                       //  if (uItemID == 532)                         // item073  Эльфийская Кольчуга       артефакт, эльф
-    {
-      v2 = GetRace() == CHARACTER_RACE_HUMAN;
-    }
-    else if ( uItemID == 515 || uItemID == 517 || uItemID == 525)   // 
-    {
-      v5 = (unsigned __int16)_449B57_test_bit(pParty->_quest_bits, 100) == 0;
-      if ( !v5 )
-        return 1;
-      return 0;
-    }
-    else if ( uItemID == 521 || uItemID == 527)                   //  if (uItemID == 521 ||                       // item239  Шлем Таледона             артефакт, добро
-      //      uItemID == 526)                         // item230  Справедливость            реликвия, добро
-    {
-      v5 = (unsigned __int16)_449B57_test_bit(pParty->_quest_bits, 99) == 0;
-      if ( !v5 )
-        return 1;
-      return 0;
-    }
-    else if ( uItemID == 531 )               //  if (uItemID == 531)                         // item093  Око Мысли                 артефакт, человек
-    {
-      v2 = GetRace() == CHARACTER_RACE_GOBLIN;
-      if ( v2 )
-        return 1;
-      return 0;
-    }
-    else
-    {
-      return 1;
-    }
+  switch (uItemID)
+  {
+  case 515: 
+  case 517: 
+  case 525: return _449B57_test_bit(pParty->_quest_bits, 100); break;
+  case 521: 
+  case 527: return _449B57_test_bit(pParty->_quest_bits, 99); break;
+  case 531: return IsRaceGoblin(); break;
+  case 532: return IsRaceHuman(); break;
+  case 533: return IsRaceElf(); break;
+  case 534: return IsRaceDwarf(); break;
+  case 535: return IsMale(); break;
+  case 536: return IsFemale(); break;
+  case 604: return NothingOrJustBlastersEquipped(); break;
+  default: return 1; break;
   }
 }
 //----- (00492D65) --------------------------------------------------------
--- a/Player.h	Sat Jul 13 16:05:24 2013 +0200
+++ b/Player.h	Sat Jul 13 16:15:35 2013 +0200
@@ -620,6 +620,15 @@
   inline void SetPertified(bool state)   {pConditions[Condition_Pertified] = state;}
   inline void SetEradicated(bool state)  {pConditions[Condition_Eradicated] = state;}
   inline void SetZombie(bool state)      {pConditions[Condition_Zombie] = state;}
+
+  inline bool IsRaceHuman() {return GetRace() == CHARACTER_RACE_HUMAN;}
+  inline bool IsRaceDwarf() {return GetRace() == CHARACTER_RACE_DWARF;}
+  inline bool IsRaceElf() {return GetRace() == CHARACTER_RACE_ELF;}
+  inline bool IsRaceGoblin() {return GetRace() == CHARACTER_RACE_GOBLIN;}
+
+  inline bool IsMale() { return GetSexByVoice() == SEX_MALE;}
+  inline bool IsFemale() { return !IsMale();}
+
   __int64 pConditions[20];
   unsigned __int64 uExperience;
   char pName[16];