Merge branch '11-introduce-new-7-8-creatures' into 'master'

Resolve "Introduce new 7.8 creatures"

Closes #11

See merge request ErikasKontenis/Sabrehaven!15
This commit is contained in:
Erikas Kontenis 2019-12-09 09:36:59 +00:00
commit 0e11463d00
65 changed files with 2019 additions and 32 deletions

View File

@ -52,7 +52,7 @@ timeBetweenExActions = 1000
-- Map -- Map
-- NOTE: set mapName WITHOUT .otbm at the end -- NOTE: set mapName WITHOUT .otbm at the end
mapName = "map" mapName = "mymap"
mapAuthor = "CipSoft" mapAuthor = "CipSoft"
-- MySQL -- MySQL

View File

@ -2,12 +2,7 @@ local drunk = Condition(CONDITION_DRUNK)
drunk:setParameter(CONDITION_PARAM_TICKS, 60000) drunk:setParameter(CONDITION_PARAM_TICKS, 60000)
local poison = Condition(CONDITION_POISON) local poison = Condition(CONDITION_POISON)
poison:setParameter(CONDITION_PARAM_DELAYED, true) poison:setTiming(100)
poison:setParameter(CONDITION_PARAM_MINVALUE, -50)
poison:setParameter(CONDITION_PARAM_MAXVALUE, -120)
poison:setParameter(CONDITION_PARAM_STARTVALUE, -5)
poison:setParameter(CONDITION_PARAM_TICKINTERVAL, 5000)
poison:setParameter(CONDITION_PARAM_FORCEUPDATE, true)
local messages = { local messages = {
[FLUID_WATER] = "Gulp.", [FLUID_WATER] = "Gulp.",
@ -48,7 +43,7 @@ function onUse(player, item, fromPosition, target, toPosition)
if self and item:getFluidType() == FLUID_BEER or item:getFluidType() == FLUID_WINE or item:getFluidType() == FLUID_RUM then if self and item:getFluidType() == FLUID_BEER or item:getFluidType() == FLUID_WINE or item:getFluidType() == FLUID_RUM then
player:addCondition(drunk) player:addCondition(drunk)
elseif self and item:getFluidType() == FLUID_SLIME then elseif self and item:getFluidType() == FLUID_SLIME then
player:addCondition(slime) player:addCondition(poison)
elseif item:getFluidType() == FLUID_MANAFLUID then elseif item:getFluidType() == FLUID_MANAFLUID then
target:addMana(math.random(50, 100)) target:addMana(math.random(50, 100))
target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE) target:getPosition():sendMagicEffect(CONST_ME_MAGIC_BLUE)

View File

@ -9303,7 +9303,7 @@ TypeID = 2121
Name = "poison gas" Name = "poison gas"
Flags = {CollisionEvent,Unmove,Avoid,MagicField,Expire} Flags = {CollisionEvent,Unmove,Avoid,MagicField,Expire}
Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=104,ExpireTarget=0,TotalExpireTime=250} Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=104,ExpireTarget=0,TotalExpireTime=250}
MagicField = {Type=POISON,Count=100} MagicField = {Type=POISON,Count=100,Damage=5}
TypeID = 2122 TypeID = 2122
Name = "an energy field" Name = "an energy field"
@ -9338,7 +9338,7 @@ TypeID = 2127
Name = "poison gas" Name = "poison gas"
Flags = {CollisionEvent,Unmove,Avoid,MagicField} Flags = {CollisionEvent,Unmove,Avoid,MagicField}
Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=104} Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=104}
MagicField = {Type=POISON,Count=100} MagicField = {Type=POISON,Count=100,Damage=5}
TypeID = 2128 TypeID = 2128
Name = "a magic wall" Name = "a magic wall"
@ -9376,7 +9376,7 @@ TypeID = 2134
Name = "poison gas" Name = "poison gas"
Flags = {CollisionEvent,Unmove,Avoid,MagicField,Expire} Flags = {CollisionEvent,Unmove,Avoid,MagicField,Expire}
Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=214,ExpireTarget=0,TotalExpireTime=8} Attributes = {AvoidDamageTypes=POISON,Brightness=2,LightColor=214,ExpireTarget=0,TotalExpireTime=8}
MagicField = {Type=POISON,Count=100} MagicField = {Type=POISON,Count=100,Damage=5}
TypeID = 2135 TypeID = 2135
Name = "an energy field" Name = "an energy field"
@ -24442,32 +24442,32 @@ Attributes = {Brightness=7,LightColor=207}
TypeID = 5404 TypeID = 5404
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5405 TypeID = 5405
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5406 TypeID = 5406
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5407 TypeID = 5407
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5408 TypeID = 5408
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5409 TypeID = 5409
Name = "ocean floor" Name = "ocean floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5410 TypeID = 5410
@ -24674,7 +24674,7 @@ TypeID = 5460
Name = "a helmet of the deep" Name = "a helmet of the deep"
Description = "Enables underwater exploration" Description = "Enables underwater exploration"
Flags = {Take,Armor} Flags = {Take,Armor}
Attributes = {Weight=21000,SlotType=HEAD,ArmorValue=2} # TODO: Drown protection! Attributes = {Weight=21000,SlotType=HEAD,ArmorValue=2,AbsorbDrown=100}
TypeID = 5461 TypeID = 5461
Name = "pirate boots" Name = "pirate boots"
@ -25925,12 +25925,12 @@ Name = "" # this is nothing in client
TypeID = 5743 TypeID = 5743
Name = "wooden floor" Name = "wooden floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5744 TypeID = 5744
Name = "wooden floor" Name = "wooden floor"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5745 TypeID = 5745
@ -26017,7 +26017,7 @@ Attributes = {Waypoints=110}
TypeID = 5764 TypeID = 5764
Name = "a ventilation grille" Name = "a ventilation grille"
Flags = {Bank,Unmove} Flags = {Bank,Unmove,CollisionEvent}
Attributes = {Waypoints=500} Attributes = {Waypoints=500}
TypeID = 5765 TypeID = 5765
@ -26810,7 +26810,7 @@ Flags = {Take}
Attributes = {Weight=3200} Attributes = {Weight=3200}
TypeID = 5929 TypeID = 5929
Name = "a goldfish bow" Name = "a goldfish bowl"
Flags = {Take} Flags = {Take}
Attributes = {Weight=3200} Attributes = {Weight=3200}

View File

@ -0,0 +1,52 @@
<monster name="Acolyte of the Cult" nameDescription="an acolyte of the cult" race="blood" experience="300" speed="60" manacost="0">
<health now="390" max="390" />
<look type="194" head="114" body="121" legs="121" feet="57" corpse="6080" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="5" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="50" poison="40">
<attack name="lifedrain" chance="15" range="7" target="1" min="-60" max="-120">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="drunk" duration="5000" range="7" chance="15" target="1">
<attribute key="shootEffect" value="energy" />
<attribute key="areaEffect" value="teleport" />
</attack>
</attacks>
<defenses armor="10" defense="20">
<defense name="healing" chance="17" min="40" max="60">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity invisible="1" />
</immunities>
<summons maxSummons="2">
<summon name="Skeleton" chance="10" max="2" />
</summons>
<voices interval="5000" chance="10">
<voice sentence="Praise voodoo!" />
</voices>
<loot>
<item id="3085" chance="14" /><!-- dragon necklace -->
<item id="2843" chance="13" /><!-- book -->
<item id="5810" chance="14" /><!-- pirate voodoo doll -->
<item id="6088" chance="10" /><!-- music sheet -->
<item id="3282" chance="56" /><!-- morning star -->
<item id="3052" chance="9" /><!-- life ring -->
<item id="3031" countmax="40" chance="240" /><!-- gold coin -->
<item id="3032" chance="10" /><!-- small emerald -->
<item id="3065" chance="7" /><!-- terra rod -->
</loot>
</monster>

View File

@ -0,0 +1,53 @@
<monster name="Adept of the Cult" nameDescription="an adept of the cult" race="blood" experience="400" speed="58" manacost="0">
<health now="430" max="430" />
<look type="194" head="114" body="94" legs="94" feet="57" corpse="6080" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="4" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="50" poison="40">
<attack name="lifedrain" chance="15" range="7" target="1" min="-70" max="-150">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="drunk" duration="5000" range="7" chance="15" target="1">
<attribute key="shootEffect" value="energy" />
<attribute key="areaEffect" value="teleport" />
</attack>
</attacks>
<defenses armor="20" defense="20">
<defense name="healing" chance="17" min="40" max="60">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
<defense name="invisible" chance="20" duration="5000">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity invisible="1" />
</immunities>
<summons maxSummons="2">
<summon name="Ghoul" chance="10" max="2" />
</summons>
<loot>
<item id="3053" chance="9" /><!-- time ring -->
<item id="5810" chance="19" /><!-- pirate voodoo doll -->
<item id="2843" chance="13" /><!-- book -->
<item id="3054" chance="15" /><!-- silver amulet -->
<item id="3031" countmax="60" chance="227" /><!-- gold coin -->
<item id="3311" chance="14" /><!-- clerical mace -->
<item id="6089" chance="10" /><!-- music sheet -->
<item id="3067" chance="7" /><!-- hailstorm rod -->
<item id="3566" chance="6" /><!-- red robe -->
<item id="3030" chance="7" /><!-- small ruby -->
</loot>
</monster>

View File

@ -0,0 +1,29 @@
<monster name="Azure Frog" namedescription="a azure frog" race="blood" experience="20" speed="95" manacost="305">
<health now="60" max="60" />
<look type="226" head="69" body="66" legs="69" feet="66" corpse="6079" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="10" attack="25">
</attacks>
<defenses armor="8" defense="8" />
<voices chance="10">
<voice sentence="Ribbit, Ribbit!" />
<voice sentence="Ribbit!" />
</voices>
<loot>
<item id="3031" countmax="9" chance="300" /><!-- gold coin -->
<item id="3492" chance="108" /><!-- worm -->
</loot>
</monster>

View File

@ -0,0 +1,32 @@
<monster name="Blood Crab" nameDescription="a blood crab" race="blood" experience="160" speed="50" manacost="505">
<health now="290" max="290" />
<look type="200" corpse="6075" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="1" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="100" attack="20">
</attacks>
<defenses armor="10" defense="15" />
<immunities>
<immunity drown="1" />
<immunity earth="1" />
</immunities>
<loot>
<item id="3358" chance="55" /><!-- chain armor -->
<item id="3372" chance="22" /><!-- brass legs -->
<item id="3031" countmax="20" chance="310" /><!-- gold coin -->
<item id="3578" chance="107" /><!-- fish -->
<item id="3026" chance="10" /><!-- white pearl -->
</loot>
</monster>

View File

