From 936bda539a2fd33b18bf4967428ca2a18aed044d Mon Sep 17 00:00:00 2001 From: qndel Date: Sat, 31 Aug 2019 08:29:29 +0200 Subject: [PATCH] [hellfire] CreatePlrItems bin exact (#1473) --- Source/items.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 6 deletions(-) diff --git a/Source/items.cpp b/Source/items.cpp index a6a054531..2b120cca5 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -871,8 +871,9 @@ void CreatePlrItems(int p) int i; ItemStruct *pi = plr[p].InvBody; - for (i = 0; i < NUM_INVLOC; i++) { - pi[i]._itype = ITYPE_NONE; + for (i = NUM_INVLOC; i != 0; i--) { + pi->_itype = ITYPE_NONE; + pi++; } // converting this to a for loop creates a `rep stosd` instruction, @@ -880,15 +881,17 @@ void CreatePlrItems(int p) memset(&plr[p].InvGrid, 0, sizeof(plr[p].InvGrid)); pi = plr[p].InvList; - for (i = 0; i < NUM_INV_GRID_ELEM; i++) { - pi[i]._itype = ITYPE_NONE; + for (i = NUM_INV_GRID_ELEM; i != 0; i--) { + pi->_itype = ITYPE_NONE; + pi++; } plr[p]._pNumInv = 0; pi = plr[p].SpdList; - for (i = 0; i < MAXBELTITEMS; i++) { - pi[i]._itype = ITYPE_NONE; + for (i = MAXBELTITEMS; i != 0; i--) { + pi->_itype = ITYPE_NONE; + pi++; } switch (plr[p]._pClass) { @@ -930,11 +933,55 @@ void CreatePlrItems(int p) SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_LEFT], IDI_SORCEROR); GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_LEFT]); +#ifdef HELLFIRE + SetPlrHandItem(&plr[p].SpdList[0], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[0]); + + SetPlrHandItem(&plr[p].SpdList[1], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[1]); +#else SetPlrHandItem(&plr[p].SpdList[0], IDI_MANA); GetPlrHandSeed(&plr[p].SpdList[0]); SetPlrHandItem(&plr[p].SpdList[1], IDI_MANA); GetPlrHandSeed(&plr[p].SpdList[1]); +#endif + break; +#endif + +#ifdef HELLFIRE + case PC_MONK: + SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_LEFT], 36); + GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_LEFT]); + SetPlrHandItem(&plr[p].SpdList[0], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[0]); + + SetPlrHandItem(&plr[p].SpdList[1], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[1]); + break; + case PC_BARD: + SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_LEFT], 37); + GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_LEFT]); + + SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_RIGHT], 38); + GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_RIGHT]); + SetPlrHandItem(&plr[p].SpdList[0], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[0]); + + SetPlrHandItem(&plr[p].SpdList[1], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[1]); + break; + case PC_BARBARIAN: + SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_LEFT], 139); + GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_LEFT]); + + SetPlrHandItem(&plr[p].InvBody[INVLOC_HAND_RIGHT], 2); + GetPlrHandSeed(&plr[p].InvBody[INVLOC_HAND_RIGHT]); + SetPlrHandItem(&plr[p].SpdList[0], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[0]); + + SetPlrHandItem(&plr[p].SpdList[1], IDI_HEAL); + GetPlrHandSeed(&plr[p].SpdList[1]); break; #endif }