Skip to content

Commit

Permalink
fix: item usage mechanics to obtain Phantasmal Jade (#3112)
Browse files Browse the repository at this point in the history
This fixes the item usage mechanics for obtaining the
Phantasmal Jade mount.
It ensures that the correct number of items are used, and the mount is
granted when all requirements are met.
Additionally, it automates the registration of item IDs to simplify the
code and reduce redundancy.

Close #3100
  • Loading branch information
omarcopires authored Nov 21, 2024
1 parent 6253d64 commit db2611b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 32 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,35 +26,3 @@ end

rewardSoulWar:position({ x = 33620, y = 31400, z = 10 })
rewardSoulWar:register()

local phantasmalJadeMount = Action()

function phantasmalJadeMount.onUse(player, item, fromPosition, target, toPosition, isHotkey)
local soulWarQuest = player:soulWarQuestKV()
if soulWarQuest:get("panthasmal-jade-mount") then
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You already have Phantasmal Jade mount!")
return true
end

if table.contains({ 34072, 34073, 34074 }, item.itemid) then
if player:getItemCount(34072) >= 4 and player:getItemCount(34073) == 1 and player:getItemCount(34074) == 1 then
player:removeItem(34072, 4)
player:removeItem(34073, 1)
player:removeItem(34074, 1)
player:addMount(167)
player:addAchievement("You got Horse Power")
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You won Phantasmal Jade mount.")
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Congratulations! You won You got Horse Power achievement.")
player:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE)
soulWarQuest:set("panthasmal-jade-mount", true)
else
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You don't have the necessary items!")
player:getPosition():sendMagicEffect(CONST_ME_POFF)
end
end

return true
end

phantasmalJadeMount:id(34072, 34073, 34074)
phantasmalJadeMount:register()
45 changes: 45 additions & 0 deletions data/scripts/actions/items/usable_phantasmal_jade_items.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
local config = {
requiredItems = {
[34072] = { key = "spectral-horseshoes", count = 4 },
[34073] = { key = "spectral-saddle", count = 1 },
[34074] = { key = "spectral-horse-tac", count = 1 },
},

mountId = 167,
}

local usablePhantasmalJadeItems = Action()

function usablePhantasmalJadeItems.onUse(player, item, fromPosition, target, toPosition, isHotkey)
local itemInfo = config.requiredItems[item:getId()]
if not itemInfo then
return true
end

if player:hasMount(config.mountId) then
return true
end

local currentCount = (player:kv():get(itemInfo.key) or 0) + 1
player:kv():set(itemInfo.key, currentCount)
player:getPosition():sendMagicEffect(CONST_ME_HOLYDAMAGE)
item:remove(1)

for _, info in pairs(config.requiredItems) do
if (player:kv():get(info.key) or 0) < info.count then
return true
end
end

player:addMount(config.mountId)
player:addAchievement("Natural Born Cowboy")
player:addAchievement("You got Horse Power")
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Phantasmal jade is now yours!")
return true
end

for itemId, _ in pairs(config.requiredItems) do
usablePhantasmalJadeItems:id(itemId)
end

usablePhantasmalJadeItems:register()

0 comments on commit db2611b

Please sign in to comment.