├── playersRecord.txt
├── data
├── weapons
│ ├── lib
│ │ └── weapons.lua
│ └── scripts
│ │ ├── poison_arrow.lua
│ │ ├── explosive_arrow.lua
│ │ └── viper_star.lua
├── globalevents
│ ├── lib
│ │ └── globalevents.lua
│ ├── scripts
│ │ └── record.lua
│ └── globalevents.xml
├── movements
│ ├── lib
│ │ └── movements.lua
│ └── scripts
│ │ ├── decay.lua
│ │ ├── citizen.lua
│ │ ├── walkback.lua
│ │ ├── dough.lua
│ │ ├── snow.lua
│ │ ├── swimming.lua
│ │ ├── drowning.lua
│ │ ├── trap.lua
│ │ └── closingdoor.lua
├── talkactions
│ ├── lib
│ │ └── talkactions.lua
│ ├── scripts
│ │ ├── magiceffect.lua
│ │ ├── uptime.lua
│ │ ├── save.lua
│ │ ├── leavehouse.lua
│ │ ├── buyprem.lua
│ │ └── changesex.lua
│ └── talkactions.xml
├── creaturescripts
│ ├── lib
│ │ └── creaturescripts.lua
│ ├── scripts
│ │ ├── login.lua
│ │ └── firstitems.lua
│ └── creaturescripts.xml
├── items
│ ├── items.otb
│ └── items.xsd
├── world
│ └── forgotten.otbm
├── actions
│ └── scripts
│ │ ├── other
│ │ ├── destroy.lua
│ │ ├── trap.lua
│ │ ├── music.lua
│ │ ├── partyhat.lua
│ │ ├── partytrumpet.lua
│ │ ├── dice.lua
│ │ ├── teleport.lua
│ │ ├── piggybank.lua
│ │ ├── decayto.lua
│ │ ├── fireworksrocket.lua
│ │ ├── createbread.lua
│ │ ├── watch.lua
│ │ ├── changegold.lua
│ │ ├── blueberrybush.lua
│ │ ├── surprisebag.lua
│ │ ├── spellbook.lua
│ │ ├── constructionkits.lua
│ │ └── windows.lua
│ │ └── tools
│ │ ├── machete.lua
│ │ ├── scythe.lua
│ │ ├── pick.lua
│ │ ├── shovel.lua
│ │ ├── fishing.lua
│ │ └── rope.lua
├── spells
│ └── scripts
│ │ ├── support
│ │ ├── light.lua
│ │ ├── ultimate light.lua
│ │ ├── wild growth rune.lua
│ │ ├── magic wall rune.lua
│ │ ├── cancel invisibility.lua
│ │ ├── invisible.lua
│ │ ├── magic shield.lua
│ │ ├── challenge.lua
│ │ ├── haste.lua
│ │ ├── charge.lua
│ │ ├── strong haste.lua
│ │ ├── paralyze rune.lua
│ │ ├── great light.lua
│ │ ├── magic rope.lua
│ │ ├── blood rage.lua
│ │ ├── swift foot.lua
│ │ ├── destroy field rune.lua
│ │ ├── desintegrate rune.lua
│ │ ├── sharpshooter.lua
│ │ └── protector.lua
│ │ ├── healing
│ │ ├── antidote.lua
│ │ ├── antidote rune.lua
│ │ ├── heal friend.lua
│ │ ├── intense healing.lua
│ │ ├── light healing.lua
│ │ ├── intense healing rune.lua
│ │ ├── divine healing.lua
│ │ ├── ultimate healing.lua
│ │ ├── ultimate healing rune.lua
│ │ ├── mass healing.lua
│ │ └── wound cleasing.lua
│ │ ├── attack
│ │ ├── icicle.lua
│ │ ├── fireball.lua
│ │ ├── stalagmite.lua
│ │ ├── fire field.lua
│ │ ├── energy field.lua
│ │ ├── poison field.lua
│ │ ├── sudden death.lua
│ │ ├── ethereal spear.lua
│ │ ├── heavy magic missile.lua
│ │ ├── light magic missile.lua
│ │ ├── whirlwind throw.lua
│ │ ├── berserk.lua
│ │ ├── holy missile.lua
│ │ ├── fierce berserk.lua
│ │ ├── hells core.lua
│ │ ├── divine caldera.lua
│ │ ├── eternal winter.lua
│ │ ├── groundshaker.lua
│ │ ├── rage of the skies.lua
│ │ ├── fire wave.lua
│ │ ├── ice wave.lua
│ │ ├── wrath of nature.lua
│ │ ├── energy beam.lua
│ │ ├── great energy beam.lua
│ │ ├── terra wave.lua
│ │ ├── avalanche.lua
│ │ ├── fire bomb.lua
│ │ ├── great fireball.lua
│ │ ├── poison bomb.lua
│ │ ├── stone shower.lua
│ │ ├── energy bomb.lua
│ │ ├── explosion.lua
│ │ ├── thunderstorm.lua
│ │ ├── fire wall.lua
│ │ ├── poison wall.lua
│ │ ├── energy wall.lua
│ │ ├── energy wave.lua
│ │ ├── soul fire.lua
│ │ ├── death strike.lua
│ │ ├── flame strike.lua
│ │ ├── ice strike.lua
│ │ ├── divine missile.lua
│ │ ├── energy strike.lua
│ │ ├── terra strike.lua
│ │ └── envenom.lua
│ │ ├── custom
│ │ ├── magic prison.lua
│ │ ├── drunk.lua
│ │ ├── combustion.lua
│ │ └── apocalypse.lua
│ │ └── summon
│ │ └── animate dead rune.lua
├── raids
│ └── raids.xml
├── npc
│ ├── Alice.xml
│ ├── Varkhal.xml
│ ├── The Forgotten King.xml
│ ├── Deruno.xml
│ ├── Riona.xml
│ ├── Eryn.xml
│ ├── scripts
│ │ ├── default.lua
│ │ └── promotion.lua
│ └── Tyoric.xml
├── XML
│ ├── admin.xml
│ ├── stages.xml
│ └── quests.xml
└── monster
│ ├── Birds
│ ├── flamingo.xml
│ ├── seagull.xml
│ ├── penguin.xml
│ └── chicken.xml
│ ├── Shapeshifters
│ └── mimic.xml
│ ├── Canines
│ ├── dog.xml
│ ├── husky.xml
│ ├── gnarlhound.xml
│ ├── wolf.xml
│ ├── winter wolf.xml
│ └── war wolf.xml
│ ├── Insects
│ ├── yellow butterfly.xml
│ ├── cockroach.xml
│ ├── blue butterfly.xml
│ ├── red butterfly.xml
│ ├── purple butterfly.xml
│ ├── bug.xml
│ ├── wasp.xml
│ ├── insect swarm.xml
│ ├── sandcrawler.xml
│ ├── larva.xml
│ └── centipede.xml
│ ├── Misc
│ ├── horse(fire).xml
│ ├── horse(grey).xml
│ ├── horse(brown).xml
│ ├── bat.xml
│ ├── hyaena.xml
│ ├── rabbit.xml
│ ├── badger.xml
│ ├── silver rabbit.xml
│ ├── squirrel.xml
│ ├── deer.xml
│ ├── dromedary.xml
│ ├── skunk.xml
│ ├── white deer.xml
│ └── yalahari.xml
│ ├── Rifts
│ └── rift worm.xml
│ ├── Arena
│ ├── greenhorn
│ │ ├── bovinus.xml
│ │ ├── bloodpaw.xml
│ │ ├── frostfur.xml
│ │ ├── the hairy one.xml
│ │ ├── achad.xml
│ │ ├── orcus the cruel.xml
│ │ ├── rocky.xml
│ │ ├── axeitus headbanger.xml
│ │ ├── cursed gladiator.xml
│ │ └── colerian the barbarian.xml
│ ├── scrapper
│ │ ├── spirit of earth.xml
│ │ ├── grimgor guteater.xml
│ │ ├── slim.xml
│ │ └── spirit of water.xml
│ └── warlord
│ │ └── norgle glacierbeard.xml
│ ├── Felines
│ ├── cat.xml
│ ├── lion.xml
│ └── tiger.xml
│ ├── Grunts
│ ├── pig.xml
│ └── boar.xml
│ ├── Frogs
│ ├── green frog.xml
│ ├── orchid frog.xml
│ ├── coral frog.xml
│ ├── crimson frog.xml
│ └── azure frog.xml
│ ├── Sheeps
│ ├── black sheep.xml
│ └── sheep.xml
│ ├── Bosses
│ ├── rotworm queen.xml
│ ├── fatality.xml
│ ├── mr. punish.xml
│ ├── foreman kneebiter.xml
│ ├── dreadwing.xml
│ ├── baron brute.xml
│ ├── big boss trolliver.xml
│ ├── brutus bloodbeard.xml
│ ├── munster.xml
│ └── ron the ripper.xml
│ ├── Arachnids
│ ├── spider.xml
│ ├── scorpion.xml
│ └── poison spider.xml
│ ├── Bio-Elementals
│ ├── slime summon.xml
│ └── slime.xml
│ ├── Serpents
│ ├── snake.xml
│ └── cobra.xml
│ ├── Blobs
│ └── death blob.xml
│ ├── Rats
│ ├── cave rat.xml
│ └── rat.xml
│ ├── Crustaceans
│ ├── crab.xml
│ └── blood crab.xml
│ ├── Traps
│ ├── eye of the seven.xml
│ ├── lavahole.xml
│ └── flamethrower.xml
│ ├── Bears
│ ├── panda.xml
│ ├── bear.xml
│ └── polar bear.xml
│ ├── Annelids
│ └── rotworm.xml
│ └── Pirates
│ └── pirate skeleton.xml
├── lastMotd.txt
├── TheForgottenServer.ico
├── forgottenserver.s3db
├── codeblocks
├── TheForgottenServer.ico
└── windows_resources.rc
├── doc
├── TODO
├── ACTION_IDS
├── CHANGELOG
└── LIQUIDS
├── vc10
├── gui.props
├── arch64.props
├── arch32.props
├── release.props
└── debug.props
└── otpch.cpp
/playersRecord.txt:
--------------------------------------------------------------------------------
1 | 1
--------------------------------------------------------------------------------
/data/weapons/lib/weapons.lua:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lastMotd.txt:
--------------------------------------------------------------------------------
1 | 1
2 | Welcome to the Forgotten Server!
--------------------------------------------------------------------------------
/data/globalevents/lib/globalevents.lua:
--------------------------------------------------------------------------------
1 | -- empty file --
--------------------------------------------------------------------------------
/data/movements/lib/movements.lua:
--------------------------------------------------------------------------------
1 | -- Nothing --
2 |
3 |
--------------------------------------------------------------------------------
/data/talkactions/lib/talkactions.lua:
--------------------------------------------------------------------------------
1 | -- Nothing --
2 |
--------------------------------------------------------------------------------
/data/creaturescripts/lib/creaturescripts.lua:
--------------------------------------------------------------------------------
1 | -- empty file --
2 |
--------------------------------------------------------------------------------
/TheForgottenServer.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otland/tfs-old-svn/HEAD/TheForgottenServer.ico
--------------------------------------------------------------------------------
/data/items/items.otb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otland/tfs-old-svn/HEAD/data/items/items.otb
--------------------------------------------------------------------------------
/forgottenserver.s3db:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otland/tfs-old-svn/HEAD/forgottenserver.s3db
--------------------------------------------------------------------------------
/data/world/forgotten.otbm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otland/tfs-old-svn/HEAD/data/world/forgotten.otbm
--------------------------------------------------------------------------------
/codeblocks/TheForgottenServer.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/otland/tfs-old-svn/HEAD/codeblocks/TheForgottenServer.ico
--------------------------------------------------------------------------------
/data/creaturescripts/scripts/login.lua:
--------------------------------------------------------------------------------
1 | function onLogin(cid)
2 | registerCreatureEvent(cid, "PlayerDeath")
3 | return TRUE
4 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/destroy.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | return destroyItem(cid, itemEx, toPosition)
3 | end
--------------------------------------------------------------------------------
/data/movements/scripts/decay.lua:
--------------------------------------------------------------------------------
1 | function onStepIn(cid, item, position, fromPosition)
2 | doTransformItem(item.uid, item.itemid + 1)
3 | doDecayItem(item.uid)
4 | return TRUE
5 | end
--------------------------------------------------------------------------------
/data/globalevents/scripts/record.lua:
--------------------------------------------------------------------------------
1 | function onRecord(current, old)
2 | addEvent(broadcastMessage, 150, "New record: " .. current .. " players are logged in.", MESSAGE_STATUS_DEFAULT)
3 | return true
4 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/light.lua:
--------------------------------------------------------------------------------
1 | function onCastSpell(cid, var)
2 | local pos = getPlayerPosition(cid)
3 | doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
4 | return doSetCreatureLight(cid, 10, 120, 30000)
5 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/trap.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | doTransformItem(item.uid, item.itemid - 1)
3 | doSendMagicEffect(fromPosition, CONST_ME_POFF)
4 | return TRUE
5 | end
--------------------------------------------------------------------------------
/data/raids/raids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/data/talkactions/scripts/magiceffect.lua:
--------------------------------------------------------------------------------
1 | function onSay(cid, words, param)
2 | if isPlayer(cid) == TRUE and param ~= "" and getPlayerAccess(cid) > 0 then
3 | doSendMagicEffect(getCreaturePosition(cid), param)
4 | end
5 | end
--------------------------------------------------------------------------------
/data/movements/scripts/citizen.lua:
--------------------------------------------------------------------------------
1 | function onStepIn(cid, item, position, fromPosition)
2 | if item.actionid > 30020 and item.actionid < 30100 then
3 | doPlayerSetTown(cid, item.actionid - 30020)
4 | end
5 | return TRUE
6 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/ultimate light.lua:
--------------------------------------------------------------------------------
1 | function onCastSpell(cid, var)
2 | local pos = getPlayerPosition(cid)
3 | doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
4 | return doSetCreatureLight(cid, 11, 215, (60*33+10)*1000)
5 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/music.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | -- TODO: Different music effect for different instruments.
3 | doSendMagicEffect(fromPosition, CONST_ME_SOUND_BLUE)
4 | return TRUE
5 | end
--------------------------------------------------------------------------------
/data/movements/scripts/walkback.lua:
--------------------------------------------------------------------------------
1 | function onStepIn(cid, item, position, fromPosition)
2 | if item.uid > 0 and item.uid <= 65535 and isPlayer(cid) == TRUE then
3 | doTeleportThing(cid, fromPosition, FALSE)
4 | end
5 | return TRUE
6 | end
--------------------------------------------------------------------------------
/data/movements/scripts/dough.lua:
--------------------------------------------------------------------------------
1 | function onAddItem(moveitem, tileitem, position)
2 | if moveitem.itemid == 2693 then
3 | doTransformItem(moveitem.uid, 2689)
4 | doSendMagicEffect(position, CONST_ME_HITBYFIRE)
5 | end
6 | return TRUE
7 | end
--------------------------------------------------------------------------------
/doc/TODO:
--------------------------------------------------------------------------------
1 | [ TODO
2 | Project Name
3 | The Forgotten Server
4 |
5 | Version
6 | 1.0
7 |
8 | License
9 | GNU GPLv2
10 |
11 | Forum
12 | http://otland.net/
13 | ]
14 |
15 | [ LIST
16 | Compatibility with 0.3 scripts
17 | ]
18 |
--------------------------------------------------------------------------------
/data/npc/Alice.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/npc/Varkhal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/actions/scripts/tools/machete.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if itemEx.itemid == 2782 then
3 | doTransformItem(itemEx.uid, 2781)
4 | doDecayItem(itemEx.uid)
5 | return TRUE
6 | end
7 | return destroyItem(cid, itemEx, toPosition)
8 | end
--------------------------------------------------------------------------------
/data/globalevents/globalevents.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/partyhat.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if item.uid == getPlayerSlotItem(cid, CONST_SLOT_HEAD).uid then
3 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_GIFT_WRAPS)
4 | return TRUE
5 | end
6 | return FALSE
7 | end
--------------------------------------------------------------------------------
/data/XML/admin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/data/npc/The Forgotten King.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/partytrumpet.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | doTransformItem(item.uid, 6573)
3 | doCreatureSay(cid, "TOOOOOOT!", TALKTYPE_ORANGE_1)
4 | doSendMagicEffect(fromPosition, CONST_ME_SOUND_BLUE)
5 | doDecayItem(item.uid)
6 | return TRUE
7 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/wild growth rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
3 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_WILDGROWTH)
4 |
5 | function onCastSpell(cid, var)
6 | return doCombat(cid, combat, var)
7 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/magic wall rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
3 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_MAGICWALL)
4 |
5 | function onCastSpell(cid, var)
6 | return doCombat(cid, combat, var)
7 | end
8 |
--------------------------------------------------------------------------------
/data/actions/scripts/tools/scythe.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if itemEx.itemid == 2739 then
3 | doTransformItem(itemEx.uid, 2737)
4 | doCreateItem(2694, 1, toPosition)
5 | doDecayItem(itemEx.uid)
6 | return TRUE
7 | end
8 | return destroyItem(cid, itemEx, toPosition)
9 | end
--------------------------------------------------------------------------------
/data/creaturescripts/creaturescripts.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/spells/scripts/healing/antidote.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_POISON)
5 |
6 | function onCastSpell(cid, var)
7 | return doCombat(cid, combat, var)
8 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/antidote rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_POISON)
5 |
6 | function onCastSpell(cid, var)
7 | return doCombat(cid, combat, var)
8 | end
--------------------------------------------------------------------------------
/data/movements/scripts/snow.lua:
--------------------------------------------------------------------------------
1 | function onStepOut(cid, item, position, fromPosition)
2 | if isPlayer(cid) and not isPlayerGhost(cid) then
3 | if item.itemid == 670 then
4 | doTransformItem(item.uid, 6594)
5 | else
6 | doTransformItem(item.uid, item.itemid + 15)
7 | end
8 | doDecayItem(item.uid)
9 | end
10 | return true
11 | end
12 |
--------------------------------------------------------------------------------
/doc/ACTION_IDS:
--------------------------------------------------------------------------------
1 | [ ACTION IDS
2 | Project Name
3 | The Forgotten Server
4 |
5 | Version
6 | 1.0
7 |
8 | License
9 | GNU GPLv2
10 |
11 | Forum
12 | http://otland.net/
13 | ]
14 |
15 | [ IDS
16 | Depottile
17 | 100 + DepotID
18 |
19 | Leveltile
20 | 1000 + Required Level
21 |
22 | Leveldoor
23 | 1000 + Required Level
24 | ]
25 |
--------------------------------------------------------------------------------
/data/actions/scripts/tools/pick.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if (itemEx.uid <= 65535 or itemEx.actionid > 0) and (itemEx.itemid == 354 or itemEx.itemid == 355) then
3 | doTransformItem(itemEx.uid, 392)
4 | doDecayItem(itemEx.uid)
5 | doSendMagicEffect(toPosition, CONST_ME_POFF)
6 | return TRUE
7 | end
8 | return FALSE
9 | end
--------------------------------------------------------------------------------
/data/XML/stages.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/cancel invisibility.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_INVISIBLE)
4 |
5 | local area = createCombatArea(AREA_CIRCLE3X3)
6 | setCombatArea(combat, area)
7 |
8 | function onCastSpell(cid, var)
9 | return doCombat(cid, combat, var)
10 | end
--------------------------------------------------------------------------------
/data/talkactions/scripts/uptime.lua:
--------------------------------------------------------------------------------
1 | function onSay(cid, words, param)
2 | local hours = math.ceil(getWorldUpTime() / 3600) - 1
3 | local minutes = math.ceil((getWorldUpTime() - (3600 * hours)) / 60)
4 | if minutes == 60 then
5 | minutes = 0
6 | hours = hours + 1
7 | end
8 | doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uptime: " .. hours .. " hours and " .. minutes .. " minutes.")
9 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/dice.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | local value = math.random(5792, 5797)
3 | if fromPosition.x ~= CONTAINER_POSITION then
4 | doSendMagicEffect(fromPosition, CONST_ME_CRAPS)
5 | end
6 | doTransformItem(item.uid, value)
7 | doCreatureSay(cid, getCreatureName(cid) .. ' rolled a ' .. value - 5791 .. '.', TALKTYPE_ORANGE_1)
8 | return TRUE
9 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/teleport.lua:
--------------------------------------------------------------------------------
1 | local upFloorIds = {1386, 3678, 5543}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if isInArray(upFloorIds, item.itemid) == TRUE then
4 | fromPosition.y = fromPosition.y + 1
5 | fromPosition.z = fromPosition.z - 1
6 | else
7 | fromPosition.z = fromPosition.z + 1
8 | end
9 | doTeleportThing(cid, fromPosition, FALSE)
10 | return TRUE
11 | end
--------------------------------------------------------------------------------
/data/movements/scripts/swimming.lua:
--------------------------------------------------------------------------------
1 | local outfit =
2 | {
3 | lookType = 267,
4 | lookHead = 0,
5 | lookBody = 0,
6 | lookLegs = 0,
7 | lookFeet = 0,
8 | lookAddons = 0
9 | }
10 |
11 | function onStepIn(cid, item, position, fromPosition)
12 | doSetCreatureOutfit(cid, outfit, -1)
13 | end
14 |
15 | function onStepOut(cid, item, position, fromPosition)
16 | doRemoveCondition(cid, CONDITION_OUTFIT)
17 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/piggybank.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if math.random(1, 6) == 1 then
3 | doSendMagicEffect(fromPosition, CONST_ME_POFF)
4 | doPlayerAddItem(cid, ITEM_GOLD_COIN, 1)
5 | doTransformItem(item.uid, 2115)
6 | else
7 | doSendMagicEffect(fromPosition, CONST_ME_SOUND_YELLOW)
8 | doPlayerAddItem(cid, ITEM_PLATINUM_COIN, 1)
9 | end
10 | return TRUE
11 | end
--------------------------------------------------------------------------------
/data/npc/Deruno.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/icicle.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 0, -0.4, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fireball.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREATTACK)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 0, -0.4, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/stalagmite.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 0, -0.4, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fire field.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_FIREFIELD_PVP_FULL)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/vc10/gui.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Windows
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy field.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_ENERGYFIELD_PVP)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/poison field.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_POISONFIELD_PVP)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/sudden death.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SUDDENDEATH)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.8, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/ethereal spear.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, TRUE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ETHEREALSPEAR)
5 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -20, 0.8, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
10 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/heavy magic missile.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 0, -0.4, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/light magic missile.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.1, 0, -0.2, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/whirlwind throw.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, TRUE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_WEAPONTYPE)
5 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -20, 0.5, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
10 |
--------------------------------------------------------------------------------
/data/talkactions/scripts/save.lua:
--------------------------------------------------------------------------------
1 | local savingEvent = 0
2 |
3 | function onSay(cid, words, param)
4 | if getPlayerAccess(cid) ~= 0 then
5 | if isNumber(param) == TRUE then
6 | stopEvent(savingEvent)
7 | save(tonumber(param) * 60 * 1000)
8 | else
9 | saveData()
10 | end
11 | end
12 | end
13 |
14 | function save(delay)
15 | saveData()
16 | if delay > 0 then
17 | savingEvent = addEvent(save, delay, delay)
18 | end
19 | end
--------------------------------------------------------------------------------
/data/creaturescripts/scripts/firstitems.lua:
--------------------------------------------------------------------------------
1 | local firstItems = {2050, 2382}
2 |
3 | function onLogin(cid)
4 | if getPlayerLastLoginSaved(cid) == 0 then
5 | for i = 1, table.maxn(firstItems) do
6 | doPlayerAddItem(cid, firstItems[i], 1)
7 | end
8 | doPlayerAddItem(cid, getPlayerSex(cid) == 0 and 2651 or 2650, 1)
9 | local bag = doPlayerAddItem(cid, 1987, 1)
10 | doAddContainerItem(bag, 2674, 1)
11 | end
12 | return true
13 | end
14 |
--------------------------------------------------------------------------------
/data/npc/Riona.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/berserk.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, -90, 0.7, -50)
5 |
6 | local area = createCombatArea(AREA_SQUARE1X1)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/holy missile.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_HOLY)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, 0, -0.4, 0)
6 |
7 | function onCastSpell(cid, var)
8 | return doCombat(cid, combat, var)
9 | end
10 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fierce berserk.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.8, 0, 1.6, 0)
5 |
6 | local area = createCombatArea(AREA_SQUARE1X1)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/hells core.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, 0, -1.6, 0)
5 |
6 | local area = createCombatArea(AREA_CROSS5X5)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/divine caldera.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, 0, -1.3, 0)
5 |
6 | local area = createCombatArea(AREA_CIRCLE3X3)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/eternal winter.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICETORNADO)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, 0, -1.6, 0)
5 |
6 | local area = createCombatArea(AREA_CROSS5X5)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/groundshaker.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GROUNDSHAKER)
4 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0.3, 0, 0.6, 0)
5 |
6 | local area = createCombatArea(AREA_CIRCLE3X3)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/invisible.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 |
5 | local condition = createConditionObject(CONDITION_INVISIBLE)
6 | setConditionParam(condition, CONDITION_PARAM_TICKS, 200000)
7 | setCombatCondition(combat, condition)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/rage of the skies.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_BIGCLOUDS)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.4, 0)
5 |
6 | local area = createCombatArea(AREA_CROSS5X5)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/custom/magic prison.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
3 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_MAGICWALL)
4 |
5 | local arr = {
6 | {1, 1, 1},
7 | {1, 2, 1},
8 | {1, 1, 1}
9 | }
10 |
11 | local area = createCombatArea(arr)
12 | setCombatArea(combat, area)
13 |
14 | function onCastSpell(cid, var)
15 | return doCombat(cid, combat, var)
16 | end
17 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/magic shield.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 |
5 | local condition = createConditionObject(CONDITION_MANASHIELD)
6 | setConditionParam(condition, CONDITION_PARAM_TICKS, 200000)
7 | setCombatCondition(combat, condition)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fire wave.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0)
5 |
6 | local area = createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/ice wave.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.3, 0)
5 |
6 | local area = createCombatArea(AREA_WAVE4, AREADIAGONAL_WAVE4)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/wrath of nature.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_PLANTATTACK)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.8, 0, -1.4, 0)
5 |
6 | local area = createCombatArea(AREA_CROSS6X6)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
12 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/decayto.lua:
--------------------------------------------------------------------------------
1 | local itemIdArray = {[2041] = 2042, [2042] = 2041, [2044] = 2045, [2045] = 2044, [2047] = 2048, [2048] = 2047, [2050] = 2051, [2051] = 2050, [2052] = 2053, [2053] = 2051, [2054] = 2055, [2054] = 2055}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if itemIdArray[item.itemid] ~= nil then
4 | doTransformItem(item.uid, itemIdArray[item.itemid])
5 | doDecayItem(item.uid)
6 | return TRUE
7 | end
8 | return FALSE
9 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy beam.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.0, 0, -1.5, 0)
5 |
6 | local area = createCombatArea(AREA_BEAM5, AREADIAGONAL_BEAM5)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/vc10/arch64.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | $(TFS_LIBS64)
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/great energy beam.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, 0, -1.7, 0)
5 |
6 | local area = createCombatArea(AREA_BEAM7, AREADIAGONAL_BEAM7)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/terra wave.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_SMALLPLANTS)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.5, 0, -2.0, 0)
5 |
6 | local area = createCombatArea(AREA_SQUAREWAVE5, AREADIAGONAL_SQUAREWAVE5)
7 | setCombatArea(combat, area)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/challenge.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
3 |
4 | local area = createCombatArea(AREA_SQUARE1X1)
5 | setCombatArea(combat, area)
6 |
7 | function onTargetCreature(cid, target) return doChallengeCreature(cid, target) end
8 | setCombatCallback(combat, CALLBACK_PARAM_TARGETCREATURE, "onTargetCreature")
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/heal friend.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 2.08, 0, 2.7, 0)
7 |
8 | function onCastSpell(cid, var)
9 | return doCombat(cid, combat, var)
10 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/intense healing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 1.335, 0, 1.58, 0)
7 |
8 | function onCastSpell(cid, var)
9 | return doCombat(cid, combat, var)
10 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/light healing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 0.08, 0, 0.33, 0)
7 |
8 | function onCastSpell(cid, var)
9 | return doCombat(cid, combat, var)
10 | end
11 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/haste.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 |
5 | local condition = createConditionObject(CONDITION_HASTE)
6 | setConditionParam(condition, CONDITION_PARAM_TICKS, 33000)
7 | setConditionFormula(condition, 0.3, -24, 0.3, -24)
8 | setCombatCondition(combat, condition)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/npc/Eryn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/spells/scripts/custom/drunk.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
3 |
4 | local condition = createConditionObject(CONDITION_DRUNK)
5 | setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)
6 | setCombatCondition(combat, condition)
7 |
8 | local area = createCombatArea( { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } )
9 | setCombatArea(combat, area)
10 |
11 | function onCastSpell(cid, var)
12 | return doCombat(cid, combat, var)
13 | end
14 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/charge.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_GREEN)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
4 |
5 | local condition = createConditionObject(CONDITION_HASTE)
6 | setConditionParam(condition, CONDITION_PARAM_TICKS, 5000)
7 | setConditionFormula(condition, 0.9, 0, 0.9, 0)
8 | setCombatCondition(combat, condition)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
13 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/strong haste.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 |
5 | local condition = createConditionObject(CONDITION_HASTE)
6 | setConditionParam(condition, CONDITION_PARAM_TICKS, 22000)
7 | setConditionFormula(condition, 0.7, -56, 0.7, -56)
8 | setCombatCondition(combat, condition)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/movements/scripts/drowning.lua:
--------------------------------------------------------------------------------
1 | local condition = createConditionObject(CONDITION_DROWN)
2 | setConditionParam(condition, CONDITION_PARAM_PERIODICDAMAGE, -20)
3 | setConditionParam(condition, CONDITION_PARAM_TICKS, -1)
4 | setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 2000)
5 |
6 | function onStepIn(cid, item, pos)
7 | if isPlayer(cid) == TRUE then
8 | doAddCondition(cid, condition)
9 | end
10 | end
11 |
12 | function onStepOut(cid, item, pos)
13 | doRemoveCondition(cid, CONDITION_DROWN)
14 | end
--------------------------------------------------------------------------------
/data/npc/scripts/default.lua:
--------------------------------------------------------------------------------
1 | local keywordHandler = KeywordHandler:new()
2 | local npcHandler = NpcHandler:new(keywordHandler)
3 | NpcSystem.parseParameters(npcHandler)
4 |
5 | function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
6 | function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
7 | function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
8 | function onThink() npcHandler:onThink() end
9 |
10 | npcHandler:addModule(FocusModule:new())
11 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/avalanche.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ICE)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.366, 0, -0.641, 0)
6 |
7 | local area = createCombatArea(AREA_CIRCLE3X3)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fire bomb.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_FIREFIELD_PVP_FULL)
6 |
7 | local area = createCombatArea(AREA_SQUARE1X1)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/great fireball.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.2, -30, -0.4, 0)
6 |
7 | local area = createCombatArea(AREA_CIRCLE3X3)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/poison bomb.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_POISONFIELD_PVP)
6 |
7 | local area = createCombatArea(AREA_SQUARE1X1)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/stone shower.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_STONES)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EARTH)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.366, 0, -0.641, 0)
6 |
7 | local area = createCombatArea(AREA_CIRCLE3X3)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/paralyze rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_RED)
3 |
4 | local condition = createConditionObject(CONDITION_PARALYZE)
5 | setConditionParam(condition, CONDITION_PARAM_TICKS, 20000)
6 | --setConditionParam(condition, CONDITION_PARAM_SPEED, -200)
7 | setConditionFormula(condition, -0.9, 0, -0.9, 0)
8 | setCombatCondition(combat, condition)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
13 |
--------------------------------------------------------------------------------
/vc10/arch32.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | $(TFS_LIBS)
9 | true
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy bomb.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_ENERGYFIELD_PVP)
6 |
7 | local area = createCombatArea(AREA_SQUARE1X1)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/explosion.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_EXPLOSIONAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_EXPLOSION)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.5, -30, -1.1, 0)
6 |
7 | local area = createCombatArea(AREA_CROSS1X1)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/thunderstorm.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.366, 0, -0.641, 0)
6 |
7 | local area = createCombatArea(AREA_CIRCLE3X3)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/fire wall.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_FIREFIELD_PVP_FULL)
6 |
7 | local area = createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/doc/CHANGELOG:
--------------------------------------------------------------------------------
1 | [ CHANGELOG
2 | Project Name
3 | The Forgotten Server
4 |
5 | Version
6 | 1.0
7 |
8 | License
9 | GNU GPLv2
10 |
11 | Forum
12 | http://otland.net/
13 | ]
14 |
15 | [ File changes
16 | D = Deleted.
17 | M = Modified.
18 | A = Added.
19 |
20 | M The Forgotten Server.exe
21 | ]
22 |
23 | [ Milestone
24 | Fixed a bug where a player who died in PVP zone (with skill loss set to false) would be affected by the death penalty.
25 | Fixed a bug with relational map storage being loaded or saved in wrong order.
26 | ]
27 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/poison wall.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_GREEN_RINGS)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_POISONFIELD_PVP)
6 |
7 | local area = createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy wall.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYHIT)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGYBALL)
5 | setCombatParam(combat, COMBAT_PARAM_CREATEITEM, ITEM_ENERGYFIELD_PVP)
6 |
7 | local area = createCombatArea(AREA_WALLFIELD, AREADIAGONAL_WALLFIELD)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy wave.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.7, 0)
6 |
7 | local area = createCombatArea(AREA_SQUAREWAVE5, AREADIAGONAL_SQUAREWAVE5)
8 | setCombatArea(combat, area)
9 |
10 | function onCastSpell(cid, var)
11 | return doCombat(cid, combat, var)
12 | end
--------------------------------------------------------------------------------
/data/npc/Tyoric.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/data/spells/scripts/healing/intense healing rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
6 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
7 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, 1.335, 0, 1.58, 0)
8 |
9 | function onCastSpell(cid, var)
10 | return doCombat(cid, combat, var)
11 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/soul fire.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 |
6 | local condition = createConditionObject(CONDITION_FIRE)
7 | setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
8 | addDamageCondition(condition, 10, 2000, -10)
9 | setCombatCondition(combat, condition)
10 |
11 | function onCastSpell(cid, var)
12 | return doCombat(cid, combat, var)
13 | end
--------------------------------------------------------------------------------
/data/actions/scripts/tools/shovel.lua:
--------------------------------------------------------------------------------
1 | local holes = {468, 481, 483}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if isInArray(holes, itemEx.itemid) == TRUE then
4 | doTransformItem(itemEx.uid, itemEx.itemid + 1)
5 | doDecayItem(itemEx.uid)
6 | elseif itemEx.itemid == 231 then
7 | local rand = math.random(1, 100)
8 | if rand == 1 then
9 | doCreateItem(2159, 1, toPosition)
10 | elseif rand > 95 then
11 | doSummonCreature("Scarab", toPosition)
12 | end
13 | doSendMagicEffect(toPosition, CONST_ME_POFF)
14 | else
15 | return FALSE
16 | end
17 | return TRUE
18 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/fireworksrocket.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if fromPosition.x ~= CONTAINER_POSITION then
3 | fireworksEffect = math.random(CONST_ME_FIREWORK_YELLOW, CONST_ME_FIREWORK_BLUE)
4 | doSendMagicEffect(fromPosition, fireworksEffect)
5 | else
6 | doSendMagicEffect(fromPosition, CONST_ME_HITBYFIRE)
7 | doSendMagicEffect(fromPosition, CONST_ME_EXPLOSIONAREA)
8 | doCreatureSay(cid, "Ouch! Rather place it on the ground next time.", TALKTYPE_ORANGE_1)
9 | doCreatureAddHealth(cid, -10)
10 | end
11 | doRemoveItem(cid, item.uid, 1)
12 | return TRUE
13 | end
--------------------------------------------------------------------------------
/data/weapons/scripts/poison_arrow.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
3 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISONARROW)
5 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)
6 |
7 | local condition = createConditionObject(CONDITION_POISON)
8 | setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
9 | addDamageCondition(condition, 10, 2000, -1)
10 | setCombatCondition(combat, condition)
11 |
12 | function onUseWeapon(cid, var)
13 | return doCombat(cid, combat, var)
14 | end
--------------------------------------------------------------------------------
/vc10/release.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | false
7 |
8 |
9 |
10 | Full
11 |
12 |
13 | UseLinkTimeCodeGeneration
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/great light.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
4 |
5 | local condition = createConditionObject(CONDITION_LIGHT)
6 | setConditionParam(condition, CONDITION_PARAM_LIGHT_LEVEL, 8)
7 | setConditionParam(condition, CONDITION_PARAM_LIGHT_COLOR, 215)
8 | setConditionParam(condition, CONDITION_PARAM_TICKS, ((11*60)+35)*1000) --11 minutes and 35 seconds(time in ms)
9 | setCombatCondition(combat, condition)
10 |
11 | function onCastSpell(cid, var)
12 | return doCombat(cid, combat, var)
13 | end
--------------------------------------------------------------------------------
/data/talkactions/talkactions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/createbread.lua:
--------------------------------------------------------------------------------
1 | local liquidContainers = {1775, 2005, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2023, 2031, 2032, 2033}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if item.itemid == 2692 and isInArray(liquidContainers, itemEx.itemid) == TRUE and itemEx.type == 9 then
4 | doChangeTypeItem(item.uid, item.type - 1)
5 | doPlayerAddItem(cid, 2693, 1)
6 | doChangeTypeItem(itemEx.uid, item.type - item.type)
7 | elseif itemEx.itemid == 1381 then
8 | doChangeTypeItem(item.uid, item.type - 1)
9 | doPlayerAddItem(cid, 2692, 1)
10 | else
11 | return FALSE
12 | end
13 | return TRUE
14 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/magic rope.lua:
--------------------------------------------------------------------------------
1 | local ArrayRopeSpot = {384, 418, 8278}
2 |
3 | function onCastSpell(cid, var)
4 | local pos = getPlayerPosition(cid)
5 | pos.stackpos = 0
6 | local grounditem = getThingfromPos(pos)
7 |
8 | if(isInArray(ArrayRopeSpot, grounditem.itemid) == TRUE) then
9 | local newpos = pos
10 | newpos.y = newpos.y + 1
11 | newpos.z = newpos.z - 1
12 | doTeleportThing(cid, newpos, 0)
13 | doSendMagicEffect(pos, CONST_ME_TELEPORT)
14 | return LUA_NO_ERROR
15 | else
16 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
17 | doSendMagicEffect(pos, CONST_ME_POFF)
18 | return LUA_ERROR
19 | end
20 | end
--------------------------------------------------------------------------------
/data/weapons/scripts/explosive_arrow.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
3 | setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1)
4 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
5 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
6 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_BURSTARROW)
7 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)
8 |
9 | local area = createCombatArea( { {1, 1, 1}, {1, 3, 1}, {1, 1, 1} } )
10 | setCombatArea(combat, area)
11 |
12 | function onUseWeapon(cid, var)
13 | return doCombat(cid, combat, var)
14 | end
15 |
--------------------------------------------------------------------------------
/vc10/debug.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 |
8 |
9 |
10 | false
11 | false
12 | EnableFastChecks
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/watch.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | local twentyfour = TRUE
3 | local tibiantime = TRUE
4 | if tibiantime == FALSE then
5 | if twentyfour == TRUE then
6 | time = os.date('%H:%M')
7 | else
8 | time = os.date('%I:%M %p')
9 | end
10 | else
11 | varh = (os.date('%M') * 60 + os.date('%S')) / 150
12 | tibH = math.floor(varh)
13 | tibM = math.floor(60 * (varh-tibH))
14 | if tibH < 10 then tibH = '0'..tibH end
15 | if tibM < 10 then tibM = '0'..tibM end
16 | time = (tibH..':'..tibM)
17 | end
18 | doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, 'The time is ' ..time.. '.')
19 | return TRUE
20 | end
--------------------------------------------------------------------------------
/data/talkactions/scripts/leavehouse.lua:
--------------------------------------------------------------------------------
1 | function onSay(cid, words, param)
2 | if getTileHouseInfo(getPlayerPosition(cid)) ~= FALSE then
3 | if getHouseOwner(getTileHouseInfo(getPlayerPosition(cid))) == getPlayerGUID(cid) then
4 | setHouseOwner(getTileHouseInfo(getPlayerPosition(cid)), 0)
5 | doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have successfully left your house.")
6 | else
7 | doPlayerSendCancel(cid, "You are not the owner of this house.")
8 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
9 | end
10 | else
11 | doPlayerSendCancel(cid, "You are not inside a house.")
12 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
13 | end
14 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/divine healing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 |
7 | function onGetFormulaValues(cid, level, maglevel)
8 | local min = (level * 3 + maglevel * 3) * 2.08
9 | local max = (level * 3 + maglevel * 3) * 2.7
10 | return min, max
11 | end
12 |
13 | setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
14 |
15 | function onCastSpell(cid, var)
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/custom/combustion.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_FIREAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
5 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -1.3, -30, -1.7, 0)
6 |
7 | local condition = createConditionObject(CONDITION_FIRE)
8 | setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
9 | addDamageCondition(condition, 5, 3000, -25)
10 | addDamageCondition(condition, 1, 5000, -666)
11 | setCombatCondition(combat, condition)
12 |
13 | function onCastSpell(cid, var)
14 | return doCombat(cid, combat, var)
15 | end
16 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/blood rage.lua:
--------------------------------------------------------------------------------
1 | local conditionAttrib = createConditionObject(CONDITION_ATTRIBUTES)
2 |
3 | setConditionParam(conditionAttrib, CONDITION_PARAM_TICKS, 10000)
4 | setConditionParam(conditionAttrib, CONDITION_PARAM_SKILL_SHIELDPERCENT, 0)
5 | setConditionParam(conditionAttrib, CONDITION_PARAM_SKILL_MELEEPERCENT, 135)
6 |
7 | local combat = createCombatObject()
8 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
9 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
10 | setCombatCondition(combat, conditionAttrib)
11 |
12 | function onCastSpell(cid, var)
13 | if(doCombat(cid, combat, var) == LUA_NO_ERROR) then
14 | return LUA_NO_ERROR
15 | end
16 | return LUA_ERROR
17 | end
18 |
--------------------------------------------------------------------------------
/data/monster/Birds/flamingo.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/data/spells/scripts/healing/ultimate healing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 |
7 | function onGetFormulaValues(cid, level, maglevel)
8 | min = (level * 1 + maglevel * 4) * 2.08
9 | max = (level * 1 + maglevel * 4) * 2.7
10 | if min < 250 then
11 | min = 250
12 | end
13 | return min, max
14 | end
15 |
16 | setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
17 |
18 | function onCastSpell(cid, var)
19 | return doCombat(cid, combat, var)
20 | end
--------------------------------------------------------------------------------
/data/monster/Shapeshifters/mimic.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/codeblocks/windows_resources.rc:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "../gui_resources.rc"
4 |
5 | A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "../TheForgottenServer.ico"
6 |
7 | 1 VERSIONINFO
8 | FILEVERSION 1,0,0,0
9 | PRODUCTVERSION 1,0,0,0
10 | FILETYPE VFT_APP
11 | {
12 | BLOCK "StringFileInfo"
13 | {
14 | BLOCK "040904E4"
15 | {
16 | VALUE "CompanyName", "http://otland.net"
17 | VALUE "FileVersion", "1.0"
18 | VALUE "FileDescription", "The Forgotten Server"
19 | VALUE "InternalName", ""
20 | VALUE "LegalCopyright", ""
21 | VALUE "LegalTrademarks", ""
22 | VALUE "OriginalFilename", "The Forgotten Server.exe"
23 | VALUE "ProductName", "The Forgotten Server"
24 | VALUE "ProductVersion", "1.0"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/data/actions/scripts/tools/fishing.lua:
--------------------------------------------------------------------------------
1 | local useWorms = FALSE
2 | local waterIds = {493, 4608, 4609, 4610, 4611, 4612, 4613, 4614, 4615, 4616, 4617, 4618, 4619, 4620, 4621, 4622, 4623, 4624, 4625}
3 | function onUse(cid, item, fromPosition, itemEx, toPosition)
4 | if isInArray(waterIds, itemEx.itemid) == TRUE then
5 | if itemEx.itemid ~= 493 then
6 | if useWorms == FALSE or useWorms == TRUE and doPlayerRemoveItem(cid, ITEM_WORM, 1) == TRUE then
7 | if math.random(1, (100 + (getPlayerSkill(cid, SKILL_FISHING) / 10))) <= getPlayerSkill(cid, SKILL_FISHING) then
8 | doPlayerAddItem(cid, ITEM_FISH, 1)
9 | end
10 | doPlayerAddSkillTry(cid, SKILL_FISHING, 1)
11 | end
12 | end
13 | doSendMagicEffect(toPosition, CONST_ME_LOSEENERGY)
14 | return TRUE
15 | end
16 | return FALSE
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/ultimate healing rune.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_TARGETCASTERORTOPMOST, TRUE)
6 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
7 |
8 | function onGetFormulaValues(cid, level, maglevel)
9 | min = (level * 1 + maglevel * 4) * 2.08
10 | max = (level * 1 + maglevel * 4) * 2.7
11 | if min < 250 then
12 | min = 250
13 | end
14 | return min, max
15 | end
16 |
17 | setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
18 |
19 | function onCastSpell(cid, var)
20 | return doCombat(cid, combat, var)
21 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/mass healing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 |
7 | function onGetFormulaValues(cid, level, maglevel)
8 | min = (level * 1 + maglevel * 4) * 2.08
9 | max = (level * 1 + maglevel * 4) * 2.7
10 | if min < 250 then
11 | min = 250
12 | end
13 | return min, max
14 | end
15 |
16 | setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "onGetFormulaValues")
17 |
18 | local area = createCombatArea(AREA_CIRCLE3X3)
19 | setCombatArea(combat, area)
20 |
21 | function onCastSpell(cid, var)
22 | return doCombat(cid, combat, var)
23 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/death strike.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_DEATHDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_MORTAREA)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_DEATH)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/flame strike.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_HITBYFIRE)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_FIRE)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/ice strike.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_ICEDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_ICEATTACK)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLICE)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/divine missile.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_HOLYDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_HOLYDAMAGE)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLHOLY)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/energy strike.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_ENERGYAREA)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_ENERGY)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/spells/scripts/attack/terra strike.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)
4 | setCombatFormula(combat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
5 |
6 | local distanceCombat = createCombatObject()
7 | setCombatParam(distanceCombat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
8 | setCombatParam(distanceCombat, COMBAT_PARAM_EFFECT, CONST_ME_CARNIPHILA)
9 | setCombatParam(distanceCombat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SMALLEARTH)
10 | setCombatFormula(distanceCombat, COMBAT_FORMULA_LEVELMAGIC, -0.4, 0, -0.5, 0)
11 |
12 | function onCastSpell(cid, var)
13 | if(variantToNumber(var) ~= 0) then
14 | return doCombat(cid, distanceCombat, var)
15 | end
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/monster/Canines/dog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/data/monster/Birds/seagull.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/data/monster/Insects/yellow butterfly.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/data/spells/scripts/attack/envenom.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_POISONDAMAGE)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_POISONAREA)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_POISON)
5 |
6 | local condition = createConditionObject(CONDITION_POISON)
7 | setConditionParam(condition, CONDITION_PARAM_DELAYED, TRUE)
8 | setConditionParam(condition, CONDITION_PARAM_MINVALUE, 20)
9 | setConditionParam(condition, CONDITION_PARAM_MAXVALUE, 70)
10 | setConditionParam(condition, CONDITION_PARAM_STARTVALUE, 5)
11 | setConditionParam(condition, CONDITION_PARAM_TICKINTERVAL, 6000)
12 | setConditionParam(condition, CONDITION_PARAM_FORCEUPDATE, TRUE)
13 | setCombatCondition(combat, condition)
14 |
15 | function onCastSpell(cid, var)
16 | return doCombat(cid, combat, var)
17 | end
--------------------------------------------------------------------------------
/data/monster/Misc/horse(fire).xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/data/monster/Misc/horse(grey).xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/swift foot.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
3 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
4 |
5 | local exhaust = createConditionObject(CONDITION_EXHAUST_COMBAT)
6 | setConditionParam(exhaust, CONDITION_PARAM_TICKS, 10000)
7 | setCombatCondition(combat, exhaust)
8 |
9 | local condition = createConditionObject(CONDITION_HASTE)
10 | setConditionParam(condition, CONDITION_PARAM_TICKS, 10000)
11 | setConditionFormula(condition, 0.8, -72, 0.8, -72)
12 | setCombatCondition(combat, condition)
13 |
14 | local disable = createConditionObject(CONDITION_PACIFIED)
15 | setConditionParam(disable, CONDITION_PARAM_TICKS, 10000)
16 | setCombatCondition(combat, disable)
17 |
18 | function onCastSpell(cid, var)
19 | return doCombat(cid, combat, var)
20 | end
21 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/changegold.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if item.itemid == ITEM_GOLD_COIN and item.type == ITEMCOUNT_MAX then
3 | doChangeTypeItem(item.uid, item.type - item.type)
4 | doPlayerAddItem(cid, ITEM_PLATINUM_COIN, 1)
5 | elseif item.itemid == ITEM_PLATINUM_COIN and item.type == ITEMCOUNT_MAX then
6 | doChangeTypeItem(item.uid, item.type - item.type)
7 | doPlayerAddItem(cid, ITEM_CRYSTAL_COIN, 1)
8 | elseif item.itemid == ITEM_PLATINUM_COIN and item.type < ITEMCOUNT_MAX then
9 | doChangeTypeItem(item.uid, item.type - 1)
10 | doPlayerAddItem(cid, ITEM_GOLD_COIN, ITEMCOUNT_MAX)
11 | elseif item.itemid == ITEM_CRYSTAL_COIN then
12 | doChangeTypeItem(item.uid, item.type - 1)
13 | doPlayerAddItem(cid, ITEM_PLATINUM_COIN, ITEMCOUNT_MAX)
14 | else
15 | return FALSE
16 | end
17 | return TRUE
18 | end
--------------------------------------------------------------------------------
/data/monster/Misc/horse(brown).xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/destroy field rune.lua:
--------------------------------------------------------------------------------
1 | local function doRemoveField(cid, pos)
2 | pos.stackpos = 254
3 | local field = getThingfromPos(pos)
4 | local playerPos = getPlayerPosition(cid)
5 |
6 | if(field.uid > 0 and isInArray(FIELDS, field.itemid) == TRUE) then
7 | doRemoveItem(field.uid)
8 | doSendMagicEffect(pos, CONST_ME_POFF)
9 | return LUA_NO_ERROR
10 | end
11 |
12 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
13 | doSendMagicEffect(playerPos, CONST_ME_POFF)
14 | return LUA_ERROR
15 | end
16 |
17 | function onCastSpell(cid, var)
18 | local pos = variantToPosition(var)
19 | if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
20 | return doRemoveField(cid, pos)
21 | end
22 |
23 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
24 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
25 | return LUA_ERROR
26 | end
--------------------------------------------------------------------------------
/data/talkactions/scripts/buyprem.lua:
--------------------------------------------------------------------------------
1 | local config = {
2 | days = 90,
3 | maxDays = 365,
4 | price = 10000
5 | }
6 |
7 | function onSay(cid, words, param)
8 | if getPlayerPremiumDays(cid) <= config.maxDays then
9 | if doPlayerRemoveMoney(cid, config.price) == TRUE then
10 | doPlayerAddPremiumDays(cid, config.days)
11 | doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought " .. config.days .." days of premium account.")
12 | else
13 | doPlayerSendCancel(cid, "You don't have enough money, " .. config.maxDays .. " days premium account costs " .. config.price .. " gold coins.")
14 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
15 | end
16 | else
17 | doPlayerSendCancel(cid, "You can not buy more than " .. config.maxDays .. " days of Premium Account.")
18 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
19 | end
20 | end
--------------------------------------------------------------------------------
/data/movements/scripts/trap.lua:
--------------------------------------------------------------------------------
1 | function onStepIn(cid, item, pos)
2 | if item.itemid == 2579 then
3 | if isPlayer(cid) ~= TRUE then
4 | doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -15, -30, CONST_ME_NONE)
5 | doTransformItem(item.uid, item.itemid - 1)
6 | end
7 | else
8 | if isPlayer(cid) == TRUE then
9 | doTargetCombatHealth(0, cid, COMBAT_PHYSICALDAMAGE, -50, -100, CONST_ME_NONE)
10 | doTransformItem(item.uid, item.itemid + 1)
11 | end
12 | end
13 | return TRUE
14 | end
15 |
16 | function onStepOut(cid, item, pos)
17 | doTransformItem(item.uid, item.itemid - 1)
18 | return TRUE
19 | end
20 |
21 | function onRemoveItem(item, tile, pos)
22 | if getDistanceBetween(getThingPos(item.uid), pos) > 0 then
23 | doTransformItem(item.uid, item.itemid - 1)
24 | doSendMagicEffect(getThingPos(item.uid), CONST_ME_POFF)
25 | end
26 | return TRUE
27 | end
--------------------------------------------------------------------------------
/data/spells/scripts/healing/wound cleasing.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_HEALING)
3 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
4 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, FALSE)
5 | setCombatParam(combat, COMBAT_PARAM_DISPEL, CONDITION_PARALYZE)
6 |
7 | function getCombatFormulas(cid, lv, maglv)
8 | local formula_min = ((lv*3 + maglv*2) * 0.55) + 15
9 | local formula_max = ((lv*4 + maglv*1) * 0.95) + 20
10 |
11 | if(formula_max < formula_min) then
12 | --Normalize values
13 | local tmp = formula_max
14 | formula_max = formula_min
15 | formula_min = tmp
16 | end
17 | return formula_min, formula_max
18 | end
19 |
20 | setCombatCallback(combat, CALLBACK_PARAM_LEVELMAGICVALUE, "getCombatFormulas")
21 |
22 | function onCastSpell(cid, var)
23 | return doCombat(cid, combat, var)
24 | end
--------------------------------------------------------------------------------
/data/monster/Rifts/rift worm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/data/monster/Canines/husky.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/bovinus.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/movements/scripts/closingdoor.lua:
--------------------------------------------------------------------------------
1 | function onStepOut(cid, item, position, fromPosition)
2 | local newPosition = {x = position.x, y = position.y, z = position.z}
3 | if isInArray(verticalOpenDoors, item.itemid) == TRUE then
4 | newPosition.x = newPosition.x + 1
5 | else
6 | newPosition.y = newPosition.y + 1
7 | end
8 | doRelocate(position, newPosition)
9 |
10 | local tmpPos = {x = position.x, y = position.y, z = position.z, stackpos = -1}
11 | local tileCount = getTileThingByPos(tmpPos)
12 | local i = 1
13 | local tmpItem = {uid = 1}
14 | while(tmpItem.uid ~= 0 and i < tileCount) do
15 | tmpPos.stackpos = i
16 | tmpItem = getTileThingByPos(tmpPos)
17 | if tmpItem.uid ~= item.uid and tmpItem.uid ~= 0 and isMoveable(tmpItem.uid) == TRUE then
18 | doRemoveItem(tmpItem.uid)
19 | else
20 | i = i + 1
21 | end
22 | end
23 |
24 | doTransformItem(item.uid, item.itemid - 1)
25 | return TRUE
26 | end
--------------------------------------------------------------------------------
/data/spells/scripts/support/desintegrate rune.lua:
--------------------------------------------------------------------------------
1 | local function doRemoveObject(cid, pos)
2 | pos.stackpos = 255
3 | local object = getThingfromPos(pos)
4 |
5 | if(object.uid > 65535 and isCreature(object.uid) == FALSE and isMovable(object.uid) == TRUE and object.actionid == 0 and getTilePzInfo(pos) == FALSE) then
6 | doRemoveItem(object.uid)
7 | doSendMagicEffect(pos, CONST_ME_BLOCKHIT)
8 | return LUA_NO_ERROR
9 | end
10 |
11 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
12 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
13 | return LUA_ERROR
14 | end
15 |
16 | function onCastSpell(cid, var)
17 | local pos = variantToPosition(var)
18 | if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
19 | return doRemoveObject(cid, pos)
20 | end
21 |
22 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
23 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
24 | return LUA_ERROR
25 | end
--------------------------------------------------------------------------------
/data/monster/Insects/cockroach.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/XML/quests.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/bloodpaw.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/frostfur.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/blueberrybush.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | if item.itemid == ITEM_BLUEBERRYBUSH then
3 | doTransformItem(item.uid, ITEM_BUSH)
4 | doCreateItem(ITEM_BLUEBERRY, 3, fromPosition)
5 | addEvent(transformBack, 300000, {position = fromPosition})
6 | end
7 | return TRUE
8 | end
9 |
10 | function transformBack(parameters)
11 | parameters.position.stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE
12 | local topThing = getThingfromPos(parameters.position)
13 | if topThing.itemid == ITEM_BLUEBERRY then
14 | addEvent(transformBack, 300000, parameters)
15 | else
16 | for i = STACKPOS_FIRST_ITEM_ABOVE_GROUNDTILE, STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE do
17 | parameters.position.stackpos = i
18 | topThing = getThingfromPos(parameters.position)
19 | if topThing.itemid == ITEM_BUSH then
20 | doTransformItem(topThing.uid, ITEM_BLUEBERRYBUSH)
21 | break
22 | end
23 | end
24 | end
25 | end
--------------------------------------------------------------------------------
/data/actions/scripts/other/surprisebag.lua:
--------------------------------------------------------------------------------
1 | local bluePresent = {2687, 6394, 6280, 6574, 6578, 6575, 6577, 6569, 6576, 6572, 2114}
2 | local redPresent = {2152, 2152, 2152, 2153, 5944, 2112, 6568, 6566, 2492, 2520, 2195, 2114, 2114, 2114, 6394, 6394, 6576, 6576, 6578, 6578, 6574, 6574}
3 |
4 | function onUse(cid, item, fromPosition, itemEx, toPosition)
5 | local count = 1
6 | if item.itemid == 6570 then
7 | local randomChance = math.random(1, 11)
8 | if randomChance == 1 then
9 | count = 10
10 | elseif randomChance == 2 then
11 | count = 3
12 | end
13 | doPlayerAddItem(cid, bluePresent[randomChance], count)
14 | elseif item.itemid == 6571 then
15 | local randomChance = math.random(1, 22)
16 | if randomChance > 0 and randomChance < 4 then
17 | count = 10
18 | end
19 | doPlayerAddItem(cid, redPresent[randomChance], count)
20 | end
21 | doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS)
22 | doRemoveItem(item.uid, 1)
23 | return TRUE
24 | end
--------------------------------------------------------------------------------
/data/monster/Felines/cat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/spellbook.lua:
--------------------------------------------------------------------------------
1 | function onUse(cid, item, fromPosition, itemEx, toPosition)
2 | local count = getPlayerInstantSpellCount(cid)
3 | local text = ""
4 | local t = {}
5 | for i = 0, count - 1 do
6 | local spell = getPlayerInstantSpellInfo(cid, i)
7 | if spell.level ~= 0 then
8 | if spell.manapercent > 0 then
9 | spell.mana = spell.manapercent .. "%"
10 | end
11 | table.insert(t, spell)
12 | end
13 | end
14 | table.sort(t, function(a, b) return a.level < b.level end)
15 | local prevLevel = -1
16 | for i, spell in ipairs(t) do
17 | local line = ""
18 | if prevLevel ~= spell.level then
19 | if i ~= 1 then
20 | line = "\n"
21 | end
22 | line = line .. "Spells for Level " .. spell.level .. "\n"
23 | prevLevel = spell.level
24 | end
25 | text = text .. line .. " " .. spell.words .. " - " .. spell.name .. " : " .. spell.mana .. "\n"
26 | end
27 | doShowTextDialog(cid, item.itemid, text)
28 | return TRUE
29 | end
--------------------------------------------------------------------------------
/data/monster/Insects/blue butterfly.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Insects/red butterfly.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/doc/LIQUIDS:
--------------------------------------------------------------------------------
1 | [ LIQUIDS
2 | Project Name
3 | The Forgotten Server
4 |
5 | Version
6 | 1.0
7 |
8 | License
9 | GNU GPLv2
10 |
11 | Forum
12 | http://otland.net/
13 | ]
14 |
15 | [ FLUIDTYPE NAME COLOR
16 | 2 blood RED
17 | 10 lifefluid RED
18 | 18 lava RED
19 |
20 | 3 beer BROWN
21 | 11 oil BROWN
22 | 19 mud BROWN
23 | 27 rum BROWN
24 | 35 tea BROWN
25 |
26 | 4 slime GREEN
27 |
28 | 5 lemonade YELLOW
29 | 13 urine YELLOW
30 | 21 fruit juice YELLOW
31 |
32 | 6 milk WHITE
33 | 14 coconut milk WHITE
34 |
35 | 7 manafluid PURPLE
36 | 15 wine PURPLE
37 |
38 | 9 water BLUE
39 | ]
40 |
--------------------------------------------------------------------------------
/data/monster/Insects/purple butterfly.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Misc/bat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/data/talkactions/scripts/changesex.lua:
--------------------------------------------------------------------------------
1 | local config = {
2 | premiumDaysCost = 3
3 | }
4 |
5 | function onSay(cid, words, param)
6 | if getPlayerAccess(cid) > 0 then
7 | doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE)
8 | doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your sex.")
9 | return
10 | end
11 |
12 | if getPlayerPremiumDays(cid) < config.premiumDaysCost then
13 | doPlayerRemovePremiumDays(cid, config.premiumDaysCost)
14 | doPlayerSetSex(cid, getPlayerSex(cid) == PLAYERSEX_FEMALE and PLAYERSEX_MALE or PLAYERSEX_FEMALE)
15 | doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have changed your sex for ".. config.premiumDaysCost .." days of your premium account.")
16 | else
17 | doPlayerSendCancel(cid, "You do not have enough premium days, changing sex costs ".. config.premiumDaysCost .." days of your premium account.")
18 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
19 | end
20 | end
21 |
--------------------------------------------------------------------------------
/data/spells/scripts/summon/animate dead rune.lua:
--------------------------------------------------------------------------------
1 | local function doTargetCorpse(cid, pos)
2 | local getPos = pos
3 | getPos.stackpos = 255
4 | corpse = getThingfromPos(getPos)
5 | if(corpse.uid > 0 and isCreature(corpse.uid) == FALSE and isInArray(CORPSES, corpse.itemid) == TRUE) then
6 | doRemoveItem(corpse.uid)
7 | local creature = doSummonCreature(cid, "Skeleton", pos)
8 | doConvinceCreature(cid, creature)
9 | doSendMagicEffect(pos, CONST_ME_MAGIC_BLUE)
10 | return LUA_NO_ERROR
11 | end
12 |
13 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
14 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
15 | return LUA_ERROR
16 | end
17 |
18 | function onCastSpell(cid, var)
19 | local pos = variantToPosition(var)
20 | if(pos.x ~= 0 and pos.y ~= 0 and pos.z ~= 0) then
21 | return doTargetCorpse(cid, pos)
22 | end
23 |
24 | doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
25 | doPlayerSendDefaultCancel(cid, RETURNVALUE_NOTPOSSIBLE)
26 | return LUA_ERROR
27 | end
--------------------------------------------------------------------------------
/data/monster/Grunts/pig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Misc/hyaena.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Misc/rabbit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Frogs/green frog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/data/monster/Misc/badger.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/data/monster/Misc/silver rabbit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/data/npc/scripts/promotion.lua:
--------------------------------------------------------------------------------
1 | local keywordHandler = KeywordHandler:new()
2 | local npcHandler = NpcHandler:new(keywordHandler)
3 | NpcSystem.parseParameters(npcHandler)
4 |
5 | function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
6 | function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
7 | function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
8 | function onThink() npcHandler:onThink() end
9 |
10 | local node1 = keywordHandler:addKeyword({'promot'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'I can promote you for 20000 gold coins. Do you want me to promote you?'})
11 | node1:addChildKeyword({'yes'}, StdModule.promotePlayer, {npcHandler = npcHandler, cost = 20000, level = 20, text = 'Congratulations! You are now promoted.'})
12 | node1:addChildKeyword({'no'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Alright then, come back when you are ready.', reset = true})
13 |
14 | npcHandler:addModule(FocusModule:new())
15 |
--------------------------------------------------------------------------------
/data/monster/Misc/squirrel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/data/monster/Sheeps/black sheep.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/data/monster/Bosses/rotworm queen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Frogs/orchid frog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/data/monster/Misc/deer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/data/actions/scripts/tools/rope.lua:
--------------------------------------------------------------------------------
1 | local holeId = {294, 369, 370, 383, 392, 408, 409, 427, 428, 430, 462, 469, 470, 482, 484, 485, 489, 924, 3135, 3136}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if toPosition.x == CONTAINER_POSITION or toPosition.x == 0 and toPosition.y == 0 and toPosition.z == 0 then
4 | return FALSE
5 | end
6 |
7 | local groundTile = getThingfromPos(toPosition)
8 | if groundTile.itemid == 384 or groundTile.itemid == 418 or groundTile.itemid == 8278 then
9 | doTeleportThing(cid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z - 1}, FALSE)
10 | elseif isInArray(holeId, itemEx.itemid) == TRUE then
11 | local hole = getThingfromPos({x = toPosition.x, y = toPosition.y, z = toPosition.z + 1, stackpos = STACKPOS_TOP_MOVEABLE_ITEM_OR_CREATURE})
12 | if hole.itemid > 0 then
13 | doTeleportThing(hole.uid, {x = toPosition.x, y = toPosition.y + 1, z = toPosition.z}, FALSE)
14 | else
15 | doPlayerSendCancel(cid, "Sorry, not possible.")
16 | end
17 | else
18 | return FALSE
19 | end
20 | return TRUE
21 | end
22 |
--------------------------------------------------------------------------------
/data/monster/Insects/bug.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/monster/Arachnids/spider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/the hairy one.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Bosses/fatality.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/sharpshooter.lua:
--------------------------------------------------------------------------------
1 | local conditionAttrib = createConditionObject(CONDITION_ATTRIBUTES)
2 | local conditionSlow = createConditionObject(CONDITION_HASTE)
3 | local conditionExhaustHeal = createConditionObject(CONDITION_EXHAUST_HEAL)
4 |
5 | setConditionParam(conditionAttrib, CONDITION_PARAM_TICKS, 10000)
6 | setConditionParam(conditionAttrib, CONDITION_PARAM_SKILL_DISTANCEPERCENT, 150)
7 |
8 | setConditionParam(conditionSlow, CONDITION_PARAM_TICKS, 10000)
9 | setConditionFormula(conditionSlow, -0.7, 0, -0.7, 0)
10 |
11 | setConditionParam(conditionExhaustHeal, CONDITION_PARAM_TICKS, 10000)
12 |
13 | local combat = createCombatObject()
14 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
15 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
16 | setCombatCondition(combat, conditionAttrib)
17 | setCombatCondition(combat, conditionSlow)
18 | setCombatCondition(combat, conditionExhaustHeal)
19 |
20 | function onCastSpell(cid, var)
21 | if(doCombat(cid, combat, var) == LUA_NO_ERROR) then
22 | return LUA_NO_ERROR
23 | end
24 | return LUA_ERROR
25 | end
26 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/constructionkits.lua:
--------------------------------------------------------------------------------
1 | local constructionKits = {[3901] = 1652, [3902] = 1658, [3903] = 1666, [3904] = 1670, [3905] = 3813, [3906] = 3817, [3907] = 3821, [3908] = 2602, [3909] = 1614, [3910] = 1615, [3911] = 1616, [3912] = 1619, [3913] = 3805, [3914] = 3807, [3915] = 1740, [3917] = 2084, [3918] = 2095, [3919] = 3809, [3920] = 3811, [3921] = 1716, [3923] = 1774, [3926] = 2080, [3927] = 2098, [3928] = 2104, [3929] = 2101, [3931] = 2105, [3932] = 1724, [3933] = 1728, [3934] = 1732, [3935] = 1775, [3936] = 3832, [3937] = 2064, [3938] = 1750}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if fromPosition.x == CONTAINER_POSITION then
4 | doPlayerSendCancel(cid, "Put the construction kit on the floor first.")
5 | elseif getTileHouseInfo(fromPosition) == FALSE then
6 | doPlayerSendCancel(cid,"You may only construct this inside a house.")
7 | elseif constructionKits[item.itemid] ~= nil then
8 | doTransformItem(item.uid, constructionKits[item.itemid])
9 | doSendMagicEffect(fromPosition, CONST_ME_POFF)
10 | else
11 | return FALSE
12 | end
13 | return TRUE
14 | end
--------------------------------------------------------------------------------
/data/monster/Grunts/boar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/weapons/scripts/viper_star.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 | setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1)
3 | setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)
4 | setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_GREENSTAR)
5 | setCombatFormula(combat, COMBAT_FORMULA_SKILL, 0, 0, 1.0, 0)
6 |
7 | local xCombat = createCombatObject()
8 | setCombatParam(xCombat, COMBAT_PARAM_TYPE, COMBAT_EARTHDAMAGE)
9 |
10 | local condition = createConditionObject(CONDITION_POISON)
11 | setConditionParam(condition, CONDITION_PARAM_DELAYED, 1)
12 | addDamageCondition(condition, 4, 2000, -2)
13 | addDamageCondition(condition, 6, 2000, -1)
14 | setCombatCondition(xCombat, condition)
15 |
16 | function onUseWeapon(cid, var)
17 | local ret = doCombat(cid, combat, var)
18 | if(ret == LUA_ERROR) then
19 | return LUA_ERROR
20 | end
21 |
22 | local target = variantToNumber(var)
23 | if(target ~= 0) then
24 | -- chance to poison the enemy
25 | local chance = math.random(0, 100)
26 | if(chance > 90) then
27 | ret = doCombat(cid, xCombat, var)
28 | end
29 | end
30 | return ret
31 | end
--------------------------------------------------------------------------------
/data/monster/Bio-Elementals/slime summon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/monster/Arena/scrapper/spirit of earth.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/monster/Serpents/snake.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Insects/wasp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Misc/dromedary.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/actions/scripts/other/windows.lua:
--------------------------------------------------------------------------------
1 | local windows = {[6438] = 6436, [6436] = 6438, [6439] = 6437, [6437] = 6439, [6442] = 6440, [6440] = 6442, [6443] = 6441, [6441] = 6443, [6446] = 6444, [6444] = 6446, [6447] = 6445, [6445] = 6447, [6452] = 6450, [6450] = 6452, [6453] = 6451, [6451] = 6453, [6456] = 6454, [6454] = 6456, [6457] = 6455, [6455] = 6457, [6460] = 6458, [6458] = 6460, [6461] = 6459, [6459] = 6461, [6464] = 6462, [6462] = 6464, [6465] = 6463, [6463] = 6465, [6468] = 6466, [6466] = 6468, [6469] = 6467, [6467] = 6469, [6472] = 6470, [6470] = 6472, [6473] = 6471, [6471] = 6473, [6790] = 6788, [6788] = 6790, [6791] = 6789, [6789] = 6791, [7027] = 7025, [7025] = 7027, [7028] = 7026, [7026] = 7028, [7031] = 7029, [7029] = 7031, [7032] = 7030, [7030] = 7032, [10264] = 10266, [10265] = 10267, [10266] = 10264, [10267] = 10265, [10488] = 10490, [10489] = 10491, [10490] = 10488, [10491] = 10489}
2 | function onUse(cid, item, fromPosition, itemEx, toPosition)
3 | if getTileHouseInfo(getPlayerPosition(cid)) ~= FALSE and windows[item.itemid] ~= nil then
4 | doTransformItem(item.uid, windows[item.itemid])
5 | return TRUE
6 | end
7 | return FALSE
8 | end
9 |
--------------------------------------------------------------------------------
/data/monster/Frogs/coral frog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/monster/Frogs/crimson frog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/monster/Sheeps/sheep.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/achad.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Birds/penguin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/monster/Bosses/mr. punish.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/data/monster/Bosses/foreman kneebiter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/otpch.cpp:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////////////////////////////////////
2 | // OpenTibia - an opensource roleplaying game
3 | //////////////////////////////////////////////////////////////////////
4 | // Lua script interface
5 | //////////////////////////////////////////////////////////////////////
6 | // This program is free software; you can redistribute it and/or
7 | // modify it under the terms of the GNU General Public License
8 | // as published by the Free Software Foundation; either version 2
9 | // of the License, or (at your option) any later version.
10 | //
11 | // This program is distributed in the hope that it will be useful,
12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 | // GNU General Public License for more details.
15 | //
16 | // You should have received a copy of the GNU General Public License
17 | // along with this program; if not, write to the Free Software Foundation,
18 | // Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 | //////////////////////////////////////////////////////////////////////
20 |
21 | #include "otpch.h"
--------------------------------------------------------------------------------
/data/monster/Birds/chicken.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/data/monster/Bosses/dreadwing.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/monster/Insects/insect swarm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/data/monster/Insects/sandcrawler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Arachnids/scorpion.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Misc/skunk.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/data/monster/Canines/gnarlhound.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Canines/wolf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/orcus the cruel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/data/monster/Canines/winter wolf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/spells/scripts/support/protector.lua:
--------------------------------------------------------------------------------
1 | local conditionAttrib = createConditionObject(CONDITION_ATTRIBUTES)
2 | local conditionExhaustCombat = createConditionObject(CONDITION_EXHAUST_COMBAT)
3 | local conditionExhaustHeal = createConditionObject(CONDITION_EXHAUST_HEAL)
4 | local conditionPacified = createConditionObject(CONDITION_PACIFIED)
5 |
6 | setConditionParam(conditionAttrib, CONDITION_PARAM_TICKS, 10000)
7 | setConditionParam(conditionAttrib, CONDITION_PARAM_SKILL_SHIELDPERCENT, 220)
8 | setConditionParam(conditionExhaustCombat, CONDITION_PARAM_TICKS, 10000)
9 | setConditionParam(conditionExhaustHeal, CONDITION_PARAM_TICKS, 10000)
10 | setConditionParam(conditionPacified, CONDITION_PARAM_TICKS, 10000)
11 |
12 | local combat = createCombatObject()
13 | setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_MAGIC_BLUE)
14 | setCombatParam(combat, COMBAT_PARAM_AGGRESSIVE, 0)
15 | setCombatCondition(combat, conditionAttrib)
16 | setCombatCondition(combat, conditionExhaustCombat)
17 | setCombatCondition(combat, conditionExhaustHeal)
18 | setCombatCondition(combat, conditionPacified)
19 |
20 | function onCastSpell(cid, var)
21 | if(doCombat(cid, combat, var) == LUA_NO_ERROR) then
22 | return LUA_NO_ERROR
23 | end
24 | return LUA_ERROR
25 | end
26 |
--------------------------------------------------------------------------------
/data/monster/Frogs/azure frog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Bosses/baron brute.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Insects/larva.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Blobs/death blob.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Arachnids/poison spider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/data/monster/Misc/white deer.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Bosses/big boss trolliver.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Bio-Elementals/slime.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Insects/centipede.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/data/monster/Rats/cave rat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Serpents/cobra.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/items/items.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/rocky.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Felines/lion.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Crustaceans/crab.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Traps/eye of the seven.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/axeitus headbanger.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/data/spells/scripts/custom/apocalypse.lua:
--------------------------------------------------------------------------------
1 | local combat = createCombatObject()
2 |
3 | arr = {
4 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
5 | {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
6 | {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
7 | {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
8 | {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
9 | {1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1},
10 | {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
11 | {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0},
12 | {0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0},
13 | {0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0},
14 | {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
15 | }
16 |
17 | local area = createCombatArea(arr)
18 | setCombatArea(combat, area)
19 |
20 | function spellCallback(param)
21 | if param.count > 0 or math.random(0, 1) == 1 then
22 | doSendMagicEffect(param.pos, CONST_ME_HITBYFIRE)
23 | doAreaCombatHealth(param.cid, COMBAT_FIREDAMAGE, param.pos, 0, -100, -100, CONST_ME_EXPLOSIONHIT)
24 | end
25 |
26 | if(param.count < 5) then
27 | param.count = param.count + 1
28 | addEvent(spellCallback, math.random(1000, 4000), param)
29 | end
30 | end
31 |
32 | function onTargetTile(cid, pos)
33 | local param = {}
34 | param.cid = cid
35 | param.pos = pos
36 | param.count = 0
37 | spellCallback(param)
38 | end
39 |
40 | setCombatCallback(combat, CALLBACK_PARAM_TARGETTILE, "onTargetTile")
41 |
42 | function onCastSpell(cid, var)
43 | return doCombat(cid, combat, var)
44 | end
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/cursed gladiator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/data/monster/Felines/tiger.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Arena/warlord/norgle glacierbeard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Arena/scrapper/grimgor guteater.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Bosses/brutus bloodbeard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/data/monster/Rats/rat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/data/monster/Arena/greenhorn/colerian the barbarian.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Bears/panda.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/data/monster/Bosses/munster.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Crustaceans/blood crab.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/data/monster/Misc/yalahari.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Traps/lavahole.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/data/monster/Bears/bear.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/data/monster/Arena/scrapper/slim.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/data/monster/Bosses/ron the ripper.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/data/monster/Annelids/rotworm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/data/monster/Arena/scrapper/spirit of water.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/data/monster/Pirates/pirate skeleton.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/data/monster/Bears/polar bear.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/data/monster/Canines/war wolf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/data/monster/Traps/flamethrower.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------