From 308bbc7acb07e07341b12430c0a3a1f2c67bc0a8 Mon Sep 17 00:00:00 2001 From: qndel Date: Sun, 19 Jan 2020 23:27:18 +0100 Subject: [PATCH] [hellfire] StripTopGold bin exact --- Source/player.cpp | 31 +++++++++++++++++++++++++++++++ Source/player.h | 3 +++ 2 files changed, 34 insertions(+) diff --git a/Source/player.cpp b/Source/player.cpp index 841a36957..7170ad682 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -2105,6 +2105,37 @@ void DropHalfPlayersGold(int pnum) plr[pnum]._pGold = CalculateGold(pnum); } +#ifdef HELLFIRE +void StripTopGold(int pnum) +{ + ItemStruct tmpItem; + int i, val; + + if ((DWORD)pnum >= MAX_PLRS) { + app_fatal("StripTopGold: illegal player %d", pnum); + } + tmpItem = plr[pnum].HoldItem; + + for (i = 0; i < plr[pnum]._pNumInv; i++) { + if (plr[pnum].InvList[i]._itype == ITYPE_GOLD) { + if (plr[pnum].InvList[i]._ivalue > MaxGold) { + val = plr[pnum].InvList[i]._ivalue - MaxGold; + plr[pnum].InvList[i]._ivalue = MaxGold; + SetGoldCurs(pnum, i); + SetPlrHandItem(&plr[pnum].HoldItem, 0); + GetGoldSeed(pnum, &plr[pnum].HoldItem); + SetPlrHandGoldCurs(&plr[pnum].HoldItem); + plr[pnum].HoldItem._ivalue = val; + if (!GoldAutoPlace(pnum)) + PlrDeadItem(pnum, &plr[pnum].HoldItem, 0, 0); + } + } + } + plr[pnum]._pGold = CalculateGold(pnum); + plr[pnum].HoldItem = tmpItem; +} + +#endif void SyncPlrKill(int pnum, int earflag) { int ma, i; diff --git a/Source/player.h b/Source/player.h index 3ce78d1a7..fcb960465 100644 --- a/Source/player.h +++ b/Source/player.h @@ -64,6 +64,9 @@ void RespawnDeadItem(ItemStruct *itm, int x, int y); void StartPlayerKill(int pnum, int earflag); void PlrDeadItem(int pnum, ItemStruct *itm, int xx, int yy); void DropHalfPlayersGold(int pnum); +#ifdef HELLFIRE +void StripTopGold(int pnum); +#endif void SyncPlrKill(int pnum, int earflag); void j_StartPlayerKill(int pnum, int earflag); void RemovePlrMissiles(int pnum);