diff --git a/docs/testing.md b/docs/testing.md index a3b774d..5b1553a 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -86,8 +86,15 @@ Remove the environment override and recreate the server afterward. The optional regression overlay exercises representative Lua UI/network calls, temporary inventory and container mutation, death, explicit removal, rejected -login, and clean-shutdown persistence. Supported modes are `interactions`, -`death`, `remove`, and `reject`. +login, learned-spell state, and clean-shutdown persistence. Supported modes are +`interactions`, `death`, `remove`, `reject`, `spellTrainer`, `spellReset`, +`spellLearning`, `spellPersistence`, and `spellFailures`. `spellTrainer` buys +Light Healing and Light from Gregor through normal dialogue and verifies keyword +selection and both prices. `spellFailures` covers level, vocation, promotion, +premium, and money rejection without changing learned state or money. Run +`spellReset`, `spellLearning`, and `spellPersistence` in that order against the +same database volume, stopping the server cleanly between each mode; this also +verifies the learned casting gate, duplicate rejection, and persistence. ```powershell $env:PLAYERBOT_REGRESSION_MODE = "interactions" diff --git a/scripts/test-knight-spell-contract.ps1 b/scripts/test-knight-spell-contract.ps1 new file mode 100644 index 0000000..2a60c96 --- /dev/null +++ b/scripts/test-knight-spell-contract.ps1 @@ -0,0 +1,116 @@ +param() + +$ErrorActionPreference = "Stop" + +$projectRoot = Split-Path -Parent $PSScriptRoot +$spellFile = Join-Path $projectRoot "server\data\spells\spells.xml" +$npcScriptRoot = Join-Path $projectRoot "server\data\npc\scripts" +[xml]$registry = Get-Content -LiteralPath $spellFile -Raw + +# Values come from CipSoft's spell library captured before the December 2010 +# spell overhaul: https://web.archive.org/web/20100530041734/http://www.tibia.com/library/?subtopic=spells +$knightSpells = @( + @{ Name = "Find Person"; Words = "exiva"; Level = 8; Mana = 20; Premium = 0; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Light"; Words = "utevo lux"; Level = 8; Mana = 20; Premium = 0; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Light Healing"; Words = "exura"; Level = 9; Mana = 20; Premium = 0; Vocations = @("Knight", "Elite Knight") } + # The 8.60 public name was Antidote; Cure Poison remains the current registry identity until #94 reconciles shared spell names. + @{ Name = "Cure Poison"; Words = "exana pox"; Level = 10; Mana = 30; Premium = 0; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Magic Rope"; Words = "exani tera"; Level = 9; Mana = 20; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Levitate"; Words = "exani hur"; Level = 12; Mana = 50; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Great Light"; Words = "utevo gran lux"; Level = 13; Mana = 60; Premium = 0; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Haste"; Words = "utani hur"; Level = 14; Mana = 60; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Whirlwind Throw"; Words = "exori hur"; Level = 15; Mana = 40; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Challenge"; Words = "exeta res"; Level = 20; Mana = 30; Premium = 1; Vocations = @("Elite Knight") } + @{ Name = "Charge"; Words = "utani tempo hur"; Level = 25; Mana = 100; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Wound Cleansing"; Words = "exana mort"; Level = 30; Mana = 65; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Train Party"; Words = "utito mas sio"; Level = 32; Mana = 0; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Groundshaker"; Words = "exori mas"; Level = 33; Mana = 160; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Berserk"; Words = "exori"; Level = 35; Mana = 115; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Protector"; Words = "utamo tempo"; Level = 55; Mana = 200; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Blood Rage"; Words = "utito tempo"; Level = 60; Mana = 290; Premium = 1; Vocations = @("Knight", "Elite Knight") } + @{ Name = "Fierce Berserk"; Words = "exori gran"; Level = 70; Mana = 340; Premium = 1; Vocations = @("Knight", "Elite Knight") } +) + +foreach ($expected in $knightSpells) { + $spell = @($registry.spells.instant | Where-Object { $_.name -eq $expected.Name }) + if ($spell.Count -ne 1) { + throw "Expected one registered '$($expected.Name)' spell, found $($spell.Count)." + } + + $spell = $spell[0] + foreach ($attribute in @("Words", "Level", "Mana")) { + $xmlName = $attribute.ToLowerInvariant() + if ([string]$spell.$xmlName -ne [string]$expected.$attribute) { + throw "$($expected.Name) has $xmlName='$($spell.$xmlName)', expected '$($expected.$attribute)'." + } + } + + $premium = if ($spell.premium) { [int]$spell.premium } else { 0 } + if ($premium -ne $expected.Premium -or [int]$spell.needlearn -ne 1) { + throw "$($expected.Name) has premium=$premium needlearn=$($spell.needlearn); expected premium=$($expected.Premium) needlearn=1." + } + + $vocations = @($spell.vocation | ForEach-Object { [string]$_.name }) + $knightVocations = @($vocations | Where-Object { $_ -in @("Knight", "Elite Knight") }) + $vocationDifference = @($knightVocations | Where-Object { $_ -notin $expected.Vocations }) + + @($expected.Vocations | Where-Object { $_ -notin $knightVocations }) + if ($vocationDifference.Count -gt 0) { + throw "$($expected.Name) has Knight vocations '$($knightVocations -join ', ')', expected '$($expected.Vocations -join ', ')'." + } + + $scriptPath = Join-Path (Split-Path $spellFile) "scripts\$($spell.script)" + if (-not (Test-Path -LiteralPath $scriptPath)) { + throw "$($expected.Name) references missing script '$($spell.script)'." + } +} + +function Assert-Offer { + param( + [string]$Npc, + [string]$Spell, + [int]$Price, + [int]$Level, + [switch]$Premium + ) + + $content = Get-Content -LiteralPath (Join-Path $npcScriptRoot "$Npc.lua") -Raw + $premiumPattern = if ($Premium) { ", premium = true" } else { "" } + $pattern = "spellName = '$([regex]::Escape($Spell))', price = $Price, level = $Level$premiumPattern, vocation =\{[^}]*4[^}]*\}" + if ($content -notmatch $pattern) { + throw "$Npc does not offer $Spell for $Price gp at level $Level with the expected premium rule." + } +} + +function Assert-NoOffer { + param( + [string]$Npc, + [string]$Spell + ) + + $content = Get-Content -LiteralPath (Join-Path $npcScriptRoot "$Npc.lua") -Raw + if ($content -match "spellName = '$([regex]::Escape($Spell))'") { + throw "$Npc unexpectedly offers $Spell." + } +} + +Assert-Offer -Npc Gregor -Spell "Light Healing" -Price 170 -Level 9 +Assert-Offer -Npc Gregor -Spell "Light" -Price 100 -Level 8 +Assert-Offer -Npc Puffels -Spell "Whirlwind Throw" -Price 800 -Level 15 -Premium +Assert-Offer -Npc Puffels -Spell "Wound Cleansing" -Price 300 -Level 30 -Premium +Assert-Offer -Npc Eremo -Spell "Challenge" -Price 2000 -Level 20 -Premium +Assert-Offer -Npc Eliza -Spell "Train Party" -Price 4000 -Level 32 -Premium +Assert-Offer -Npc Ursula -Spell "Groundshaker" -Price 1500 -Level 33 -Premium +Assert-Offer -Npc Zoltan -Spell "Fierce Berserk" -Price 5000 -Level 70 -Premium +Assert-NoOffer -Npc Gregor -Spell "Whirlwind Throw" + +$loadedData = Get-ChildItem -LiteralPath (Join-Path $projectRoot "server\data") -Recurse -File | + Where-Object { $_.Extension -in @(".lua", ".xml") } | + ForEach-Object { Get-Content -LiteralPath $_.FullName -Raw } +$loadedText = $loadedData -join "`n" +foreach ($unsupported in @("Brutal Strike", "Summon Skullfrost")) { + if ($loadedText.Contains($unsupported)) { + throw "Unsupported Knight spell offer remains: $unsupported." + } +} + +"Knight spell contract PASS" diff --git a/server/compose.playerbot-regression.yaml b/server/compose.playerbot-regression.yaml index 83fa866..fc9f9e4 100644 --- a/server/compose.playerbot-regression.yaml +++ b/server/compose.playerbot-regression.yaml @@ -1,6 +1,7 @@ services: server: environment: + FREE_PREMIUM: "${FREE_PREMIUM:-false}" PLAYERBOT_REGRESSION_MODE: "${PLAYERBOT_REGRESSION_MODE:-interactions}" volumes: - - ./tests:/app/data/scripts/playerbot-regression:ro + - ./tests/playerbot_connectionless.lua:/app/data/scripts/creaturescripts/player_login_logout_message.lua:ro diff --git a/server/config.lua b/server/config.lua index fa61e08..1191ee6 100644 --- a/server/config.lua +++ b/server/config.lua @@ -95,7 +95,7 @@ mysqlSock = "" -- You can disable it to save some memory if you don't see any errors at startup. -- checkDuplicateStorageKeys checks the values stored in the variables for duplicates. allowChangeOutfit = true -freePremium = true +freePremium = os.getenv("FREE_PREMIUM") ~= "false" kickIdlePlayerAfterMinutes = 15 maxMessageBuffer = 4 emoteSpells = false diff --git a/server/data/npc/lib/npcsystem/keywordhandler.lua b/server/data/npc/lib/npcsystem/keywordhandler.lua index 2930f69..fcfc11e 100644 --- a/server/data/npc/lib/npcsystem/keywordhandler.lua +++ b/server/data/npc/lib/npcsystem/keywordhandler.lua @@ -244,20 +244,28 @@ if not KeywordHandler then keys.callback = FocusModule.messageMatcherDefault local npcHandler, spellName, price, vocationId = parameters.npcHandler, parameters.spellName, parameters.price, parameters.vocation - local spellKeyword = self:addKeyword(keys, StdModule.say, {npcHandler = npcHandler, text = string.format("Do you want to learn the spell %s for %s?", spellName, price > 0 and price .. " gold" or "free")}, + local spellKeyword = self:addKeyword(keys, StdModule.say, {npcHandler = npcHandler, spellName = spellName, text = string.format("Do you want to learn the spell %s for %s?", spellName, price > 0 and price .. " gold" or "free")}, function(player) local baseVocationId = player:getVocation():getBase():getId() if type(vocationId) == 'table' then - -- Using a more efficient way to check if the player meets the vocation requirements - return table.find(vocationId, baseVocationId) ~= nil + return table.contains(vocationId, baseVocationId) else return vocationId == baseVocationId end end ) + local children = self:getRoot().children + for i = 1, #children - 1 do + local other = children[i] + if other.parameters and other.parameters.spellName and #keys > #other.keywords then + table.remove(children) + table.insert(children, i, spellKeyword) + break + end + end -- It is not necessary to check if the player already has the spell, the check is done in modules.lua - spellKeyword:addChildKeyword({"yes"}, StdModule.learnSpell, {npcHandler = npcHandler, spellName = spellName, level = parameters.level, price = price}) + spellKeyword:addChildKeyword({"yes"}, StdModule.learnSpell, {npcHandler = npcHandler, spellName = spellName, level = parameters.level, price = price, premium = parameters.premium}) spellKeyword:addChildKeyword({"no"}, StdModule.say, {npcHandler = npcHandler, text = "Maybe next time.", reset = true}) end end diff --git a/server/data/npc/scripts/Asrak.lua b/server/data/npc/scripts/Asrak.lua index 06fa9ad..62d8aa8 100644 --- a/server/data/npc/scripts/Asrak.lua +++ b/server/data/npc/scripts/Asrak.lua @@ -22,8 +22,8 @@ keywordHandler:addSpellKeyword({'conjure','arrow'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3,4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3,4}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3,4}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3,4}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3,4}}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Find Person}', '{Great Light}' and '{Light}'."}) - keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) \ No newline at end of file + keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Charlotta.lua b/server/data/npc/scripts/Charlotta.lua index 28f4e35..472e9b7 100644 --- a/server/data/npc/scripts/Charlotta.lua +++ b/server/data/npc/scripts/Charlotta.lua @@ -64,7 +64,7 @@ keywordHandler:addSpellKeyword({'animate','dead'}, {npcHandler = npcHandler, spe keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2}}) - keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={2}}) + keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={2}}) @@ -72,11 +72,11 @@ keywordHandler:addSpellKeyword({'animate','dead'}, {npcHandler = npcHandler, spe keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = 'Icicle', price = 1700, level = 28, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) - keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={2}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) + keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={2}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) - keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={2}}) + keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','bomb'}, {npcHandler = npcHandler, spellName = 'Poison Bomb', price = 1000, level = 25, vocation ={2}}) @@ -95,4 +95,4 @@ keywordHandler:addSpellKeyword({'animate','dead'}, {npcHandler = npcHandler, spe keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Strike}', '{Flame Strike}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Summon Creature}', '{Summon Grovebeast}' and '{Ultimate Light}'."}) - keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file + keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Chatterbone.lua b/server/data/npc/scripts/Chatterbone.lua index eab88dc..86cd92a 100644 --- a/server/data/npc/scripts/Chatterbone.lua +++ b/server/data/npc/scripts/Chatterbone.lua @@ -29,8 +29,8 @@ keywordHandler:addSpellKeyword({'creature','illusion'}, {npcHandler = npcHandler keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) @@ -42,4 +42,4 @@ keywordHandler:addSpellKeyword({'creature','illusion'}, {npcHandler = npcHandler keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Beam}', '{Energy Wave}', '{Fire Wave}' and '{Great Energy Beam}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Creature Illusion}', '{Destroy Field}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Great Fireball}', '{Great Light}', '{Heavy Magic Missile}', '{Invisible}', '{Light}', '{Light Magic Missile}', '{Magic Shield}', '{Poison Field}', '{Poison Wall}', '{Stalagmite}', '{Sudden Death}' and '{Summon Creature}'."}) - keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file + keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Dario.lua b/server/data/npc/scripts/Dario.lua index a8df988..2f66daa 100644 --- a/server/data/npc/scripts/Dario.lua +++ b/server/data/npc/scripts/Dario.lua @@ -41,15 +41,15 @@ keywordHandler:addSpellKeyword({'cancel','invisibility'}, {npcHandler = npcHandl keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) - keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) + keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) - keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) - keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) + keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) + keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Disintegrate}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) - keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file + keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Duria.lua b/server/data/npc/scripts/Duria.lua index 837de0c..93a529b 100644 --- a/server/data/npc/scripts/Duria.lua +++ b/server/data/npc/scripts/Duria.lua @@ -10,8 +10,9 @@ function onThink() npcHandler:onThink() end keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) - keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) + keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Elane.lua b/server/data/npc/scripts/Elane.lua index a968e25..1d7aa1b 100644 --- a/server/data/npc/scripts/Elane.lua +++ b/server/data/npc/scripts/Elane.lua @@ -194,10 +194,8 @@ npcHandler:addModule(FocusModule:new()) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Find Person}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) - - \ No newline at end of file diff --git a/server/data/npc/scripts/Eliza.lua b/server/data/npc/scripts/Eliza.lua index 332b01f..35a116b 100644 --- a/server/data/npc/scripts/Eliza.lua +++ b/server/data/npc/scripts/Eliza.lua @@ -17,9 +17,6 @@ npcHandler:addModule(FocusModule:new()) keywordHandler:addSpellKeyword({'enchant','party'}, {npcHandler = npcHandler, spellName = 'Enchant Party', price = 4000, level = 32, vocation ={1,2,3,4}}) keywordHandler:addSpellKeyword({'heal','party'}, {npcHandler = npcHandler, spellName = 'Heal Party', price = 4000, level = 32, vocation ={1,2,3,4}}) keywordHandler:addSpellKeyword({'protect','party'}, {npcHandler = npcHandler, spellName = 'Protect Party', price = 4000, level = 32, vocation ={1,2,3,4}}) - keywordHandler:addSpellKeyword({'train','party'}, {npcHandler = npcHandler, spellName = 'Train Party', price = 4000, level = 32, vocation ={1,2,3,4}}) + keywordHandler:addSpellKeyword({'train','party'}, {npcHandler = npcHandler, spellName = 'Train Party', price = 4000, level = 32, premium = true, vocation ={1,2,3,4}}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Conjure Bolt}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Enchant Party}', '{Heal Party}', '{Protect Party}' and '{Train Party}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Support spells}.'}) - - - \ No newline at end of file diff --git a/server/data/npc/scripts/Eremo.lua b/server/data/npc/scripts/Eremo.lua index 5d26b66..9f922e1 100644 --- a/server/data/npc/scripts/Eremo.lua +++ b/server/data/npc/scripts/Eremo.lua @@ -74,7 +74,7 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, 'It was a pleasure to help you, |PLAYERN npcHandler:addModule(FocusModule:new()) - keywordHandler:addSpellKeyword({'challenge'}, {npcHandler = npcHandler, spellName = 'Challenge', price = 2000, level = 20, vocation ={4}}) + keywordHandler:addSpellKeyword({'challenge'}, {npcHandler = npcHandler, spellName = 'Challenge', price = 2000, level = 20, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'conjure','power','bolt'}, {npcHandler = npcHandler, spellName = 'Conjure Power Bolt', price = 2000, level = 59, vocation ={3}}) keywordHandler:addSpellKeyword({'enchant','staff'}, {npcHandler = npcHandler, spellName = 'Enchant Staff', price = 2000, level = 41, vocation ={1}}) keywordHandler:addSpellKeyword({'wild','growth'}, {npcHandler = npcHandler, spellName = 'Wild Growth', price = 2000, level = 27, vocation ={2}}) diff --git a/server/data/npc/scripts/Ethan.lua b/server/data/npc/scripts/Ethan.lua index 78efe5a..bd69abd 100644 --- a/server/data/npc/scripts/Ethan.lua +++ b/server/data/npc/scripts/Ethan.lua @@ -26,15 +26,15 @@ keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Etzel.lua b/server/data/npc/scripts/Etzel.lua index 3599177..fc00850 100644 --- a/server/data/npc/scripts/Etzel.lua +++ b/server/data/npc/scripts/Etzel.lua @@ -28,8 +28,8 @@ keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spel keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) @@ -41,4 +41,4 @@ keywordHandler:addSpellKeyword({'ultimate','healing'}, {npcHandler = npcHandler, keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Beam}', '{Energy Wave}', '{Fire Wave}' and '{Great Energy Beam}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Creature Illusion}', '{Destroy Field}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Great Fireball}', '{Great Light}', '{Heavy Magic Missile}', '{Invisible}', '{Light}', '{Light Magic Missile}', '{Magic Shield}', '{Poison Field}', '{Poison Wall}', '{Stalagmite}', '{Sudden Death}' and '{Summon Creature}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Faluae.lua b/server/data/npc/scripts/Faluae.lua index 6bc3f21..d8dfdcb 100644 --- a/server/data/npc/scripts/Faluae.lua +++ b/server/data/npc/scripts/Faluae.lua @@ -20,7 +20,7 @@ keywordHandler:addSpellKeyword({'conjure','sniper','arrow'}, {npcHandler = npcHa keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={2,3}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2,3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2,3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2,3}}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Conjure Bolt}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Find Person}', '{Food}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Support spells}.'}) diff --git a/server/data/npc/scripts/Gregor.lua b/server/data/npc/scripts/Gregor.lua index 6db2d37..a9de719 100644 --- a/server/data/npc/scripts/Gregor.lua +++ b/server/data/npc/scripts/Gregor.lua @@ -166,8 +166,9 @@ end keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Gundralph.lua b/server/data/npc/scripts/Gundralph.lua index d7b3153..debf794 100644 --- a/server/data/npc/scripts/Gundralph.lua +++ b/server/data/npc/scripts/Gundralph.lua @@ -38,7 +38,7 @@ keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spe keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1,2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1,2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1,2}}) @@ -47,11 +47,11 @@ keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1,2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1,2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1,2}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) @@ -75,4 +75,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Death Strike}', '{Energy Beam}', '{Energy Strike}', '{Energy Wave}', '{Fire Wave}', '{Flame Strike}', '{Great Energy Beam}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Intense Healing}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Bomb}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Fireball}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Magic Wall}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Sudden Death}', '{Summon Creature}', '{Summon Grovebeast}', '{Summon Thundergiant}', '{Thunderstorm}', '{Ultimate Healing Rune}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Hawkyr.lua b/server/data/npc/scripts/Hawkyr.lua index c30e0f4..e24e25b 100644 --- a/server/data/npc/scripts/Hawkyr.lua +++ b/server/data/npc/scripts/Hawkyr.lua @@ -26,15 +26,15 @@ keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Disintegrate}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Helor.lua b/server/data/npc/scripts/Helor.lua index 78efe5a..bd69abd 100644 --- a/server/data/npc/scripts/Helor.lua +++ b/server/data/npc/scripts/Helor.lua @@ -26,15 +26,15 @@ keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Hjaern.lua b/server/data/npc/scripts/Hjaern.lua index 182981d..7014e45 100644 --- a/server/data/npc/scripts/Hjaern.lua +++ b/server/data/npc/scripts/Hjaern.lua @@ -216,7 +216,7 @@ keywordHandler:addSpellKeyword({'fire','wall'}, {npcHandler = npcHandler, spellN keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={2}}) @@ -224,11 +224,11 @@ keywordHandler:addSpellKeyword({'ice','wave'}, {npcHandler = npcHandler, spellNa keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = 'Icicle', price = 1700, level = 28, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','bomb'}, {npcHandler = npcHandler, spellName = 'Poison Bomb', price = 1000, level = 25, vocation ={2}}) diff --git a/server/data/npc/scripts/Isolde.lua b/server/data/npc/scripts/Isolde.lua index 580f33e..02aec0e 100644 --- a/server/data/npc/scripts/Isolde.lua +++ b/server/data/npc/scripts/Isolde.lua @@ -27,13 +27,13 @@ keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) diff --git a/server/data/npc/scripts/Lea.lua b/server/data/npc/scripts/Lea.lua index 5edf2ba..5c00a87 100644 --- a/server/data/npc/scripts/Lea.lua +++ b/server/data/npc/scripts/Lea.lua @@ -38,8 +38,8 @@ keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spel keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Legola.lua b/server/data/npc/scripts/Legola.lua index a35a2e9..cecbb59 100644 --- a/server/data/npc/scripts/Legola.lua +++ b/server/data/npc/scripts/Legola.lua @@ -59,8 +59,8 @@ keywordHandler:addSpellKeyword({'divine','healing'}, {npcHandler = npcHandler, s keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Find Person}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Maealil.lua b/server/data/npc/scripts/Maealil.lua index 24f767f..a99a713 100644 --- a/server/data/npc/scripts/Maealil.lua +++ b/server/data/npc/scripts/Maealil.lua @@ -96,7 +96,7 @@ keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spel keywordHandler:addSpellKeyword({'cure','poison','rune'}, {npcHandler = npcHandler, spellName = 'Cure Poison Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={2,3}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2,3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2,3}}) keywordHandler:addSpellKeyword({'ultimate','healing'}, {npcHandler = npcHandler, spellName = 'Ultimate Healing', price = 1000, level = 30, vocation ={2}}) keywordHandler:addSpellKeyword({'ultimate','healing','rune'}, {npcHandler = npcHandler, spellName = 'Ultimate Healing Rune', price = 1500, level = 24, vocation ={2}}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) diff --git a/server/data/npc/scripts/Malunga.lua b/server/data/npc/scripts/Malunga.lua index d1a577e..6dd1468 100644 --- a/server/data/npc/scripts/Malunga.lua +++ b/server/data/npc/scripts/Malunga.lua @@ -36,16 +36,16 @@ keywordHandler:addSpellKeyword({'fireball'}, {npcHandler = npcHandler, spellName keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Marvik.lua b/server/data/npc/scripts/Marvik.lua index 741fc82..e5a9e7a 100644 --- a/server/data/npc/scripts/Marvik.lua +++ b/server/data/npc/scripts/Marvik.lua @@ -30,8 +30,8 @@ function onThink() npcHandler:onThink() end keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={2}}) diff --git a/server/data/npc/scripts/Muriel.lua b/server/data/npc/scripts/Muriel.lua index c8e21d2..648e942 100644 --- a/server/data/npc/scripts/Muriel.lua +++ b/server/data/npc/scripts/Muriel.lua @@ -106,8 +106,8 @@ npcHandler:addModule(FocusModule:new()) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) - keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) - keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) + keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) + keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Myra.lua b/server/data/npc/scripts/Myra.lua index 860a9f0..39da8ae 100644 --- a/server/data/npc/scripts/Myra.lua +++ b/server/data/npc/scripts/Myra.lua @@ -120,16 +120,16 @@ keywordHandler:addSpellKeyword({'fireball'}, {npcHandler = npcHandler, spellName keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) @@ -147,4 +147,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Apprentice's Strike}', '{Death Strike}', '{Energy Beam}', '{Energy Strike}', '{Energy Wave}', '{Fire Wave}', '{Flame Strike}', '{Great Energy Beam}', '{Ice Strike}' and '{Terra Strike}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Creature Illusion}', '{Destroy Field}', '{Disintegrate}', '{Energy Bomb}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Fireball}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Magic Wall}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Strong Haste}', '{Sudden Death}', '{Summon Creature}', '{Summon Thundergiant}', '{Thunderstorm}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Ormuhn.lua b/server/data/npc/scripts/Ormuhn.lua index 4473bd5..a452acd 100644 --- a/server/data/npc/scripts/Ormuhn.lua +++ b/server/data/npc/scripts/Ormuhn.lua @@ -7,22 +7,22 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Padreia.lua b/server/data/npc/scripts/Padreia.lua index 2e7edb3..8dea9df 100644 --- a/server/data/npc/scripts/Padreia.lua +++ b/server/data/npc/scripts/Padreia.lua @@ -102,8 +102,8 @@ keywordHandler:addSpellKeyword({'ice','wave'}, {npcHandler = npcHandler, spellNa keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={2}}) @@ -116,4 +116,4 @@ keywordHandler:addSpellKeyword({'ultimate','healing','rune'}, {npcHandler = npcH keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Ice Wave}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Heavy Magic Missile}', '{Intense Healing Rune}', '{Invisible}', '{Light}', '{Light Magic Missile}', '{Magic Shield}', '{Poison Field}', '{Poison Wall}', '{Stalagmite}', '{Summon Creature}' and '{Ultimate Healing Rune}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Puffels.lua b/server/data/npc/scripts/Puffels.lua index ddbbaa1..bd0dfe9 100644 --- a/server/data/npc/scripts/Puffels.lua +++ b/server/data/npc/scripts/Puffels.lua @@ -7,22 +7,16 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) -keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) -keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) -keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) +keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}' and '{Whirlwind Throw}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Haste}', '{Levitate}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) npcHandler:setMessage(MESSAGE_GREET, 'Yeah, another fool {disturbing} me, what a joy.') diff --git a/server/data/npc/scripts/Rahkem.lua b/server/data/npc/scripts/Rahkem.lua index 4d02111..4c31bde 100644 --- a/server/data/npc/scripts/Rahkem.lua +++ b/server/data/npc/scripts/Rahkem.lua @@ -104,7 +104,7 @@ keywordHandler:addSpellKeyword({'fire','wall'}, {npcHandler = npcHandler, spellN keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={2}}) @@ -112,11 +112,11 @@ keywordHandler:addSpellKeyword({'ice','wave'}, {npcHandler = npcHandler, spellNa keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = 'Icicle', price = 1700, level = 28, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','bomb'}, {npcHandler = npcHandler, spellName = 'Poison Bomb', price = 1000, level = 25, vocation ={2}}) @@ -135,4 +135,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Strike}', '{Flame Strike}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Summon Creature}', '{Summon Grovebeast}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Razan.lua b/server/data/npc/scripts/Razan.lua index 7be383c..6926eae 100644 --- a/server/data/npc/scripts/Razan.lua +++ b/server/data/npc/scripts/Razan.lua @@ -133,9 +133,8 @@ npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:setCallback(CALLBACK_ONRELEASEFOCUS, onReleaseFocus) npcHandler:addModule(FocusModule:new()) -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cancel','invisibility'}, {npcHandler = npcHandler, spellName = 'Cancel Invisibility', price = 1600, level = 26, vocation ={3}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) keywordHandler:addSpellKeyword({'conjure','arrow'}, {npcHandler = npcHandler, spellName = 'Conjure Arrow', price = 450, level = 13, vocation ={3}}) keywordHandler:addSpellKeyword({'conjure','bolt'}, {npcHandler = npcHandler, spellName = 'Conjure Bolt', price = 750, level = 17, vocation ={3}}) keywordHandler:addSpellKeyword({'conjure','explosive','arrow'}, {npcHandler = npcHandler, spellName = 'Conjure Explosive Arrow', price = 1000, level = 25, vocation ={3}}) @@ -150,21 +149,21 @@ keywordHandler:addSpellKeyword({'divine','healing'}, {npcHandler = npcHandler, s keywordHandler:addSpellKeyword({'divine','missile'}, {npcHandler = npcHandler, spellName = 'Divine Missile', price = 1800, level = 40, vocation ={3}}) keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, spellName = 'Enchant Spear', price = 2000, level = 45, vocation ={3}}) keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3,4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3,4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3,4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3,4}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3,4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3,4}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3,4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3,4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3,4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3,4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3,4}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Divine Caldera}', '{Divine Missile}', '{Ethereal Spear}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Charge}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Disintegrate}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}', '{Summon Emberwing}' and '{Summon Skullfrost}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Disintegrate}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Romir.lua b/server/data/npc/scripts/Romir.lua index 34a61ad..693bbc7 100644 --- a/server/data/npc/scripts/Romir.lua +++ b/server/data/npc/scripts/Romir.lua @@ -32,16 +32,16 @@ keywordHandler:addSpellKeyword({'fireball'}, {npcHandler = npcHandler, spellName keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Shalmar.lua b/server/data/npc/scripts/Shalmar.lua index d3eace5..9a7bcb2 100644 --- a/server/data/npc/scripts/Shalmar.lua +++ b/server/data/npc/scripts/Shalmar.lua @@ -36,7 +36,7 @@ keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spe keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1,2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1,2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1,2}}) @@ -45,11 +45,11 @@ keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1,2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1,2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1,2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1,2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1,2}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) @@ -73,4 +73,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Death Strike}', '{Energy Beam}', '{Energy Strike}', '{Energy Wave}', '{Fire Wave}', '{Flame Strike}', '{Great Energy Beam}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Intense Healing}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Bomb}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Fireball}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Magic Wall}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Sudden Death}', '{Summon Creature}', '{Summon Grovebeast}', '{Summon Thundergiant}', '{Thunderstorm}', '{Ultimate Healing Rune}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Smiley.lua b/server/data/npc/scripts/Smiley.lua index 9907856..6379611 100644 --- a/server/data/npc/scripts/Smiley.lua +++ b/server/data/npc/scripts/Smiley.lua @@ -30,8 +30,8 @@ keywordHandler:addSpellKeyword({'ice','wave'}, {npcHandler = npcHandler, spellNa keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={2}}) @@ -44,4 +44,4 @@ keywordHandler:addSpellKeyword({'ultimate','healing','rune'}, {npcHandler = npcH keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Ice Wave}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Intense Healing}', '{Light Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Heavy Magic Missile}', '{Intense Healing Rune}', '{Invisible}', '{Light}', '{Light Magic Missile}', '{Magic Shield}', '{Poison Field}', '{Poison Wall}', '{Stalagmite}', '{Summon Creature}' and '{Ultimate Healing Rune}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Tamara.lua b/server/data/npc/scripts/Tamara.lua index 979a438..4a1798d 100644 --- a/server/data/npc/scripts/Tamara.lua +++ b/server/data/npc/scripts/Tamara.lua @@ -29,7 +29,7 @@ keywordHandler:addSpellKeyword({'fire','wall'}, {npcHandler = npcHandler, spellN keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={2}}) @@ -38,11 +38,11 @@ keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','bomb'}, {npcHandler = npcHandler, spellName = 'Poison Bomb', price = 1000, level = 25, vocation ={2}}) @@ -61,4 +61,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Strike}', '{Flame Strike}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Intense Healing}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Summon Creature}', '{Summon Grovebeast}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Tamoril.lua b/server/data/npc/scripts/Tamoril.lua index 9abdc1c..1f24e5b 100644 --- a/server/data/npc/scripts/Tamoril.lua +++ b/server/data/npc/scripts/Tamoril.lua @@ -36,16 +36,16 @@ keywordHandler:addSpellKeyword({'fireball'}, {npcHandler = npcHandler, spellName keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Thorwulf.lua b/server/data/npc/scripts/Thorwulf.lua index 7898ca7..ba39fd8 100644 --- a/server/data/npc/scripts/Thorwulf.lua +++ b/server/data/npc/scripts/Thorwulf.lua @@ -7,22 +7,22 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) npcHandler:setMessage(MESSAGE_GREET, 'Hi |PLAYERNAME|.') diff --git a/server/data/npc/scripts/Tothdral.lua b/server/data/npc/scripts/Tothdral.lua index 5cb29e7..38dd7c4 100644 --- a/server/data/npc/scripts/Tothdral.lua +++ b/server/data/npc/scripts/Tothdral.lua @@ -31,16 +31,16 @@ keywordHandler:addSpellKeyword({'fireball'}, {npcHandler = npcHandler, spellName keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'great','energy','beam'}, {npcHandler = npcHandler, spellName = 'Great Energy Beam', price = 1800, level = 29, vocation ={1}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={1}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={1}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={1}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={1}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={1}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={1}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={1}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={1}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={1}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={1}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={1}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={1}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={1}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={1}}) keywordHandler:addSpellKeyword({'magic','wall'}, {npcHandler = npcHandler, spellName = 'Magic Wall', price = 2100, level = 32, vocation ={1}}) keywordHandler:addSpellKeyword({'poison','field'}, {npcHandler = npcHandler, spellName = 'Poison Field', price = 300, level = 14, vocation ={1}}) diff --git a/server/data/npc/scripts/Trisha.lua b/server/data/npc/scripts/Trisha.lua index 3c08f6e..bfce25f 100644 --- a/server/data/npc/scripts/Trisha.lua +++ b/server/data/npc/scripts/Trisha.lua @@ -133,8 +133,9 @@ end keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}' and '{Light}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Tristan.lua b/server/data/npc/scripts/Tristan.lua index 2f74be2..ffc662d 100644 --- a/server/data/npc/scripts/Tristan.lua +++ b/server/data/npc/scripts/Tristan.lua @@ -7,22 +7,22 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) npcHandler:addModule(FocusModule:new()) diff --git a/server/data/npc/scripts/Ursula.lua b/server/data/npc/scripts/Ursula.lua index c30e0f4..fad0bce 100644 --- a/server/data/npc/scripts/Ursula.lua +++ b/server/data/npc/scripts/Ursula.lua @@ -26,15 +26,16 @@ keywordHandler:addSpellKeyword({'enchant','spear'}, {npcHandler = npcHandler, sp keywordHandler:addSpellKeyword({'ethereal','spear'}, {npcHandler = npcHandler, spellName = 'Ethereal Spear', price = 1100, level = 23, vocation ={3}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={3}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={3}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={3}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'holy','missile'}, {npcHandler = npcHandler, spellName = 'Holy Missile', price = 1600, level = 27, vocation ={3}}) keywordHandler:addSpellKeyword({'intense','healing'}, {npcHandler = npcHandler, spellName = 'Intense Healing', price = 350, level = 20, vocation ={3}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={3}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={3}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={3}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={3}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={3}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={3}}) keywordHandler:addSpellKeyword({'summon','emberwing'}, {npcHandler = npcHandler, spellName = 'Summon Emberwing', price = 50000, level = 200, vocation ={3}}) -keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}' and '{Ethereal Spear}'."}) +keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Divine Missile}', '{Ethereal Spear}' and '{Groundshaker}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Divine Healing}', '{Intense Healing}' and '{Light Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cancel Invisibility}', '{Conjure Arrow}', '{Conjure Bolt}', '{Conjure Explosive Arrow}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Destroy Field}', '{Disintegrate}', '{Enchant Spear}', '{Find Person}', '{Great Light}', '{Haste}', '{Holy Missile}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Emberwing}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Uso.lua b/server/data/npc/scripts/Uso.lua index 2f74be2..ffc662d 100644 --- a/server/data/npc/scripts/Uso.lua +++ b/server/data/npc/scripts/Uso.lua @@ -7,22 +7,22 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) npcHandler:addModule(FocusModule:new()) diff --git a/server/data/npc/scripts/Ustan.lua b/server/data/npc/scripts/Ustan.lua index 153b3c5..9fe6492 100644 --- a/server/data/npc/scripts/Ustan.lua +++ b/server/data/npc/scripts/Ustan.lua @@ -66,7 +66,7 @@ keywordHandler:addSpellKeyword({'fire','wall'}, {npcHandler = npcHandler, spellN keywordHandler:addSpellKeyword({'flame','strike'}, {npcHandler = npcHandler, spellName = 'Flame Strike', price = 800, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'food'}, {npcHandler = npcHandler, spellName = 'Food', price = 300, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={2}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={2}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'heal','friend'}, {npcHandler = npcHandler, spellName = 'Heal Friend', price = 800, level = 18, vocation ={2}}) keywordHandler:addSpellKeyword({'heavy','magic','missile'}, {npcHandler = npcHandler, spellName = 'Heavy Magic Missile', price = 1500, level = 25, vocation ={2}}) keywordHandler:addSpellKeyword({'ice','strike'}, {npcHandler = npcHandler, spellName = 'Ice Strike', price = 800, level = 15, vocation ={2}}) @@ -74,11 +74,11 @@ keywordHandler:addSpellKeyword({'ice','wave'}, {npcHandler = npcHandler, spellNa keywordHandler:addSpellKeyword({'icicle'}, {npcHandler = npcHandler, spellName = 'Icicle', price = 1700, level = 28, vocation ={2}}) keywordHandler:addSpellKeyword({'intense','healing','rune'}, {npcHandler = npcHandler, spellName = 'Intense Healing Rune', price = 600, level = 15, vocation ={2}}) keywordHandler:addSpellKeyword({'invisible'}, {npcHandler = npcHandler, spellName = 'Invisible', price = 2000, level = 35, vocation ={2}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={2}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={2}}) -keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 0, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={2}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={2}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={2}}) keywordHandler:addSpellKeyword({'light','magic','missile'}, {npcHandler = npcHandler, spellName = 'Light Magic Missile', price = 500, level = 15, vocation ={2}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={2}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={2}}) keywordHandler:addSpellKeyword({'magic','shield'}, {npcHandler = npcHandler, spellName = 'Magic Shield', price = 450, level = 14, vocation ={2}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'poison','bomb'}, {npcHandler = npcHandler, spellName = 'Poison Bomb', price = 1000, level = 25, vocation ={2}}) @@ -97,4 +97,4 @@ keywordHandler:addSpellKeyword({'ultimate','light'}, {npcHandler = npcHandler, s keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Energy Strike}', '{Flame Strike}', '{Ice Strike}', '{Ice Wave}', '{Terra Strike}' and '{Terra Wave}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Heal Friend}', '{Light Healing}', '{Mass Healing}' and '{Ultimate Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Animate Dead}', '{Avalanche}', '{Chameleon}', '{Convince Creature}', '{Creature Illusion}', '{Cure Poison Rune}', '{Destroy Field}', '{Disintegrate}', '{Energy Field}', '{Energy Wall}', '{Explosion}', '{Find Person}', '{Fire Bomb}', '{Fire Field}', '{Fire Wall}', '{Food}', '{Great Light}', '{Haste}', '{Heavy Magic Missile}', '{Icicle}', '{Intense Healing Rune}', '{Invisible}', '{Levitate}', '{Light}', '{Light Magic Missile}', '{Magic Rope}', '{Magic Shield}', '{Poison Bomb}', '{Poison Field}', '{Poison Wall}', '{Soulfire}', '{Stalagmite}', '{Stone Shower}', '{Strong Haste}', '{Summon Creature}', '{Summon Grovebeast}' and '{Ultimate Light}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/Zarak.lua b/server/data/npc/scripts/Zarak.lua index 2f74be2..ffc662d 100644 --- a/server/data/npc/scripts/Zarak.lua +++ b/server/data/npc/scripts/Zarak.lua @@ -7,22 +7,22 @@ function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end function onThink() npcHandler:onThink() end -keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, vocation ={4}}) -keywordHandler:addSpellKeyword({'charge'}, {npcHandler = npcHandler, spellName = 'Charge', price = 1300, level = 25, vocation ={4}}) +keywordHandler:addSpellKeyword({'berserk'}, {npcHandler = npcHandler, spellName = 'Berserk', price = 2500, level = 35, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'cure','poison'}, {npcHandler = npcHandler, spellName = 'Cure Poison', price = 150, level = 10, vocation ={4}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'find','person'}, {npcHandler = npcHandler, spellName = 'Find Person', price = 80, level = 8, vocation ={4}}) keywordHandler:addSpellKeyword({'great','light'}, {npcHandler = npcHandler, spellName = 'Great Light', price = 500, level = 13, vocation ={4}}) -keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, vocation ={4}}) -keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, vocation ={4}}) -keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, vocation ={4}}) -keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 0, level = 8, vocation ={4}}) -keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, vocation ={4}}) -keywordHandler:addSpellKeyword({'summon','skullfrost'}, {npcHandler = npcHandler, spellName = 'Summon Skullfrost', price = 50000, level = 200, vocation ={4}}) -keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 1500, level = 28, vocation ={4}}) +keywordHandler:addSpellKeyword({'groundshaker'}, {npcHandler = npcHandler, spellName = 'Groundshaker', price = 1500, level = 33, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'haste'}, {npcHandler = npcHandler, spellName = 'Haste', price = 600, level = 14, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'levitate'}, {npcHandler = npcHandler, spellName = 'Levitate', price = 500, level = 12, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'light'}, {npcHandler = npcHandler, spellName = 'Light', price = 100, level = 8, vocation ={4}}) +keywordHandler:addSpellKeyword({'light','healing'}, {npcHandler = npcHandler, spellName = 'Light Healing', price = 170, level = 9, vocation ={4}}) +keywordHandler:addSpellKeyword({'magic','rope'}, {npcHandler = npcHandler, spellName = 'Magic Rope', price = 200, level = 9, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'whirlwind','throw'}, {npcHandler = npcHandler, spellName = 'Whirlwind Throw', price = 800, level = 15, premium = true, vocation ={4}}) +keywordHandler:addSpellKeyword({'wound','cleansing'}, {npcHandler = npcHandler, spellName = 'Wound Cleansing', price = 300, level = 30, premium = true, vocation ={4}}) keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Berserk}', '{Fierce Berserk}', '{Groundshaker}' and '{Whirlwind Throw}'."}) -keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}'."}) -keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Charge}', '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}', '{Magic Rope}' and '{Summon Skullfrost}'."}) +keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Cure Poison}', '{Light Healing}' and '{Wound Cleansing}'."}) +keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Find Person}', '{Great Light}', '{Haste}', '{Levitate}', '{Light}' and '{Magic Rope}'."}) keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) npcHandler:addModule(FocusModule:new()) diff --git a/server/data/npc/scripts/Zoltan.lua b/server/data/npc/scripts/Zoltan.lua index 245d64d..92100e1 100644 --- a/server/data/npc/scripts/Zoltan.lua +++ b/server/data/npc/scripts/Zoltan.lua @@ -49,7 +49,7 @@ npcHandler:setMessage(MESSAGE_WALKAWAY, 'Good bye, and don\'t come back too soon npcHandler:addModule(FocusModule:new()) -keywordHandler:addSpellKeyword({'blood','rage'}, {npcHandler = npcHandler, spellName = 'Blood Rage', price = 8000, level = 60, vocation ={4}}) +keywordHandler:addSpellKeyword({'blood','rage'}, {npcHandler = npcHandler, spellName = 'Blood Rage', price = 8000, level = 60, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'conjure','bolt'}, {npcHandler = npcHandler, spellName = 'Conjure Bolt', price = 750, level = 17, vocation ={3}}) keywordHandler:addSpellKeyword({'conjure','piercing','bolt'}, {npcHandler = npcHandler, spellName = 'Conjure Piercing Bolt', price = 850, level = 33, vocation ={3}}) keywordHandler:addSpellKeyword({'conjure','poisoned','arrow'}, {npcHandler = npcHandler, spellName = 'Conjure Poisoned Arrow', price = 700, level = 16, vocation ={3}}) @@ -57,11 +57,11 @@ keywordHandler:addSpellKeyword({'conjure','sniper','arrow'}, {npcHandler = npcHa keywordHandler:addSpellKeyword({'divine','caldera'}, {npcHandler = npcHandler, spellName = 'Divine Caldera', price = 3000, level = 50, vocation ={3}}) keywordHandler:addSpellKeyword({'energy','bomb'}, {npcHandler = npcHandler, spellName = 'Energy Bomb', price = 2300, level = 37, vocation ={1}}) keywordHandler:addSpellKeyword({'eternal','winter'}, {npcHandler = npcHandler, spellName = 'Eternal Winter', price = 8000, level = 60, vocation ={2}}) -keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 7500, level = 90, vocation ={4}}) +keywordHandler:addSpellKeyword({'fierce','berserk'}, {npcHandler = npcHandler, spellName = 'Fierce Berserk', price = 5000, level = 70, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'hell\'s','core'}, {npcHandler = npcHandler, spellName = 'Hell\'s Core', price = 8000, level = 60, vocation ={1}}) keywordHandler:addSpellKeyword({'mass','healing'}, {npcHandler = npcHandler, spellName = 'Mass Healing', price = 2200, level = 36, vocation ={2}}) keywordHandler:addSpellKeyword({'paralyse'}, {npcHandler = npcHandler, spellName = 'Paralyse', price = 1900, level = 54, vocation ={2}}) -keywordHandler:addSpellKeyword({'protector'}, {npcHandler = npcHandler, spellName = 'Protector', price = 6000, level = 55, vocation ={4}}) +keywordHandler:addSpellKeyword({'protector'}, {npcHandler = npcHandler, spellName = 'Protector', price = 6000, level = 55, premium = true, vocation ={4}}) keywordHandler:addSpellKeyword({'rage','of','the','skies'}, {npcHandler = npcHandler, spellName = 'Rage of the Skies', price = 6000, level = 55, vocation ={1}}) keywordHandler:addSpellKeyword({'sharpshooter'}, {npcHandler = npcHandler, spellName = 'Sharpshooter', price = 8000, level = 60, vocation ={3}}) keywordHandler:addSpellKeyword({'swift','foot'}, {npcHandler = npcHandler, spellName = 'Swift Foot', price = 6000, level = 55, vocation ={3}}) @@ -69,4 +69,4 @@ keywordHandler:addSpellKeyword({'wrath','of','nature'}, {npcHandler = npcHandler keywordHandler:addKeyword({'attack', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Divine Caldera}', '{Eternal Winter}', '{Fierce Berserk}', '{Hell's Core}', '{Rage of the Skies}' and '{Wrath of Nature}'."}) keywordHandler:addKeyword({'healing', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Mass Healing}'."}) keywordHandler:addKeyword({'support', 'spells'}, StdModule.say, {npcHandler = npcHandler, text = "In this category I have '{Blood Rage}', '{Conjure Bolt}', '{Conjure Piercing Bolt}', '{Conjure Poisoned Arrow}', '{Conjure Sniper Arrow}', '{Energy Bomb}', '{Paralyse}', '{Protector}', '{Sharpshooter}' and '{Swift Foot}'."}) -keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) \ No newline at end of file +keywordHandler:addKeyword({'spells'}, StdModule.say, {npcHandler = npcHandler, text = 'I can teach you {Attack spells}, {Healing spells} and {Support spells}.'}) diff --git a/server/data/npc/scripts/spells/healing spell.lua b/server/data/npc/scripts/spells/healing spell.lua index a681376..4bf0b63 100644 --- a/server/data/npc/scripts/spells/healing spell.lua +++ b/server/data/npc/scripts/spells/healing spell.lua @@ -18,7 +18,7 @@ local AllSpells = false -- 4,8 Knight local spells = { - [8704]={ buy =1, spell = "Light Healing", name = "Light Healing", vocations = {1,2,3,4,5,6,7,8}, level = 8, premium = 0}, + [8704]={ buy =170, spell = "Light Healing", name = "Light Healing", vocations = {1,2,3,4,5,6,7,8}, level = 9, premium = 0}, [8474]={ buy =150, spell = "Cure Poison", name = "Cure Poison", vocations = {1,2,3,4,5,6,7,8}, level = 10, premium = 0}, [7488]={ buy =800, spell = "Heal Friend", name = "Heal Friend", vocations = {2,6}, level = 18, premium = 0}, [2265]={ buy =350, spell = "Intense Healing", name = "Intense Healing", vocations = {1,2,3,4,5,6,7,8}, level = 20, premium = 0}, diff --git a/server/data/npc/scripts/spells/physical spell.lua b/server/data/npc/scripts/spells/physical spell.lua index d6b8963..4621bc1 100644 --- a/server/data/npc/scripts/spells/physical spell.lua +++ b/server/data/npc/scripts/spells/physical spell.lua @@ -10,7 +10,7 @@ function onThink() npcHandler:onThink() end local voices = { {text = 'Hello there, adventurer! Need a deal in spells? I\'m your man!'} } npcHandler:addModule(VoiceModule:new(voices)) -local PremiumSpells = false +local PremiumSpells = true local AllSpells = false -- 1,5 Sorcerer -- 2,6 Druid @@ -18,12 +18,10 @@ local AllSpells = false -- 4,8 Knight local spells = { - [11426]={ buy =1500, spell = "Whirlwind Throw", name = "Whirlwind Throw", vocations = {4,8}, level = 28, premium = 0}, - [1505]={ buy =1500, spell = "Groundshaker", name = "Groundshaker", vocations = {4,8}, level = 33, premium = 0}, - [2393]={ buy =2500, spell = "Berserk", name = "Berserk", vocations = {4,8}, level = 35, premium = 0}, - [2421]={ buy =7500, spell = "Fierce Berserk", name = "Fierce Berserk", vocations = {4,8}, level = 90, premium = 0}, - [2207]={ buy =1000, spell = "Brutal Strike", name = "Brutal Strike", vocations = {4,8}, level = 16, premium = 0}, - [7402]={ buy =20000, spell = "Annihilation", name = "Annihilation", vocations = {4,8}, level = 110, premium = 0} + [11426]={ buy =800, spell = "Whirlwind Throw", name = "Whirlwind Throw", vocations = {4,8}, level = 15, premium = 1}, + [1505]={ buy =1500, spell = "Groundshaker", name = "Groundshaker", vocations = {4,8}, level = 33, premium = 1}, + [2393]={ buy =2500, spell = "Berserk", name = "Berserk", vocations = {4,8}, level = 35, premium = 1}, + [2421]={ buy =5000, spell = "Fierce Berserk", name = "Fierce Berserk", vocations = {4,8}, level = 70, premium = 1} } diff --git a/server/data/spells/spells.xml b/server/data/spells/spells.xml index c080487..c056d89 100644 --- a/server/data/spells/spells.xml +++ b/server/data/spells/spells.xml @@ -1,7 +1,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -57,7 +57,7 @@ - + @@ -89,7 +89,7 @@ - + @@ -99,7 +99,7 @@ - + @@ -125,13 +125,19 @@ - + + + + + + + @@ -145,7 +151,7 @@ - + @@ -153,10 +159,10 @@ - + - + @@ -166,7 +172,7 @@ - + @@ -180,7 +186,7 @@ - + @@ -190,7 +196,7 @@ - + @@ -206,7 +212,7 @@ - + @@ -216,7 +222,7 @@ - + @@ -226,7 +232,7 @@ - + @@ -242,7 +248,7 @@ - + @@ -286,7 +292,7 @@ - + diff --git a/server/tests/playerbot_connectionless.lua b/server/tests/playerbot_connectionless.lua index 2a2d318..670e9af 100644 --- a/server/tests/playerbot_connectionless.lua +++ b/server/tests/playerbot_connectionless.lua @@ -4,6 +4,11 @@ local modeValues = { interactions = 86016, death = 86017, remove = 86018, + spellReset = 86022, + spellLearning = 86019, + spellPersistence = 86020, + spellTrainer = 86021, + spellFailures = 86023, } local function pass(mode) @@ -16,6 +21,42 @@ local function getBot(playerId) return player end +local function setExperience(player, experience) + local current = player:getExperience() + if current < experience then + player:addExperience(experience - current) + elseif current > experience then + player:removeExperience(current - experience) + end + assert(player:getExperience() == experience, "test experience could not be set") +end + +local function setLevel(player, level) + setExperience(player, Game.getExperienceForLevel(level)) + assert(player:getLevel() == level, "test level could not be set") +end + +local function getTotalMoney(player) + return player:getMoney() + player:getBankBalance() +end + +local function clearMoney(player) + local total = getTotalMoney(player) + if total > 0 then + assert(player:removeTotalMoney(total), "test money could not be cleared") + end + assert(getTotalMoney(player) == 0, "test money remained after clearing") +end + +local function hasCastableSpell(player, spellName) + for _, spell in ipairs(player:getInstantSpells()) do + if spell.name == spellName then + return true + end + end + return false +end + local login = CreatureEvent("zzPlayerbotConnectionlessRegression") function login.onLogin(player) @@ -74,6 +115,265 @@ function login.onLogin(player) return true end + if mode == "spellReset" then + local playerId = player:getId() + addEvent(function() + local bot = getBot(playerId) + assert(bot:setVocation(4), "spell reset could not select Knight vocation") + setLevel(bot, 8) + bot:forgetSpell("Light") + assert(not bot:hasLearnedSpell("Light"), "Light remained learned after reset") + assert(not hasCastableSpell(bot, "Light"), "unlearned Light remained castable") + pass(mode) + end, 100) + return true + elseif mode == "spellLearning" then + assert(not player:hasLearnedSpell("Light"), "Light was already learned before the learning phase") + assert(player:canLearnSpell("Light"), "level 8 Knight cannot learn Light") + assert(not hasCastableSpell(player, "Light"), "Light was castable before training") + assert(player:addMoney(100), "Light training money could not be added") + local moneyBefore = getTotalMoney(player) + local gregor = Npc("Gregor") + assert(gregor, "Gregor is unavailable") + local gregorPosition = gregor:getPosition() + local testPosition = Position(gregorPosition.x - 1, gregorPosition.y, gregorPosition.z) + local playerId = player:getId() + addEvent(function() + local bot = getBot(playerId) + assert(bot:teleportTo(testPosition), "Gregor learning position could not be reached") + assert(bot:say("hi", TALKTYPE_PRIVATE_PN, false, gregor), "Gregor learning greeting failed") + end, 100) + addEvent(function() + assert(getBot(playerId):say("light", TALKTYPE_PRIVATE_PN, false, gregor), "Light learning request failed") + end, 200) + addEvent(function() + assert(getBot(playerId):say("yes", TALKTYPE_PRIVATE_PN, false, gregor), "Light learning confirmation failed") + end, 300) + addEvent(function() + local bot = getBot(playerId) + assert(bot:hasLearnedSpell("Light"), "Gregor did not teach Light through normal dialogue") + assert(hasCastableSpell(bot, "Light"), "Light remained uncastable after training") + assert(getTotalMoney(bot) == moneyBefore - 100, "Gregor did not charge exactly 100 gold for Light") + pass(mode) + end, 400) + return true + elseif mode == "spellPersistence" then + assert(player:hasLearnedSpell("Light"), "learned Light did not persist") + assert(hasCastableSpell(player, "Light"), "persisted Light is not castable") + assert(player:addMoney(100), "duplicate test money could not be added") + local moneyBefore = getTotalMoney(player) + local gregor = Npc("Gregor") + assert(gregor, "Gregor is unavailable") + local gregorPosition = gregor:getPosition() + local testPosition = Position(gregorPosition.x - 1, gregorPosition.y, gregorPosition.z) + local playerId = player:getId() + addEvent(function() + local bot = getBot(playerId) + assert(bot:teleportTo(testPosition), "Gregor duplicate position could not be reached") + assert(bot:say("hi", TALKTYPE_PRIVATE_PN, false, gregor), "Gregor duplicate greeting failed") + end, 100) + addEvent(function() + assert(getBot(playerId):say("light", TALKTYPE_PRIVATE_PN, false, gregor), "duplicate Light request failed") + end, 200) + addEvent(function() + assert(getBot(playerId):say("yes", TALKTYPE_PRIVATE_PN, false, gregor), "duplicate Light confirmation failed") + end, 300) + addEvent(function() + local bot = getBot(playerId) + assert(bot:hasLearnedSpell("Light"), "duplicate purchase removed learned Light") + assert(getTotalMoney(bot) == moneyBefore, "duplicate purchase changed money") + assert(bot:removeMoney(100), "duplicate test money could not be removed") + pass(mode) + end, 400) + return true + elseif mode == "spellTrainer" then + player:forgetSpell("Light") + player:forgetSpell("Light Healing") + assert(player:addMoney(270), "test spell money could not be added") + local moneyBefore = player:getMoney() + local gregor = Npc("Gregor") + assert(gregor, "Gregor is unavailable") + local gregorPosition = gregor:getPosition() + local testPosition = Position(gregorPosition.x - 1, gregorPosition.y, gregorPosition.z) + local playerId = player:getId() + addEvent(function() + local bot = getBot(playerId) + assert(bot:setVocation(4), "Gregor trainer test could not select Knight vocation") + setLevel(bot, 9) + assert(bot:teleportTo(testPosition), "Gregor test position could not be reached") + end, 50) + addEvent(function() + local bot = getBot(playerId) + assert(bot:teleportTo(testPosition), "Gregor test position could not be restored") + assert(bot:say("hi", TALKTYPE_PRIVATE_PN, false, gregor), "Gregor greeting failed") + end, 100) + addEvent(function() + local bot = getBot(playerId) + assert(bot:teleportTo(testPosition), "Gregor test position could not be restored") + assert(bot:say("light healing", TALKTYPE_PRIVATE_PN, false, gregor), "Light Healing request failed") + end, 200) + addEvent(function() + local bot = getBot(playerId) + assert(bot:teleportTo(testPosition), "Gregor test position could not be restored") + assert(bot:say("yes", TALKTYPE_PRIVATE_PN, false, gregor), "Light Healing confirmation failed") + end, 300) + addEvent(function() + local bot = getBot(playerId) + assert(bot:hasLearnedSpell("Light Healing"), "Gregor did not teach Light Healing") + assert(not bot:hasLearnedSpell("Light"), "Light Healing request matched Light") + assert(bot:getMoney() == moneyBefore - 170, "Gregor did not charge exactly 170 gold for Light Healing") + assert(bot:say("hi", TALKTYPE_PRIVATE_PN, false, gregor), "second Gregor greeting failed") + end, 400) + addEvent(function() + local bot = getBot(playerId) + assert(bot:say("light", TALKTYPE_PRIVATE_PN, false, gregor), "Light request failed") + end, 500) + addEvent(function() + local bot = getBot(playerId) + assert(bot:say("yes", TALKTYPE_PRIVATE_PN, false, gregor), "Light confirmation failed") + end, 600) + addEvent(function() + local bot = getBot(playerId) + assert(bot:hasLearnedSpell("Light"), "Gregor did not teach Light") + assert(bot:getMoney() == moneyBefore - 270, "Gregor did not charge exactly 100 gold for Light") + pass(mode) + end, 700) + return true + elseif mode == "spellFailures" then + local originalExperience = player:getExperience() + local originalVocation = player:getVocation():getId() + local originalPremiumEndsAt = player:getPremiumEndsAt() + local originalInventoryMoney = player:getMoney() + local originalBankMoney = player:getBankBalance() + local testedSpells = {"Light", "Light Healing", "Whirlwind Throw", "Challenge"} + local originallyLearned = {} + for _, spellName in ipairs(testedSpells) do + originallyLearned[spellName] = player:hasLearnedSpell(spellName) + player:forgetSpell(spellName) + end + clearMoney(player) + + local gregor = Npc("Gregor") + local puffels = Npc("Puffels") + local eremo = Npc("Eremo") + assert(gregor and puffels and eremo, "spell failure trainer is unavailable") + local positions = { + Gregor = Position(gregor:getPosition().x - 1, gregor:getPosition().y, gregor:getPosition().z), + Puffels = Position(puffels:getPosition().x - 1, puffels:getPosition().y, puffels:getPosition().z), + Eremo = Position(eremo:getPosition().x - 1, eremo:getPosition().y, eremo:getPosition().z), + } + local playerId = player:getId() + local delay = 100 + local function later(callback) + addEvent(callback, delay) + delay = delay + 100 + end + local function sayTo(npc, position, message) + later(function() + local bot = getBot(playerId) + assert(bot:teleportTo(position), "spell failure trainer position could not be reached") + assert(bot:say(message, TALKTYPE_PRIVATE_PN, false, npc), "spell failure dialogue failed: " .. message) + end) + end + + later(function() + local bot = getBot(playerId) + assert(bot:setVocation(2), "vocation failure could not select Druid") + setLevel(bot, 8) + assert(bot:setPremiumEndsAt(0), "vocation failure could not remove premium") + assert(bot:addMoney(100), "vocation failure money could not be added") + end) + sayTo(gregor, positions.Gregor, "hi") + sayTo(gregor, positions.Gregor, "light") + sayTo(gregor, positions.Gregor, "yes") + later(function() + local bot = getBot(playerId) + assert(not bot:hasLearnedSpell("Light"), "wrong vocation learned Light from Gregor") + assert(getTotalMoney(bot) == 100, "vocation rejection changed money") + assert(bot:say("bye", TALKTYPE_PRIVATE_PN, false, gregor), "Gregor vocation test farewell failed") + clearMoney(bot) + end) + + later(function() + local bot = getBot(playerId) + assert(bot:setVocation(4), "level failure could not select Knight") + setLevel(bot, 8) + assert(bot:addMoney(170), "level failure money could not be added") + end) + sayTo(gregor, positions.Gregor, "hi") + sayTo(gregor, positions.Gregor, "light healing") + sayTo(gregor, positions.Gregor, "yes") + later(function() + local bot = getBot(playerId) + assert(not bot:hasLearnedSpell("Light Healing"), "under-level Knight learned Light Healing") + assert(getTotalMoney(bot) == 170, "level rejection changed money") + clearMoney(bot) + end) + + later(function() + local bot = getBot(playerId) + setLevel(bot, 15) + assert(bot:setPremiumEndsAt(0), "premium failure could not remove premium") + assert(bot:addMoney(800), "premium failure money could not be added") + end) + sayTo(puffels, positions.Puffels, "hi") + sayTo(puffels, positions.Puffels, "whirlwind throw") + sayTo(puffels, positions.Puffels, "yes") + later(function() + local bot = getBot(playerId) + assert(not bot:hasLearnedSpell("Whirlwind Throw"), "free-account Knight learned Whirlwind Throw") + assert(getTotalMoney(bot) == 800, "premium rejection changed money") + clearMoney(bot) + end) + + later(function() + local bot = getBot(playerId) + setLevel(bot, 20) + assert(bot:setPremiumEndsAt(os.time() + 86400), "promotion failure could not add premium") + assert(bot:addMoney(2000), "promotion failure money could not be added") + end) + sayTo(eremo, positions.Eremo, "hi") + sayTo(eremo, positions.Eremo, "challenge") + sayTo(eremo, positions.Eremo, "yes") + later(function() + local bot = getBot(playerId) + assert(not bot:hasLearnedSpell("Challenge"), "unpromoted Knight learned Challenge") + assert(getTotalMoney(bot) == 2000, "promotion rejection changed money") + clearMoney(bot) + end) + + later(function() + local bot = getBot(playerId) + setLevel(bot, 8) + assert(bot:setPremiumEndsAt(0), "money failure could not remove premium") + end) + sayTo(gregor, positions.Gregor, "hi") + sayTo(gregor, positions.Gregor, "light") + sayTo(gregor, positions.Gregor, "yes") + later(function() + local bot = getBot(playerId) + assert(not bot:hasLearnedSpell("Light"), "moneyless Knight learned Light") + assert(getTotalMoney(bot) == 0, "money rejection changed money") + + assert(bot:setVocation(originalVocation), "original vocation could not be restored") + setExperience(bot, originalExperience) + assert(bot:setPremiumEndsAt(originalPremiumEndsAt), "original premium could not be restored") + if originalInventoryMoney > 0 then + assert(bot:addMoney(originalInventoryMoney), "original inventory money could not be restored") + end + assert(bot:setBankBalance(originalBankMoney), "original bank money could not be restored") + for _, spellName in ipairs(testedSpells) do + if originallyLearned[spellName] then + bot:learnSpell(spellName) + end + end + assert(bot:getMoney() == originalInventoryMoney, "restored inventory money is incorrect") + assert(bot:getBankBalance() == originalBankMoney, "restored bank money is incorrect") + pass(mode) + end) + return true + end + local playerId = player:getId() if mode == "death" then local foodCondition = player:getCondition(CONDITION_REGENERATION, CONDITIONID_DEFAULT)