canary/data/scripts/actions/objects/carpets.lua
Marco f981bac239
refactor: carpets to core (#2338)
This commit optimizes the carpet handling code, enhancing both efficiency and clarity. It removes redundancies, simplifies logic, and ensures proper item transformations.
2024-03-02 17:18:30 -03:00

209 lines
5.6 KiB
Lua

local carpetItems = {
[22737] = 22736,
[22736] = 22737, -- rift carpet
[23537] = 23536,
[23536] = 23537, -- void carpet
[23431] = 23453,
[23453] = 23431, -- yalahahari carpet
[23432] = 23454,
[23454] = 23432, -- white fur carpet
[23433] = 23455,
[23455] = 23433, -- bamboo mat carpet
[23715] = 23707,
[23707] = 23715, -- crimson carpet
[23710] = 23716,
[23716] = 23710, -- azure carpet
[23711] = 23717,
[23717] = 23711, -- emerald carpet
[23712] = 23718,
[23718] = 23712, -- light parquet carpet
[23713] = 23719,
[23719] = 23713, -- dark parquet carpet
[23714] = 23720,
[23720] = 23714, -- marble floor
[24416] = 24424,
[24424] = 24416, -- flowery carpet
[24417] = 24425,
[24425] = 24417, -- colourful Carpet
[24418] = 24426,
[24426] = 24418, -- striped carpet
[24419] = 24427,
[24427] = 24419, -- fur carpet
[24420] = 24428,
[24428] = 24420, -- diamond carpet
[24421] = 24429,
[24429] = 24421, -- patterned carpet
[24422] = 24430,
[24430] = 24422, -- night sky carpet
[24423] = 24431,
[24431] = 24423, -- star carpet
[26114] = 26115,
[26115] = 26114, -- verdant carpet
[26116] = 26117,
[26117] = 26116, -- shaggy carpet
[26119] = 26118,
[26118] = 26119, -- mystic carpet
[26120] = 26121,
[26121] = 26120, -- stone tile
[26123] = 26122,
[26122] = 26123, -- wooden plank
[26150] = 26151,
[26151] = 26150, -- wheat carpet
[26152] = 26153,
[26153] = 26152, -- crested carpet
[26154] = 26155,
[26155] = 26154, -- decorated carpet
[31466] = 31468,
[31468] = 31466, -- tournament carpet
[31467] = 31469,
[31469] = 31467, -- sublime tournament carpet
[35887] = 35888,
[35888] = 35887, -- lilac carpet
[35889] = 35890,
[35890] = 35889, -- colourful pom-pom carpet
[35891] = 35892,
[35892] = 35891, -- natural pom-pom carpet
[35893] = 35894,
[35894] = 35893, -- owin rug
[35895] = 35896,
[35896] = 35895, -- midnight panther rug
[35897] = 35898,
[35898] = 35897, -- moon carpet
[35899] = 35900,
[35900] = 35899, -- romantic carpet
[35941] = 35942,
[35942] = 35941, -- grandiose carpet
[36496] = 36838,
[36838] = 36496, -- eldritch carpet
[36939] = 36951,
[36951] = 36939, -- folded artefact carpet I
[36940] = 36939, -- the sylvan sapling carpet
[36941] = 36952,
[36952] = 36941, -- folded artefact carpet II
[36942] = 36941, -- the spatial almanach carpet
[36943] = 36953,
[36953] = 36943, -- folded artefact carpet III
[36944] = 36943, -- the book of death carpet
[36945] = 36954,
[36954] = 36945, -- folded artefact carpet IV
[36946] = 36945, -- the supreme cube carpet
[36947] = 36955,
[36955] = 36947, -- folded artefact carpet V
[36948] = 36947, -- the ring of ending carpet
[36949] = 36956,
[36956] = 36949, -- folded artefact carpet VI
[36950] = 36949, -- the cobra amulet carpet
[37019] = 37020,
[37020] = 37019, -- grass
[37353] = 37354,
[37354] = 37353, -- dragon lord carpet
[37355] = 37357,
[37357] = 37355, -- dragon carpet
[37356] = 37358,
[37358] = 37356, -- elemental carpet
[37359] = 37360,
[37360] = 37359, -- Morgaroth carpet
[37361] = 37362,
[37362] = 37361, -- Ghazbaran carpet
[37363] = 37364,
[37364] = 37363, -- Orshabaal carpet
[37365] = 37366,
[37366] = 37365, -- red cake carpet
[37367] = 37374,
[37374] = 37367, -- orange cake carpet
[37368] = 37375,
[37375] = 37368, -- yellow cake carpet
[37369] = 37376,
[37376] = 37369, -- green cake carpet
[37370] = 37377,
[37377] = 37370, -- sky cake carpet
[37371] = 37378,
[37378] = 37371, -- blue cake carpet
[37372] = 37379,
[37379] = 37372, -- purple cake carpet
[37373] = 37380,
[37380] = 37373, -- pink cake carpet
[37382] = 37381,
[37381] = 37382, -- red tibia carpet
[37383] = 37390,
[37390] = 37383, -- orange tibia carpet
[37384] = 37391,
[37391] = 37384, -- yellow tibia carpet
[37385] = 37392,
[37392] = 37385, -- green tibia carpet
[37386] = 37393,
[37393] = 37386, -- sky tibia carpet
[37387] = 37394,
[37394] = 37387, -- blue tibia carpet
[37388] = 37395,
[37395] = 37388, -- purple tibia carpet
[37389] = 37396,
[37396] = 37389, -- pink tibia carpet
[37763] = 37764,
[37764] = 37763, -- zaoan bamboo tiles I
[37765] = 37766,
[37766] = 37765, -- zaoan bamboo tiles II
[37767] = 37768,
[37768] = 37767, -- zaoan bamboo tiles III
[37769] = 37770,
[37770] = 37769, -- zaoan bamboo tiles IV
[37771] = 37772,
[37772] = 37771, -- zaoan bamboo tiles V
[37773] = 37774,
[37774] = 37773, -- zaoan bamboo tiles VI
[39797] = 39798,
[39798] = 39797, -- flowery grass
[42336] = 42337,
[42337] = 42336, -- opulent wooden floor
[42338] = 42339,
[42339] = 42338, -- opulent floor intarsia
[42340] = 42341,
[42341] = 42340, -- opulent carpet
}
local carpets = Action()
function carpets.onUse(player, item, fp, target, toPosition, isHotkey)
local carpet = carpetItems[item.itemid]
if not carpet then
return false
end
local fromPosition = item:getPosition()
local tile = fromPosition:getTile()
if not tile then
player:sendTextMessage(MESSAGE_FAILURE, "You may use this only inside a house.")
return true
end
local house = tile:getHouse()
if not house then
player:sendTextMessage(MESSAGE_FAILURE, "You may use this only inside a house.")
return true
end
local itemCount = tile:getItemCountById(item.itemid)
if itemCount == 1 then
local topItem = tile:getTopTopItem()
if topItem and topItem:canReceiveAutoCarpet() then
item:remove()
return true
end
for k, v in pairs(carpetItems) do
if k ~= item.itemid and tile:getItemCountById(k) > 0 then
player:sendCancelMessage(Game.getReturnMessage(RETURNVALUE_NOTPOSSIBLE))
return true
end
end
end
item:transform(carpet)
return true
end
for index, value in pairs(carpetItems) do
carpets:id(index)
end
carpets:register()