changeset 1356:301e227439e7

Player::CanEquip_RaceAndAlignmentCheck condition reorganizing, label removal, using GetSexByVoice()
author Grumpy7
date Sat, 13 Jul 2013 16:05:24 +0200
parents af2fc30d765f
children 06926081358f
files Player.cpp
diffstat 1 files changed, 75 insertions(+), 108 deletions(-) [+]
line wrap: on
line diff
--- a/Player.cpp	Sat Jul 13 13:14:05 2013 +0200
+++ b/Player.cpp	Sat Jul 13 16:05:24 2013 +0200
@@ -683,118 +683,85 @@
   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 )
-    {
-      v2 = GetRace() == 1;
+    //      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
     {
-      if ( uItemID != 534 )
-      {
-        if ( uItemID == 535 )                   // 
-                                                //  if (uItemID == 530)                         // item093  Гибель Эльфа              артефакт, гоблин
-        {
-          switch ( this->uVoiceID )
-          {
-            default:
-              return 1;
-            case 4u:
-            case 5u:
-            case 6u:
-            case 7u:
-            case 0xAu:
-            case 0xBu:
-            case 0xEu:                          // 
-                                                //  if (uItemID == 535)                         // item129  Эскорт Леди               артефакт, женщина
-            case 0xFu:
-            case 0x12u:
-            case 0x13u:
-            case 0x15u:
-            case 0x18u:
-              return 0;
-          }
-          return 0;
-        }
-        if ( uItemID == 536 )                   // 
-                                                //  if (uItemID == 531)                         // item093  Око Мысли                 артефакт, человек
-        {
-          switch ( this->uVoiceID )
-          {
-            case 4u:
-            case 5u:
-            case 6u:
-            case 7u:
-            case 0xAu:
-            case 0xBu:
-            case 0xEu:
-            case 0xFu:
-            case 0x12u:
-            case 0x13u:
-            case 0x15u:
-            case 0x18u:
-              return 1;
-            default:
-              return 0;
-          }
-          return 0;
-        }
-        if ( uItemID != 604 )                   // 
-                                                //  if (uItemID == 532)                         // item073  Эльфийская Кольчуга       артефакт, эльф
-          return 1;
-        v5 = NothingOrJustBlastersEquipped() == 0;
-        goto LABEL_23;
-      }
-      v2 = GetRace() == 3;                     // 
-                                                //  if (uItemID == 533)                         // item113  Кованые Латные Рукавицы   артефакт, гном
-    }
-  }
-  else
-  {
-    if ( uItemID != 532 )
-    {
-      if ( uItemID != 515 && uItemID != 517 )   // 
-                                                //  if (uItemID == 534)                         // item104  Пояс Героя                артефакт, мужчина
-      {
-        if ( uItemID == 521 )                   //  if (uItemID == 521 ||                       // item239  Шлем Таледона             артефакт, добро
-                                                //      uItemID == 526)                         // item230  Справедливость            реликвия, добро
-        {
-LABEL_13:
-          v4 = 99;
-LABEL_15:
-          v5 = (unsigned __int16)_449B57_test_bit(pParty->_quest_bits, v4) == 0;
-LABEL_23:
-          if ( !v5 )
-            return 1;
-          return 0;
-        }
-        if ( uItemID != 525 )
-        {
-          if ( uItemID != 527 )
-          {
-            if ( uItemID != 531 )
-              return 1;
-            v2 = GetRace() == 2;
-            goto LABEL_10;
-          }
-          goto LABEL_13;
-        }
-      }
-      v4 = 100;
-      goto LABEL_15;
-    }
-    v2 = GetRace() == 0;
-  }
-LABEL_10:
-  if ( v2 )
-    return 1;
-  return 0;
-}
-
+      return 1;
+    }
+  }
+}
 //----- (00492D65) --------------------------------------------------------
 int Player::SetCondition(unsigned int uConditionIdx, int a3)
     {