@ -0,0 +1,40 @@
<monster name="Brutus Bloodbeard" nameDescription="Brutus Bloodbeard" race="blood" experience="500" speed="65" manacost="0">
<health now="1200" max="1200" />
<look type="98" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag lightlevel="0" />
<flag lightcolor="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="50">
<attack name="physical" chance="40" range="7" min="-0" max="-100">
<attribute key="shootEffect" value="throwingknife" />
</attack>
<attack name="drunk" chance="30" range="7" spread="3" length="6">
<attribute key="areaEffect" value="poff" />
</attack>
</attacks>
<defenses armor="35" defense="50" />
<immunities>
<immunity invisible="1" />
</immunities>
<loot>
<item id="3577" chance="200" /><!-- meat -->
<item id="3031" countmax="71" chance="535" /><!-- gold coin -->
<item id="6099" chance="1000" /><!-- brutus bloodbeard's hat -->
<item id="3370" chance="200" /><!-- knight armor -->
<item id="3267" chance="600" /><!-- dagger -->
<item id="3114" countmax="2" chance="600" /><!-- skull -->
<item id="3357" chance="400" /><!-- plate armor -->
</loot>
</monster>

View File

@ -0,0 +1,33 @@
<monster name="Carrion Worm" nameDescription="a carrion worm" race="blood" experience="70" speed="25" manacost="380">
<health now="145" max="145" />
<look type="192" corpse="6069" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="20" attack="30">
</attacks>
<defenses armor="8" defense="11" />
<immunities>
<immunity lifedrain="0" />
<immunity paralyze="0" />
<immunity outfit="0" />
<immunity drunk="0" />
<immunity invisible="0" />
</immunities>
<loot>
<item id="3031" countmax="45" chance="187" /><!-- gold coin -->
<item id="3492" countmax="2" chance="22" /><!-- worm -->
<item id="3577" chance="100" /><!-- meat -->
</loot>
</monster>

View File

@ -0,0 +1,27 @@
<monster name="Coral Frog" namedescription="a coral frog" race="blood" experience="20" speed="95" manacost="305">
<health now="60" max="60" />
<look type="226" head="114" body="98" legs="97" feet="114" corpse="6079" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="10" attack="25">
</attacks>
<defenses armor="1" defense="5" />
<voices interval="5000" chance="10">
<voice sentence="Ribbit!" />
</voices>
<loot>
<item id="3031" countmax="6" chance="468" /><!-- gold coin -->
</loot>
</monster>

View File

@ -0,0 +1,28 @@
<monster name="Crimson Frog" nameDescription="a crimson frog" race="blood" experience="20" speed="95" manacost="305">
<health now="60" max="60" />
<look type="226" head="94" body="78" legs="94" feet="78" corpse="6079" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="10" attack="25">
</attacks>
<defenses armor="8" defense="8" />
<voices interval="5000" chance="10">
<voice sentence="Ribbit!" />
</voices>
<loot>
<item id="3031" countmax="7" chance="253" /><!-- gold coin -->
<item id="3492" chance="309" /><!-- worm -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Deadeye Devious" nameDescription="Deadeye Devious" race="blood" experience="500" speed="65" manacost="0">
<health now="1450" max="1450" />
<look type="151" head="115" body="76" legs="35" feet="117" addons="2" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag lightlevel="0" />
<flag lightcolor="0" />
<flag targetdistance="3" />
<flag runonhealth="0" />
</flags>
<attacks skill="40" attack="60">
<attack name="physical" chance="25" min="-40" max="-160">
<attribute key="shootEffect" value="throwingknife" />
</attack>
</attacks>
<defenses armor="35" defense="50">
<defense name="healing" chance="10" min="50" max="150">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Let's kill 'em" />
<voice sentence="Arrrgh!" />
<voice sentence="You'll never take me alive!" />
</voices>
<loot>
<item id="3357" chance="1005" /><!-- plate armor -->
<item id="3031" countmax="88" chance="651" /><!-- gold coin -->
<item id="6102" chance="1005" /><!-- deadeye devious' eye patch -->
<item id="3370" chance="186" /><!-- knight armor -->
<item id="3114" countmax="2" chance="686" /><!-- skull -->
<item id="3577" chance="277" /><!-- meat -->
<item id="3028" chance="186" /><!-- small diamond -->
<item id="3267" chance="277" /><!-- dagger -->
<item id="5926" chance="96" /><!-- pirate backpack -->
</loot>
</monster>

View File

@ -0,0 +1,63 @@
<monster name="Enlightened of the Cult" nameDescription="a enlightened of the cult" race="blood" experience="500" speed="60" manacost="0">
<health now="700" max="700" />
<look type="193" corpse="6080" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="5" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="50" poison="80">
<attack name="lifedrain" min="-70" max="-185" range="3" chance="20" target="1">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="drunk" duration="5000" range="7" chance="15" target="1">
<attribute key="shootEffect" value="energy" />
<attribute key="areaEffect" value="teleport" />
</attack>
<attack name="physical" chance="17" range="7" radius="1" target="1" min="-70" max="-185">
<attribute key="shootEffect" value="energy" />
</attack>
<attack name="speed" chance="10" range="7" speedchange="-220" duration="5000">
</attack>
</attacks>
<defenses armor="15" defense="20">
<defense name="invisible" chance="15" duration="6000">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
<defense name="healing" chance="30" min="30" max="50">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity paralyze="1" />
<immunity invisible="1" />
</immunities>
<summons maxSummons="2">
<summon name="Crypt Shambler" chance="10" max="2" />
<summon name="Ghost" chance="10" max="2" />
</summons>
<loot>
<item id="3031" countmax="69" chance="236" /><!-- gold coin -->
<item id="3084" chance="16" /><!-- protection amulet -->
<item id="3051" chance="10" /><!-- energy ring -->
<item id="3567" chance="6" /><!-- blue robe -->
<item id="5810" chance="10" /><!-- pirate voodoo doll -->
<item id="3324" chance="8" /><!-- skull staff -->
<item id="2843" chance="13" /><!-- book -->
<item id="3071" chance="7" /><!-- wand of inferno -->
<item id="3029" chance="10" /><!-- small sapphire -->
<item id="6090" chance="9" /><!-- music sheet -->
<item id="5668" chance="5" /><!-- mysterious voodoo skull -->
<item id="3055" chance="6" /><!-- platinum amulet -->
<item id="2995" chance="5" /><!-- piggy bank -->
</loot>
</monster>

View File

@ -0,0 +1,23 @@
<monster name="Green Frog" nameDescription="a green frog" race="venom" experience="0" speed="95" manacost="305">
<health now="25" max="25" />
<look type="224" head="69" body="66" legs="69" feet="66" corpse="6079" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="1" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="6" />
<flag runonhealth="60" />
</flags>
<defenses armor="3" defense="2" />
<voices interval="5000" chance="10">
<voice sentence="Ribbit!" />
<voice sentence="Ribbit! Ribbit!" />
</voices>
</monster>

View File

@ -0,0 +1,40 @@
<monster name="Island Troll" nameDescription="an island troll" race="blood" experience="20" speed="23" manacost="290">
<health now="50" max="50" />
<look type="15" head="0" body="0" legs="0" feet="0" corpse="5960" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="15" />
</flags>
<attacks skill="10" attack="10">
</attacks>
<defenses armor="7" defense="9" />
<voices interval="5000" chance="10">
<voice sentence="Hmmm, turtles" />
<voice sentence="Hmmm, dogs" />
<voice sentence="Hmmm, wormds" />
<voice sentence="Groar" />
<voice sentence="Gruntz!" />
</voices>
<loot>
<item id="3336" chance="44" /><!-- studded club -->
<item id="3003" chance="81" /><!-- rope -->
<item id="3031" countmax="10" chance="340" /><!-- gold coin -->
<item id="5096" chance="51" /><!-- mango -->
<item id="5901" chance="307" /><!-- wood -->
<item id="3268" chance="200" /><!-- hand axe -->
<item id="3355" chance="97" /><!-- leather helmet -->
<item id="3277" chance="210" /><!-- spear -->
<item id="3412" chance="166" /><!-- wooden shield -->
<item id="3552" chance="113" /><!-- leather boots -->
</loot>
</monster>

View File

@ -0,0 +1,37 @@
<monster name="Lavahole" nameDescription="a lavahole" race="undead" experience="0" speed="0" manacost="0">
<health now="100" max="100" />
<look typeex="391" />
<targetchange interval="1000" chance="10" />
<targetstrategy nearest="90" weakest="0" mostdamage="0" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="0" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="0" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks>
<attack name="fire" chance="30" range="7" min="-0" max="-111">
<attribute key="shootEffect" value="fire" />
<attribute key="areaEffect" value="fire" />
</attack>
</attacks>
<defenses armor="1" defense="1" />
<immunities>
<immunity physical="1" />
<immunity energy="1" />
<immunity fire="1" />
<immunity poison="1" />
<immunity lifedrain="1" />
<immunity manadrain="1" />
<immunity paralyze="1" />
<immunity drunk="1" />
<immunity outfit="1" />
<immunity invisible="1" />
</immunities>
</monster>

View File

@ -0,0 +1,44 @@
<monster name="Lethal Lissy" nameDescription="lethal lissy" race="blood" experience="500" speed="65" manacost="0">
<health now="1450" max="1450" />
<look type="155" head="77" body="0" legs="76" feet="132" addons="3" corpse="6081" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag lightlevel="0" />
<flag lightcolor="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="80">
<attack name="physical" chance="10" length="1">
<attribute key="areaEffect" value="purplenote" />
</attack>
</attacks>
<defenses armor="35" defense="50">
<defense name="healing" chance="20" min="125" max="175">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity invisible="1" />
</immunities>
<summons maxSummons="4">
<summon name="Pirate Cutthroat" chance="20" max="4" />
</summons>
<loot>
<item id="6100" chance="1000" /><!-- lethal lissy's shirt -->
<item id="3031" countmax="40" chance="1000" /><!-- gold coin -->
<item id="3370" chance="12" /><!-- knight armor -->
<item id="3275" chance="15" /><!-- double axe -->
<item id="3357" chance="40" /><!-- plate armor -->
<item id="3028" chance="1000" /><!-- small diamond -->
<item id="3114" countmax="1" chance="1000" /><!-- skull -->
</loot>
</monster>

View File

@ -0,0 +1,30 @@
<monster name="Mammoth" nameDescription="a mammoth" race="blood" experience="160" speed="58" manacost="500">
<health now="320" max="320" />
<look type="199" corpse="6074" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="45" attack="40">
</attacks>
<defenses armor="40" defense="57" />
<voices interval="5000" chance="10">
<voice sentence="Troooooot!" />
<voice sentence="Hooooot-Toooooot!" />
<voice sentence="Tooooot." />
</voices>
<loot>
<item id="3582" chance="202" /><!-- ham -->
<item id="3031" countmax="20" chance="162" /><!-- gold coin -->
</loot>
</monster>

