-
-
Notifications
You must be signed in to change notification settings - Fork 647
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: convert golden and royal costume outfit from storage to kv #2477
Closed
Closed
Changes from 15 commits
Commits
Show all changes
23 commits
Select commit
Hold shift + click to select a range
e1c5f61
chore: convert golden outfit from storage to kv
omarcopires 540b8e4
remove unused storage and old memorial
omarcopires eaace08
feat: outfit memorial
omarcopires 0f49b47
fix: custom attribute
omarcopires e8b5bef
feat: golden outfit migration
omarcopires 9a70be2
fix: writing correction
omarcopires 12d7f2a
chore: remove hardcode
omarcopires 82a7086
feat: default promotion npc
omarcopires ba81b3e
chore: remove unnecessary checking
omarcopires 9475fc4
fix: handle nil value returned by player:kv():get()
omarcopires ab5fa95
migrate royal costume to kv
omarcopires d0d02c6
fix: outfit memorial
omarcopires a364162
fix: migrations
omarcopires b56d241
Delete outfit_memorial.lua
omarcopires bbe3701
Merge branch 'main' into golden-outfit-to-kv
omarcopires ec68087
resolve conversation
omarcopires 6843b95
Merge remote-tracking branch 'upstream/main' into golden-outfit-to-kv
omarcopires 35661d8
Merge branch 'main' into golden-outfit-to-kv
omarcopires 291fd2c
Merge branch 'main' into golden-outfit-to-kv
omarcopires ce0ce79
Merge branch 'main' into golden-outfit-to-kv
omarcopires aa197e9
Merge branch 'main' into golden-outfit-to-kv
omarcopires 0484dd6
Merge branch 'main' into golden-outfit-to-kv
omarcopires ba1904c
Merge branch 'main' into golden-outfit-to-kv
omarcopires File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
local internalNpcName = "King Canary" | ||
local npcType = Game.createNpcType(internalNpcName) | ||
local npcConfig = {} | ||
|
||
npcConfig.name = internalNpcName | ||
npcConfig.description = internalNpcName | ||
|
||
npcConfig.health = 100 | ||
npcConfig.maxHealth = npcConfig.health | ||
npcConfig.walkInterval = 2000 | ||
npcConfig.walkRadius = 2 | ||
|
||
npcConfig.outfit = { | ||
lookType = 332, | ||
} | ||
|
||
npcConfig.flags = { | ||
floorchange = false, | ||
} | ||
|
||
local keywordHandler = KeywordHandler:new() | ||
local npcHandler = NpcHandler:new(keywordHandler) | ||
|
||
npcType.onThink = function(npc, interval) | ||
npcHandler:onThink(npc, interval) | ||
end | ||
|
||
npcType.onAppear = function(npc, creature) | ||
npcHandler:onAppear(npc, creature) | ||
end | ||
|
||
npcType.onDisappear = function(npc, creature) | ||
npcHandler:onDisappear(npc, creature) | ||
end | ||
|
||
npcType.onMove = function(npc, creature, fromPosition, toPosition) | ||
npcHandler:onMove(npc, creature, fromPosition, toPosition) | ||
end | ||
|
||
npcType.onSay = function(npc, creature, type, message) | ||
npcHandler:onSay(npc, creature, type, message) | ||
end | ||
|
||
npcType.onCloseChannel = function(npc, creature) | ||
npcHandler:onCloseChannel(npc, creature) | ||
end | ||
|
||
local function creatureSayCallback(npc, creature, type, message) | ||
local player = Player(creature) | ||
local playerId = player:getId() | ||
|
||
if not npcHandler:checkInteraction(npc, creature) then | ||
return false | ||
end | ||
|
||
if (MsgContains(message, "outfit")) or (MsgContains(message, "addon")) then | ||
npcHandler:say("In exchange for a truly generous donation, I will offer a special outfit. Do you want to make a donation?", npc, creature) | ||
npcHandler:setTopic(playerId, 1) | ||
elseif MsgContains(message, "yes") then | ||
if npcHandler:getTopic(playerId) == 1 then | ||
npcHandler:say({ | ||
"Excellent! Now, let me explain. If you donate 1.000.000.000 gold pieces, you will be entitled to wear a unique outfit. ...", | ||
"You will be entitled to wear the {armor} for 500.000.000 gold pieces, {helmet} for an additional 250.000.000 and the {boots} for another 250.000.000 gold pieces. ...", | ||
"What will it be?", | ||
}, npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
elseif npcHandler:getTopic(playerId) == 2 then | ||
npcHandler:say("In that case, return to me once you made up your mind.", npc, creature) | ||
npcHandler:setTopic(playerId, 0) | ||
elseif npcHandler:getTopic(playerId) == 3 then | ||
local goldenOutfitQuest = player:kv():get("golden-outfit-quest") or 0 | ||
if goldenOutfitQuest < 1 then | ||
if player:removeMoneyBank(500000000) then | ||
local inbox = player:getStoreInbox() | ||
local inboxItems = inbox:getItems() | ||
if inbox and #inboxItems <= inbox:getMaxCapacity() then | ||
local decoKit = inbox:addItem(ITEM_DECORATION_KIT, 1) | ||
local decoItemName = ItemType(31510):getName() | ||
decoKit:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "You bought this item in the Store.\nUnwrap it in your own house to create a " .. decoItemName .. ".") | ||
decoKit:setCustomAttribute("unWrapId", 31510) | ||
npcHandler:say("Take this armor as a token of great gratitude. Let us forever remember this day, my friend!", npc, creature) | ||
player:addOutfit(1211) | ||
player:addOutfit(1210) | ||
player:getPosition():sendMagicEffect(CONST_ME_EARLY_THUNDER) | ||
player:kv():set("golden-outfit-quest", 1) | ||
else | ||
npcHandler:say("Please make sure you have free slots in your store inbox.", npc, creature) | ||
end | ||
else | ||
npcHandler:say("You do not have enough money to donate that amount.", npc, creature) | ||
end | ||
else | ||
npcHandler:say("You alread have that addon.", npc, creature) | ||
end | ||
npcHandler:setTopic(playerId, 2) | ||
elseif npcHandler:getTopic(playerId) == 4 then | ||
if player:kv():get("golden-outfit-quest") == 1 then | ||
if player:kv():get("golden-outfit-quest") < 2 then | ||
if player:removeMoneyBank(250000000) then | ||
npcHandler:say("Take this helmet as a token of great gratitude. Let us forever remember this day, my friend. ", npc, creature) | ||
player:addOutfitAddon(1210, 1) | ||
player:addOutfitAddon(1211, 1) | ||
player:getPosition():sendMagicEffect(CONST_ME_EARLY_THUNDER) | ||
player:kv():set("golden-outfit-quest", 2) | ||
npcHandler:setTopic(playerId, 2) | ||
else | ||
npcHandler:say("You do not have enough money to donate that amount.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
else | ||
npcHandler:say("You alread have that outfit.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
else | ||
npcHandler:say("You need to donate {armor} outfit first.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
npcHandler:setTopic(playerId, 2) | ||
elseif npcHandler:getTopic(playerId) == 5 then | ||
if player:kv():get("golden-outfit-quest") == 2 then | ||
if player:kv():get("golden-outfit-quest") < 3 then | ||
if player:removeMoneyBank(250000000) then | ||
npcHandler:say("Take this boots as a token of great gratitude. Let us forever remember this day, my friend. ", npc, creature) | ||
player:addOutfitAddon(1210, 2) | ||
player:addOutfitAddon(1211, 2) | ||
player:getPosition():sendMagicEffect(CONST_ME_EARLY_THUNDER) | ||
player:kv():set("golden-outfit-quest", 3) | ||
npcHandler:setTopic(playerId, 2) | ||
else | ||
npcHandler:say("You do not have enough money to donate that amount.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
else | ||
npcHandler:say("You alread have that outfit.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
else | ||
npcHandler:say("You need to donate {helmet} addon first.", npc, creature) | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
npcHandler:setTopic(playerId, 2) | ||
end | ||
elseif (MsgContains(message, "armor")) and npcHandler:getTopic(playerId) == 2 then | ||
npcHandler:say("So you would like to donate 500.000.000 gold pieces which in return will entitle you to wear a unique armor?", npc, creature) | ||
npcHandler:setTopic(playerId, 3) | ||
elseif (MsgContains(message, "helmet")) and npcHandler:getTopic(playerId) == 2 then | ||
npcHandler:say("So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear unique helmet?", npc, creature) | ||
npcHandler:setTopic(playerId, 4) | ||
elseif (MsgContains(message, "boots")) and npcHandler:getTopic(playerId) == 2 then | ||
npcHandler:say("So you would like to donate 250.000.000 gold pieces which in return will entitle you to wear a unique boots?", npc, creature) | ||
npcHandler:setTopic(playerId, 5) | ||
end | ||
end | ||
|
||
-- Promotion | ||
local node1 = keywordHandler:addKeyword({ "promot" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "I can promote you for 20000 gold coins. Do you want me to promote you?" }) | ||
node1:addChildKeyword({ "yes" }, StdModule.promotePlayer, { npcHandler = npcHandler, cost = 20000, level = 20, text = "Congratulations! You are now promoted." }) | ||
node1:addChildKeyword({ "no" }, StdModule.say, { npcHandler = npcHandler, onlyFocus = true, text = "Alright then, come back when you are ready.", reset = true }) | ||
|
||
-- Greeting message | ||
keywordHandler:addGreetKeyword({ "hail king" }, { npcHandler = npcHandler, text = "Hiho, may fire and earth bless you, my child. Are you looking for a promotion?" }) | ||
keywordHandler:addGreetKeyword({ "salutations king" }, { npcHandler = npcHandler, text = "Hiho, may fire and earth bless you, my child. Are you looking for a promotion?" }) | ||
|
||
npcHandler:setMessage(MESSAGE_WALKAWAY, "Farewell, |PLAYERNAME|, my child!") | ||
|
||
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) | ||
npcHandler:setCallback(CALLBACK_GREET, greetCallback) | ||
|
||
-- npcType registering the npcConfig table | ||
npcType:register(npcConfig) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -879,8 +879,7 @@ Storage = { | |||||
AssassinBaseOutfit = 51012, | ||||||
AssassinFirstAddon = 51013, | ||||||
AssassinSecondAddon = 51014, | ||||||
-- Golden Outfit | ||||||
GoldenOutfit = 51015, | ||||||
-- Nightmare Outfit | ||||||
NightmareOutfit = 51016, | ||||||
NightmareDoor = 51017, | ||||||
BrotherhoodOutfit = 51018, | ||||||
|
@@ -893,7 +892,6 @@ Storage = { | |||||
DeeplingAnchor = 51023, | ||||||
FirstOrientalAddon = 51024, | ||||||
SecondOrientalAddon = 51025, | ||||||
RoyalCostumeOutfit = 51026, | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there is no need, as it is free storage, it was set to -1 in the migration |
||||||
}, | ||||||
TheAncientTombs = { | ||||||
-- Reserved storage from 50940 - 51059 | ||||||
|
@@ -2773,9 +2771,6 @@ Storage = { | |||||
CitizenOfIssaviOutfits = {}, | ||||||
RoyalBounaceanAdvisorOutfits = {}, | ||||||
}, | ||||||
U12_80 = { -- update 12.80 - Reserved Storages 47801 - 47850 | ||||||
RoyalCostumeOutfits = {}, | ||||||
}, | ||||||
U12_90 = { -- update 12.90 - Reserved Storages 47851 - 47900 | ||||||
PrimalOrdeal = { | ||||||
QuestLine = 47851, | ||||||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
there is no need, as it is free storage, it was set to -1 in the migration