diff --git a/Source/items.cpp b/Source/items.cpp index a2c7292d3..8b5ff39a5 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -2446,13 +2446,13 @@ void GetUniqueItem(int i, _unique_items uid) items[i]._iCreateInfo |= CF_UNIQUE; } -void SpawnUnique(_unique_items uid, int x, int y) +void SpawnUnique(_unique_items uid, Point position) { if (numitems >= MAXITEMS) return; int ii = AllocateItem(); - GetSuperItemSpace({ x, y }, ii); + GetSuperItemSpace(position, ii); int curlv = items_get_currlevel(); int idx = 0; @@ -2535,7 +2535,7 @@ void SpawnItem(int m, Point position, bool sendmsg) if (monster[m]._uniqtype || ((monster[m].MData->mTreasure & 0x8000) && gbIsMultiplayer)) { idx = RndUItem(m); if (idx < 0) { - SpawnUnique((_unique_items) - (idx + 1), position.x, position.y); + SpawnUnique((_unique_items) - (idx + 1), position); return; } onlygood = true; @@ -2547,7 +2547,7 @@ void SpawnItem(int m, Point position, bool sendmsg) idx--; onlygood = false; } else { - SpawnUnique((_unique_items) - (idx + 1), position.x, position.y); + SpawnUnique((_unique_items) - (idx + 1), position); return; } } else { diff --git a/Source/items.h b/Source/items.h index 6b08326f5..b0bfb3875 100644 --- a/Source/items.h +++ b/Source/items.h @@ -414,7 +414,7 @@ void SaveItemPower(int i, item_effect_type power, int param1, int param2, int mi void GetItemPower(int i, int minlvl, int maxlvl, affix_item_type flgs, bool onlygood); void SetupItem(int i); int RndItem(int m); -void SpawnUnique(_unique_items uid, int x, int y); +void SpawnUnique(_unique_items uid, Point position); void SpawnItem(int m, Point position, bool sendmsg); void CreateRndItem(Point position, bool onlygood, bool sendmsg, bool delta); void CreateRndUseful(Point position, bool sendmsg); diff --git a/Source/monster.cpp b/Source/monster.cpp index 969fcf7f3..c6147a42b 100644 --- a/Source/monster.cpp +++ b/Source/monster.cpp @@ -2453,7 +2453,7 @@ bool M_DoTalk(int i) quests[Q_VEIL]._qlog = true; } if (monster[i].mtalkmsg == TEXT_VEIL11 && !(monster[i]._mFlags & MFLAG_QUEST_COMPLETE)) { - SpawnUnique(UITEM_STEELVEIL, monster[i].position.tile.x + 1, monster[i].position.tile.y + 1); + SpawnUnique(UITEM_STEELVEIL, monster[i].position.tile + DIR_S); monster[i]._mFlags |= MFLAG_QUEST_COMPLETE; } } diff --git a/Source/objects.cpp b/Source/objects.cpp index 8402877dc..4078c254f 100644 --- a/Source/objects.cpp +++ b/Source/objects.cpp @@ -3018,7 +3018,7 @@ void OperateBookLever(int pnum, int i) if (object[i]._otype != OBJ_BLOODBOOK) ObjChangeMap(object[i]._oVar1, object[i]._oVar2, object[i]._oVar3, object[i]._oVar4); if (object[i]._otype == OBJ_BLINDBOOK) { - SpawnUnique(UITEM_OPTAMULET, x + 5, y + 5); + SpawnUnique(UITEM_OPTAMULET, Point { x, y } + Point { 5, 5 }); tren = TransVal; TransVal = 9; DRLG_MRectTrans(object[i]._oVar1, object[i]._oVar2, object[i]._oVar3, object[i]._oVar4); @@ -3316,7 +3316,7 @@ void OperatePedistal(int pnum, int i) PlaySfxLoc(LS_BLODSTAR, object[i].position.x, object[i].position.y); ObjChangeMap(object[i]._oVar1, object[i]._oVar2, object[i]._oVar3, object[i]._oVar4); LoadMapObjs("Levels\\L2Data\\Blood2.DUN", 2 * setpc_x, 2 * setpc_y); - SpawnUnique(UITEM_ARMOFVAL, 2 * setpc_x + 25, 2 * setpc_y + 19); + SpawnUnique(UITEM_ARMOFVAL, Point { setpc_x, setpc_y } * 2 + Point { 25, 19 }); object[i]._oSelFlag = 0; } } diff --git a/Source/towners.cpp b/Source/towners.cpp index 9a0409ff4..14b82c554 100644 --- a/Source/towners.cpp +++ b/Source/towners.cpp @@ -359,7 +359,7 @@ void TalkToBarOwner(PlayerStruct &player, TownerStruct &barOwner) quests[Q_LTBANNER]._qactive = QUEST_DONE; quests[Q_LTBANNER]._qvar1 = 3; player.RemoveInvItem(i); - SpawnUnique(UITEM_HARCREST, barOwner.position.x, barOwner.position.y + 1); + SpawnUnique(UITEM_HARCREST, barOwner.position + DIR_SW); InitQTextMsg(TEXT_BANNER3); return; } @@ -405,7 +405,7 @@ void TalkToBlackSmith(PlayerStruct &player, TownerStruct &blackSmith) if (quests[Q_ROCK]._qvar2 == 1 && player.HasItem(IDI_ROCK, &i)) { quests[Q_ROCK]._qactive = QUEST_DONE; player.RemoveInvItem(i); - SpawnUnique(UITEM_INFRARING, blackSmith.position.x, blackSmith.position.y + 1); + SpawnUnique(UITEM_INFRARING, blackSmith.position + DIR_SW); InitQTextMsg(TEXT_INFRA7); return; } @@ -426,7 +426,7 @@ void TalkToBlackSmith(PlayerStruct &player, TownerStruct &blackSmith) if (quests[Q_ANVIL]._qvar2 == 1 && player.HasItem(IDI_ANVIL, &i)) { quests[Q_ANVIL]._qactive = QUEST_DONE; player.RemoveInvItem(i); - SpawnUnique(UITEM_GRISWOLD, blackSmith.position.x, blackSmith.position.y + 1); + SpawnUnique(UITEM_GRISWOLD, blackSmith.position + DIR_SW); InitQTextMsg(TEXT_ANVIL7); return; } @@ -520,7 +520,7 @@ void TalkToHealer(PlayerStruct &player, TownerStruct &healer) if (quests[Q_PWATER]._qactive == QUEST_DONE && quests[Q_PWATER]._qvar1 != 2) { quests[Q_PWATER]._qvar1 = 2; InitQTextMsg(TEXT_POISON5); - SpawnUnique(UITEM_TRING, healer.position.x, healer.position.y + 1); + SpawnUnique(UITEM_TRING, healer.position + DIR_SW); return; } } @@ -670,7 +670,7 @@ void TalkToCowFarmer(PlayerStruct &player, TownerStruct &cowFarmer) } if (player.HasItem(IDI_BROWNSUIT, &i)) { - SpawnUnique(UITEM_BOVINE, cowFarmer.position.x + 1, cowFarmer.position.y); + SpawnUnique(UITEM_BOVINE, cowFarmer.position + DIR_SE); player.RemoveInvItem(i); InitQTextMsg(TEXT_JERSEY8); quests[Q_JERSEY]._qactive = QUEST_DONE;