View File

@ -0,0 +1,45 @@
<monster name="Massive Water Elemental" nameDescription="a massive water elemental" race="undead" experience="800" speed="140" manacost="0">
<health now="1250" max="1250" />
<look type="11" corpse="10499" />
<targetchange interval="1000" chance="5" />
<targetstrategy nearest="70" weakest="15" mostdamage="15" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="45" attack="80" poison="300">
<attack name="poisonfield" chance="11" range="7" target="1" radius="3">
<attribute key="shootEffect" value="poison" />
</attack>
<attack name="poisoncondition" count="70" chance="12" length="8" spread="3" min="-20" max="-420">
<attribute key="shootEffect" value="poison" />
<attribute key="areaEffect" value="poison" />
</attack>
<attack name="lifedrain" chance="15" range="10" min="-170" max="-210">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="drown" chance="10" target="1" range="7" radius="2" min="-330" max="-450">
<attribute key="areaEffect" value="bluebubble" />
</attack>
</attacks>
<defenses armor="20" defense="22">
<defense name="healing" chance="15" min="100" max="150">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity paralyze="1" />
<immunity invisible="1" />
<immunity drown="1" />
<immunity fire="1" />
<immunity earth="1" />
</immunities>
</monster>

View File

@ -0,0 +1,99 @@
<monster name="Morgaroth" nameDescription="Morgaroth" race="undead" experience="15000" speed="180" manacost="0">
<health now="55000" max="55000" />
<look type="12" head="0" body="94" legs="79" feet="79" corpse="6068" />
<targetchange interval="1000" chance="10" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="240" attack="180">
<attack name="fire" chance="30" range="7" radius="7" target="1" min="-500" max="-600">
<attribute key="shootEffect" value="fire" />
<attribute key="areaEffect" value="firearea" />
</attack>
<attack name="physical" chance="25" length="8" spread="0" min="-0" max="-580">
<attribute key="areaEffect" value="mortarea" />
</attack>
<attack name="speed" chance="15" range="7" speedchange="-850" duration="50000">
<attribute key="areaEffect" value="whitenote" />
</attack>
<attack name="physical" chance="20" target="0" radius="7" min="-500" max="-800">
<attribute key="areaEffect" value="mortarea" />
</attack>
</attacks>
<defenses armor="55" defense="65">
<defense name="healing" chance="20" min="250" max="750">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
<defense name="speed" chance="80" speedchange="808" duration="6000">
<attribute key="areaEffect" value="redshimmer" />
</defense>
</defenses>
<immunities>
<immunity paralyze="1" />
<immunity invisible="1" />
<immunity fire="1" />
<immunity earth="1" />
</immunities>
<summons maxSummons="6">
<summon name="Demon" chance="20" max="6" />
</summons>
<voices interval="5000" chance="30">
<voice sentence="I AM MORGAROTH, LORD OF THE TRIANGLE... AND YOU ARE LOST!" yell="1" />
<voice sentence="MY SEED IS FEAR AND MY HARVEST ARE YOUR SOULS!" yell="1" />
<voice sentence="THE TRIANGLE OF TERROR WILL RISE!" yell="1" />
<voice sentence="ZATHROTH! LOOK AT THE DESTRUCTION I AM CAUSING IN YOUR NAME!" yell="1" />
</voices>
<loot>
<item id="3076" chance="127" /><!-- crystal ball -->
<item id="3034" chance="29" /><!-- talon -->
<item id="3048" chance="53" /><!-- might ring -->
<item id="3414" chance="200" /><!-- mastermind shield -->
<item id="3309" chance="53" /><!-- thunder hammer -->
<item id="3041" chance="127" /><!-- blue gem -->
<item id="3364" chance="78" /><!-- golden legs -->
<item id="3356" chance="127" /><!-- devil helmet -->
<item id="3320" chance="102" /><!-- fire axe -->
<item id="3006" chance="78" /><!-- ring of the sky -->
<item id="3422" chance="127" /><!-- great shield -->
<item id="3281" chance="78" /><!-- giant sword -->
<item id="3049" chance="127" /><!-- stealth ring -->
<item id="3062" chance="151" /><!-- mind stone -->
<item id="3055" chance="29" /><!-- platinum amulet -->
<item id="2993" chance="127" /><!-- teddy bear -->
<item id="3026" countmax="14" chance="76" /><!-- white pearl -->
<item id="3046" chance="151" /><!-- magic light wand -->
<item id="3420" chance="78" /><!-- demon shield -->
<item id="3058" chance="224" /><!-- strange symbol -->
<item id="3038" chance="371" /><!-- green gem -->
<item id="3028" countmax="5" chance="131" /><!-- small diamond -->
<item id="3051" chance="78" /><!-- energy ring -->
<item id="5954" countmax="2" chance="224" /><!-- demon horn -->
<item id="3027" countmax="15" chance="71" /><!-- black pearl -->
<item id="3029" countmax="8" chance="203" /><!-- small sapphire -->
<item id="3061" chance="200" /><!-- life crystal -->
<item id="3084" chance="29" /><!-- protection amulet -->
<item id="2852" chance="127" /><!-- red tome -->
<item id="3275" chance="175" /><!-- double axe -->
<item id="3032" countmax="10" chance="141" /><!-- small emerald -->
<item id="3060" chance="102" /><!-- orb -->
<item id="3098" chance="200" /><!-- ring of healing -->
<item id="3081" chance="29" /><!-- stone skin amulet -->
<item id="3366" chance="127" /><!-- magic plate armor -->
<item id="5943" chance="273" /><!-- morgaroth's heart -->
<item id="3035" countmax="74" chance="578" /><!-- platinum coin -->
<item id="3554" chance="29" /><!-- steel boots -->
<item id="3033" countmax="20" chance="149" /><!-- small amethyst -->
<item id="3063" chance="29" /><!-- gold ring -->
<item id="2903" chance="29" /><!-- golden mug -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Novice of the Cult" nameDescription="a novice of the cult" race="blood" experience="100" speed="62" manacost="0">
<health now="285" max="285" />
<look type="133" head="114" body="95" legs="114" feet="114" corpse="6080" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="40" />
</flags>
<attacks skill="55" attack="20" poison="10">
<attack name="lifedrain" chance="15" range="7" target="1" min="-20" max="-80">
<attribute key="areaEffect" value="redshimmer" />
</attack>
</attacks>
<defenses armor="15" defense="10">
<defense name="healing" chance="17" min="30" max="50">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<summons maxSummons="1">
<summon name="Chicken" chance="20" max="1" />
</summons>
<voices interval="5000" chance="10">
<voice sentence="Fear us!" />
<voice sentence="You will not tell anyone what you have seen." />
<voice sentence="Your curiosity will be punished!" />
</voices>
<loot>
<item id="3031" countmax="39" chance="138" /><!-- gold coin -->
<item id="3286" chance="52" /><!-- mace -->
<item id="3028" chance="7" /><!-- small diamond -->
<item id="3572" chance="37" /><!-- scarf -->
<item id="6087" chance="17" /><!-- music sheet -->
<item id="2843" chance="11" /><!-- book -->
<item id="3097" chance="10" /><!-- dwarven ring -->
<item id="3083" chance="9" /><!-- garlic necklace -->
<item id="3074" chance="11" /><!-- wand of vortex -->
<item id="5810" chance="10" /><!-- pirate voodoo doll -->
</loot>
</monster>

View File

@ -0,0 +1,25 @@
<monster name="Orchid Frog" nameDescription="a orchid frog" race="blood" experience="20" speed="95" manacost="305">
<health now="60" max="60" />
<look type="226" head="109" body="14" legs="109" feet="114" corpse="6079" />
<targetchange interval="1000" chance="50" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="10" attack="25">
</attacks>
<defenses armor="2" defense="3" />
<loot>
<item id="3031" countmax="10" chance="309" /><!-- gold coin -->
<item id="3492" chance="186" /><!-- worm -->
</loot>
</monster>

View File

@ -0,0 +1,49 @@
<monster name="Pirate Buccaneer" nameDescription="a pirate buccaneer" race="blood" experience="250" speed="68" manacost="595">
<health now="425" max="425" />
<look type="97" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="50" />
</flags>
<attacks skill="30" attack="80">
<attack name="physical" chance="15" range="7" min="-0" max="-100">
<attribute key="shootEffect" value="throwingknife" />
</attack>
</attacks>
<defenses armor="25" defense="23" />
<immunities>
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Give up!" />
<voice sentence="Hiyaa" />
<voice sentence="Plundeeeeer!" />
</voices>
<loot>
<item id="3031" countmax="59" chance="275" /><!-- gold coin -->
<item id="6095" chance="15" /><!-- pirate shirt -->
<item id="3273" chance="108" /><!-- sabre -->
<item id="2920" chance="103" /><!-- torch -->
<item id="3298" countmax="5" chance="60" /><!-- throwing knife -->
<item id="5090" chance="18" /><!-- treasure map -->
<item id="3123" chance="104" /><!-- worn leather boots -->
<item id="5926" chance="8" /><!-- pirate backpack -->
<item id="6097" chance="10" /><!-- hook -->
<item id="6098" chance="9" /><!-- eye patch -->
<item id="3413" chance="44" /><!-- battle shield -->
<item id="3357" chance="11" /><!-- plate armor -->
<item id="6126" chance="8" /><!-- peg leg -->
<item id="5792" chance="5" /><!-- dice -->
<item id="5552" chance="5" /><!-- rum flask -->
</loot>
</monster>

View File

@ -0,0 +1,50 @@
<monster name="Pirate Corsair" nameDescription="a pirate corsair" race="blood" experience="350" speed="75" manacost="775">
<health now="675" max="675" />
<look type="98" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="75" attack="40">
<attack name="physical" chance="15" range="7" max="-150">
<attribute key="shootEffect" value="throwingstar" />
</attack>
<attack name="physical" chance="20" target="0" min="-0" max="-0">
<attribute key="areaEffect" value="rednote" />
</attack>
</attacks>
<defenses armor="25" defense="20" />
<immunities>
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Give up!" />
<voice sentence="Hiyaa!" />
<voice sentence="Plundeeeeer!" />
</voices>
<loot>
<item id="3287" countmax="12" chance="51" /><!-- throwing star -->
<item id="5552" chance="6" /><!-- rum flask -->
<item id="3031" countmax="83" chance="178" /><!-- gold coin -->
<item id="3273" chance="105" /><!-- sabre -->
<item id="3421" chance="18" /><!-- dark shield -->
<item id="6126" chance="10" /><!-- peg leg -->
<item id="5461" chance="9" /><!-- pirate boots -->
<item id="6097" chance="13" /><!-- hook -->
<item id="3383" chance="25" /><!-- dark armor -->
<item id="5926" chance="12" /><!-- pirate backpack -->
<item id="6098" chance="6" /><!-- eye patch -->
<item id="6096" chance="12" /><!-- pirate hat -->
<item id="5813" chance="6" /><!-- skull candle -->
</loot>
</monster>

