Skip to content
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

feat: Galthen's Satchel and Artefact Box #2149

68 changes: 68 additions & 0 deletions data-otservbr-global/npc/an_idol.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
local internalNpcName = "An Idol"
local npcType = Game.createNpcType(internalNpcName)
local npcConfig = {}

npcConfig.name = internalNpcName
npcConfig.description = internalNpcName

npcConfig.health = 100
npcConfig.maxHealth = npcConfig.health
npcConfig.walkInterval = 0
npcConfig.walkRadius = 2

npcConfig.outfit = {
lookTypeEx = 15894,
}

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)

if not npcHandler:checkInteraction(npc, creature) then
return false
end

if MsgContains(message, "VBOX") then
npcHandler:say("J-T B^C J^BXT°", npc, creature)
player:teleportTo(Position(32366, 32531, 8), false)
player:getPosition():sendMagicEffect(CONST_ME_TELEPORT)
end

return true
end

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new(), npcConfig.name, true, true, false)

-- npcType registering the npcConfig table
npcType:register(npcConfig)
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
local galthensTree = Action()
function galthensTree.onUse(player, item, fromPosition, target, toPosition, isHotkey)
local hasExhaustion, message = player:kv():get("galthens-satchel") or 0, "Empty."
if hasExhaustion < os.time() then
local container = player:addItem(36813)
container:addItem(36810, 1)
player:kv():set("galthens-satchel", os.time() + 30 * 24 * 60 * 60)
message = "You have found a galthens satchel."
end

player:teleportTo(Position(32396, 32520, 7))
player:getPosition():sendMagicEffect(CONST_ME_WATERSPLASH)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message)

return true
end

galthensTree:position(Position(32366, 32542, 8))
galthensTree:register()
5 changes: 4 additions & 1 deletion data-otservbr-global/world/otservbr-npc.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2994,5 +2994,8 @@
</npc>
<npc centerx="33068" centery="32917" centerz="7" radius="1">
<npc name="Tonar Oskayaat" x="0" y="0" z="7" spawntime="60" />
</npc>
</npc>
<npc centerx="32398" centery="32509" centerz="7" radius="1">
<npc name="An Idol" x="0" y="0" z="15" spawntime="60" />
</npc>
</npcs>
Loading