changeset 124:acf7f12714a7

Party skills
author Nomad
date Fri, 16 Nov 2012 13:56:53 +0200
parents a2715ce5cf17
children b90504bbb93b
files Party.cpp Player.h mm7_3.cpp
diffstat 3 files changed, 48 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/Party.cpp	Tue Nov 13 17:37:06 2012 +0200
+++ b/Party.cpp	Fri Nov 16 13:56:53 2012 +0200
@@ -372,10 +372,11 @@
   while ( 1 )
   {
     if ( !pCharacter->uClass )
-      *(short *)pResMagicBase = v3;
+      *(short *)pResMagicBase = v3; //player[i].pResMagicBase
     uSpellBookPageCount = 0;
     v7 = pResMagicBase - 5726;// Skills
-    while ( !*(short *)v7 )
+    while ( !*(short *)v7 )         //player[i].skillFire  or
+                                    //player[i].pActiveSkills[12]
     {
       ++uSpellBookPageCount;
       v7 += 2;
@@ -402,7 +403,7 @@
               v15 = ITEM_STAFF_1;
               goto wear_item;
             case PLAYER_SKILL_SWORD:
-              v15 = 1;
+              v15 = ITEM_LONGSWORD_1;
               goto wear_item;
             case PLAYER_SKILL_DAGGER:
               v15 = ITEM_DAGGER_1;
--- a/Player.h	Tue Nov 13 17:37:06 2012 +0200
+++ b/Player.h	Fri Nov 16 13:56:53 2012 +0200
@@ -386,7 +386,50 @@
   int field_FC;
   int field_100;
   int field_104;
-  unsigned __int16 pActiveSkills[37];
+  union
+  {
+    struct
+    {
+      unsigned __int16 skillStaff;
+      unsigned __int16 skillSword;
+      unsigned __int16 skillDagger;
+      unsigned __int16 skillAxe;
+      unsigned __int16 skillSpear;
+      unsigned __int16 skillBow;
+      unsigned __int16 skillMace;
+      unsigned __int16 skillBlaster;
+      unsigned __int16 skillShield;
+      unsigned __int16 skillLeather;
+      unsigned __int16 skillChain;
+      unsigned __int16 skillPlate;
+      unsigned __int16 skillFire;
+      unsigned __int16 skillAir;
+      unsigned __int16 skillWater;
+      unsigned __int16 skillEarth;
+      unsigned __int16 skillSpirit;
+      unsigned __int16 skillMind;
+      unsigned __int16 skillBody;
+      unsigned __int16 skillLight;
+      unsigned __int16 skillDark;
+      unsigned __int16 skillItemId;
+      unsigned __int16 skillMerchant;
+      unsigned __int16 skillRepair;
+      unsigned __int16 skillBodybuilding;
+      unsigned __int16 skillMeditation;
+      unsigned __int16 skillPerception;
+      unsigned __int16 skillDiplomacy;
+      unsigned __int16 skillThievery;
+      unsigned __int16 skillDisarmTrap;
+      unsigned __int16 skillDodge;
+      unsigned __int16 skillUnarmed;
+      unsigned __int16 skillMonsterId;
+      unsigned __int16 skillArmsmaster;
+      unsigned __int16 skillStealing;
+      unsigned __int16 skillAlchemy;
+      unsigned __int16 skillLearning;
+    };
+    unsigned __int16 pActiveSkills[37];
+  };
   char field_152[64];
   PlayerSpells spellbook;
   char field_1F5[30]; // used to be [31]
--- a/mm7_3.cpp	Tue Nov 13 17:37:06 2012 +0200
+++ b/mm7_3.cpp	Fri Nov 16 13:56:53 2012 +0200
@@ -9139,21 +9139,18 @@
 {
   return 64 - (a1 >> 9);
 }
-// 47F458: using guessed type int __stdcall WorldPosToGridCellZ(int);
 
 //----- (0047F469) --------------------------------------------------------
 int __stdcall GridCellToWorldPosX(int a1)
 {
   return (a1 - 64) << 9;
 }
-// 47F469: using guessed type int __stdcall GridCellToWorldPosX(int);
 
 //----- (0047F476) --------------------------------------------------------
 int __stdcall GridCellToWorldPosZ(int a1)
 {
   return (64 - a1) << 9;
 }
-// 47F476: using guessed type int __stdcall GridCellToWorldPosZ(int);
 
 //----- (0047F4D3) --------------------------------------------------------
 void __fastcall sub_47F4D3(int band1, int band2, int band3)