View File

@ -0,0 +1,46 @@
<monster name="Pirate Cutthroat" nameDescription="a pirate cutthroat" race="blood" experience="175" speed="71" manacost="495">
<health now="325" max="325" />
<look type="96" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="75" attack="40" poison="80">
<attack name="fire" chance="34" range="1" radius="1" target="1" min="-0" max="-95">
<attribute key="areaEffect" value="explosion" />
</attack>
</attacks>
<defenses armor="25" defense="23" />
<immunities>
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Give up!" />
<voice sentence="Hiyaa!" />
<voice sentence="Plundeeeeer!" />
</voices>
<loot>
<item id="3031" countmax="49" chance="326" /><!-- gold coin -->
<item id="5710" chance="23" /><!-- light shovel -->
<item id="5927" chance="15" /><!-- pirate bag -->
<item id="3409" chance="33" /><!-- steel shield -->
<item id="5090" chance="13" /><!-- treasure map -->
<item id="3377" chance="33" /><!-- scale armor -->
<item id="6098" chance="11" /><!-- eye patch -->
<item id="5918" chance="16" /><!-- pirate knee breeches -->
<item id="6126" chance="9" /><!-- peg leg -->
<item id="6097" chance="10" /><!-- hook -->
<item id="5552" chance="6" /><!-- rum flask -->
<item id="5792" chance="5" /><!-- dice -->
</loot>
</monster>

View File

@ -0,0 +1,51 @@
<monster name="Pirate Ghost" nameDescription="a pirate ghost" race="undead" experience="250" speed="70" manacost="0">
<health now="275" max="275" />
<look type="196" corpse="6071" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="50" poison="40">
<attack name="lifedrain" chance="12" range="7" min="-30" max="-80">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="physical" chance="15" range="7" radius="2" target="1" max="-65">
<attribute key="areaEffect" value="rednote" />
</attack>
</attacks>
<defenses armor="20" defense="25">
<defense name="healing" chance="15" min="24" max="30">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity physical="1" />
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity poison="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Yooh Ho Hooh Ho!" />
<voice sentence="Hell is waiting for You!" />
<voice sentence="It's alive!" />
<voice sentence="The curse! Aww the curse!" />
<voice sentence="You will not get my treasure!" />
</voices>
<loot>
<item id="3049" chance="13" /><!-- stealth ring -->
<item id="3031" countmax="63" chance="173" /><!-- gold coin -->
<item id="2814" chance="9" /><!-- parchment -->
<item id="3271" chance="7" /><!-- spike sword -->
<item id="3566" chance="7" /><!-- red robe -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Pirate Marauder" nameDescription="a pirate marauder" race="blood" experience="125" speed="70" manacost="490">
<health now="210" max="210" />
<look type="93" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="25" />
</flags>
<attacks skill="60" attack="40">
<attack name="physical" chance="15" range="7" min="-0" max="-40">
<attribute key="shootEffect" value="spear" />
</attack>
</attacks>
<defenses armor="15" defense="20" />
<immunities>
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Plundeeeeer!" />
<voice sentence="Give up!" />
<voice sentence="Hiyaa!" />
</voices>
<loot>
<item id="3031" countmax="40" chance="309" /><!-- gold coin -->
<item id="5927" chance="10" /><!-- pirate bag -->
<item id="2920" chance="99" /><!-- torch -->
<item id="3358" chance="33" /><!-- chain armor -->
<item id="6097" chance="10" /><!-- hook -->
<item id="3277" countmax="2" chance="40" /><!-- spear -->
<item id="5090" chance="14" /><!-- treasure map -->
<item id="6126" chance="10" /><!-- peg leg -->
<item id="3410" chance="55" /><!-- plate shield -->
<item id="5917" chance="15" /><!-- bandana -->
<item id="5552" chance="5" /><!-- rum flask -->
<item id="6098" chance="10" /><!-- eye patch -->
<item id="5928" chance="6" /><!-- goldfish bowl -->
<item id="5792" chance="6" /><!-- dice -->
</loot>
</monster>

View File

@ -0,0 +1,30 @@
<monster name="Pirate Skeleton" nameDescription="a pirate skeleton" race="undead" experience="85" speed="45" manacost="0">
<health now="190" max="190" />
<look type="195" corpse="6070" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="20" />
</flags>
<attacks skill="40" attack="20">
</attacks>
<defenses armor="18" defense="19" />
<loot>
<item id="3031" countmax="25" chance="256" /><!-- gold coin -->
<item id="3115" chance="72" /><!-- bone -->
<item id="3116" chance="60" /><!-- big bone -->
<item id="3114" chance="38" /><!-- skull -->
<item id="3294" chance="13" /><!-- short sword -->
<item id="3337" chance="18" /><!-- bone club -->
<item id="3264" chance="12" /><!-- sword -->
</loot>
</monster>

View File

@ -0,0 +1,39 @@
<monster name="Quara Constrictor Scout" nameDescription="a quara constrictor scout" race="undead" experience="250" speed="72" manacost="670">
<health now="450" max="450" />
<look type="46" corpse="6065" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="55" attack="40">
<attack name="lifedrain" chance="15" radius="3" target="0" max="-80">
<attribute key="areaEffect" value="blackspark" />
</attack>
</attacks>
<defenses armor="15" defense="15" />
<immunities>
<immunity fire="1" />
<immunity drown="1" />
<immunity lifedrain="0" />
<immunity paralyze="0" />
<immunity invisible="0" />
</immunities>
<loot>
<item id="3031" countmax="40" chance="247" /><!-- gold coin -->
<item id="3354" chance="95" /><!-- brass helmet -->
<item id="3285" chance="57" /><!-- longsword -->
<item id="3359" chance="23" /><!-- brass armor -->
<item id="5895" chance="10" /><!-- fish fin -->
<item id="3033" chance="9" /><!-- small amethyst -->
</loot>
</monster>

View File

@ -0,0 +1,52 @@
<monster name="Quara Constrictor" nameDescription="a quara constrictor" race="blood" experience="250" speed="130" manacost="670">
<health now="450" max="450" />
<look type="46" corpse="6065" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="50" attack="50" poison="20">
<attack name="lifedrain" chance="11" radius="3" target="0" min="-50" max="-90">
<attribute key="areaEffect" value="blackspark" />
</attack>
<attack name="lifedrain" chance="12" range="7" min="-40" max="-70" target="0" radius="4">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="energycondition" count="80" chance="10" min="-75" max="-75" range="1" target="1">
<attribute key="shootEffect" value="energy" />
</attack>
</attacks>
<defenses armor="15" defense="15" />
<immunities>
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity drown="1" />
<immunity fire="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Gaaahhh!" />
<voice sentence="Gluh! Gluh!" />
<voice sentence="Tssss!" />
<voice sentence="Boohaa!" />
</voices>
<loot>
<item id="3031" countmax="100" chance="290" /><!-- gold coin -->
<item id="3285" chance="55" /><!-- longsword -->
<item id="3033" chance="7" /><!-- small amethyst -->
<item id="3354" chance="104" /><!-- brass helmet -->
<item id="3359" chance="25" /><!-- brass armor -->
<item id="3581" chance="54" /><!-- shrimp -->
<item id="5895" chance="10" /><!-- fish fin -->
<item id="3294" chance="70" /><!-- short sword -->
</loot>
</monster>

View File

@ -0,0 +1,61 @@
<monster name="Quara Hydromancer Scout" nameDescription="a quara hydromancer scout" race="undead" experience="800" speed="70" manacost="0">
<health now="1100" max="1100" />
<look type="47" corpse="6066" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="20">
<attack name="lifedrain" chance="9" length="8" spread="0" min="-125" max="-250">
<attribute key="areaEffect" value="bubbles" />
</attack>
<attack name="lifedrain" chance="12" radius="3" target="0" min="-130" max="-165">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="lifedrain" chance="7" length="8" spread="3" max="-210">
<attribute key="areaEffect" value="greenspark" />
</attack>
<attack name="lifedrain" chance="8" range="7" target="1" min="-45" max="-170">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="speed" chance="10" range="7" speedchange="-600" duration="5000">
</attack>
</attacks>
<defenses armor="15" defense="18">
<defense name="healing" chance="10" min="100" max="120">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity fire="1" />
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity invisible="1" />
<immunity drown="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Qua hah tsh!" />
</voices>
<loot>
<item id="3031" countmax="90" chance="231" /><!-- gold coin -->
<item id="3073" chance="14" /><!-- wand of cosmic energy -->
<item id="3289" chance="111" /><!-- staff -->
<item id="3125" chance="107" /><!-- remains of a fish -->
<item id="5895" chance="15" /><!-- fish fin -->
<item id="3026" chance="27" /><!-- white pearl -->
<item id="3032" chance="16" /><!-- small emerald -->
<item id="3027" chance="25" /><!-- black pearl -->
<item id="3098" chance="8" /><!-- ring of healing -->
<item id="3370" chance="8" /><!-- knight armor -->
</loot>
</monster>

View File

@ -0,0 +1,67 @@
<monster name="Quara Hydromancer" nameDescription="a quara hydromancer" race="blood" experience="800" speed="130" manacost="0">
<health now="1100" max="1100" />
<look type="47" corpse="6066" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="30" />
</flags>
<attacks skill="30" attack="40" poison="100">
<attack name="lifedrain" chance="9" length="8" spread="0" min="-100" max="-180">
<attribute key="areaEffect" value="bubbles" />
</attack>
<attack name="lifedrain" chance="12" radius="3" target="0" min="-90" max="-150">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="lifedrain" chance="7" length="8" spread="3" min="-170" max="-240">
<attribute key="areaEffect" value="greenshimmer" />
</attack>
<attack name="lifedrain" chance="8" range="7" target="1" min="-0" max="-170">
<attribute key="areaEffect" value="redshimmer" />
</attack>
<attack name="speed" chance="10" range="7" speedchange="-600" duration="5000">
</attack>
</attacks>
<defenses armor="15" defense="18">
<defense name="healing" chance="10" min="100" max="120">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity invisible="1" />
<immunity drown="1" />
<immunity fire="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Qua hah tsh!" />
<voice sentence="Teech tsha tshul!" />
<voice sentence="Quara tsha Fach!" />
<voice sentence="Tssssha Quara!" />
<voice sentence="Blubber." />
<voice sentence="Blup." />
</voices>
<loot>
<item id="3289" chance="106" /><!-- staff -->
<item id="3581" chance="54" /><!-- shrimp -->
<item id="3031" countmax="88" chance="241" /><!-- gold coin -->
<item id="3027" chance="24" /><!-- black pearl -->
<item id="3125" chance="51" /><!-- remains of a fish -->
<item id="3032" chance="14" /><!-- small emerald -->
<item id="3098" chance="9" /><!-- ring of healing -->
<item id="3073" chance="14" /><!-- wand of cosmic energy -->
<item id="3026" chance="24" /><!-- white pearl -->
<item id="3370" chance="8" /><!-- knight armor -->
<item id="5895" chance="15" /><!-- fish fin -->
</loot>
</monster>

