Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local keywordHandler = KeywordHandler:new()
- local npcHandler = NpcHandler:new(keywordHandler)
- NpcSystem.parseParameters(npcHandler)
- function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
- function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
- function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
- function onThink() npcHandler:onThink() end
- -- Buff Config beginning --
- -- configs
- local config = {
- storage = 77700,
- money = 2000,
- duration = 600,
- skills = {
- fist = 20,
- club = 20,
- sword = 20,
- axe = 20,
- distance = 20,
- shield = 20,
- magicLevel = 10
- }
- }
- -- Configs of buffs
- local conditionMagicLevel = Condition(CONDITION_ATTRIBUTES)
- conditionMagicLevel:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionMagicLevel:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionMagicLevel:setParameter(CONDITION_PARAM_STAT_MAGICLEVEL, config.skills.magicLevel)
- local conditionInvisible = Condition(CONDITION_INVISIBLE)
- conditionInvisible:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionInvisible:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- local conditionMelee = Condition(CONDITION_ATTRIBUTES)
- conditionMelee:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionMelee:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionMelee:setParameter(CONDITION_PARAM_SKILL_FIST, config.skills.fist)
- conditionMelee:setParameter(CONDITION_PARAM_SKILL_CLUB, config.skills.club)
- conditionMelee:setParameter(CONDITION_PARAM_SKILL_SWORD, config.skills.sword)
- conditionMelee:setParameter(CONDITION_PARAM_SKILL_AXE, config.skills.axe)
- local conditionDistance = Condition(CONDITION_ATTRIBUTES)
- conditionDistance:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionDistance:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionDistance:setParameter(CONDITION_PARAM_SKILL_DISTANCE, config.skills.distance)
- local conditionShield = Condition(CONDITION_ATTRIBUTES)
- conditionShield:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionShield:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionShield:setParameter(CONDITION_PARAM_SKILL_SHIELD, config.skills.shield)
- local conditionMagicShield = Condition(CONDITION_MANASHIELD)
- conditionMagicShield:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionMagicShield:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- local conditionRegeneration = Condition(CONDITION_REGENERATION)
- conditionRegeneration:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionRegeneration:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionRegeneration:setParameter(CONDITION_PARAM_HEALTHGAIN, 20)
- conditionRegeneration:setParameter(CONDITION_PARAM_HEALTHTICKS, 2000)
- local conditionSpeed = Condition(CONDITION_HASTE)
- conditionSpeed:setParameter(CONDITION_PARAM_BUFF_SPELL, 1)
- conditionSpeed:setParameter(CONDITION_PARAM_TICKS, config.duration * 1000)
- conditionSpeed:setFormula(1.0, -86, 1.0, -86)
- local function resetStorageValue(cid, key, value)
- local player = Player(cid)
- if not player then
- return
- end
- player:setStorageValue(key, value)
- end
- -- Configs of buffs
- local function attribute(cid, message, keywords, parameters, node)
- if not npcHandler:isFocused(cid) then
- return false
- end
- local player = Player(cid)
- local vocation = parameters.vocation
- if #vocation ~= 0 and not isInArray(vocation, player:getVocation():getBase():getId()) then
- local text = ""
- for i = 1, #vocation do
- text = text .. (i ~= 1 and (i == #vocation and " or " or ", ") or "") .. Vocation(vocation[i]):getDescription()
- end
- npcHandler:say("You must be " .. text .. " to receive this increment.", cid)
- return true
- end
- if player:getStorageValue(config.storage) == 1 then
- npcHandler:say("You can't receive more than one increase.", cid)
- return true
- end
- if not player:removeMoney(config.money) then
- npcHandler:say("You don't have enough money.", cid)
- return true
- end
- player:addCondition(parameters.condition)
- player:setStorageValue(config.storage, 1)
- addEvent(resetStorageValue, config.duration * 1000, cid, config.storage, -1)
- npcHandler:say(parameters.text .. ' for 10 minutes!', cid)
- end
- -- Buff Config End --
- keywordHandler:addKeyword({'help'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = "I can increase your {melee}, {distance}, {shielding}, {magic level}, {regeneration}, {invisibility}, {magic shield} and {speed}"})
- local function addAttributeKeyword(keyword, text, vocation, condition)
- local attributeKeyword = keywordHandler:addKeyword(keyword, StdModule.say, {npcHandler = npcHandler, text = 'Do you want to ' .. text[1] .. ' for a certain time?'})
- attributeKeyword:addChildKeyword({'yes'}, attribute, {npcHandler = npcHandler, vocation = vocation, text = text[2], condition = condition, reset = true})
- attributeKeyword:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, text = 'Alright then. Come back if you want an upgrade in your skills.', reset = true})
- end
- addAttributeKeyword({'magic', 'level'}, {'increase your magic level', 'Your magic level has increased'}, {1, 2}, conditionMagicLevel)
- addAttributeKeyword({'invisibility'}, {'be invisible', 'You received invisibility'}, {1, 2}, conditionInvisible)
- addAttributeKeyword({'melee'}, {'increase your melee skills', 'Your melee skills has increased'}, {4}, conditionMelee)
- addAttributeKeyword({'distance'}, {'increase your distance skills', 'Your distance skill has increased'}, {3}, conditionDistance)
- addAttributeKeyword({'shielding'}, {'increase your shielding skill', 'Your shielding skill has increased'}, {3, 4}, conditionShield)
- addAttributeKeyword({'magic', 'shield'}, {'receive a magic shield', 'You recieved a magic shield'}, {1, 2, 3}, conditionMagicShield)
- addAttributeKeyword({'regeneration'}, {'increase your regeneration', 'Your regeneration has increased'}, {}, conditionRegeneration)
- addAttributeKeyword({'speed'}, {'increase your speed', 'Your speed has increased'}, {}, conditionSpeed)
- npcHandler:addModule(FocusModule:new())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement