Browse Source

Types (#395)

* Apply plr_class

* Apply attribute_id

* NetSendCmd*(BOOL)
pull/25/head
Anders Jenbo 8 years ago committed by Robin Eklind
parent
commit
4d8ceea32d
  1. 85
      Source/control.cpp
  2. 26
      Source/diablo.cpp
  3. 2
      Source/gamemenu.cpp
  4. 2
      Source/interfac.cpp
  5. 264
      Source/inv.cpp
  6. 44
      Source/items.cpp
  7. 2
      Source/items.h
  8. 134
      Source/missiles.cpp
  9. 207
      Source/monster.cpp
  10. 8
      Source/monster.h
  11. 14
      Source/msg.cpp
  12. 2
      Source/msg.h
  13. 213
      Source/objects.cpp
  14. 2
      Source/pack.cpp
  15. 2
      Source/player.cpp
  16. 2
      Source/portal.cpp
  17. 155
      Source/quests.cpp
  18. 2
      Source/quests.h
  19. 1
      Source/stores.cpp
  20. 17
      Source/towners.cpp
  21. 4
      Source/track.cpp
  22. 26
      Source/trigs.cpp

85
Source/control.cpp

@ -1159,7 +1159,6 @@ void __cdecl InitControlPan()
void *v1; // ecx
void *v2; // ecx
void *v3; // ecx
char v4; // al
unsigned char *v5; // eax
v0 = 0x16800;
@ -1227,21 +1226,12 @@ void __cdecl InitControlPan()
pSBkIconCels = LoadFileInMem("Data\\SpellI2.CEL", 0);
sbooktab = 0;
sbookflag = 0;
v4 = plr[myplr]._pClass;
if ( v4 )
{
if ( v4 == UI_ROGUE )
{
SpellPages[0][0] = SPL_DISARM;
}
else if ( v4 == UI_SORCERER )
{
SpellPages[0][0] = SPL_RECHARGE;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
SpellPages[0][0] = SPL_REPAIR;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
SpellPages[0][0] = SPL_DISARM;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
SpellPages[0][0] = SPL_RECHARGE;
}
pQLogCel = LoadFileInMem("Data\\Quest.CEL", 0);
v5 = LoadFileInMem("CtrlPan\\Golddrop.cel", 0);
@ -2025,7 +2015,6 @@ void __fastcall PrintGameStr(int x, int y, char *str, int color)
void __cdecl DrawChr()
{
char v0; // al
int v1; // ecx
int v2; // ecx
int v3; // eax
@ -2060,21 +2049,12 @@ void __cdecl DrawChr()
CelDecodeOnly(64, 511, pChrPanel, 1, 320);
ADD_PlrStringXY(20, 32, 151, plr[myplr]._pName, 0);
v0 = plr[myplr]._pClass;
if ( v0 )
{
if ( v0 == 1 )
{
ADD_PlrStringXY(168, 32, 299, "Rogue", 0); /* should use ClassStrTbl ? */
}
else if ( v0 == 2 )
{
ADD_PlrStringXY(168, 32, 299, "Sorceror", 0);
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
ADD_PlrStringXY(168, 32, 299, "Warrior", 0);
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
ADD_PlrStringXY(168, 32, 299, "Rogue", 0); /* should use ClassStrTbl ? */
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
ADD_PlrStringXY(168, 32, 299, "Sorceror", 0);
}
sprintf(a4, "%i", plr[myplr]._pLevel);
ADD_PlrStringXY(66, 69, 109, a4, 0);
@ -2121,13 +2101,13 @@ void __cdecl DrawChr()
v4 = plr[v2]._pDamageMod;
v5 = plr[v2].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_BOW;
v29 = plr[v2]._pDamageMod;
if ( v5 && _LOBYTE(plr[v2]._pClass) != 1 )
if ( v5 && plr[v2]._pClass != PC_ROGUE )
v4 >>= 1;
v30 += v4;
v6 = plr[v2]._pIBonusDam;
v28 = plr[v2]._pIMaxDam;
v7 = plr[v2]._pIBonusDamMod + v28 * v6 / 100 + v28;
if ( plr[v2].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_BOW || _LOBYTE(plr[v2]._pClass) == 1 )
if ( plr[v2].InvBody[INVLOC_HAND_LEFT]._itype != ITYPE_BOW || plr[v2]._pClass == PC_ROGUE )
v8 = v29 + v7;
else
v8 = (v29 >> 1) + v7;
@ -2174,22 +2154,22 @@ void __cdecl DrawChr()
ADD_PlrStringXY(257, 332, 300, a4, a5[0]);
a5[0] = 0;
sprintf(a4, "%i", plr[myplr]._pBaseStr);
if ( MaxStats[SLOBYTE(plr[myplr]._pClass)][0] == plr[myplr]._pBaseStr )
if ( MaxStats[plr[myplr]._pClass][ATTRIB_STR] == plr[myplr]._pBaseStr )
a5[0] = 3;
ADD_PlrStringXY(95, 155, 126, a4, a5[0]);
a5[0] = 0;
sprintf(a4, "%i", plr[myplr]._pBaseMag);
if ( MaxStats[SLOBYTE(plr[myplr]._pClass)][1] == plr[myplr]._pBaseMag )
if ( MaxStats[plr[myplr]._pClass][ATTRIB_MAG] == plr[myplr]._pBaseMag )
a5[0] = 3;
ADD_PlrStringXY(95, 183, 126, a4, a5[0]);
a5[0] = 0;
sprintf(a4, "%i", plr[myplr]._pBaseDex);
if ( MaxStats[SLOBYTE(plr[myplr]._pClass)][2] == plr[myplr]._pBaseDex )
if ( MaxStats[plr[myplr]._pClass][ATTRIB_DEX] == plr[myplr]._pBaseDex )
a5[0] = 3;
ADD_PlrStringXY(95, 211, 126, a4, a5[0]);
a5[0] = 0;
sprintf(a4, "%i", plr[myplr]._pBaseVit);
if ( MaxStats[SLOBYTE(plr[myplr]._pClass)][3] == plr[myplr]._pBaseVit )
if ( MaxStats[plr[myplr]._pClass][ATTRIB_VIT] == plr[myplr]._pBaseVit )
a5[0] = 3;
ADD_PlrStringXY(95, 239, 126, a4, a5[0]);
a5[0] = 0;
@ -2243,14 +2223,14 @@ void __cdecl DrawChr()
{
sprintf(a4, "%i", v21);
ADD_PlrStringXY(95, 266, 126, a4, 2);
v22 = SLOBYTE(plr[myplr]._pClass);
if ( plr[myplr]._pBaseStr < MaxStats[v22][0] )
v22 = plr[myplr]._pClass;
if ( plr[myplr]._pBaseStr < MaxStats[v22][ATTRIB_STR] )
CelDecodeOnly(201, 319, pChrButtons, chrbtn[0] + 2, 41);
if ( plr[myplr]._pBaseMag < MaxStats[v22][1] )
if ( plr[myplr]._pBaseMag < MaxStats[v22][ATTRIB_MAG] )
CelDecodeOnly(201, 347, pChrButtons, chrbtn[1] + 4, 41);
if ( plr[myplr]._pBaseDex < MaxStats[v22][2] )
if ( plr[myplr]._pBaseDex < MaxStats[v22][ATTRIB_DEX] )
CelDecodeOnly(201, 376, pChrButtons, chrbtn[2] + 6, 41);
if ( plr[myplr]._pBaseVit < MaxStats[v22][3] )
if ( plr[myplr]._pBaseVit < MaxStats[v22][ATTRIB_VIT] )
CelDecodeOnly(201, 404, pChrButtons, chrbtn[3] + 8, 41);
}
v23 = plr[myplr]._pMaxHP;
@ -2427,21 +2407,21 @@ void __cdecl CheckChrBtns()
if ( plr[myplr]._pStatPts )
{
v2 = MouseX;
v3 = SLOBYTE(plr[v1]._pClass);
v3 = plr[v1]._pClass;
while ( 1 )
{
if ( !v0 )
{
v9 = plr[v1]._pBaseStr;
v6 = __OFSUB__(v9, MaxStats[v3][0]);
v5 = v9 - MaxStats[v3][0] < 0;
v6 = __OFSUB__(v9, MaxStats[v3][ATTRIB_STR]);
v5 = v9 - MaxStats[v3][ATTRIB_STR] < 0;
goto LABEL_12;
}
if ( v0 == 1 )
{
v8 = plr[v1]._pBaseMag;
v6 = __OFSUB__(v8, MaxStats[v3][1]);
v5 = v8 - MaxStats[v3][1] < 0;
v6 = __OFSUB__(v8, MaxStats[v3][ATTRIB_MAG]);
v5 = v8 - MaxStats[v3][ATTRIB_MAG] < 0;
goto LABEL_12;
}
if ( v0 == 2 )
@ -2449,8 +2429,8 @@ void __cdecl CheckChrBtns()
if ( v0 == 3 )
{
v4 = plr[v1]._pBaseVit;
v6 = __OFSUB__(v4, MaxStats[v3][3]);
v5 = v4 - MaxStats[v3][3] < 0;
v6 = __OFSUB__(v4, MaxStats[v3][ATTRIB_VIT]);
v5 = v4 - MaxStats[v3][ATTRIB_VIT] < 0;
LABEL_12:
if ( v5 ^ v6 )
{
@ -2471,8 +2451,8 @@ LABEL_12:
return;
}
v7 = plr[v1]._pBaseDex;
v6 = __OFSUB__(v7, MaxStats[v3][2]);
v5 = v7 - MaxStats[v3][2] < 0;
v6 = __OFSUB__(v7, MaxStats[v3][ATTRIB_DEX]);
v5 = v7 - MaxStats[v3][ATTRIB_DEX] < 0;
goto LABEL_12;
}
}
@ -2524,7 +2504,7 @@ void __cdecl ReleaseChrBtns()
{
v5 = CMD_ADDSTR;
}
NetSendCmdParam1(1u, v5, 1u);
NetSendCmdParam1(TRUE, v5, 1u);
--plr[myplr]._pStatPts;
}
}
@ -3256,10 +3236,9 @@ void __cdecl control_release_talk_btn()
void __cdecl control_reset_talk_msg()
{
int v0; // edi
signed int v1; // ecx
v0 = 0;
BOOL v0 = FALSE;
v1 = 0;
do
{

26
Source/diablo.cpp

@ -921,7 +921,7 @@ bool __fastcall LeftMouseDown(int a1)
{
if ( !TryInvPut() )
return 0;
NetSendCmdPItem(1u, CMD_PUTITEM, cursmx, cursmy);
NetSendCmdPItem(TRUE, CMD_PUTITEM, cursmx, cursmy);
LABEL_48:
SetCursor(CURSOR_HAND);
return 0;
@ -938,7 +938,7 @@ LABEL_48:
if ( pcursitem != -1 && pcurs == 1 && v1 != 5 )
{
_LOWORD(v8) = pcursitem;
NetSendCmdLocParam1(1u, (invflag == 0) + CMD_GOTOGETITEM, cursmx, cursmy, v8);
NetSendCmdLocParam1(TRUE, (invflag == 0) + CMD_GOTOGETITEM, cursmx, cursmy, v8);
LABEL_96:
if ( pcursitem != -1 )
return 0;
@ -949,7 +949,7 @@ LABEL_96:
{
if ( v1 != 5 || v7 && object[pcursobj]._oBreak == 1 )
{
NetSendCmdLocParam1(1u, (pcurs == 5) + CMD_OPOBJXY, cursmx, cursmy, pcursobj);
NetSendCmdLocParam1(TRUE, (pcurs == 5) + CMD_OPOBJXY, cursmx, cursmy, pcursobj);
goto LABEL_95;
}
}
@ -959,7 +959,7 @@ LABEL_96:
{
v9 = CMD_RATTACKXY;
LABEL_84:
NetSendCmdLoc(1u, v9, cursmx, cursmy);
NetSendCmdLoc(TRUE, v9, cursmx, cursmy);
goto LABEL_95;
}
if ( pcursmonst != -1 )
@ -969,7 +969,7 @@ LABEL_84:
{
v11 = CMD_RATTACKID;
LABEL_89:
NetSendCmdParam1(1u, v11, v15);
NetSendCmdParam1(TRUE, v11, v15);
goto LABEL_96;
}
LABEL_88:
@ -993,7 +993,7 @@ LABEL_88:
v12 = pcursmonst;
v13 = CMD_ATTACKID;
LABEL_94:
NetSendCmdParam1(1u, v13, v12);
NetSendCmdParam1(TRUE, v13, v12);
LABEL_95:
if ( v1 == 5 )
return 0;
@ -1015,10 +1015,10 @@ LABEL_95:
if ( pcursitem != -1 && pcurs == 1 )
{
_LOWORD(v3) = pcursitem;
NetSendCmdLocParam1(1u, (invflag == 0) + CMD_GOTOGETITEM, cursmx, cursmy, v3);
NetSendCmdLocParam1(TRUE, (invflag == 0) + CMD_GOTOGETITEM, cursmx, cursmy, v3);
}
if ( pcursmonst != -1 )
NetSendCmdLocParam1(1u, CMD_TALKXY, cursmx, cursmy, pcursmonst);
NetSendCmdLocParam1(TRUE, CMD_TALKXY, cursmx, cursmy, pcursmonst);
v6 = pcursitem == -1;
LABEL_98:
if ( v6 && pcursmonst == -1 && pcursplr == -1 )
@ -1055,7 +1055,7 @@ bool __cdecl TryIconCurs()
case CURSOR_RESURRECT:
v0 = CMD_RESURRECT;
LABEL_3:
NetSendCmdParam1(1u, v0, pcursplr);
NetSendCmdParam1(TRUE, v0, pcursplr);
return 1;
case CURSOR_HEALOTHER:
v0 = CMD_HEALOTHER;
@ -1095,18 +1095,18 @@ LABEL_26:
v4 = GetSpellLevel(myplr, v1);
v5 = 21720 * myplr;
_LOWORD(v5) = plr[myplr]._pTSpell;
NetSendCmdLocParam2(1u, CMD_TSPELLXY, cursmx, cursmy, v5, v4);
NetSendCmdLocParam2(TRUE, CMD_TSPELLXY, cursmx, cursmy, v5, v4);
}
else
{
v3 = GetSpellLevel(myplr, v1);
NetSendCmdParam3(1u, CMD_TSPELLPID, pcursplr, plr[myplr]._pTSpell, v3);
NetSendCmdParam3(TRUE, CMD_TSPELLPID, pcursplr, plr[myplr]._pTSpell, v3);
}
}
else
{
v2 = GetSpellLevel(myplr, v1);
NetSendCmdParam3(1u, CMD_TSPELLID, pcursmonst, plr[myplr]._pTSpell, v2);
NetSendCmdParam3(TRUE, CMD_TSPELLID, pcursmonst, plr[myplr]._pTSpell, v2);
}
goto LABEL_26;
}
@ -1571,7 +1571,7 @@ void __fastcall PressChar(int vkey)
#ifdef _DEBUG
if ( debug_mode_key_inverted_v || debug_mode_key_w )
{
NetSendCmd(1, CMD_CHEAT_EXPERIENCE);
NetSendCmd(TRUE, CMD_CHEAT_EXPERIENCE);
return;
}
#endif

2
Source/gamemenu.cpp

@ -161,7 +161,7 @@ void __cdecl gamemenu_save_game()
void __cdecl gamemenu_restart_town()
{
NetSendCmd(1u, CMD_RETOWN);
NetSendCmd(TRUE, CMD_RETOWN);
}
void __cdecl gamemenu_options()

2
Source/interfac.cpp

@ -226,7 +226,7 @@ LABEL_41:
PaletteFadeOut(8);
FreeInterface();
SetWindowProc(saveProc);
NetSendCmdLocParam1(1u, CMD_PLAYER_JOINLEVEL, plr[myplr].WorldX, plr[myplr].WorldY, plr[myplr].plrlevel);
NetSendCmdLocParam1(TRUE, CMD_PLAYER_JOINLEVEL, plr[myplr].WorldX, plr[myplr].WorldY, plr[myplr].plrlevel);
plrmsg_delay(0);
ResetPal();
if ( gbSomebodyWonGameKludge && plr[myplr].plrlevel == 16 )

264
Source/inv.cpp

@ -903,7 +903,7 @@ int __fastcall WeaponAutoPlace(int pnum)
if ( plr[v1].InvBody[INVLOC_HAND_LEFT]._itype != -1 || plr[v1].InvBody[INVLOC_HAND_RIGHT]._itype != -1 )
return 0;
LABEL_12:
NetSendCmdChItem(1u, 4u);
NetSendCmdChItem(TRUE, 4u);
v4 = &plr[v1].HoldItem;
v5 = &plr[v1].InvBody[INVLOC_HAND_LEFT];
goto LABEL_13;
@ -918,7 +918,7 @@ LABEL_12:
goto LABEL_12;
if ( v3 == -1 && plr[v1].InvBody[INVLOC_HAND_LEFT]._iLoc != ILOC_TWOHAND )
{
NetSendCmdChItem(1u, 5u);
NetSendCmdChItem(TRUE, 5u);
v4 = &plr[v1].HoldItem;
v5 = &plr[v1].InvBody[INVLOC_HAND_RIGHT];
LABEL_13:
@ -959,8 +959,6 @@ void __fastcall CheckInvPaste(int pnum, int mx, int my)
int v16; // esi
int v17; // ecx
int v18; // edx
char v19; // al
int v20; // ecx
int v21; // esi
ItemStruct *v22; // edi
ItemStruct *v23; // ecx
@ -1120,8 +1118,8 @@ LABEL_93:
goto LABEL_232;
if ( plr[v3].InvBody[INVLOC_HAND_LEFT]._iLoc == ILOC_TWOHAND )
{
NetSendCmdDelItem(0, 4u);
NetSendCmdChItem(0, 5u);
NetSendCmdDelItem(FALSE, 4u);
NetSendCmdChItem(FALSE, 5u);
SwapItem(&plr[v3].InvBody[INVLOC_HAND_RIGHT], &plr[v3].InvBody[INVLOC_HAND_LEFT]);
v23 = &plr[v3].InvBody[INVLOC_HAND_RIGHT];
LABEL_99:
@ -1133,7 +1131,7 @@ LABEL_172:
if ( v25 == ITYPE_NONE || plr[v3].InvBody[INVLOC_HAND_LEFT]._iClass != plr[v3].HoldItem._iClass )
{
LABEL_232:
NetSendCmdChItem(0, 5u);
NetSendCmdChItem(FALSE, 5u);
v22 = &plr[v3].InvBody[INVLOC_HAND_RIGHT];
LABEL_158:
qmemcpy(v22, &plr[v3].HoldItem, sizeof(ItemStruct));
@ -1154,11 +1152,11 @@ LABEL_158:
&& plr[v3].InvBody[INVLOC_HAND_RIGHT]._iClass == plr[v3].HoldItem._iClass )
{
LABEL_114:
NetSendCmdChItem(0, 5u);
NetSendCmdChItem(FALSE, 5u);
v23 = &plr[v3].InvBody[INVLOC_HAND_RIGHT];
goto LABEL_99;
}
NetSendCmdChItem(0, 4u);
NetSendCmdChItem(FALSE, 4u);
v22 = &plr[v3].InvBody[INVLOC_HAND_LEFT];
goto LABEL_158;
}
@ -1168,11 +1166,11 @@ LABEL_114:
goto LABEL_114;
}
}
NetSendCmdChItem(0, 4u);
NetSendCmdChItem(FALSE, 4u);
v23 = &plr[v3].InvBody[INVLOC_HAND_LEFT];
goto LABEL_99;
case ILOC_TWOHAND:
NetSendCmdDelItem(0, 5u);
NetSendCmdDelItem(FALSE, 5u);
if ( plr[v3].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE )
goto LABEL_147;
v26 = plr[v3].InvBody[INVLOC_HAND_RIGHT]._itype;
@ -1218,13 +1216,13 @@ LABEL_146:
LABEL_147:
if ( plr[v3].InvBody[INVLOC_HAND_RIGHT]._itype == ITYPE_NONE )
{
NetSendCmdChItem(0, 4u);
NetSendCmdChItem(FALSE, 4u);
qmemcpy(&plr[v3].InvBody[INVLOC_HAND_LEFT], &plr[v3].HoldItem, sizeof(plr[v3].InvBody[INVLOC_HAND_LEFT]));
}
else
{
LABEL_149:
NetSendCmdChItem(0, 4u);
NetSendCmdChItem(FALSE, 4u);
if ( plr[v3].InvBody[INVLOC_HAND_LEFT]._itype == ITYPE_NONE )
SwapItem(&plr[v3].InvBody[INVLOC_HAND_LEFT], &plr[v3].InvBody[INVLOC_HAND_RIGHT]);
cursor_ida = SwapItem(&plr[v3].InvBody[INVLOC_HAND_LEFT], &plr[v3].HoldItem);
@ -1244,7 +1242,7 @@ LABEL_149:
}
goto LABEL_226;
case ILOC_ARMOR:
NetSendCmdChItem(0, 6u);
NetSendCmdChItem(FALSE, 6u);
if ( plr[v3].InvBody[INVLOC_CHEST]._itype == ITYPE_NONE )
{
v22 = &plr[v3].InvBody[INVLOC_CHEST];
@ -1253,7 +1251,7 @@ LABEL_149:
v23 = &plr[v3].InvBody[INVLOC_CHEST];
goto LABEL_99;
case ILOC_HELM:
NetSendCmdChItem(0, 0);
NetSendCmdChItem(FALSE, 0);
if ( plr[v3].InvBody[INVLOC_HEAD]._itype == ITYPE_NONE )
{
v22 = plr[v3].InvBody;
@ -1264,7 +1262,7 @@ LABEL_149:
case ILOC_RING:
if ( v10 == 4 )
{
NetSendCmdChItem(0, 1u);
NetSendCmdChItem(FALSE, 1u);
if ( plr[v3].InvBody[INVLOC_RING_LEFT]._itype == ITYPE_NONE )
{
v22 = &plr[v3].InvBody[INVLOC_RING_LEFT];
@ -1274,7 +1272,7 @@ LABEL_149:
}
else
{
NetSendCmdChItem(0, 2u);
NetSendCmdChItem(FALSE, 2u);
if ( plr[v3].InvBody[INVLOC_RING_RIGHT]._itype == ITYPE_NONE )
{
v22 = &plr[v3].InvBody[INVLOC_RING_RIGHT];
@ -1284,7 +1282,7 @@ LABEL_149:
}
goto LABEL_99;
case ILOC_AMULET:
NetSendCmdChItem(0, 3u);
NetSendCmdChItem(FALSE, 3u);
if ( plr[v3].InvBody[INVLOC_AMULET]._itype == ITYPE_NONE )
{
v22 = &plr[v3].InvBody[INVLOC_AMULET];
@ -1569,29 +1567,16 @@ LABEL_78:
LABEL_81:
if ( !v12 )
return;
if ( v69 == ILOC_UNEQUIPABLE || v69 == ILOC_BELT || plr[v3].HoldItem._iStatFlag )
goto LABEL_92;
v19 = plr[v3]._pClass;
if ( !v19 )
{
v20 = PS_WARR13;
goto LABEL_89;
if ( v69 == ILOC_UNEQUIPABLE || v69 == ILOC_BELT || plr[v3].HoldItem._iStatFlag ) {
goto LABEL_93;
}
if ( v19 != 1 )
{
if ( v19 != 2 )
return;
if ( plr[v3]._pClass == PC_WARRIOR ) {
PlaySFX(PS_WARR13);
} else if ( plr[v3]._pClass == PC_ROGUE ) {
PlaySFX(PS_ROGUE13);
} else if ( plr[v3]._pClass == PC_SORCERER ) {
PlaySFX(PS_MAGE13);
v12 = 0;
v10 = v68;
LABEL_92:
if ( !v12 )
return;
goto LABEL_93;
}
v20 = PS_ROGUE13;
LABEL_89:
PlaySFX(v20);
}
// 4B8C9C: using guessed type int cursH;
// 4B8CB4: using guessed type int icursH;
@ -1970,11 +1955,6 @@ void __fastcall CheckQuestItem(int pnum)
{
int v1; // ecx
int v2; // esi
char v3; // cl
char v4; // cl
char v5; // cl
char v6; // cl
char v7; // al
v1 = pnum;
v2 = plr[v1].HoldItem.IDidx;
@ -1982,22 +1962,13 @@ void __fastcall CheckQuestItem(int pnum)
quests[QTYPE_BLIND]._qactive = 3;
if ( v2 == IDI_MUSHROOM && quests[QTYPE_BLKM]._qactive == 2 && quests[QTYPE_BLKM]._qvar1 == QS_MUSHSPAWNED )
{
v3 = plr[v1]._pClass;
sfxdelay = IDI_OPTAMULET;
if ( v3 )
{
if ( v3 == 1 )
{
sfxdnum = PS_ROGUE95;
}
else if ( v3 == 2 )
{
sfxdnum = PS_MAGE95;
}
}
else
{
if ( plr[v1]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR95;
} else if ( plr[v1]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE95;
} else if ( plr[v1]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE95;
}
quests[QTYPE_BLKM]._qvar1 = QS_MUSHPICKED;
}
@ -2008,45 +1979,26 @@ void __fastcall CheckQuestItem(int pnum)
quests[QTYPE_ANVIL]._qactive = 2;
quests[QTYPE_ANVIL]._qvar1 = 1;
}
if ( quests[QTYPE_ANVIL]._qlog == 1 )
{
if ( quests[QTYPE_ANVIL]._qlog == 1 ) {
sfxdelay = IDI_OPTAMULET;
v4 = plr[myplr]._pClass;
if ( v4 )
{
if ( v4 == 1 )
{
sfxdnum = PS_ROGUE89;
}
else if ( v4 == 2 )
{
sfxdnum = PS_MAGE89;
}
}
else
{
if ( plr[v1]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR89;
} else if ( plr[v1]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE89;
} else if ( plr[v1]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE89;
}
}
}
if ( v2 == IDI_GLDNELIX )
{
sfxdelay = 30;
v5 = plr[myplr]._pClass;
if ( v5 )
{
if ( v5 == 1 )
{
sfxdnum = PS_ROGUE88;
}
else if ( v5 == 2 )
{
sfxdnum = PS_MAGE88;
}
}
else
{
if ( plr[v1]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR88;
} else if ( plr[v1]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE88;
} else if ( plr[v1]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE88;
}
}
if ( v2 == IDI_ROCK )
@ -2056,24 +2008,14 @@ void __fastcall CheckQuestItem(int pnum)
quests[QTYPE_INFRA]._qactive = 2;
quests[QTYPE_INFRA]._qvar1 = 1;
}
if ( quests[QTYPE_INFRA]._qlog == 1 )
{
if ( quests[QTYPE_INFRA]._qlog == 1 ) {
sfxdelay = IDI_OPTAMULET;
v6 = plr[myplr]._pClass;
if ( v6 )
{
if ( v6 == 1 )
{
sfxdnum = PS_ROGUE87;
}
else if ( v6 == 2 )
{
sfxdnum = PS_MAGE87;
}
}
else
{
if ( plr[v1]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR87;
} else if ( plr[v1]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE87;
} else if ( plr[v1]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE87;
}
}
}
@ -2081,21 +2023,12 @@ void __fastcall CheckQuestItem(int pnum)
{
quests[QTYPE_BLOOD]._qactive = 3;
sfxdelay = 20;
v7 = plr[myplr]._pClass;
if ( v7 )
{
if ( v7 == 1 )
{
sfxdnum = PS_ROGUE91;
}
else if ( v7 == 2 )
{
sfxdnum = PS_MAGE91;
}
}
else
{
if ( plr[v1]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR91;
} else if ( plr[v1]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE91;
} else if ( plr[v1]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE91;
}
}
}
@ -2121,7 +2054,7 @@ void __fastcall InvGetItem(int pnum, int ii)
if ( dItem[item[ii]._ix][item[ii]._iy] )
{
if ( myplr == pnum && pcurs >= CURSOR_FIRSTITEM )
NetSendCmdPItem(1u, CMD_SYNCPUTITEM, plr[myplr].WorldX, plr[myplr].WorldY);
NetSendCmdPItem(TRUE, CMD_SYNCPUTITEM, plr[myplr].WorldX, plr[myplr].WorldY);
_HIBYTE(item[v2]._iCreateInfo) &= 0x7Fu;
qmemcpy(&plr[pnuma].HoldItem, &item[v2], sizeof(plr[pnuma].HoldItem));
CheckQuestItem(pnuma);
@ -2162,7 +2095,6 @@ void __fastcall AutoGetItem(int pnum, int ii)
int v9; // edi
int v10; // edx
int v11; // ecx
char v12; // al
int v13; // ecx
int iia; // [esp+10h] [ebp-18h]
signed int iib; // [esp+10h] [ebp-18h]
@ -2410,25 +2342,25 @@ LABEL_71:
}
if ( v2 == myplr )
{
v12 = plr[v3]._pClass;
switch ( v12 )
switch ( plr[v3]._pClass )
{
case UI_WARRIOR:
case PC_WARRIOR:
v13 = random(0, 3) + PS_WARR14;
LABEL_84:
PlaySFX(v13);
break;
case UI_ROGUE:
case PC_ROGUE:
v13 = random(0, 3) + PS_ROGUE14;
goto LABEL_84;
case UI_SORCERER:
PlaySFX(v13);
break;
case PC_SORCERER:
v13 = random(0, 3) + PS_MAGE14;
goto LABEL_84;
PlaySFX(v13);
break;
}
}
qmemcpy(&plr[v3].HoldItem, &item[v28], sizeof(plr[v3].HoldItem));
RespawnItem(i, 1);
NetSendCmdPItem(1u, CMD_RESPAWNITEM, item[v28]._ix, item[v28]._iy);
NetSendCmdPItem(TRUE, CMD_RESPAWNITEM, item[v28]._ix, item[v28]._iy);
plr[v3].HoldItem._itype = ITYPE_NONE;
}
}
@ -2848,7 +2780,7 @@ int __cdecl CheckInvHLight()
int v5; // ebx
int v6; // edi
char *v7; // eax
char v8; // al
char v8;
char v9; // [esp+Fh] [ebp-1h]
v0 = 0;
@ -3136,12 +3068,8 @@ int __fastcall UseInvItem(int pnum, int cii)
int v4; // ebx
int v5; // ebp
_DWORD *v6; // edi
char v7; // al
int v8; // ecx
int v9; // eax
int v10; // ecx
char v11; // al
char v12; // al
int p; // [esp+10h] [ebp-8h]
signed int v14; // [esp+14h] [ebp-4h]
@ -3172,44 +3100,26 @@ int __fastcall UseInvItem(int pnum, int cii)
}
if ( v6[90] == 17 )
{
v12 = plr[v2]._pClass;
sfxdelay = 10;
if ( v12 )
{
if ( v12 == 1 )
{
sfxdnum = PS_ROGUE95;
}
else if ( v12 == 2 )
{
sfxdnum = PS_MAGE95;
}
}
else
{
if ( plr[v2]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR95;
} else if ( plr[v2]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE95;
} else if ( plr[v2]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE95;
}
return 1;
}
if ( v6[90] == 19 )
{
PlaySFX(IS_IBOOK);
v11 = plr[v2]._pClass;
sfxdelay = 10;
if ( v11 )
{
if ( v11 == 1 )
{
sfxdnum = PS_ROGUE29;
}
else if ( v11 == 2 )
{
sfxdnum = PS_MAGE29;
}
}
else
{
if ( plr[v2]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR29;
} else if ( plr[v2]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE29;
} else if ( plr[v2]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE29;
}
return 1;
}
@ -3217,25 +3127,13 @@ int __fastcall UseInvItem(int pnum, int cii)
return 0;
if ( !v6[89] )
{
v7 = plr[v2]._pClass;
if ( v7 )
{
if ( v7 == 1 )
{
v8 = PS_ROGUE13;
}
else
{
if ( v7 != 2 )
return 1;
v8 = PS_MAGE13;
}
}
else
{
v8 = PS_WARR13;
if ( plr[v2]._pClass == PC_WARRIOR ) {
PlaySFX(PS_WARR13);
} else if ( plr[v2]._pClass == PC_ROGUE ) {
PlaySFX(PS_ROGUE13);
} else if ( plr[v2]._pClass == PC_SORCERER ) {
PlaySFX(PS_MAGE13);
}
PlaySFX(v8);
return 1;
}
v9 = v6[55];
@ -3287,11 +3185,11 @@ LABEL_39:
void __cdecl DoTelekinesis()
{
if ( pcursobj != -1 )
NetSendCmdParam1(1u, CMD_OPOBJT, pcursobj);
NetSendCmdParam1(TRUE, CMD_OPOBJT, pcursobj);
if ( pcursitem != -1 )
NetSendCmdGItem(1u, CMD_REQUESTAGITEM, myplr, myplr, pcursitem);
NetSendCmdGItem(TRUE, CMD_REQUESTAGITEM, myplr, myplr, pcursitem);
if ( pcursmonst != -1 && !M_Talker(pcursmonst) && !monster[pcursmonst].mtalkmsg )
NetSendCmdParam1(1u, CMD_KNOCKBACK, pcursmonst);
NetSendCmdParam1(TRUE, CMD_KNOCKBACK, pcursmonst);
SetCursor(CURSOR_HAND);
}
// 4B8CC0: using guessed type char pcursitem;
@ -3342,7 +3240,7 @@ int __cdecl DropItemBeforeTrig()
{
if ( !TryInvPut() )
return 0;
NetSendCmdPItem(1u, CMD_PUTITEM, cursmx, cursmy);
NetSendCmdPItem(TRUE, CMD_PUTITEM, cursmx, cursmy);
SetCursor(CURSOR_HAND);
return 1;
}

44
Source/items.cpp

@ -1214,7 +1214,7 @@ void __fastcall CalcSelfItems(int pnum)
v2 = 0;
v3 = 0;
v4 = 0;
v5 = &v1->InvBody[INVLOC_HEAD]._iStatFlag;
v5 = &v1->InvBody[0]._iStatFlag;
v6 = 7;
do
{
@ -1237,7 +1237,7 @@ void __fastcall CalcSelfItems(int pnum)
do
{
v9 = 0;
v8 = &v1->InvBody[INVLOC_HEAD]._iMinStr;
v8 = &v1->InvBody[0]._iMinStr;
v10 = 7;
do
{
@ -3075,7 +3075,7 @@ void __fastcall SetupAllItems(int ii, int idx, int iseed, int lvl, int uper, int
SetupItem(ii);
}
void __fastcall SpawnItem(int m, int x, int y, unsigned char sendmsg)
void __fastcall SpawnItem(int m, int x, int y, BOOL sendmsg)
{
int ii; // edi
int onlygood; // [esp+Ch] [ebp-Ch]
@ -3121,7 +3121,7 @@ LABEL_13:
++numitems;
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
}
}
// 679660: using guessed type char gbMaxPlayers;
@ -3175,7 +3175,7 @@ void __fastcall CreateRndItem(int x, int y, unsigned char onlygood, unsigned cha
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, onlygood, 0, delta);
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
if ( delta )
DeltaAddItem(ii);
@ -3215,7 +3215,7 @@ void __fastcall CreateRndUseful(int pnum, int x, int y, unsigned char sendmsg)
SetupAllUseful(ii, GetRndSeed(), currlevel);
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
++numitems;
}
@ -3240,7 +3240,7 @@ void __fastcall CreateTypeItem(int x, int y, unsigned char onlygood, int itype,
SetupAllItems(ii, idx, GetRndSeed(), 2 * currlevel, 1, onlygood, 0, delta);
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
if ( delta )
DeltaAddItem(ii);
@ -4402,7 +4402,6 @@ void __fastcall UseItem(int p, int Mid, int spl)
int v10; // esi
int v11; // edi
unsigned int v12; // edi
char v13; // al
int v14; // edi
int v15; // ecx
int *v16; // eax
@ -4432,7 +4431,6 @@ void __fastcall UseItem(int p, int Mid, int spl)
int v42; // esi
int v43; // edi
unsigned int v44; // edi
char v45; // al
int v46; // edi
int v47; // ecx
int *v48; // eax
@ -4441,7 +4439,6 @@ void __fastcall UseItem(int p, int Mid, int spl)
int v51; // edi
int v52; // edx
unsigned int v53; // edi
char v54; // al
int v55; // edi
int v56; // ecx
int *v57; // eax
@ -4450,7 +4447,6 @@ void __fastcall UseItem(int p, int Mid, int spl)
int v61; // esi
int v62; // edi
unsigned int v63; // edi
char v64; // al
int v65; // edi
int v66; // ecx
int *v67; // eax
@ -4522,11 +4518,10 @@ LABEL_41:
v10 = p;
v11 = plr[v10]._pMaxMana >> 8;
v12 = (v11 & 0xFFFFFFFE) + 2 * random(40, v11);
v13 = plr[v10]._pClass;
v14 = 32 * v12;
if ( v13 == 2 )
if ( plr[v10]._pClass == PC_SORCERER )
v14 *= 2;
if ( v13 == 1 )
if ( plr[v10]._pClass == PC_ROGUE )
v14 += v14 >> 1;
if ( !(plr[v10]._pIFlags & 0x8000000) )
{
@ -4548,11 +4543,10 @@ LABEL_71:
v61 = p;
v62 = plr[v61]._pMaxHP >> 8;
v63 = (v62 & 0xFFFFFFFE) + 2 * random(39, v62);
v64 = plr[v61]._pClass;
v65 = 32 * v63;
if ( !v64 )
if ( plr[v61]._pClass == PC_WARRIOR )
v65 *= 2;
if ( v64 == 1 )
if ( plr[v61]._pClass == PC_ROGUE )
v65 += v65 >> 1;
v66 = plr[v61]._pMaxHP;
v67 = &plr[v61]._pHitPoints;
@ -4638,7 +4632,7 @@ LABEL_71:
plr[v38].destParam1 = v37;
plr[v38].destParam2 = v39;
if ( v36 && spl == SPL_NOVA )
NetSendCmdLoc(1u, CMD_NOVA, v37, v39);
NetSendCmdLoc(TRUE, CMD_NOVA, v37, v39);
return;
}
}
@ -4668,11 +4662,10 @@ LABEL_71:
v42 = p;
v43 = plr[v42]._pMaxHP >> 8;
v44 = (v43 & 0xFFFFFFFE) + 2 * random(39, v43);
v45 = plr[v42]._pClass;
v46 = 32 * v44;
if ( !v45 )
if ( plr[v42]._pClass == PC_WARRIOR )
v46 *= 2;
if ( v45 == 1 )
if ( plr[v42]._pClass == PC_ROGUE )
v46 += v46 >> 1;
v47 = plr[v42]._pMaxHP;
v48 = &plr[v42]._pHitPoints;
@ -4688,11 +4681,10 @@ LABEL_71:
v52 = plr[v42]._pMaxMana >> 8;
drawhpflag = TRUE;
v53 = (v51 & 0xFFFFFFFE) + 2 * random(40, v52);
v54 = plr[v42]._pClass;
v55 = 32 * v53;
if ( v54 == 2 )
if ( plr[v42]._pClass == PC_SORCERER )
v55 *= 2;
if ( v54 == 1 )
if ( plr[v42]._pClass == PC_ROGUE )
v55 += v55 >> 1;
if ( !(plr[v42]._pIFlags & 0x8000000) )
{
@ -5526,7 +5518,7 @@ void __fastcall CreateSpellBook(int x, int y, int ispell, bool sendmsg, int delt
}
while ( !done );
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
if ( delta )
DeltaAddItem(ii);
++numitems;
@ -5557,7 +5549,7 @@ void __fastcall CreateMagicItem(int x, int y, int imisc, int icurs, int sendmsg,
}
while ( !done );
if ( sendmsg )
NetSendCmdDItem(0, ii);
NetSendCmdDItem(FALSE, ii);
if ( delta )
DeltaAddItem(ii);
++numitems;

2
Source/items.h

@ -56,7 +56,7 @@ void __fastcall GetUniqueItem(int i, int uid);
void __fastcall SpawnUnique(int uid, int x, int y);
void __fastcall ItemRndDur(int ii);
void __fastcall SetupAllItems(int ii, int idx, int iseed, int lvl, int uper, int onlygood, int recreate, int pregen);
void __fastcall SpawnItem(int m, int x, int y, unsigned char sendmsg);
void __fastcall SpawnItem(int m, int x, int y, BOOL sendmsg);
void __fastcall CreateItem(int uid, int x, int y);
void __fastcall CreateRndItem(int x, int y, unsigned char onlygood, unsigned char sendmsg, int delta);
void __fastcall SetupAllUseful(int ii, int iseed, int lvl);

134
Source/missiles.cpp

@ -505,12 +505,11 @@ void __fastcall GetDamageAmt(int i, int *mind, int *maxd)
v6 = plr[v3]._pLevel + v4 + 1;
*mind = v6;
v7 = myplr;
if ( !_LOBYTE(plr[myplr]._pClass) )
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
*mind = 2 * v6;
v7 = myplr;
}
if ( _LOBYTE(plr[v7]._pClass) == 1 )
if ( plr[v7]._pClass == PC_ROGUE )
*mind += *mind >> 1;
v8 = maxd;
v9 = 0;
@ -735,12 +734,11 @@ LABEL_43:
v26 = plr[v3]._pLevel + v4 + 1;
*mind = v26;
v27 = myplr;
if ( !_LOBYTE(plr[myplr]._pClass) )
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
*mind = 2 * v26;
v27 = myplr;
}
if ( _LOBYTE(plr[v27]._pClass) == 1 )
if ( plr[v27]._pClass == PC_ROGUE )
*mind += *mind >> 1;
v8 = maxd;
v28 = 0;
@ -757,9 +755,9 @@ LABEL_43:
LABEL_65:
if ( v4 > 0 )
*v8 += 6 * v4;
if ( !_LOBYTE(plr[myplr]._pClass) )
if ( plr[myplr]._pClass == PC_WARRIOR )
*v8 *= 2;
if ( _LOBYTE(plr[myplr]._pClass) == 1 )
if ( plr[myplr]._pClass == PC_ROGUE )
*v8 += *v8 >> 1;
LABEL_71:
*mind = -1;
@ -1048,7 +1046,7 @@ void __fastcall DeleteMissile(int mi, int i)
{
v4 = missile[mi]._misource;
if ( v4 == myplr )
NetSendCmd(1u, CMD_REMSHIELD);
NetSendCmd(TRUE, CMD_REMSHIELD);
plr[v4].pManaShield = 0;
}
v5 = nummissiles - 1;
@ -1309,7 +1307,6 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i
int v11; // eax
int v12; // esi
int v13; // ebx
char v14; // al
int v15; // eax
//int v16; // eax
int v19; // ebx
@ -1364,8 +1361,7 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i
- (dist * dist >> 1)
+ plr[pnuma]._pIEnAc
+ 50;
v14 = plr[pnuma]._pClass;
if ( v14 == 1 )
if ( plr[pnuma]._pClass == PC_ROGUE )
v13 = plr[v12]._pDexterity
+ plr[v12]._pIBonusToHit
+ plr[v12]._pLevel
@ -1373,7 +1369,7 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i
- (dist * dist >> 1)
+ plr[pnuma]._pIEnAc
+ 70;
if ( !v14 )
if ( plr[pnuma]._pClass == PC_WARRIOR )
v13 += 10;
}
else
@ -1381,7 +1377,7 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i
v12 = pnuma;
v15 = 2 * SLOBYTE(monster[v7].mLevel);
v13 = plr[pnuma]._pMagic - v15 - dist + 50;
if ( _LOBYTE(plr[pnuma]._pClass) == 2 )
if ( plr[pnuma]._pClass == PC_SORCERER )
v13 = plr[v12]._pMagic - v15 - dist + 70;
}
if ( v13 < 5 )
@ -1411,7 +1407,7 @@ bool __fastcall MonsterMHit(int pnum, int m, int mindam, int maxdam, int dist, i
if ( !missiledata[v23].mType )
{
v20 = plr[v12]._pIBonusDamMod + v19 * plr[v12]._pIBonusDam / 100 + v19;
if ( _LOBYTE(plr[v12]._pClass) == 1 )
if ( plr[v12]._pClass == PC_ROGUE )
v19 = plr[v12]._pDamageMod + v20;
else
v19 = (plr[v12]._pDamageMod >> 1) + v20;
@ -1488,8 +1484,6 @@ bool __fastcall PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mt
int v24; // edi
int v25; // ecx
int v26; // eax
char v27; // al
int v28; // ecx
int v29; // eax
int v30; // eax
int v32; // [esp+Ch] [ebp-14h]
@ -1676,30 +1670,17 @@ LABEL_70:
SyncPlrKill(v24, earflag);
return 1;
}
v27 = plr[v9]._pClass;
if ( v27 )
{
if ( v27 == 1 )
{
v28 = PS_ROGUE69;
}
else
{
if ( v27 != 2 )
{
LABEL_78:
drawhpflag = TRUE;
return 1;
}
v28 = PS_MAGE69;
}
}
else
{
v28 = PS_WARR69;
if ( plr[v9]._pClass == PC_WARRIOR ) {
PlaySfxLoc(PS_WARR69, plr[v9].WorldX, plr[v9].WorldY);
} else if ( plr[v9]._pClass == PC_ROGUE ) {
PlaySfxLoc(PS_ROGUE69, plr[v9].WorldX, plr[v9].WorldY);
} else if ( plr[v9]._pClass == PC_SORCERER ) {
PlaySfxLoc(PS_MAGE69, plr[v9].WorldX, plr[v9].WorldY);
}
PlaySfxLoc(v28, plr[v9].WorldX, plr[v9].WorldY);
goto LABEL_78;
drawhpflag = TRUE;
return 1;
}
return 0;
}
@ -1717,8 +1698,6 @@ bool __fastcall Plr2PlrMHit(int pnum, int p, int mindam, int maxdam, int dist, i
bool v15; // sf
int v16; // ecx
int v17; // ebx
char v18; // al
int v19; // ecx
int v20; // eax
int v22; // [esp+Ch] [ebp-14h]
int v23; // [esp+10h] [ebp-10h]
@ -1760,7 +1739,7 @@ LABEL_14:
v10 = v26;
v12 = 2 * plr[v7]._pLevel;
v11 = plr[v26]._pMagic - v12 - dist + 50;
if ( _LOBYTE(plr[v26]._pClass) == 2 )
if ( plr[v26]._pClass == PC_SORCERER )
v11 = plr[v10]._pMagic - v12 - dist + 70;
}
else
@ -1773,10 +1752,9 @@ LABEL_14:
- plr[v7]._pIBonusAC
- plr[v7]._pIAC;
v11 = v12 + plr[v26]._pDexterity + 50;
_LOBYTE(v12) = plr[v26]._pClass;
if ( (_BYTE)v12 == 1 )
if ( plr[v26]._pClass == PC_ROGUE )
v11 += 20;
if ( !(_BYTE)v12 )
if ( plr[v26]._pClass == PC_WARRIOR )
v11 += 10;
}
if ( v11 < 5 )
@ -1830,7 +1808,7 @@ LABEL_14:
if ( v24 >= v16 )
{
if ( v26 == myplr )
NetSendCmdDamage(1u, arglist, v17);
NetSendCmdDamage(TRUE, arglist, v17);
StartPlrHit(arglist, v17, 0);
}
else
@ -1841,26 +1819,14 @@ LABEL_14:
return 1;
}
if ( v26 == myplr )
NetSendCmdDamage(1u, arglist, v17 - v27 * v17 / 100);
v18 = plr[v10]._pClass;
if ( v18 )
{
if ( v18 == 1 )
{
v19 = PS_ROGUE69;
}
else
{
if ( v18 != 2 )
return 1;
v19 = PS_MAGE69;
}
}
else
{
v19 = PS_WARR69;
NetSendCmdDamage(TRUE, arglist, v17 - v27 * v17 / 100);
if ( plr[v10]._pClass == PC_WARRIOR ) {
PlaySfxLoc(PS_WARR69, plr[v10].WorldX, plr[v10].WorldY);
} else if ( plr[v10]._pClass == PC_ROGUE ) {
PlaySfxLoc(PS_ROGUE69, plr[v10].WorldX, plr[v10].WorldY);
} else if ( plr[v10]._pClass == PC_SORCERER ) {
PlaySfxLoc(PS_MAGE69, plr[v10].WorldX, plr[v10].WorldY);
}
PlaySfxLoc(v19, plr[v10].WorldX, plr[v10].WorldY);
return 1;
}
return 0;
@ -2324,7 +2290,6 @@ void __fastcall AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, int
int v10; // ebx
int v11; // edi
int v12; // eax
char v13; // dl
int v14; // eax
int v15; // esi
int v16; // [esp-4h] [ebp-14h]
@ -2341,23 +2306,16 @@ void __fastcall AddLArrow(int mi, int sx, int sy, int dx, int dy, int midir, int
}
if ( (_BYTE)mienemy )
{
v16 = 32;
goto LABEL_11;
GetMissileVel(mi, v10, sy, v9, v11, 32);
}
v12 = id;
v13 = plr[id]._pClass;
if ( v13 == 1 )
{
if ( plr[id]._pClass == PC_ROGUE ) {
v16 = (plr[v12]._pLevel >> 2) + 31;
LABEL_11:
GetMissileVel(mi, v10, sy, v9, v11, v16);
goto LABEL_12;
}
if ( v13 )
} else if ( plr[id]._pClass == PC_SORCERER )
GetMissileVel(mi, v10, sy, v9, v11, 32);
else
GetMissileVel(mi, v10, sy, v9, v11, (plr[v12]._pLevel >> 3) + 31);
LABEL_12:
v14 = GetDirection16(v10, sy, v9, v11);
SetMissDir(mia, v14);
v15 = mia;
@ -2373,7 +2331,6 @@ void __fastcall AddArrow(int mi, int sx, int sy, int dx, int dy, int midir, int
int v10; // esi
int v11; // edi
int v12; // eax
char v13; // cl
int v14; // esi
int v15; // eax
int x1; // [esp+8h] [ebp-8h]
@ -2401,10 +2358,9 @@ void __fastcall AddArrow(int mi, int sx, int sy, int dx, int dy, int midir, int
{
v12 = random(64, 32) + 16;
}
v13 = plr[v11]._pClass;
if ( v13 == 1 )
if ( plr[v11]._pClass == PC_ROGUE )
v12 += (plr[v11]._pLevel - 1) >> 2;
if ( !v13 )
if ( plr[v11]._pClass == PC_WARRIOR )
v12 += (plr[v11]._pLevel - 1) >> 3;
GetMissileVel(i, x1, sy, v10, v9, v12);
}
@ -3065,13 +3021,13 @@ LABEL_14:
_LOWORD(v21) = (unsigned char)leveltype;
v22 = v21;
_LOWORD(v21) = (unsigned char)setlvlnum;
NetSendCmdLocParam3(1u, CMD_ACTIVATEPORTAL, v9, v11, v21, v22, 1);
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, v9, v11, v21, v22, 1);
}
else
{
_LOWORD(v20) = (unsigned char)leveltype;
_LOWORD(v21) = currlevel;
NetSendCmdLocParam3(1u, CMD_ACTIVATEPORTAL, v9, v11, v21, v20, 0);
NetSendCmdLocParam3(TRUE, CMD_ACTIVATEPORTAL, v9, v11, v21, v20, 0);
}
}
}
@ -3189,7 +3145,7 @@ void __fastcall AddManashield(int mi, int sx, int sy, int dx, int dy, int midir,
if ( !(_BYTE)mienemy )
UseMana(id, 11);
if ( id == myplr )
NetSendCmd(1u, CMD_SETSHIELD);
NetSendCmd(TRUE, CMD_SETSHIELD);
plr[id].pManaShield = 1;
}
@ -3825,7 +3781,6 @@ void __fastcall AddHeal(int mi, int sx, int sy, int dx, int dy, int midir, int m
signed int v10; // ebx
int v12; // edi
int i; // ebx
char v14; // al
int v15; // ecx
int *v16; // eax
int *v17; // eax
@ -3851,10 +3806,9 @@ void __fastcall AddHeal(int mi, int sx, int sy, int dx, int dy, int midir, int m
{
v12 += (random(57, 6) + 1) << 6;
}
v14 = plr[v9]._pClass;
if ( !v14 )
if ( plr[v9]._pClass == PC_WARRIOR )
v12 *= 2;
if ( v14 == 1 )
if ( plr[v9]._pClass == PC_ROGUE )
v12 += v12 >> 1;
v15 = plr[v9]._pMaxHP;
v16 = &plr[v9]._pHitPoints;
@ -5522,7 +5476,7 @@ void __fastcall MI_Town(int i)
ClrPlrPath(arglist);
if ( arglist == myplr )
{
NetSendCmdParam1(1u, CMD_WARP, missile[v1]._misource);
NetSendCmdParam1(TRUE, CMD_WARP, missile[v1]._misource);
*(v3 - 13) = 10;
}
}
@ -5728,7 +5682,7 @@ LABEL_31:
if ( v7 )
{
missile[v1]._miDelFlag = 1;
NetSendCmd(1u, CMD_ENDSHIELD);
NetSendCmd(TRUE, CMD_ENDSHIELD);
}
LABEL_33:
PutMissile(ia);

207
Source/monster.cpp

@ -2307,7 +2307,7 @@ void __fastcall M_StartHit(int i, int pnum, int dam)
if ( pnum == myplr )
{
delta_monster_hp(i, monster[i]._mhitpoints, currlevel);
NetSendCmdParam2(0, CMD_MONSTDAMAGE, v4, dam);
NetSendCmdParam2(FALSE, CMD_MONSTDAMAGE, v4, dam);
}
PlayEffect(v4, 1);
v5 = v4;
@ -2351,7 +2351,7 @@ void __fastcall M_StartHit(int i, int pnum, int dam)
}
}
void __fastcall M_DiabloDeath(int i, unsigned char sendmsg)
void __fastcall M_DiabloDeath(int i, BOOL sendmsg)
{
int v2; // esi
int v3; // edi
@ -2376,7 +2376,7 @@ void __fastcall M_DiabloDeath(int i, unsigned char sendmsg)
PlaySFX(USFX_DIABLOD);
quests[QTYPE_MOD]._qactive = 3;
if ( v2 )
NetSendCmdQuest(1u, 5u);
NetSendCmdQuest(TRUE, 5u);
gbProcessPlayers = 0;
_LOBYTE(sgbSaveSoundOn) = gbSoundOn;
v4 = 0;
@ -2449,7 +2449,7 @@ void __fastcall M2MStartHit(int mid, int i, int dam)
if ( v4 >= 0 )
monster[v4].mWhoHit |= 1 << v4;
delta_monster_hp(v3, monster[v5]._mhitpoints, currlevel);
NetSendCmdParam2(0, CMD_MONSTDAMAGE, v3, dam);
NetSendCmdParam2(FALSE, CMD_MONSTDAMAGE, v3, dam);
PlayEffect(v3, 1);
v6 = monster[v5].MType;
if ( v6->mtype >= MT_SNEAK && v6->mtype <= MT_ILLWEAV || dam >> 6 >= SLOBYTE(monster[v5].mLevel) + 3 )
@ -2488,7 +2488,7 @@ void __fastcall M2MStartHit(int mid, int i, int dam)
}
}
void __fastcall MonstStartKill(int i, int pnum, unsigned char sendmsg)
void __fastcall MonstStartKill(int i, int pnum, BOOL sendmsg)
{
signed int v3; // edi
int v4; // ebx
@ -2504,7 +2504,7 @@ void __fastcall MonstStartKill(int i, int pnum, unsigned char sendmsg)
v3 = i;
v4 = pnum;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MonstStartKill: Invalid monster %d", i);
v5 = v3;
if ( !monster[v3].MType )
@ -2528,7 +2528,7 @@ void __fastcall MonstStartKill(int i, int pnum, unsigned char sendmsg)
SpawnItem(v3, monster[v5]._mx, monster[v5]._my, sendmsg);
}
if ( monster[v5].MType->mtype == MT_DIABLO )
M_DiabloDeath(v3, 1u);
M_DiabloDeath(v3, TRUE);
else
PlayEffect(v3, 2);
if ( v4 < 0 )
@ -2573,7 +2573,7 @@ void __fastcall M2MStartKill(int i, int mid)
v2 = i;
v3 = mid;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
{
TermMsg("M2MStartKill: Invalid monster (attacker) %d", i);
TermMsg("M2MStartKill: Invalid monster (killed) %d", v3);
@ -2582,7 +2582,7 @@ void __fastcall M2MStartKill(int i, int mid)
TermMsg("M2MStartKill: Monster %d \"%s\" MType NULL", v3, monster[v3].mName);
v4 = v3;
delta_kill_monster(v3, monster[v3]._mx, monster[v3]._my, currlevel);
NetSendCmdLocParam1(0, CMD_MONSTDEATH, monster[v4]._mx, monster[v4]._my, v3);
NetSendCmdLocParam1(FALSE, CMD_MONSTDEATH, monster[v4]._mx, monster[v4]._my, v3);
monster[v4].mWhoHit |= 1 << v2;
if ( v2 < 4 )
AddPlrMonstExper(SLOBYTE(monster[v4].mLevel), (unsigned short)monster[v4].mExp, monster[v3].mWhoHit);
@ -2594,7 +2594,7 @@ void __fastcall M2MStartKill(int i, int mid)
if ( v3 >= 4 )
SpawnItem(v3, monster[v4]._mx, monster[v4]._my, 1u);
if ( monster[v4].MType->mtype == MT_DIABLO )
M_DiabloDeath(v3, 1u);
M_DiabloDeath(v3, TRUE);
else
PlayEffect(v2, 2);
PlayEffect(v3, 2);
@ -2625,30 +2625,20 @@ void __fastcall M2MStartKill(int i, int mid)
void __fastcall M_StartKill(int i, int pnum)
{
int v2; // edi
int v3; // ebx
int v4; // esi
int v5; // eax
v2 = i;
v3 = pnum;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS ) {
TermMsg("M_StartKill: Invalid monster %d", i);
if ( myplr == v3 )
{
v4 = v2;
delta_kill_monster(v2, monster[v2]._mx, monster[v2]._my, currlevel);
if ( v2 == v3 )
{
_LOWORD(v5) = currlevel;
NetSendCmdLocParam1(0, CMD_KILLGOLEM, monster[v4]._mx, monster[v4]._my, v5);
}
else
{
NetSendCmdLocParam1(0, CMD_MONSTDEATH, monster[v4]._mx, monster[v4]._my, v2);
}
if ( myplr == pnum ) {
delta_kill_monster(i, monster[i]._mx, monster[i]._my, currlevel);
if ( i == pnum ) {
NetSendCmdLocParam1(FALSE, CMD_KILLGOLEM, monster[i]._mx, monster[i]._my, currlevel);
} else {
NetSendCmdLocParam1(FALSE, CMD_MONSTDEATH, monster[i]._mx, monster[i]._my, i);
}
}
MonstStartKill(v2, v3, 1u);
MonstStartKill(i, pnum, TRUE);
}
void __fastcall M_SyncStartKill(int i, int x, int y, int pnum)
@ -2661,7 +2651,7 @@ void __fastcall M_SyncStartKill(int i, int x, int y, int pnum)
v4 = i;
v5 = x;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_SyncStartKill: Invalid monster %d", i);
v6 = v4;
if ( monster[v6]._mhitpoints && monster[v6]._mmode != MM_DEATH )
@ -2676,17 +2666,17 @@ void __fastcall M_SyncStartKill(int i, int x, int y, int pnum)
}
if ( monster[v6]._mmode == MM_STONE )
{
MonstStartKill(arglist, pnum, 0);
MonstStartKill(arglist, pnum, FALSE);
monster[v6]._mmode = MM_STONE;
}
else
{
MonstStartKill(arglist, pnum, 0);
MonstStartKill(arglist, pnum, FALSE);
}
}
}
void __fastcall M_StartFadein(int i, int md, unsigned char backwards)
void __fastcall M_StartFadein(int i, int md, BOOL backwards)
{
int v3; // esi
int v4; // ebx
@ -2699,8 +2689,10 @@ void __fastcall M_StartFadein(int i, int md, unsigned char backwards)
v3 = i;
v4 = md;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS ) {
TermMsg("M_StartFadein: Invalid monster %d", i);
}
v5 = v3;
if ( !monster[v5].MType )
TermMsg("M_StartFadein: Monster %d \"%s\" MType NULL", arglist, monster[v5].mName);
@ -2725,7 +2717,7 @@ void __fastcall M_StartFadein(int i, int md, unsigned char backwards)
}
}
void __fastcall M_StartFadeout(int i, int md, unsigned char backwards)
void __fastcall M_StartFadeout(int i, int md, BOOL backwards)
{
int v3; // ebx
int v4; // esi
@ -2737,7 +2729,7 @@ void __fastcall M_StartFadeout(int i, int md, unsigned char backwards)
v3 = i;
mda = md;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_StartFadeout: Invalid monster %d", i);
v4 = v3;
v5 = &monster[v3].MType;
@ -2772,7 +2764,7 @@ void __fastcall M_StartHeal(int i)
int v5; // eax
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_StartHeal: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -2839,7 +2831,7 @@ int __fastcall M_DoStand(int i)
unsigned char *v5; // eax
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoStand: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -2874,7 +2866,7 @@ int __fastcall M_DoWalk(int i)
int v13; // ecx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoWalk: Invalid monster %d", i);
v2 = v1;
v3 = 0;
@ -2927,7 +2919,7 @@ int __fastcall M_DoWalk2(int i)
int v9; // ecx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoWalk2: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -2981,7 +2973,7 @@ int __fastcall M_DoWalk3(int i)
int v14; // ecx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoWalk3: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -3123,7 +3115,7 @@ void __fastcall M_TryH2HHit(int i, int pnum, int Hit, int MinDam, int MaxDam)
v5 = i;
plr_num = pnum;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_TryH2HHit: Invalid monster %d", i);
v6 = v5;
if ( !monster[v5].MType )
@ -3318,7 +3310,7 @@ int __fastcall M_DoAttack(int i)
unsigned char v5; // al
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoAttack: Invalid monster %d", i);
v2 = v1;
v3 = &monster[v1].MType;
@ -3379,7 +3371,7 @@ int __fastcall M_DoRAttack(int i)
int v6; // edi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoRAttack: Invalid monster %d", i);
v2 = v1;
v3 = &monster[v1].MType;
@ -3433,7 +3425,7 @@ int __fastcall M_DoRSpAttack(int i)
int v5; // ecx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoRSpAttack: Invalid monster %d", i);
v2 = v1;
v3 = &monster[v1].MType;
@ -3488,7 +3480,7 @@ int __fastcall M_DoSAttack(int i)
bool v4; // zf
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoSAttack: Invalid monster %d", i);
v2 = v1;
v3 = &monster[v1].MType;
@ -3519,7 +3511,7 @@ int __fastcall M_DoFadein(int i)
int v2; // esi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoFadein: Invalid monster %d", i);
v2 = v1;
if ( (!(monster[v1]._mFlags & 2) || monster[v2]._mAnimFrame != 1)
@ -3542,7 +3534,7 @@ int __fastcall M_DoFadeout(int i)
int v6; // edx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoFadeout: Invalid monster %d", i);
v2 = v1;
v3 = monster[v1]._mFlags;
@ -3574,7 +3566,7 @@ int __fastcall M_DoHeal(int i)
int v8; // esi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoHeal: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mFlags & 8 )
@ -3618,7 +3610,7 @@ int __fastcall M_DoTalk(int i)
char *v9; // eax
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoTalk: Invalid monster %d", i);
v2 = v1;
M_StartStand(v1, monster[v1]._mdir);
@ -3724,7 +3716,7 @@ void __fastcall M_Teleport(int i)
v1 = i;
a1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
{
TermMsg("M_Teleport: Invalid monster %d", i);
//i = v2;
@ -3788,7 +3780,7 @@ int __fastcall M_DoGotHit(int i)
int v2; // esi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoGotHit: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -3808,7 +3800,7 @@ void __fastcall M_UpdateLeader(int i)
unsigned char *v5; // eax
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_UpdateLeader: Invalid monster %d", i);
v2 = nummonsters;
for ( j = 0; j < v2; ++j )
@ -3920,7 +3912,7 @@ int __fastcall M_DoDeath(int i)
int v11; // eax
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoDeath: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -3971,7 +3963,7 @@ int __fastcall M_DoSpStand(int i)
int v2; // esi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoSpStand: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -3995,7 +3987,7 @@ int __fastcall M_DoDelay(int i)
int v7; // ebx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoDelay: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1].MType )
@ -4026,7 +4018,7 @@ int __fastcall M_DoStone(int i)
int v3; // ecx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_DoStone: Invalid monster %d", i);
v2 = v1;
if ( !monster[v1]._mhitpoints )
@ -4059,7 +4051,7 @@ void __fastcall M_WalkDir(int i, int md)
v2 = i;
v3 = md;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_WalkDir: Invalid monster %d", i);
v4 = monster[v2].MType->Anims[1].Rate - 1;
switch ( v3 )
@ -4134,7 +4126,7 @@ void __fastcall GroupUnity(int i)
//int v13; // [esp+10h] [ebp-4h]
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("GroupUnity: Invalid monster %d", i);
v2 = v1;
if ( monster[v1].leaderflag )
@ -4314,7 +4306,7 @@ bool __fastcall M_PathWalk(int i)
char path[25]; // [esp+4h] [ebp-1Ch]
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("M_PathWalk: Invalid monster %d", i);
Check = PosOkMonst3;
if ( !(monster[v1]._mFlags & 0x200) )
@ -4475,7 +4467,7 @@ void __fastcall MAI_Zombie(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
{
TermMsg("MAI_Zombie: Invalid monster %d", i);
//i = v2;
@ -4545,7 +4537,7 @@ void __fastcall MAI_SkelSd(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_SkelSd: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND && v2->_msquelch )
@ -4603,7 +4595,7 @@ bool __fastcall MAI_Path(int i)
unsigned char v5; // al
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Path: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->MType->mtype != MT_GOLEM )
@ -4682,7 +4674,7 @@ void __fastcall MAI_Snake(int i)
esi1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Snake: Invalid monster %d", i);
pattern[2] = 0;
pattern[3] = -1;
@ -4861,7 +4853,7 @@ void __fastcall MAI_Bat(int i)
esi1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Bat: Invalid monster %d", i);
esi3 = &monster[esi1];
micaster = esi3->_menemy;
@ -4970,7 +4962,7 @@ void __fastcall MAI_SkelBow(int i)
v18 = 0;
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_SkelBow: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND && v2->_msquelch )
@ -5031,7 +5023,7 @@ void __fastcall MAI_Fat(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Fat: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND && v2->_msquelch )
@ -5091,8 +5083,10 @@ void __fastcall MAI_Sneak(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS ) {
TermMsg("MAI_Sneak: Invalid monster %d", i);
}
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND )
{
@ -5134,12 +5128,9 @@ void __fastcall MAI_Sneak(int i)
}
v2->_mdir = md;
v15 = random(112, 100);
if ( abs(v17) < v6 && abs(v4) < v6 && v2->_mFlags & 1 )
{
M_StartFadein(arglist, md, 0);
}
else
{
if ( abs(v17) < v6 && abs(v4) < v6 && v2->_mFlags & 1 ) {
M_StartFadein(arglist, md, FALSE);
} else {
v12 = v6 + 1;
if ( abs(v17) < v12 && abs(v4) < v12 || v2->_mFlags & 1 )
{
@ -5156,7 +5147,7 @@ void __fastcall MAI_Sneak(int i)
}
else
{
M_StartFadeout(arglist, md, 1u);
M_StartFadeout(arglist, md, TRUE);
}
}
if ( v2->_mmode == MM_STAND )
@ -5196,7 +5187,7 @@ void __fastcall MAI_Fireman(int i)
esi1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Fireman: Invalid monster %d", i);
esi3 = esi1;
if ( monster[esi3]._mmode || !monster[esi3]._msquelch )
@ -5227,7 +5218,7 @@ void __fastcall MAI_Fireman(int i)
if ( monster[esi3]._mgoalvar1 == 3 )
{
_LOBYTE(monster[esi3]._mgoal) = 1;
M_StartFadeout(arglist, v7, 1u);
M_StartFadeout(arglist, v7, TRUE);
}
else
{
@ -5254,7 +5245,7 @@ void __fastcall MAI_Fireman(int i)
}
break;
case 2:
M_StartFadein(arglist, v7, 0);
M_StartFadein(arglist, v7, FALSE);
LABEL_18:
_LOBYTE(monster[esi3]._mgoal) = 5;
break;
@ -5286,7 +5277,7 @@ void __fastcall MAI_Fireman(int i)
{
v15 = midir;
LABEL_29:
M_StartFadein(arglist, v15, 0);
M_StartFadein(arglist, v15, FALSE);
_LOBYTE(monster[esi3]._mgoal) = 5;
return;
}
@ -5313,7 +5304,7 @@ void __fastcall MAI_Fallen(int i)
int v16; // esi
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
{
TermMsg("MAI_Fallen: Invalid monster %d", i);
//i = v2;
@ -5416,7 +5407,7 @@ void __fastcall MAI_Cleaver(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Cleaver: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND && v2->_msquelch )
@ -5469,7 +5460,7 @@ void __fastcall MAI_Round(int i, unsigned char special)
v2 = i;
v27 = special;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Round: Invalid monster %d", i);
v3 = &monster[v2];
if ( v3->_mmode == MM_STAND && v3->_msquelch )
@ -5588,7 +5579,7 @@ void __fastcall MAI_Ranged(int i, int missile_type, unsigned char special)
v3 = i;
missile_typea = missile_type;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Ranged: Invalid monster %d", i);
v4 = v3;
if ( monster[v3]._mmode == MM_STAND )
@ -5685,7 +5676,7 @@ void __fastcall MAI_Scav(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Scav: Invalid monster %d", i);
v2 = v1;
v20 = 0;
@ -5833,7 +5824,7 @@ void __fastcall MAI_Garg(int i)
int v8; // [esp+10h] [ebp-4h]
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Garg: Invalid monster %d", i);
v2 = &monster[v1];
v3 = v2->_mx - v2->_lastx;
@ -5911,7 +5902,7 @@ void __fastcall MAI_RoundRanged(int i, int missile_type, unsigned char checkdoor
v5 = i;
missile_typea = missile_type;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_RoundRanged: Invalid monster %d", i);
v6 = &monster[v5];
if ( v6->_mmode == MM_STAND && v6->_msquelch )
@ -6086,7 +6077,7 @@ void __fastcall MAI_RR2(int i, int mistype, int dam)
v3 = i;
missile_type = mistype;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_RR2: Invalid monster %d", i);
v4 = &monster[v3];
v5 = v4->_my - (unsigned char)v4->_menemyy;
@ -6244,7 +6235,7 @@ void __fastcall MAI_Golum(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Golum: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mx != 1 || monster[v2]._my )
@ -6369,7 +6360,7 @@ void __fastcall MAI_SkelKing(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_SkelKing: Invalid monster %d", i);
v2 = &monster[v1];
if ( v2->_mmode == MM_STAND && v2->_msquelch )
@ -6520,7 +6511,7 @@ void __fastcall MAI_Rhino(int i)
esi1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Rhino: Invalid monster %d", i);
esi3 = &monster[esi1];
if ( esi3->_mmode == MM_STAND && esi3->_msquelch )
@ -6679,7 +6670,7 @@ void __fastcall MAI_Counselor(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Counselor: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND && monster[v2]._msquelch )
@ -6728,7 +6719,7 @@ void __fastcall MAI_Counselor(int i)
v15 = v1;
LABEL_21:
_LOBYTE(monster[v2]._mgoal) = 1;
M_StartFadein(v15, md, 1u);
M_StartFadein(v15, md, TRUE);
goto LABEL_39;
}
v19 = 2 * v18;
@ -6790,7 +6781,7 @@ void __fastcall MAI_Counselor(int i)
_LOBYTE(monster[v2]._mgoal) = 2;
LABEL_29:
monster[v2]._mgoalvar1 = 0;
M_StartFadeout(v1, v27, 0);
M_StartFadeout(v1, v27, FALSE);
goto LABEL_39;
}
if ( monster[v2]._mVar1 == 13
@ -6824,7 +6815,7 @@ void __fastcall MAI_Garbud(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Garbud: Invalid monster %d", i);
v2 = v1;
if ( monster[v2]._mmode == MM_STAND )
@ -6879,7 +6870,7 @@ void __fastcall MAI_Zhar(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Zhar: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND )
@ -6934,7 +6925,7 @@ void __fastcall MAI_SnotSpil(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_SnotSpil: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND )
@ -6996,7 +6987,7 @@ void __fastcall MAI_Lazurus(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Lazurus: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND )
@ -7062,7 +7053,7 @@ void __fastcall MAI_Lazhelp(int i)
v1 = i;
ia = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Lazhelp: Invalid monster %d", i);
v2 = v1;
if ( monster[v2]._mmode == MM_STAND )
@ -7103,7 +7094,7 @@ void __fastcall MAI_Lachdanan(int i)
int v6; // [esp+8h] [ebp-4h]
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Lachdanan: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND )
@ -7148,7 +7139,7 @@ void __fastcall MAI_Warlord(int i)
v1 = i;
arglist = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("MAI_Warlord: Invalid monster %d", i);
v2 = v1;
if ( monster[v1]._mmode == MM_STAND )
@ -7486,7 +7477,7 @@ bool __fastcall DirOK(int i, int mdir)
v3 = mdir;
v25 = mdir;
a1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("DirOK: Invalid monster %d", i);
v4 = v2;
v5 = offset_y[v3];
@ -7882,7 +7873,7 @@ void __fastcall SyncMonsterAnim(int i)
unsigned char *v13; // edx
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("SyncMonsterAnim: Invalid monster %d", i);
v2 = v1;
v3 = monster[v1]._mMTidx;
@ -8179,7 +8170,7 @@ void __fastcall MissToMonst(int i, int x, int y)
v3 = i;
v30 = x;
if ( (unsigned int)i >= MAXMISSILES )
if ( (DWORD)i >= MAXMISSILES )
TermMsg("MissToMonst: Invalid missile %d", i);
v4 = &missile[v3];
v5 = v4->_misource;
@ -8205,7 +8196,7 @@ void __fastcall MissToMonst(int i, int x, int y)
}
else
{
M_StartFadein(v5, v6->_mdir, 0);
M_StartFadein(v5, v6->_mdir, FALSE);
}
v9 = v32;
if ( v6->_mFlags & 0x10 )
@ -8702,7 +8693,7 @@ void __fastcall TalktoMonster(int i)
int inv_item_num; // [esp+8h] [ebp-4h]
v1 = i;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("TalktoMonster: Invalid monster %d", i);
v2 = &monster[v1];
v3 = v2->_mAi;
@ -8744,7 +8735,7 @@ void __fastcall SpawnGolum(int i, int x, int y, int mi)
v4 = i;
v5 = x;
if ( (unsigned int)i >= MAXMONSTERS )
if ( (DWORD)i >= MAXMONSTERS )
TermMsg("SpawnGolum: Invalid monster %d", i);
v6 = v4;
monster[v6]._mx = v5;

8
Source/monster.h

@ -56,14 +56,14 @@ void __fastcall M_StartEat(int i);
void __fastcall M_ClearSquares(int i);
void __fastcall M_GetKnockback(int i);
void __fastcall M_StartHit(int i, int pnum, int dam);
void __fastcall M_DiabloDeath(int i, unsigned char sendmsg);
void __fastcall M_DiabloDeath(int i, BOOL sendmsg);
void __fastcall M2MStartHit(int mid, int i, int dam);
void __fastcall MonstStartKill(int i, int pnum, unsigned char sendmsg);
void __fastcall MonstStartKill(int i, int pnum, BOOL sendmsg);
void __fastcall M2MStartKill(int i, int mid);
void __fastcall M_StartKill(int i, int pnum);
void __fastcall M_SyncStartKill(int i, int x, int y, int pnum);
void __fastcall M_StartFadein(int i, int md, unsigned char backwards);
void __fastcall M_StartFadeout(int i, int md, unsigned char backwards);
void __fastcall M_StartFadein(int i, int md, BOOL backwards);
void __fastcall M_StartFadeout(int i, int md, BOOL backwards);
void __fastcall M_StartHeal(int i);
void __fastcall M_ChangeLightOffset(int monst);
int __fastcall M_DoStand(int i);

14
Source/msg.cpp

@ -1109,20 +1109,18 @@ void __fastcall NetSendCmdGItem(BOOL bHiPri, unsigned char bCmd, unsigned char m
NetSendLoPri((unsigned char *)&cmd, 0x1Eu);
}
void __fastcall NetSendCmdGItem2(unsigned char usonly, unsigned char bCmd, unsigned char mast, unsigned char pnum, struct TCmdGItem *p)
void __fastcall NetSendCmdGItem2(BOOL usonly, unsigned char bCmd, unsigned char mast, unsigned char pnum, struct TCmdGItem *p)
{
unsigned char v5; // bl
int v6; // esi
int v7; // eax
TCmdGItem cmd; // [esp+8h] [ebp-20h]
v5 = bCmd;
v6 = usonly;
memcpy(&cmd, p, 0x1Eu);
cmd.bPnum = pnum;
cmd.bCmd = v5;
cmd.bMaster = mast;
if ( !v6 )
if ( !usonly )
{
cmd.dwTime = 0;
NetSendHiPri((unsigned char *)&cmd, 0x1Eu);
@ -1930,7 +1928,7 @@ int __fastcall On_REQUESTGITEM(struct TCmdGItem *pCmd, int pnum)
}
else
{
NetSendCmdGItem2(0, CMD_GETITEM, myplr, v8, v2);
NetSendCmdGItem2(FALSE, CMD_GETITEM, myplr, v8, v2);
if ( (unsigned char)v2->bPnum == myplr )
InvGetItem(myplr, v7);
else
@ -1989,7 +1987,7 @@ int __fastcall On_GETITEM(struct TCmdGItem *pCmd, int pnum)
v4 = FindGetItem((unsigned short)pCmd->wIndx, pCmd->wCI, pCmd->dwSeed);
if ( !delta_get_item(v2, v2->bLevel) )
{
NetSendCmdGItem2(1u, CMD_GETITEM, v2->bMaster, v2->bPnum, v2);
NetSendCmdGItem2(TRUE, CMD_GETITEM, v2->bMaster, v2->bPnum, v2);
return 30;
}
v6 = v2->bLevel;
@ -2162,7 +2160,7 @@ int __fastcall On_REQUESTAGITEM(struct TCmdGItem *pCmd, int pnum)
}
else
{
NetSendCmdGItem2(0, CMD_AGETITEM, myplr, v8, v2);
NetSendCmdGItem2(FALSE, CMD_AGETITEM, myplr, v8, v2);
if ( (unsigned char)v2->bPnum == myplr )
AutoGetItem(myplr, (unsigned char)v2->bCursitem);
else
@ -2201,7 +2199,7 @@ int __fastcall On_AGETITEM(struct TCmdGItem *pCmd, int pnum)
FindGetItem((unsigned short)pCmd->wIndx, pCmd->wCI, pCmd->dwSeed);
if ( !delta_get_item(v2, v2->bLevel) )
{
NetSendCmdGItem2(1u, CMD_AGETITEM, v2->bMaster, v2->bPnum, v2);
NetSendCmdGItem2(TRUE, CMD_AGETITEM, v2->bMaster, v2->bPnum, v2);
return 30;
}
v4 = v2->bLevel;

2
Source/msg.h

@ -58,7 +58,7 @@ void __fastcall NetSendCmdParam2(BOOL bHiPri, unsigned char bCmd, unsigned short
void __fastcall NetSendCmdParam3(BOOL bHiPri, unsigned char bCmd, unsigned short wParam1, unsigned short wParam2, unsigned short wParam3);
void __fastcall NetSendCmdQuest(BOOL bHiPri, unsigned char q);
void __fastcall NetSendCmdGItem(BOOL bHiPri, unsigned char bCmd, unsigned char mast, unsigned char pnum, int ii);
void __fastcall NetSendCmdGItem2(unsigned char usonly, unsigned char bCmd, unsigned char mast, unsigned char pnum, struct TCmdGItem *p);
void __fastcall NetSendCmdGItem2(BOOL usonly, unsigned char bCmd, unsigned char mast, unsigned char pnum, struct TCmdGItem *p);
bool __fastcall NetSendCmdReq2(unsigned char bCmd, unsigned char mast, unsigned char pnum, struct TCmdGItem *p);
void __fastcall NetSendCmdExtra(struct TCmdGItem *p);
void __fastcall NetSendCmdPItem(BOOL bHiPri, unsigned char bCmd, unsigned char x, unsigned char y);

213
Source/objects.cpp

@ -1474,13 +1474,10 @@ void __cdecl InitObjects()
//int v4; // eax
//int v5; // eax
//int v6; // eax
char v7; // al
signed int v8; // ebx
unsigned char *v9; // esi
//int v10; // eax
char v11; // al
//int v12; // eax
char v13; // al
unsigned char *v14; // esi
//int v15; // eax
//int v16; // [esp+0h] [ebp-4h]
@ -1532,21 +1529,12 @@ void __cdecl InitObjects()
//_LOBYTE(v6) = QuestStatus(QTYPE_BLIND);
if ( QuestStatus(QTYPE_BLIND) )
{
v7 = plr[myplr]._pClass;
if ( v7 )
{
if ( v7 == 1 )
{
v8 = QUEST_RBLINDING;
}
else
{
v8 = QUEST_MBLINDING;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v8 = QUEST_BLINDING;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v8 = QUEST_RBLINDING;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v8 = QUEST_MBLINDING;
}
quests[QTYPE_BLIND]._qmsg = v8;
AddBookLever(0, 0, 112, 112, setpc_x, setpc_y, setpc_w + setpc_x + 1, setpc_h + setpc_y + 1, v8);
@ -1557,21 +1545,12 @@ void __cdecl InitObjects()
//_LOBYTE(v10) = QuestStatus(QTYPE_BLOOD);
if ( QuestStatus(QTYPE_BLOOD) )
{
v11 = plr[myplr]._pClass;
if ( v11 )
{
if ( v11 == 1 )
{
v8 = QUEST_RBLOODY;
}
else if ( v11 == 2 )
{
v8 = QUEST_MBLOODY;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v8 = QUEST_BLOODY;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v8 = QUEST_RBLOODY;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v8 = QUEST_MBLOODY;
}
quests[QTYPE_BLOOD]._qmsg = v8;
AddBookLever(0, 0, 112, 112, setpc_x, setpc_y + 3, setpc_x + 2, setpc_y + 7, v8);
@ -1589,21 +1568,12 @@ void __cdecl InitObjects()
//_LOBYTE(v12) = QuestStatus(QTYPE_WARLRD);
if ( QuestStatus(QTYPE_WARLRD) )
{
v13 = plr[myplr]._pClass;
if ( v13 )
{
if ( v13 == 1 )
{
v8 = QUEST_RBLOODWAR;
}
else if ( v13 == 2 )
{
v8 = QUEST_MBLOODWAR;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v8 = QUEST_BLOODWAR;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v8 = QUEST_RBLOODWAR;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v8 = QUEST_MBLOODWAR;
}
quests[QTYPE_WARLRD]._qmsg = v8;
AddBookLever(0, 0, 112, 112, setpc_x, setpc_y, setpc_x + setpc_w, setpc_y + setpc_h, v8);
@ -2836,7 +2806,6 @@ void __fastcall Obj_BCrossDamage(int i)
bool v2; // zf
int v3; // ecx
int v4; // edx
char v5; // al
int v6; // ecx
int damage[4]; // [esp+4h] [ebp-18h]
int v8; // [esp+18h] [ebp-4h]
@ -2861,30 +2830,18 @@ void __fastcall Obj_BCrossDamage(int i)
if ( (signed int)(plr[v1]._pHitPoints & 0xFFFFFFC0) <= 0 )
{
SyncPlrKill(myplr, 0);
LABEL_15:
drawhpflag = TRUE;
return;
}
v5 = plr[v1]._pClass;
if ( v5 )
{
if ( v5 == 1 )
{
v6 = PS_ROGUE68;
}
else
{
if ( v5 != 2 )
goto LABEL_15;
v6 = PS_MAGE68;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v6 = PS_WARR68;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v6 = PS_ROGUE68;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v6 = PS_MAGE68;
}
PlaySfxLoc(v6, plr[v1].WorldX, plr[v1].WorldY);
goto LABEL_15;
drawhpflag = TRUE;
}
}
}
@ -3359,7 +3316,7 @@ void __fastcall OperateL1RDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v9 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
v7 = object[v3]._oVar1;
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
@ -3381,7 +3338,7 @@ void __fastcall OperateL1RDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
ObjSetMicro(v5, v6, 395);
@ -3431,7 +3388,7 @@ void __fastcall OperateL1LDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v9 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
v7 = object[v3]._oVar1;
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
@ -3453,7 +3410,7 @@ void __fastcall OperateL1LDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
if ( object[v3]._oVar1 == 214 )
@ -3503,7 +3460,7 @@ void __fastcall OperateL2RDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v7 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
ObjSetMicro(v8, v5, 540);
@ -3513,7 +3470,7 @@ void __fastcall OperateL2RDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
ObjSetMicro(v8, v5, 17);
@ -3557,7 +3514,7 @@ void __fastcall OperateL2LDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v7 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
ObjSetMicro(v8, v5, 538);
@ -3567,7 +3524,7 @@ void __fastcall OperateL2LDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
ObjSetMicro(v8, v5, 13);
@ -3611,7 +3568,7 @@ void __fastcall OperateL3RDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v7 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
ObjSetMicro(v8, v5, 534);
@ -3621,7 +3578,7 @@ void __fastcall OperateL3RDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
ObjSetMicro(v8, v5, 541);
@ -3665,7 +3622,7 @@ void __fastcall OperateL3LDoor(int pnum, int oi, unsigned char sendflag)
return;
}
if ( v7 == myplr && sendflag )
NetSendCmdParam1(1u, CMD_CLOSEDOOR, param1);
NetSendCmdParam1(TRUE, CMD_CLOSEDOOR, param1);
object[v3]._oVar4 = 0;
object[v3]._oSelFlag = 3;
ObjSetMicro(v8, v5, 531);
@ -3675,7 +3632,7 @@ void __fastcall OperateL3LDoor(int pnum, int oi, unsigned char sendflag)
else
{
if ( pnum == myplr && sendflag )
NetSendCmdParam1(1u, CMD_OPENDOOR, oi);
NetSendCmdParam1(TRUE, CMD_OPENDOOR, oi);
if ( !deltaload )
PlaySfxLoc(IS_DOOROPEN, object[v3]._ox, object[v3]._oy);
ObjSetMicro(v8, v5, 538);
@ -4007,7 +3964,7 @@ void __fastcall OperateLever(int pnum, int i)
LABEL_17:
ObjChangeMap(object[v2]._oVar1, object[v2]._oVar2, object[v2]._oVar3, object[v2]._oVar4);
if ( v8 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, param1);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, param1);
}
}
// 676190: using guessed type int deltaload;
@ -4194,7 +4151,7 @@ void __fastcall OperateBookLever(int pnum, int i)
object[v2]._oAnimFrame = object[v2]._oVar6;
InitQTextMsg(v12);
if ( v13 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, param1);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, param1);
}
}
// 5A5590: using guessed type char TransVal;
@ -4204,7 +4161,6 @@ void __fastcall OperateSChambBk(int pnum, int i)
{
int v2; // esi
int j; // edi
char v4; // al
signed int v5; // ecx
//int speech_id; // [esp+4h] [ebp-4h]
@ -4223,23 +4179,12 @@ void __fastcall OperateSChambBk(int pnum, int i)
quests[QTYPE_BONE]._qactive = 2;
quests[QTYPE_BONE]._qlog = 1;
}
v4 = plr[myplr]._pClass;
if ( v4 )
{
if ( v4 == 1 )
{
v5 = QUEST_RBONER;
}
else
{
v5 = QUEST_MBONER;
//if ( v4 != 2 )
//v5 = speech_id;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v5 = QUEST_BONER;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v5 = QUEST_RBONER;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v5 = QUEST_MBONER;
}
quests[QTYPE_BONE]._qmsg = v5;
InitQTextMsg(v5);
@ -4333,7 +4278,7 @@ LABEL_25:
object[v3]._oTrapFlag = 0;
LABEL_26:
if ( param1 == myplr )
NetSendCmdParam2(0, CMD_PLROPOBJ, param1, param2);
NetSendCmdParam2(FALSE, CMD_PLROPOBJ, param1, param2);
return;
}
}
@ -4345,7 +4290,6 @@ void __fastcall OperateMushPatch(int pnum, int i)
{
int v2; // esi
bool v3; // zf
char v4; // al
int v5; // ecx
int xx; // [esp+8h] [ebp-8h]
int yy; // [esp+Ch] [ebp-4h]
@ -4354,23 +4298,12 @@ void __fastcall OperateMushPatch(int pnum, int i)
{
if ( !deltaload && pnum == myplr )
{
v4 = plr[myplr]._pClass;
if ( v4 )
{
if ( v4 == 1 )
{
v5 = PS_ROGUE13;
}
else
{
if ( v4 != 2 )
return;
v5 = PS_MAGE13;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
v5 = PS_WARR13;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
v5 = PS_ROGUE13;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
v5 = PS_MAGE13;
}
PlaySFX(v5);
}
@ -4398,8 +4331,6 @@ void __fastcall OperateMushPatch(int pnum, int i)
void __fastcall OperateInnSignChest(int pnum, int i)
{
char v2; // al
int v3; // ecx
int v4; // esi
bool v5; // zf
int xx; // [esp+8h] [ebp-8h]
@ -4421,23 +4352,17 @@ void __fastcall OperateInnSignChest(int pnum, int i)
SpawnQuestItem(IDI_BANNER, xx, yy, 0, 0);
}
}
}
else if ( !deltaload && pnum == myplr )
{
v2 = plr[myplr]._pClass;
switch ( v2 )
{
case UI_WARRIOR:
v3 = PS_WARR24;
LABEL_8:
PlaySFX(v3);
return;
case UI_ROGUE:
v3 = PS_ROGUE24;
goto LABEL_8;
case UI_SORCERER:
v3 = PS_MAGE24;
goto LABEL_8;
} else if ( !deltaload && pnum == myplr ) {
switch ( plr[myplr]._pClass ) {
case PC_WARRIOR:
PlaySFX(PS_WARR24);
break;
case PC_ROGUE:
PlaySFX(PS_ROGUE24);
break;
case PC_SORCERER:
PlaySFX(PS_MAGE24);
break;
}
}
}
@ -4472,7 +4397,7 @@ void __fastcall OperateSlainHero(int pnum, int i, unsigned char sendmsg)
PlaySfxLoc(v8, plr[myplr].WorldX, plr[myplr].WorldY);
if ( v4 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
return;
}
}
@ -4559,7 +4484,7 @@ void __fastcall OperateSarc(int pnum, int i, unsigned char sendmsg)
if ( object[v4]._oVar1 >= 8 )
SpawnSkeleton(object[v4]._oVar2, object[v4]._ox, object[v4]._oy);
if ( v7 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
}
else
{
@ -5772,7 +5697,7 @@ LABEL_280:
CalcPlrInv(arglist, 1u);
drawpanflag = 255;
if ( arglist == myplr )
NetSendCmdParam2(0, CMD_PLROPOBJ, arglist, param2);
NetSendCmdParam2(FALSE, CMD_PLROPOBJ, arglist, param2);
return;
}
}
@ -5814,7 +5739,7 @@ void __fastcall OperateSkelBook(int pnum, int i, unsigned char sendmsg)
else
CreateTypeItem(v8, v9, 0, ITYPE_MISC, 24, sendmsg, 0);
if ( v10 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
}
}
}
@ -5854,7 +5779,7 @@ void __fastcall OperateBookCase(int pnum, int i, unsigned char sendmsg)
monster[4]._mmode = MM_TALK;
}
if ( v4 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
}
}
}
@ -5881,7 +5806,7 @@ void __fastcall OperateDecap(int pnum, int i, unsigned char sendmsg)
SetRndSeed(object[v4]._oRndSeed);
CreateRndItem(object[v4]._ox, object[v4]._oy, 0, sendmsg, 0);
if ( v5 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
}
}
}
@ -5936,7 +5861,7 @@ void __fastcall OperateArmorStand(int pnum, int i, unsigned char sendmsg)
CreateTypeItem(object[v4]._ox, object[v4]._oy, 1u, v9, 0, v10, 0);
LABEL_15:
if ( v11 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
return;
}
}
@ -6113,7 +6038,7 @@ LABEL_38:
2 * (unsigned char)leveltype);
v5 = 1;
if ( v4 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v2);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v2);
}
break;
default:
@ -6170,7 +6095,7 @@ LABEL_38:
CheckStats(v4);
v5 = 1;
if ( v4 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, param1);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, param1);
}
break;
}
@ -6242,7 +6167,7 @@ LABEL_12:
else
CreateTypeItem(v11, v12, 1u, v9, 0, sendmsg, 0);
if ( v14 == myplr )
NetSendCmdParam1(0, CMD_OPERATEOBJ, v3);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v3);
}
}
// 5BB1ED: using guessed type char leveltype;
@ -6264,7 +6189,7 @@ void __fastcall OperateStoryBook(int pnum, int i)
object[v3]._oAnimFrame = object[v3]._oVar4;
PlaySfxLoc(IS_ISCROL, v5, v4);
InitQTextMsg(object[v3]._oVar2);
NetSendCmdParam1(0, CMD_OPERATEOBJ, v2);
NetSendCmdParam1(FALSE, CMD_OPERATEOBJ, v2);
}
}
// 646D00: using guessed type char qtextflag;
@ -6756,7 +6681,7 @@ void __fastcall BreakBarrel(int pnum, int i, int dam, unsigned char forcebreak,
SpawnSkeleton(object[v5]._oVar4, object[v5]._ox, object[v5]._oy);
}
if ( param1 == myplr )
NetSendCmdParam2(0, CMD_BREAKOBJ, param1, param2);
NetSendCmdParam2(FALSE, CMD_BREAKOBJ, param1, param2);
}
else
{

2
Source/pack.cpp

@ -171,7 +171,7 @@ void __fastcall UnPackPlayer(PkPlayerStruct *pPack, int pnum, bool killok)
ClrPlrPath(pnum);
pPlayer->destAction = ACTION_NONE;
strcpy(pPlayer->_pName, pPack->pName);
_LOBYTE(pPlayer->_pClass) = pPack->pClass;
pPlayer->_pClass = pPack->pClass;
InitPlayer(pnum, TRUE);
pPlayer->_pBaseStr = (unsigned char)pPack->pBaseStr;
pPlayer->_pStrength = (unsigned char)pPack->pBaseStr;

2
Source/player.cpp

@ -1708,7 +1708,7 @@ void __fastcall StartPlayerKill(int pnum, int earflag)
PlrDeadItem(pnum, &ear, 0, 0);
}
} else {
ItemStruct *pi = &plr[pnum].InvBody[INVLOC_HEAD];
ItemStruct *pi = &plr[pnum].InvBody[0];
i = NUM_INVLOC;
while (i != 0) {
i--;

2
Source/portal.cpp

@ -167,7 +167,7 @@ void __cdecl GetPortalLevel()
if ( portalindex == myplr )
{
NetSendCmd(1, CMD_DEACTIVATEPORTAL);
NetSendCmd(TRUE, CMD_DEACTIVATEPORTAL);
DeactivatePortal(portalindex);
}
}

155
Source/quests.cpp

@ -189,7 +189,7 @@ void __cdecl CheckQuests()
{
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);
quests[QTYPE_VB]._qvar1 = 3;
NetSendCmdQuest(1u, 0xFu);
NetSendCmdQuest(TRUE, 0xFu);
}
}
if ( gbMaxPlayers != 1 )
@ -318,24 +318,17 @@ BOOL __fastcall QuestStatus(int i)
// 5CF31D: using guessed type char setlevel;
// 679660: using guessed type char gbMaxPlayers;
void __fastcall CheckQuestKill(int m, unsigned char sendmsg)
void __fastcall CheckQuestKill(int m, BOOL sendmsg)
{
int v2; // ecx
char v3; // al
char v4; // al
unsigned char v5; // dl
char v6; // al
char *v7; // ecx
char v8; // al
char v9; // al
int v10; // edi
int (*v11)[112]; // esi
signed int v12; // ecx
int *v13; // eax
int (*v14)[112]; // ebx
char v15; // al
char v16; // al
char v17; // al
v2 = m;
v3 = monster[v2].MType->mtype;
@ -343,27 +336,19 @@ void __fastcall CheckQuestKill(int m, unsigned char sendmsg)
{
quests[QTYPE_KING]._qactive = 3;
sfxdelay = 30;
v4 = plr[myplr]._pClass;
if ( v4 )
{
if ( v4 == 1 )
{
sfxdnum = PS_ROGUE82;
}
else if ( v4 == 2 )
{
sfxdnum = PS_MAGE82;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR82;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE82;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE82;
}
if ( sendmsg )
{
v5 = 12;
LABEL_10:
NetSendCmdQuest(1u, v5);
NetSendCmdQuest(TRUE, v5);
return;
}
}
@ -376,21 +361,12 @@ LABEL_10:
{
quests[QTYPE_GARB]._qactive = 3;
sfxdelay = 30;
v8 = plr[myplr]._pClass;
if ( v8 )
{
if ( v8 == 1 )
{
sfxdnum = PS_ROGUE61;
}
else if ( v8 == 2 )
{
sfxdnum = PS_MAGE61;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR61;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE61;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE61;
}
return;
}
@ -398,21 +374,12 @@ LABEL_10:
{
quests[QTYPE_ZHAR]._qactive = 3;
sfxdelay = 30;
v9 = plr[myplr]._pClass;
if ( v9 )
{
if ( v9 == 1 )
{
sfxdnum = PS_ROGUE62;
}
else if ( v9 == 2 )
{
sfxdnum = PS_MAGE62;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR62;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE62;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE62;
}
return;
}
@ -449,25 +416,16 @@ LABEL_10:
++v10;
}
while ( (signed int)v11 < (signed int)dPiece[1] );
v15 = plr[myplr]._pClass;
if ( v15 )
{
if ( v15 == 1 )
{
sfxdnum = PS_ROGUE83;
}
else if ( v15 == 2 )
{
sfxdnum = PS_MAGE83;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR83;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE83;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE83;
}
if ( sendmsg )
{
NetSendCmdQuest(1u, 0xFu);
NetSendCmdQuest(TRUE, 0xFu);
v5 = 5;
goto LABEL_10;
}
@ -482,21 +440,12 @@ LABEL_10:
quests[QTYPE_VB]._qvar2 = 4;
quests[QTYPE_MOD]._qactive = 2;
AddMissile(35, 32, 35, 32, 0, 65, 0, myplr, 0, 0);
v16 = plr[myplr]._pClass;
if ( v16 )
{
if ( v16 == 1 )
{
sfxdnum = PS_ROGUE83;
}
else if ( v16 == 2 )
{
sfxdnum = PS_MAGE83;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR83;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE83;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE83;
}
return;
}
@ -505,42 +454,24 @@ LABEL_10:
{
quests[QTYPE_WARLRD]._qactive = 3;
sfxdelay = 30;
v17 = plr[myplr]._pClass;
if ( v17 )
{
if ( v17 == 1 )
{
sfxdnum = PS_ROGUE94;
}
else if ( v17 == 2 )
{
sfxdnum = PS_MAGE94;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR94;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE94;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE94;
}
}
return;
}
quests[QTYPE_BUTCH]._qactive = 3;
sfxdelay = 30;
v6 = plr[myplr]._pClass;
if ( v6 )
{
if ( v6 == 1 )
{
sfxdnum = PS_ROGUE80;
}
else if ( v6 == 2 )
{
sfxdnum = PS_MAGE80;
}
}
else
{
if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR80;
} else if ( plr[myplr]._pClass == PC_ROGUE ) {
sfxdnum = PS_ROGUE80;
} else if ( plr[myplr]._pClass == PC_SORCERER ) {
sfxdnum = PS_MAGE80;
}
if ( sendmsg )
{
@ -969,19 +900,19 @@ void __cdecl ResyncMPQuests()
&& currlevel <= (unsigned char)quests[QTYPE_KING]._qlevel + 1 )
{
quests[QTYPE_KING]._qactive = 2;
NetSendCmdQuest(1u, 0xCu);
NetSendCmdQuest(TRUE, 0xCu);
}
if ( quests[QTYPE_BUTCH]._qactive == 1
&& currlevel >= (unsigned char)quests[QTYPE_BUTCH]._qlevel - 1
&& currlevel <= (unsigned char)quests[QTYPE_BUTCH]._qlevel + 1 )
{
quests[QTYPE_BUTCH]._qactive = 2;
NetSendCmdQuest(1u, 6u);
NetSendCmdQuest(TRUE, 6u);
}
if ( quests[QTYPE_VB]._qactive == 1 && currlevel == (unsigned char)quests[QTYPE_VB]._qlevel - 1 )
{
quests[QTYPE_VB]._qactive = 2;
NetSendCmdQuest(1u, 0xFu);
NetSendCmdQuest(TRUE, 0xFu);
}
if ( QuestStatus(QTYPE_VB) )
AddObject(OBJ_ALTBOY, 2 * setpc_x + 20, 2 * setpc_y + 22);

2
Source/quests.h

@ -20,7 +20,7 @@ void __cdecl InitQuests();
void __cdecl CheckQuests();
bool __cdecl ForceQuests();
BOOL __fastcall QuestStatus(int i);
void __fastcall CheckQuestKill(int m, unsigned char sendmsg);
void __fastcall CheckQuestKill(int m, BOOL sendmsg);
void __cdecl DrawButcher();
void __fastcall DrawSkelKing(int q, int x, int y);
void __fastcall DrawWarLord(int x, int y);

1
Source/stores.cpp

@ -734,7 +734,6 @@ void __fastcall S_ScrollSBuy(int idx)
void __fastcall PrintStoreItem(ItemStruct *x, int l, char iclr)
{
ItemStruct *v3; // esi
bool v4; // zf
char v5; // cl
char v6; // cl
int v7; // eax

17
Source/towners.cpp

@ -1048,7 +1048,7 @@ void __fastcall TalkToTowner(int p, int t)
towner[v7]._tVar1 = v3;
InitQTextMsg(QUEST_KING2);
towner[v7]._tMsgSaid = 1;
NetSendCmdQuest(1u, 0xCu);
NetSendCmdQuest(TRUE, 0xCu);
}
if ( quests[QTYPE_KING]._qactive == 3 && quests[QTYPE_KING]._qvar2 == 1 && !towner[v7]._tMsgSaid )
{
@ -1058,7 +1058,7 @@ void __fastcall TalkToTowner(int p, int t)
towner[v7]._tVar1 = v3;
InitQTextMsg(QUEST_KING4);
towner[v7]._tMsgSaid = 1;
NetSendCmdQuest(1u, 0xCu);
NetSendCmdQuest(TRUE, 0xCu);
}
}
if ( gbMaxPlayers == 1 && plr[v6]._pLvlVisited[3] && quests[QTYPE_BOL]._qactive )
@ -1111,13 +1111,12 @@ LABEL_39:
{
if ( quests[QTYPE_BUTCH]._qvar1 == 1 )
{
v11 = _LOBYTE(plr[v6]._pClass) == 0;
towner[v7]._tbtcnt = 150;
towner[v7]._tVar1 = v3;
quests[QTYPE_BUTCH]._qvar1 = 1;
if ( v11 && (v12 = PS_WARR8, !effect_is_playing(PS_WARR8))
|| _LOBYTE(plr[v6]._pClass) == 1 && (v12 = PS_ROGUE8, !effect_is_playing(PS_ROGUE8))
|| _LOBYTE(plr[v6]._pClass) == 2 && (v12 = PS_MAGE8, !effect_is_playing(PS_MAGE8)) )
if ( plr[v6]._pClass == PC_WARRIOR && (v12 = PS_WARR8, !effect_is_playing(PS_WARR8))
|| plr[v6]._pClass == PC_ROGUE && (v12 = PS_ROGUE8, !effect_is_playing(PS_ROGUE8))
|| plr[v6]._pClass == PC_SORCERER && (v12 = PS_MAGE8, !effect_is_playing(PS_MAGE8)) )
{
PlaySFX(v12);
}
@ -1151,7 +1150,7 @@ LABEL_53:
towner[v7]._tVar2 = 3;
InitQTextMsg(QUEST_BUTCH9);
towner[v7]._tMsgSaid = 1;
NetSendCmdQuest(1u, 6u);
NetSendCmdQuest(TRUE, 6u);
return;
}
if ( v2 != GetActiveTowner(0) )
@ -1363,7 +1362,7 @@ LABEL_131:
quests[QTYPE_VB]._qlog = 1;
v19 = 15;
LABEL_153:
NetSendCmdQuest(1u, v19);
NetSendCmdQuest(TRUE, v19);
goto LABEL_154;
}
}
@ -1374,7 +1373,7 @@ LABEL_153:
towner[v7]._tVar1 = v3;
InitQTextMsg(QUEST_VILE3);
towner[v7]._tMsgSaid = 1;
NetSendCmdQuest(1u, 0xFu);
NetSendCmdQuest(TRUE, 0xFu);
quests[QTYPE_VB]._qlog = 1;
v19 = 5;
goto LABEL_153;

4
Source/track.cpp

@ -36,7 +36,7 @@ void __cdecl track_process()
if ( v1 - sgdwLastWalk >= 300 )
{
sgdwLastWalk = v1;
NetSendCmdLoc(1u, CMD_WALKXY, cursmx, cursmy);
NetSendCmdLoc(TRUE, CMD_WALKXY, cursmx, cursmy);
if ( !sgbIsScrolling )
sgbIsScrolling = 1;
}
@ -57,7 +57,7 @@ void __fastcall track_repeat_walk(bool rep)
{
sgbIsScrolling = 0;
sgdwLastWalk = GetTickCount() - 50;
NetSendCmdLoc(1u, CMD_WALKXY, cursmx, cursmy);
NetSendCmdLoc(TRUE, CMD_WALKXY, cursmx, cursmy);
}
else if ( sgbIsScrolling )
{

26
Source/trigs.cpp

@ -1265,8 +1265,6 @@ void __cdecl CheckTriggers()
int v4; // edx
signed int v5; // edx
int v6; // eax
char v7; // al
int v8; // ecx
int v9; // [esp-4h] [ebp-20h]
int x; // [esp+Ch] [ebp-10h]
int y; // [esp+10h] [ebp-Ch]
@ -1359,24 +1357,20 @@ LABEL_33:
StartNewLvl(myplr, *v0, v9);
goto LABEL_34;
}
v7 = plr[myplr]._pClass;
switch ( v7 )
{
case UI_WARRIOR:
v8 = PS_WARR43;
goto LABEL_42;
case UI_ROGUE:
v8 = PS_ROGUE43;
goto LABEL_42;
case UI_SORCERER:
v8 = PS_MAGE43;
LABEL_42:
PlaySFX(v8);
switch ( plr[myplr]._pClass ) {
case PC_WARRIOR:
PlaySFX(PS_WARR43);
break;
case PC_ROGUE:
PlaySFX(PS_ROGUE43);
break;
case PC_SORCERER:
PlaySFX(PS_MAGE43);
break;
}
_LOBYTE(v2) = error_id;
InitDiabloMsg(v2);
NetSendCmdLoc(1u, CMD_WALKXY, x, y);
NetSendCmdLoc(TRUE, CMD_WALKXY, x, y);
}
// 679660: using guessed type char gbMaxPlayers;
// 6ABB30: using guessed type int TWarpFrom;

Loading…
Cancel
Save