View File

@ -0,0 +1,41 @@
<monster name="Quara Mantassin Scout" nameDescription="a quara mantassin scout" race="blood" experience="100" speed="67" manacost="480">
<health now="220" max="220" />
<look type="72" corpse="6064" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="45" attack="40">
</attacks>
<defenses armor="15" defense="15" />
<immunities>
<immunity fire="1" />
<immunity drown="1" />
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Zuerk Pachak!" />
<voice sentence="Shrrrr" />
</voices>
<loot>
<item id="3031" countmax="30" chance="256" /><!-- gold coin -->
<item id="3358" chance="58" /><!-- chain armor -->
<item id="3114" chance="107" /><!-- skull -->
<item id="3049" chance="8" /><!-- stealth ring -->
<item id="5895" chance="6" /><!-- fish fin -->
<item id="3265" chance="16" /><!-- two handed sword -->
<item id="3029" chance="5" /><!-- small sapphire -->
</loot>
</monster>

View File

@ -0,0 +1,51 @@
<monster name="Quara Mantassin" nameDescription="a quara mantassin" race="blood" experience="400" speed="130" manacost="480">
<health now="800" max="800" />
<look type="72" corpse="6064" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="40" />
</flags>
<attacks skill="60" attack="40">
</attacks>
<defenses armor="15" defense="15">
<defense name="invisible" chance="25" duration="2000">
<attribute key="areaEffect" value="redshimmer" />
</defense>
<defense name="speed" chance="10" speedchange="800" duration="5000">
<attribute key="areaEffect" value="redshimmer" />
</defense>
</defenses>
<immunities>
<immunity lifedrain="1" />
<immunity drown="1" />
<immunity fire="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Zuerk Pachak!" />
<voice sentence="Shrrrr" />
</voices>
<loot>
<item id="3581" chance="56" /><!-- shrimp -->
<item id="3031" countmax="100" chance="271" /><!-- gold coin -->
<item id="3031" countmax="30" chance="271" /><!-- gold coin -->
<item id="3265" chance="102" /><!-- two handed sword -->
<item id="3114" chance="55" /><!-- skull -->
<item id="3565" chance="102" /><!-- cape -->
<item id="3049" chance="15" /><!-- stealth ring -->
<item id="5895" chance="10" /><!-- fish fin -->
<item id="3029" chance="9" /><!-- small sapphire -->
<item id="3269" chance="40" /><!-- halberd -->
<item id="3373" chance="6" /><!-- strange helmet -->
<item id="3567" chance="6" /><!-- blue robe -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Quara Pincher Scout" nameDescription="a quara pincher scout" race="blood" experience="600" speed="62" manacost="0">
<health now="775" max="775" />
<look type="77" corpse="6063" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="50" attack="80">
<attack name="speed" chance="10" range="1" speedchange="-600" duration="3000">
<attribute key="areaEffect" value="redshimmer" />
</attack>
</attacks>
<defenses armor="30" defense="35" />
<immunities>
<immunity fire="1" />
<immunity poison="1" />
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity outfit="1" />
<immunity drunk="1" />
<immunity invisible="1" />
<immunity drown="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Clank clank!" />
<voice sentence="Clap!" />
</voices>
<loot>
<item id="3031" countmax="50" chance="260" /><!-- gold coin -->
<item id="3357" chance="73" /><!-- plate armor -->
<item id="3282" chance="13" /><!-- morning star -->
<item id="3030" chance="30" /><!-- small ruby -->
<item id="3269" chance="44" /><!-- halberd -->
<item id="3286" chance="96" /><!-- mace -->
<item id="3061" chance="10" /><!-- life crystal -->
<item id="5895" chance="10" /><!-- fish fin -->
</loot>
</monster>

View File

@ -0,0 +1,47 @@
<monster name="Quara Pincher" nameDescription="a quara pincher" race="blood" experience="1200" speed="135" manacost="0">
<health now="1800" max="1800" />
<look type="77" corpse="6063" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="75" attack="80">
<attack name="speed" chance="12" range="1" speedchange="-600" duration="3000">
<attribute key="areaEffect" value="redshimmer" />
</attack>
</attacks>
<defenses armor="18" defense="25" />
<immunities>
<immunity lifedrain="1" />
<immunity invisible="1" />
<immunity drown="1" />
<immunity fire="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Clank clank!" />
<voice sentence="Clap!" />
<voice sentence="Crrrk! Crrrk!" />
</voices>
<loot>
<item id="3031" countmax="100" chance="196" /><!-- gold coin -->
<item id="3031" countmax="28" chance="196" /><!-- gold coin -->
<item id="3286" chance="105" /><!-- mace -->
<item id="3269" chance="206" /><!-- halberd -->
<item id="3581" chance="54" /><!-- shrimp -->
<item id="3282" chance="54" /><!-- morning star -->
<item id="3369" chance="15" /><!-- warrior helmet -->
<item id="3030" chance="54" /><!-- small ruby -->
<item id="5895" chance="20" /><!-- fish fin -->
<item id="3381" chance="8" /><!-- crown armor -->
</loot>
</monster>

View File

@ -0,0 +1,39 @@
<monster name="Quara Predator Scout" nameDescription="a quara predator scout" race="blood" experience="400" speed="72" manacost="0">
<health now="890" max="890" />
<look type="20" corpse="6067" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="50" weakest="15" mostdamage="15" random="20" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="95">
</attacks>
<defenses armor="20" defense="29" />
<immunities>
<immunity fire="1" />
<immunity lifedrain="1" />
<immunity paralyze="1" />
<immunity invisible="1" />
<immunity drown="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Gnarrr!" />
</voices>
<loot>
<item id="3031" countmax="42" chance="242" /><!-- gold coin -->
<item id="3111" chance="101" /><!-- fishbone -->
<item id="3275" chance="43" /><!-- double axe -->
<item id="3377" chance="55" /><!-- scale armor -->
<item id="3028" chance="9" /><!-- small diamond -->
<item id="5895" chance="9" /><!-- fish fin -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Quara Predator" nameDescription="a quara predator" race="blood" experience="1600" speed="130" manacost="0">
<health now="2200" max="2200" />
<look type="20" corpse="6067" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="50" weakest="15" mostdamage="15" random="20" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="30" attack="235">
</attacks>
<defenses armor="40" defense="45">
<defense name="speed" chance="15" speedchange="210">
<attribute key="areaEffect" value="greenshimmer" />
</defense>
<defense name="healing" chance="12" min="200" max="240">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<immunities>
<immunity lifedrain="1" />
<immunity invisible="1" />
<immunity drown="1" />
<immunity fire="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Rrrah!" />
<voice sentence="Rraaar!" />
</voices>
<loot>
<item id="3031" countmax="100" chance="233" /><!-- gold coin -->
<item id="3031" countmax="58" chance="233" /><!-- gold coin -->
<item id="3275" chance="306" /><!-- double axe -->
<item id="3111" chance="107" /><!-- fishbone -->
<item id="3028" chance="54" /><!-- small diamond -->
<item id="5741" chance="9" /><!-- skull helmet -->
<item id="3581" chance="54" /><!-- shrimp -->
<item id="5895" chance="24" /><!-- fish fin -->
</loot>
</monster>

View File

@ -0,0 +1,41 @@
<monster name="Ron the Ripper" nameDescription="Ron the Ripper" race="blood" experience="500" speed="60" manacost="0">
<health now="1500" max="1500" />
<look type="151" head="95" body="94" legs="117" feet="97" addons="1" corpse="6080" />
<targetchange interval="1000" chance="100" />
<targetstrategy nearest="0" weakest="100" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag lightlevel="0" />
<flag lightcolor="0" />
<flag targetdistance="1" />
<flag runonhealth="250" />
</flags>
<attacks skill="90" attack="50">
<attack name="lifedrain" chance="10" range="7" target="1" min="-0" max="-0">
<attribute key="areaEffect" value="whitenote" />
</attack>
<attack name="physical" chance="15" min="-0" max="-160">
<attribute key="shootEffect" value="throwingknife" />
</attack>
</attacks>
<defenses armor="35" defense="50">
<defense name="healing" chance="10" min="125" max="175">
<attribute key="areaEffect" value="blueshimmer" />
</defense>
</defenses>
<loot>
<item id="6101" chance="1000" /><!-- ron the ripper's sabre -->
<item id="3031" countmax="50" chance="1000" /><!-- gold coin -->
<item id="3370" chance="12" /><!-- knight armor -->
<item id="3275" chance="15" /><!-- double axe -->
<item id="3357" chance="40" /><!-- plate armor -->
<item id="3267" chance="85" /><!-- dagger -->
<item id="3114" countmax="2" chance="1000" /><!-- skull -->
</loot>
</monster>

View File

@ -0,0 +1,18 @@
<monster name="Seagull" nameDescription="a seagull" race="blood" experience="0" speed="80" manacost="250">
<health now="25" max="25" />
<look type="223" corpse="6076" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="0" />
<flag canpushcreatures="0" />
<flag targetdistance="11" />
</flags>
<defenses armor="5" defense="5" />
</monster>

View File

@ -0,0 +1,31 @@
<monster name="Thornback Tortoise" nameDescription="a thornback tortoise" race="blood" experience="150" speed="50" manacost="490">
<health now="300" max="300" />
<look type="198" corpse="6073" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="45" attack="40">
<attack name="poisoncondition" count="20" chance="10" range="5" poison="40">
<attribute key="shooteffect" value="poison" />
</attack>
</attacks>
<defenses armor="18" defense="18" />
<loot>
<item id="3031" countmax="26" chance="304" /><!-- gold coin -->
<item id="3578" chance="121" /><!-- fish -->
<item id="3723" chance="16" /><!-- white mushroom -->
<item id="5678" countmax="3" chance="10" /><!-- tortoise egg -->
<item id="3279" chance="10" /><!-- war hammer -->
</loot>
</monster>

52
data/monster/781/thul.xml Normal file
View File

