mirror of
https://github.com/opentibiabr/canary
synced 2026-08-16 06:26:09 -04:00
This commit optimizes the carpet handling code, enhancing both efficiency and clarity. It removes redundancies, simplifies logic, and ensures proper item transformations.
209 lines
5.6 KiB
Lua
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()
|