@ -0,0 +1,52 @@
<monster name="Thul" nameDescription="thul" race="undead" experience="2700" speed="75" manacost="0">
<health now="2950" max="2950" />
<look type="46" corpse="6065" />
<targetchange interval="1000" chance="20" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag lightlevel="0" />
<flag lightcolor="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="45" attack="100">
<attack name="physical" chance="25" radius="3" target="0" min="-0" max="-170">
<attribute key="areaEffect" value="blackspark" />
</attack>
<attack name="poisonfield" chance="19" range="7" radius="3" target="0">
<attribute key="shootEffect" value="poison" />
</attack>
<attack name="speed" chance="10" range="7" target="1" speedchange="-600" duration="20000">
<attribute key="shootEffect" value="snowball" />
</attack>
<attack name="lifedrain" chance="20" range="7" target="1" min="-108" max="-137">
<attribute key="areaEffect" value="redshimmer" />
</attack>
</attacks>
<defenses armor="35" defense="40">
</defenses>
<immunities>
<immunity lifedrain="1" />
<immunity earth="1" />
<immunity drown="1" />
<immunity invisible="1" />
</immunities>
<voices interval="5000" chance="10">
<voice sentence="Gaaahhh!" />
</voices>
<summons maxSummons="2">
<summon name="massive water elemental" chance="25" max="2" />
</summons>
<loot>
<item id="3031" countmax="90" chance="1000" /><!-- gold coin -->
<item id="3031" countmax="90" chance="1000" /><!-- gold coin -->
<item id="5895" countmax="1" chance="1000" /><!-- fish fin -->
</loot>
</monster>

View File

@ -0,0 +1,48 @@
<monster name="Tiquandas Revenge" nameDescription="a tiquandas revenge" race="venom" experience="2635" speed="110" manacost="0">
<health now="2400" max="2400" />
<look type="120" corpse="6047" />
<targetchange interval="1000" chance="10" />
<targetstrategy nearest="70" weakest="10" mostdamage="10" random="10" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="0" />
<flag pushable="0" />
<flag canpushitems="1" />
<flag canpushcreatures="1" />
<flag targetdistance="1" />
<flag runonhealth="400" />
</flags>
<attacks skill="70" attack="55" poison="180">
<attack name="poison" chance="25" range="7" min="-0" max="-440">
<attribute key="shootEffect" value="poison" />
<attribute key="areaEffect" value="poison" />
</attack>
<attack name="speed" chance="20" range="7" target="1" speedchange="-850" duration="30000">
<attribute key="shootEffect" value="poison" />
<attribute key="areaEffect" value="greenspark" />
</attack>
<attack name="earth" chance="12" radius="3" target="0" min="-0" max="-250">
<attribute key="areaEffect" value="poison" />
</attack>
</attacks>
<defenses armor="30" defense="31">
<defense name="ultimate healing" chance="35" min="600" max="800" />
<defense name="speed" chance="10" speedchange="800" duration="5000">
<attribute key="areaEffect" value="redshimmer" />
</defense>
</defenses>
<immunities>
<immunity invisible="1" />
<immunity earth="1" />
</immunities>
<loot>
<item id="3577" chance="705" /><!-- meat -->
<item id="5014" chance="1005" /><!-- mandrake -->
<item id="3582" chance="655" /><!-- ham -->
<item id="3031" countmax="99" chance="565" /><!-- gold coin -->
<item id="3728" countmax="5" chance="75" /><!-- dark mushroom -->
</loot>
</monster>

34
data/monster/781/toad.xml Normal file
View File

@ -0,0 +1,34 @@
<monster name="Toad" nameDescription="a toad" race="blood" experience="60" speed="52" manacost="400">
<health now="135" max="135" />
<look type="222" corpse="6077" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="1" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="20" />
</flags>
<attacks skill="30" attack="15" poision="20">
<attack name="physical" chance="10" range="7" min="-8" max="-17">
<attribute key="shootEffect" value="poison" />
</attack>
</attacks>
<defenses armor="12" defense="10" />
<voices interval="5000" chance="30">
<voice sentence="Ribbit, ribbit!" />
<voice sentence="Ribbit!" />
</voices>
<loot>
<item id="3031" countmax="20" chance="256" /><!-- gold coin -->
<item id="3578" chance="218" /><!-- fish -->
<item id="3279" chance="7" /><!-- war hammer -->
<item id="3286" chance="23" /><!-- mace -->
</loot>
</monster>

View File

@ -0,0 +1,30 @@
<monster name="Tortoise" nameDescription="a tortoise" race="blood" experience="90" speed="50" manacost="445">
<health now="185" max="185" />
<look type="197" corpse="6072" />
<targetchange interval="1000" chance="0" />
<targetstrategy nearest="100" weakest="0" mostdamage="0" random="0" />
<flags>
<flag summonable="0" />
<flag attackable="1" />
<flag hostile="1" />
<flag illusionable="0" />
<flag convinceable="1" />
<flag pushable="1" />
<flag canpushitems="1" />
<flag canpushcreatures="0" />
<flag targetdistance="1" />
<flag runonhealth="0" />
</flags>
<attacks skill="40" attack="20">
</attacks>
<defenses armor="15" defense="15" />
<loot>
<item id="3031" countmax="30" chance="309" /><!-- gold coin -->
<item id="6131" chance="7" /><!-- tortoise shield -->
<item id="5678" countmax="2" chance="11" /><!-- tortoise egg -->
<item id="3578" chance="56" /><!-- fish -->
<item id="3410" chance="36" /><!-- plate shield -->
<item id="3305" chance="13" /><!-- battle hammer -->
<item id="5899" chance="14" /><!-- turtle shell -->
</loot>
</monster>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF - 8"?> <?xml version="1.0" encoding="UTF - 8"?>
<monster name="Ferumbras" nameDescription="Ferumbras" race="venom" experience="9999" speed="155" manacost="0"> <monster name="Ferumbras" nameDescription="Ferumbras" race="venom" experience="12000" speed="155" manacost="0">
<health now="28000" max="28000" /> <health now="28000" max="28000" />
<look type="130" head="57" body="113" legs="95" feet="113" corpse="6080" /> <look type="229" corpse="6080" />
<targetchange interval="1000" chance="20" /> <targetchange interval="1000" chance="20" />
<targetstrategy nearest="60" weakest="5" mostdamage="30" random="5" /> <targetstrategy nearest="60" weakest="5" mostdamage="30" random="5" />
<flags> <flags>

View File

@ -163,4 +163,48 @@
<monster name="witch" file="witch.xml" /> <monster name="witch" file="witch.xml" />
<monster name="wolf" file="wolf.xml" /> <monster name="wolf" file="wolf.xml" />
<monster name="yeti" file="yeti.xml" /> <monster name="yeti" file="yeti.xml" />
<!-- 781 -->
<monster name="acolyte of the cult" file="781/acolyte of the cult.xml" />
<monster name="adept of the cult" file="781/adept of the cult.xml" />
<monster name="azure frog" file="781/azure frog.xml" />
<monster name="blood crab" file="781/blood crab.xml" />
<monster name="brutus bloodbeard" file="781/brutus bloodbeard.xml" />
<monster name="carrion worm" file="781/carrion worm.xml" />
<monster name="coral frog" file="781/coral frog.xml" />
<monster name="crimson frog" file="781/crimson frog.xml" />
<monster name="deadeye devious" file="781/deadeye devious.xml" />
<monster name="enlightened of the cult" file="781/enlightened of the cult.xml" />
<monster name="green frog" file="781/green frog.xml" />
<monster name="island troll" file="781/island troll.xml" />
<monster name="lavahole" file="781/lavahole.xml" />
<monster name="lethal lissy" file="781/lethal lissy.xml" />
<monster name="mammoth" file="781/mammoth.xml" />
<monster name="massive water elemental" file="781/massive water elemental.xml" />
<monster name="morgaroth" file="781/morgaroth.xml" />
<monster name="novice of the cult" file="781/novice of the cult.xml" />
<monster name="orchid frog" file="781/orchid frog.xml" />
<monster name="pirate buccaneer" file="781/pirate buccaneer.xml" />
<monster name="pirate corsair" file="781/pirate corsair.xml" />
<monster name="pirate cutthroat" file="781/pirate cutthroat.xml" />
<monster name="pirate ghost" file="781/pirate ghost.xml" />
<monster name="pirate marauder" file="781/pirate marauder.xml" />
<monster name="pirate skeleton" file="781/pirate skeleton.xml" />
<monster name="quara constrictor scout" file="781/quara constrictor scout.xml" />
<monster name="quara constrictor" file="781/quara constrictor.xml" />
<monster name="quara hydromancer scout" file="781/quara hydromancer scout.xml" />
<monster name="quara hydromancer" file="781/quara hydromancer.xml" />
<monster name="quara mantassin scout" file="781/quara mantassin scout.xml" />
<monster name="quara mantassin" file="781/quara mantassin.xml" />
<monster name="quara pincher scout" file="781/quara pincher scout.xml" />
<monster name="quara pincher" file="781/quara pincher.xml" />
<monster name="quara predator scout" file="781/quara predator scout.xml" />
<monster name="quara predator" file="781/quara predator.xml" />
<monster name="ron the ripper" file="781/ron the ripper.xml" />
<monster name="seagull" file="781/seagull.xml" />
<monster name="thornback tortoise" file="781/thornback tortoise.xml" />
<monster name="thul" file="781/thul.xml" />
<monster name="tiquandas revenge" file="781/tiquandas revenge.xml" />
<monster name="toad" file="781/toad.xml" />
<monster name="tortoise" file="781/tortoise.xml" />
</monsters> </monsters>

View File

@ -388,7 +388,13 @@
<movevent event="StepIn" movementid="237" script="nostalrius/237.lua" /> <movevent event="StepIn" movementid="237" script="nostalrius/237.lua" />
<!-- Nostalrius Default Movements --> <!-- Nostalrius Default Movements -->
<movevent event="StepIn" fromid="5404" toid="5409" script="misc/drowning.lua" />
<movevent event="StepOut" fromid="5404" toid="5409" script="misc/drowning.lua"/>
<movevent event="StepIn" fromid="5743" toid="5744" script="misc/drowning.lua" />
<movevent event="StepOut" fromid="5743" toid="5744" script="misc/drowning.lua"/>
<movevent event="StepIn" itemid="5764" script="misc/drowning.lua" />
<movevent event="StepOut" itemid="5764" script="misc/drowning.lua"/>
<!-- Floorchange --> <!-- Floorchange -->
<movevent event="StepIn" itemid="293" script="misc/floorchange.lua" /> <movevent event="StepIn" itemid="293" script="misc/floorchange.lua" />
<movevent event="AddItem" itemid="293" tileitem="1" script="misc/floorchange.lua" /> <movevent event="AddItem" itemid="293" tileitem="1" script="misc/floorchange.lua" />
@ -664,6 +670,10 @@
<movevent event="StepIn" itemid="2151" function="onStepInField" /> <movevent event="StepIn" itemid="2151" function="onStepInField" />
<movevent event="AddItem" itemid="2151" function="onAddField" /> <movevent event="AddItem" itemid="2151" function="onAddField" />
<!-- Helmets -->
<movevent event="Equip" itemid="5460" slot="head" function="onEquipItem" />
<movevent event="DeEquip" itemid="5460" slot="head" function="onDeEquipItem" />
<!-- Boots --> <!-- Boots -->
<movevent event="Equip" itemid="3079" slot="feet" function="onEquipItem" /> <movevent event="Equip" itemid="3079" slot="feet" function="onEquipItem" />
<movevent event="DeEquip" itemid="3079" slot="feet" function="onDeEquipItem" /> <movevent event="DeEquip" itemid="3079" slot="feet" function="onDeEquipItem" />

View File

@ -0,0 +1,31 @@
local condition = Condition(CONDITION_DROWN)
condition:setTiming(5)
function onStepIn(creature, item, position, fromPosition)
local player = creature:getPlayer()
if player == nil then
return true
end
local helmet = player:getSlotItem(CONST_SLOT_HEAD)
if helmet ~= nil and helmet:getId() == 5460 then
return true
end
if math.random(1, 10) == 1 then
position:sendMagicEffect(CONST_ME_BUBBLES)
end
player:addCondition(condition)
return true
end
function onStepOut(creature, item, position, fromPosition)
local player = creature:getPlayer()
if player == nil then
return true
end
player:removeCondition(CONDITION_DROWN)
return true
end

View File

@ -82,6 +82,9 @@ CombatType_t Combat::ConditionToDamageType(ConditionType_t type)
case CONDITION_POISON: case CONDITION_POISON:
return COMBAT_EARTHDAMAGE; return COMBAT_EARTHDAMAGE;
case CONDITION_DROWN:
return COMBAT_DROWNDAMAGE;
default: default:
break; break;
} }
@ -101,6 +104,9 @@ ConditionType_t Combat::DamageToConditionType(CombatType_t type)
case COMBAT_EARTHDAMAGE: case COMBAT_EARTHDAMAGE:
return CONDITION_POISON; return CONDITION_POISON;
case COMBAT_DROWNDAMAGE:
return CONDITION_DROWN;
default: default:
return CONDITION_NONE; return CONDITION_NONE;
} }

View File

@ -131,6 +131,7 @@ Condition* Condition::createCondition(ConditionId_t id, ConditionType_t type, in
case CONDITION_POISON: case CONDITION_POISON:
case CONDITION_FIRE: case CONDITION_FIRE:
case CONDITION_ENERGY: case CONDITION_ENERGY:
case CONDITION_DROWN:
return new ConditionDamage(id, type, subId); return new ConditionDamage(id, type, subId);
case CONDITION_HASTE: case CONDITION_HASTE:
@ -915,6 +916,28 @@ bool ConditionDamage::executeCondition(Creature* creature, int32_t)
} else { } else {
return false; return false;
} }
} else if (conditionType == CONDITION_DROWN) {
if (isFirstCycle && count - max_count == -2) {
doDamage(creature, -20);
isFirstCycle = false;
count = max_count;
return true;
}
const int32_t r_cycle = cycle;
if (r_cycle) {
if (count <= 0) {
count = max_count;
cycle = r_cycle + 2 * (r_cycle <= 0) - 1;
doDamage(creature, -20);
}
else {
--count;
}
}
else {
return false;
}
} }
return true; return true;
@ -994,6 +1017,10 @@ uint32_t ConditionDamage::getIcons() const
icons |= ICON_POISON; icons |= ICON_POISON;
break; break;
case CONDITION_DROWN:
icons |= ICON_DROWNING;
break;
default: default:
break; break;
} }

View File

@ -255,6 +255,8 @@ class ConditionDamage final : public Condition
count = max_count = 8; count = max_count = 8;
} else if (type == CONDITION_ENERGY) { } else if (type == CONDITION_ENERGY) {
count = max_count = 10; count = max_count = 10;
} else if (type == CONDITION_DROWN) {
count = max_count = 3;
} }
} }
@ -281,7 +283,7 @@ class ConditionDamage final : public Condition
int32_t max_count = 0; int32_t max_count = 0;
int32_t factor_percent = -1; int32_t factor_percent = -1;
int32_t hit_damage = 0; int32_t hit_damage = 0;
bool isFirstCycle = true;
uint32_t owner = 0; uint32_t owner = 0;
bool doDamage(Creature* creature, int32_t healthChange); bool doDamage(Creature* creature, int32_t healthChange);

View File

@ -171,7 +171,8 @@ enum Icons_t {
ICON_MANASHIELD = 1 << 4, ICON_MANASHIELD = 1 << 4,
ICON_PARALYZE = 1 << 5, ICON_PARALYZE = 1 << 5,
ICON_HASTE = 1 << 6, ICON_HASTE = 1 << 6,
ICON_SWORDS = 1 << 7 ICON_SWORDS = 1 << 7,
ICON_DROWNING = 1 << 8,
}; };
enum WeaponType_t : uint8_t { enum WeaponType_t : uint8_t {

View File

@ -1026,6 +1026,9 @@ void Creature::onTickCondition(ConditionType_t type, bool& bRemove)
case CONDITION_POISON: case CONDITION_POISON:
bRemove = (field->getCombatType() != COMBAT_EARTHDAMAGE); bRemove = (field->getCombatType() != COMBAT_EARTHDAMAGE);
break; break;
case CONDITION_DROWN:
bRemove = (field->getCombatType() != COMBAT_DROWNDAMAGE);
break;
default: default:
break; break;
} }

View File

@ -102,8 +102,9 @@ enum CombatType_t : uint16_t {
COMBAT_LIFEDRAIN = 1 << 5, COMBAT_LIFEDRAIN = 1 << 5,
COMBAT_MANADRAIN = 1 << 6, COMBAT_MANADRAIN = 1 << 6,
COMBAT_HEALING = 1 << 7, COMBAT_HEALING = 1 << 7,
COMBAT_DROWNDAMAGE = 1 << 8,
COMBAT_COUNT = 9 COMBAT_COUNT = 10
}; };
enum CombatParam_t { enum CombatParam_t {
@ -249,6 +250,7 @@ enum ConditionType_t {
CONDITION_EXHAUST = 1 << 17, CONDITION_EXHAUST = 1 << 17,
CONDITION_PACIFIED = 1 << 18, CONDITION_PACIFIED = 1 << 18,
CONDITION_AGGRESSIVE = 1 << 19, CONDITION_AGGRESSIVE = 1 << 19,
CONDITION_DROWN = 1 << 20,
}; };
enum ConditionId_t : int8_t { enum ConditionId_t : int8_t {

View File

@ -3391,6 +3391,12 @@ void Game::combatGetTypeInfo(CombatType_t combatType, Creature* target, TextColo
effect = CONST_ME_MAGIC_RED; effect = CONST_ME_MAGIC_RED;
break; break;
} }
case COMBAT_DROWNDAMAGE: {
color = TEXTCOLOR_LIGHTBLUE;
effect = CONST_ME_LOSEENERGY;
break;
}
default: { default: {
color = TEXTCOLOR_NONE; color = TEXTCOLOR_NONE;
effect = CONST_ME_NONE; effect = CONST_ME_NONE;

View File

@ -402,6 +402,8 @@ bool Items::loadItems()
items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_FIREDAMAGE)] += script.readNumber(); items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_FIREDAMAGE)] += script.readNumber();
} else if (identifier == "absorbpoison") { } else if (identifier == "absorbpoison") {
items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_EARTHDAMAGE)] += script.readNumber(); items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_EARTHDAMAGE)] += script.readNumber();
} else if (identifier == "absorbdrown") {
items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_DROWNDAMAGE)] += script.readNumber();
} else if (identifier == "absorblifedrain") { } else if (identifier == "absorblifedrain") {
items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_LIFEDRAIN)] += script.readNumber(); items[id].getAbilities().absorbPercent[combatTypeToIndex(COMBAT_LIFEDRAIN)] += script.readNumber();
} else if (identifier == "absorbmanadrain") { } else if (identifier == "absorbmanadrain") {
@ -515,7 +517,6 @@ bool Items::loadItems()
items[id].conditionDamage.reset(conditionDamage); items[id].conditionDamage.reset(conditionDamage);
} else if (identifier == "poison") { } else if (identifier == "poison") {
conditionDamage = new ConditionDamage(CONDITIONID_COMBAT, CONDITION_POISON); conditionDamage = new ConditionDamage(CONDITIONID_COMBAT, CONDITION_POISON);
conditionDamage->setParam(CONDITION_PARAM_DELAYED, true);
combatType = COMBAT_EARTHDAMAGE; combatType = COMBAT_EARTHDAMAGE;
items[id].combatType = combatType; items[id].combatType = combatType;
items[id].conditionDamage.reset(conditionDamage); items[id].conditionDamage.reset(conditionDamage);

View File

@ -1069,6 +1069,7 @@ void LuaScriptInterface::registerFunctions()
registerEnum(COMBAT_ENERGYDAMAGE) registerEnum(COMBAT_ENERGYDAMAGE)
registerEnum(COMBAT_EARTHDAMAGE) registerEnum(COMBAT_EARTHDAMAGE)
registerEnum(COMBAT_FIREDAMAGE) registerEnum(COMBAT_FIREDAMAGE)
registerEnum(COMBAT_DROWNDAMAGE)
registerEnum(COMBAT_UNDEFINEDDAMAGE) registerEnum(COMBAT_UNDEFINEDDAMAGE)
registerEnum(COMBAT_LIFEDRAIN) registerEnum(COMBAT_LIFEDRAIN)
registerEnum(COMBAT_MANADRAIN) registerEnum(COMBAT_MANADRAIN)
@ -1091,6 +1092,7 @@ void LuaScriptInterface::registerFunctions()
registerEnum(CONDITION_POISON) registerEnum(CONDITION_POISON)
registerEnum(CONDITION_FIRE) registerEnum(CONDITION_FIRE)
registerEnum(CONDITION_ENERGY) registerEnum(CONDITION_ENERGY)
registerEnum(CONDITION_DROWN)
registerEnum(CONDITION_HASTE) registerEnum(CONDITION_HASTE)
registerEnum(CONDITION_PARALYZE) registerEnum(CONDITION_PARALYZE)
registerEnum(CONDITION_OUTFIT) registerEnum(CONDITION_OUTFIT)
@ -1152,6 +1154,7 @@ void LuaScriptInterface::registerFunctions()
registerEnum(CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT) registerEnum(CONDITION_PARAM_STAT_MAXMANAPOINTSPERCENT)
registerEnum(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT) registerEnum(CONDITION_PARAM_STAT_MAGICPOINTSPERCENT)
registerEnum(CONDITION_PARAM_PERIODICDAMAGE) registerEnum(CONDITION_PARAM_PERIODICDAMAGE)
registerEnum(CONDITION_PARAM_HIT_DAMAGE)
registerEnum(CONDITION_PARAM_SKILL_MELEEPERCENT) registerEnum(CONDITION_PARAM_SKILL_MELEEPERCENT)
registerEnum(CONDITION_PARAM_SKILL_FISTPERCENT) registerEnum(CONDITION_PARAM_SKILL_FISTPERCENT)
registerEnum(CONDITION_PARAM_SKILL_CLUBPERCENT) registerEnum(CONDITION_PARAM_SKILL_CLUBPERCENT)

View File

@ -876,7 +876,7 @@ void Monster::doAttacking(uint32_t)
for (spellBlock_t& spellBlock : mType->info.attackSpells) { for (spellBlock_t& spellBlock : mType->info.attackSpells) {
if (spellBlock.range != 0 && std::max<uint32_t>(Position::getDistanceX(myPos, targetPos), Position::getDistanceY(myPos, targetPos)) <= spellBlock.range) { if (spellBlock.range != 0 && std::max<uint32_t>(Position::getDistanceX(myPos, targetPos), Position::getDistanceY(myPos, targetPos)) <= spellBlock.range) {
if (normal_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || normal_random(1, 3) == 1)) { if (uniform_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1)) {
updateLookDirection(); updateLookDirection();
minCombatValue = spellBlock.minCombatValue; minCombatValue = spellBlock.minCombatValue;
@ -977,7 +977,7 @@ void Monster::onThinkTarget(uint32_t interval)
void Monster::onThinkDefense(uint32_t) void Monster::onThinkDefense(uint32_t)
{ {
for (const spellBlock_t& spellBlock : mType->info.defenseSpells) { for (const spellBlock_t& spellBlock : mType->info.defenseSpells) {
if (normal_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || normal_random(1, 3) == 1)) { if (uniform_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1)) {
minCombatValue = spellBlock.minCombatValue; minCombatValue = spellBlock.minCombatValue;
maxCombatValue = spellBlock.maxCombatValue; maxCombatValue = spellBlock.maxCombatValue;
spellBlock.spell->castSpell(this, this); spellBlock.spell->castSpell(this, this);

View File

@ -392,6 +392,8 @@ bool Monsters::deserializeSpell(const pugi::xml_node& node, spellBlock_t& sb, co
combat->setParam(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE); combat->setParam(COMBAT_PARAM_TYPE, COMBAT_FIREDAMAGE);
} else if (tmpName == "energy") { } else if (tmpName == "energy") {
combat->setParam(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE); combat->setParam(COMBAT_PARAM_TYPE, COMBAT_ENERGYDAMAGE);
} else if (tmpName == "drown") {
combat->setParam(COMBAT_PARAM_TYPE, COMBAT_DROWNDAMAGE);
} else if (tmpName == "lifedrain") { } else if (tmpName == "lifedrain") {
combat->setParam(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN); combat->setParam(COMBAT_PARAM_TYPE, COMBAT_LIFEDRAIN);
} else if (tmpName == "manadrain") { } else if (tmpName == "manadrain") {
@ -480,7 +482,7 @@ bool Monsters::deserializeSpell(const pugi::xml_node& node, spellBlock_t& sb, co
} else if (tmpName == "firecondition" || tmpName == "energycondition" || } else if (tmpName == "firecondition" || tmpName == "energycondition" ||
tmpName == "earthcondition" || tmpName == "poisoncondition" || tmpName == "earthcondition" || tmpName == "poisoncondition" ||
tmpName == "icecondition" || tmpName == "freezecondition" || tmpName == "icecondition" || tmpName == "freezecondition" ||
tmpName == "physicalcondition") { tmpName == "physicalcondition" || tmpName == "drowncondition") {
ConditionType_t conditionType = CONDITION_NONE; ConditionType_t conditionType = CONDITION_NONE;
if (tmpName == "firecondition") { if (tmpName == "firecondition") {
@ -489,6 +491,8 @@ bool Monsters::deserializeSpell(const pugi::xml_node& node, spellBlock_t& sb, co
conditionType = CONDITION_POISON; conditionType = CONDITION_POISON;
} else if (tmpName == "energycondition") { } else if (tmpName == "energycondition") {
conditionType = CONDITION_ENERGY; conditionType = CONDITION_ENERGY;
} else if (tmpName == "drowncondition") {
conditionType = CONDITION_DROWN;
} }
int32_t cycle = 0; int32_t cycle = 0;
@ -828,6 +832,9 @@ bool Monsters::loadMonster(const std::string& file, const std::string& monsterNa
} else if (tmpStrValue == "fire") { } else if (tmpStrValue == "fire") {
mType->info.damageImmunities |= COMBAT_FIREDAMAGE; mType->info.damageImmunities |= COMBAT_FIREDAMAGE;
mType->info.conditionImmunities |= CONDITION_FIRE; mType->info.conditionImmunities |= CONDITION_FIRE;
} else if (tmpStrValue == "drown") {
mType->info.damageImmunities |= COMBAT_DROWNDAMAGE;
mType->info.conditionImmunities |= CONDITION_DROWN;
} else if (tmpStrValue == "poison" || } else if (tmpStrValue == "poison" ||
tmpStrValue == "earth") { tmpStrValue == "earth") {
mType->info.damageImmunities |= COMBAT_EARTHDAMAGE; mType->info.damageImmunities |= COMBAT_EARTHDAMAGE;
@ -861,6 +868,11 @@ bool Monsters::loadMonster(const std::string& file, const std::string& monsterNa
mType->info.damageImmunities |= COMBAT_FIREDAMAGE; mType->info.damageImmunities |= COMBAT_FIREDAMAGE;
mType->info.conditionImmunities |= CONDITION_FIRE; mType->info.conditionImmunities |= CONDITION_FIRE;
} }
} else if ((attr = immunityNode.attribute("drown"))) {
if (attr.as_bool()) {
mType->info.damageImmunities |= COMBAT_DROWNDAMAGE;
mType->info.conditionImmunities |= CONDITION_DROWN;
}
} else if ((attr = immunityNode.attribute("poison")) || (attr = immunityNode.attribute("earth"))) { } else if ((attr = immunityNode.attribute("poison")) || (attr = immunityNode.attribute("earth"))) {
if (attr.as_bool()) { if (attr.as_bool()) {
mType->info.damageImmunities |= COMBAT_EARTHDAMAGE; mType->info.damageImmunities |= COMBAT_EARTHDAMAGE;

View File

@ -646,6 +646,10 @@ uint32_t MoveEvent::EquipItem(MoveEvent* moveEvent, Player* player, Item* item,
player->sendIcons(); player->sendIcons();
} }
if (it.abilities->absorbPercent[combatTypeToIndex(COMBAT_DROWNDAMAGE)] == 100) {
player->removeCondition(CONDITION_DROWN);
}
if (it.abilities->regeneration) { if (it.abilities->regeneration) {
Condition* condition = Condition::createCondition(static_cast<ConditionId_t>(slot), CONDITION_REGENERATION, -1, 0); Condition* condition = Condition::createCondition(static_cast<ConditionId_t>(slot), CONDITION_REGENERATION, -1, 0);

View File

@ -1164,6 +1164,7 @@ void Player::onThink(uint32_t interval)
addMessageBuffer(); addMessageBuffer();
} }
lastWalkingTime += interval;
if (!getTile()->hasFlag(TILESTATE_NOLOGOUT) && !isAccessPlayer()) { if (!getTile()->hasFlag(TILESTATE_NOLOGOUT) && !isAccessPlayer()) {
idleTime += interval; idleTime += interval;
const int32_t kickAfterMinutes = g_config.getNumber(ConfigManager::KICK_AFTER_MINUTES); const int32_t kickAfterMinutes = g_config.getNumber(ConfigManager::KICK_AFTER_MINUTES);
@ -2951,6 +2952,10 @@ void Player::onAddCombatCondition(ConditionType_t type)
sendTextMessage(MESSAGE_STATUS_DEFAULT, "You are poisoned."); sendTextMessage(MESSAGE_STATUS_DEFAULT, "You are poisoned.");
break; break;
case CONDITION_DROWN:
sendTextMessage(MESSAGE_STATUS_SMALL, "You are drowning.");
break;
case CONDITION_PARALYZE: case CONDITION_PARALYZE:
sendTextMessage(MESSAGE_STATUS_DEFAULT, "You are paralyzed."); sendTextMessage(MESSAGE_STATUS_DEFAULT, "You are paralyzed.");
break; break;

View File

@ -286,6 +286,19 @@ class Player final : public Creature, public Cylinder
void resetIdleTime() { void resetIdleTime() {
idleTime = 0; idleTime = 0;
resetLastWalkingTime();
}
int32_t getIdleTime() const {
return idleTime;
}
void resetLastWalkingTime() {
lastWalkingTime = 0;
}
int32_t getLastWalkingTime() const {
return lastWalkingTime;
} }
bool isInGhostMode() const { bool isInGhostMode() const {
@ -1045,6 +1058,7 @@ class Player final : public Creature, public Cylinder
int32_t bloodHitCount = 0; int32_t bloodHitCount = 0;
int32_t shieldBlockCount = 0; int32_t shieldBlockCount = 0;
int32_t idleTime = 0; int32_t idleTime = 0;
int32_t lastWalkingTime = 0;
uint16_t staminaMinutes = 3360; uint16_t staminaMinutes = 3360;
uint16_t maxWriteLen = 0; uint16_t maxWriteLen = 0;

View File

@ -398,6 +398,7 @@ bool Spell::configureSpell(const pugi::xml_node& node)
"firecondition", "firecondition",
"poisoncondition", "poisoncondition",
"energycondition", "energycondition",
"drowncondition",
}; };
//static size_t size = sizeof(reservedList) / sizeof(const char*); //static size_t size = sizeof(reservedList) / sizeof(const char*);

View File

@ -672,6 +672,7 @@ ShootTypeNames shootTypeNames[] = {
CombatTypeNames combatTypeNames[] = { CombatTypeNames combatTypeNames[] = {
{"physical", COMBAT_PHYSICALDAMAGE}, {"physical", COMBAT_PHYSICALDAMAGE},
{"energy", COMBAT_ENERGYDAMAGE}, {"energy", COMBAT_ENERGYDAMAGE},
{"drown", COMBAT_DROWNDAMAGE},
{"earth", COMBAT_EARTHDAMAGE}, {"earth", COMBAT_EARTHDAMAGE},
{"poison", COMBAT_EARTHDAMAGE}, {"poison", COMBAT_EARTHDAMAGE},
{"fire", COMBAT_FIREDAMAGE}, {"fire", COMBAT_FIREDAMAGE},
@ -914,6 +915,8 @@ size_t combatTypeToIndex(CombatType_t combatType)
return 6; return 6;
case COMBAT_HEALING: case COMBAT_HEALING:
return 7; return 7;
case COMBAT_DROWNDAMAGE:
return 8;
default: default:
return 0; return 0;
} }