• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Monster Monsterpack, spellpack and creaturescriptspack for Tibia 10.7(TFS 1.1) based on Real Tibia

This affect example:

<monster file="Quaras/quara constrictor scout.xml" name="Quara Constrictor Scout"/>

but the folder name is "quaras" , when you run linux will throw some errors because not have folder "Quaras" only "quaras"
 
Last edited:
I did it since on linux some monsters with capital letters weren't loaded(some guy told me). Same goes to changeoutfit spells, these also weren't working with capital letters(monster names). Does it change anything for you anyways?

Well no not at all its just i spent like an hour changing everyting to capital letters so i need to change them all back to lowercase lol
 
I just went to update this and man.. on your mosnters.xml they are all still uppercase!!! noo!!!!!!!
 
@Moj mistrz
This is how you find defense & armor through tibia-stats.
I have been using Lua Interactive Mode to do this.

This gets the creature's maximum defense from the Distance Damage Calculator by reverting the increase/decrease percentage of the minimum distance damage (level / 5) due to physical resistance.. If there's no physical resistance (it is 0, neutral), than the defense is the complement of (level / 5).
You should use Level around 500 (which gives us (level/5) = 100); and if ever the min damage shows up with 0 (zero) value, then you should increase it so you can get a value different from zero -- I suggest using numbers ending in 0 or 5. Resistance may be positive, or negative (you must include the sign). By the way, the Skill must be 0, and select any weapon so that the damage table is shown.

Code:
function getCreatureMaxDefense(level, minDamage, resistance)
   local levelQuocient = level / 5
   local percent = (100 - resistance) / 100
   if percent == 0 then
     percent = 1
   elseif minDamage == 0 then
     print("Use a higher level -- physical resistance is too strong (preventing to perform the correct calculation.)")
     return nil
   elseif resistance == 0 then
     local unaffectedDefense = levelQuocient - minDamage -- the defense whenever there's no physical resistance
     return unaffectedDefense
   end

   local defense = (levelQuocient * math.abs(percent)) - minDamage

   return math.floor(defense), math.ceil(defense)
end

This gets the maximum creature armor from Creatures page, by knowing the number value (which represents the width) of the "filled in" (white) part of the armor bar.
In Mozilla, you can place the mouse pointer over the filled in part of the bar (white color), right-click it and select "Inspect Element (Q)" and search for line:
<div class="MON_armorBar" style="width:vpx;"></div>.
Where v is the width value representing the filled in part of the armor bar. You just divide the width v by 4.
Code:
function getCreatureMaxArmor(width)
   return math.floor(width / 4), math.ceil(width / 4)
end

Armor bar width is 132 (width × height)
DuYJLZ3.jpg

NOTE: the maximum width is 400, it may surpass that, but it still represents the correct calculation. Creature's armor, defense can surpass the value 100.
Basically, damage dealt by distance weapons is reduced only by the target's defense that's why you can get the defense through the Distance Damage Calculator (you can also get the armor values through the Spell Damage Calculator and it may contain more up-to-date values or not than those got from Creatures pages, but it is more complicated to explain).
 
Last edited:
@Dnomyar
Fixed monsters (most of them) defense and armor based on tibia-stats, thanks to Dnomyar for functions. Also fixed some monster resistances and removed few duplicated monsters.
All you need to do is to redownload monsterpack(only this). Link is in main post or here.
 
I suggest to put it in github so people would contribute if something is wrong :)
 
Last edited:
@Moj mistrz Creat job updating defense & armor!
I support @Thexamx suggestion, I may also contribute there with new findings regading armor & defense.
By the way, I have been playing the testserver for a few days (facc) and I could gather some more data of those creatures to which tibia-stats has yet no data, and some creatures of the new update (krailos, grimvale, hero island monsters).

I will just leave here a data table for you to check out :D.

http://pastebin.com/gNM46kZN
NOTE: I couldn't gather the defense myself cause that would take a little longer of testing (neutral resistance or not to physical element). With that in mind, you can get (based on my research) pretty accurate defense values for those creatures (i.e. my pastebin link) if you choose a defense value of a creature that has the same armor value.
For example:
If you check Corym Vanguard you'll see that it has an armor value of (26 (or 27); they're both the same, if ts armor formula is used) but I didn't get the defense, so you find some other creatures that has the same armor as Corym Vanguard -- i.e. Dragon Lord, which has an armor value of 26, and a defense value of 33 -- then you just consider the defense value 33 for Corym Vanguard too.

If you wanna know how to gather armor & defense yourself (based on tibia-stats) message me and I'll make some explanations and functions (so you can easily get how does it work).
 
Last edited:
I find it..
Code:
new boss (possible to change the color) - 842 (bosses the shatterer...)...
ferumbras soul - 843
ascendent ferumbras - 844
rift outfit female - 845
rift outfit male - 846
rift runner - 848
mount with name 1 - 849
mount with name 2 - 850
mount with name 3 - 851
outfit new female - 852
outfit new male - 853
vexclaw - 854
grimeleech - 855
hellflayer - 856
ogre brute - 857
ogre savage - 858
ogre shaman - 859
clomp - 860
bosses (ragiaz, etc.. change the color, this outfit have addons o.O) - 862
bone capsule - 863
 
Last edited:
Well done, I will for sure try this as a basis on my servers,
thank you.

Kind Regards,
Eldin.
 
Not sure if anybody commented, but
  • Gaz'Haragoth is spamming "Minions! Follow my call!"
  • Need to close the defense tag in a few monsters (glooth blob, metal gargoyle and walker, I think)

I thought I was gonna waste a lot of time implementing Gaz'Haragoth, Omrafir and the prison bosses (especially Prince Drazzak).
Very nice job, thanks!
 
Actually, the Gaz'haragoth works this way in global tibia, he summons minions on certain hp, that's why he spams the message. :D

About the tags, yeah I know the issue, but I don't have time to fix it and when I do then I don't remember about it.
 
Had a few errors with tags missmatching:

data/monster/blobs/glooth blob.xml

This line was missing the end /
Code:
<defenses armor="11" defense="13"/>

data/monster/machines/metal gargoyle.xml

Same here:
Code:
  <defenses armor="26" defense="33"/>

data/monster/machines/metal gargoyle.xml

And same here:
Code:
  <defenses armor="27" defense="35"/>

Great work, keep it up, we all need it.

Kind Regards,
Eldin
 
I know about those errors, they are fixed in my pack, but I will not upload it yet. :p
 
Also the elemental resistance of rift worm, rift scythe and rift brood
 
Not sure if you are aware of, but, Lisa is crashing the server if she gets killed before her special healing.
Maybe the same is happening to Mawhawk's UE.


Quick fix for Lisa is, inside the healing function (the one executed 6s after the warning message), scan the place she spawns for spectators and only execute the heal if Lisa is still there.


Also, I made another script for spawning the death reapers at Death priest Shargon, maybe you'll find it interesting.
Code:
function onThink(creature)
    local tilePos = Tile({x=creature:getPosition().x+math.random(-1, 1), y=creature:getPosition().y+math.random(-1, 1), z=creature:getPosition().z })
    if not tilePos then
        return true
    end
   
    if tilePos:getItemById(1497) or tilePos:getItemById(1499) then
        creature:say("Your tricks are older than my minions! You won't trap me! Amuse yourself with my slaves as long was your traps are in place!", TALKTYPE_ORANGE_2)
       
        local xmultiplier
        local ymultiplier
        local xdistance
        local ydistance
        local spawnpos
        local flag
       
        for i = 1, 20 do
            flag = 1
           
            while (flag == 1) do
                flag = 0
               
                xmultiplier = math.random(2)
               
                if xmultiplier == 2 then
                    xmultiplier = -1
                end
               
                ymultiplier = math.random(2)
               
                if ymultiplier == 2 then
                    ymultiplier = -1
                end
               
                xdistance = 2
                ydistance = 2
               
                for i = 1, 7 do
                    if math.random(2) == 1 then
                        if math.random(2) == 1 then
                            xdistance = xdistance + 1
                        else
                            ydistance = ydistance + 1
                        end
                    end
                end
               
                xdistance = xdistance * xmultiplier
                ydistance = ydistance * ymultiplier
               
                spawnpos = Position(33487 + xdistance, 32111 + ydistance, 9)
               
                if Tile(spawnpos):getTopCreature() then
                        flag = 1
                end
            end
           
            Game.createMonster("death reaper", spawnpos, false, true)
        end
       
        creature:remove()
    end
   
    return true
end
 
Last edited:
I have all the monsters up to 10.90 version, but the latest (10.90) monsters were sold to one of the users. It would be unfair if I release them to the public. Atleast not now.
 
Back
Top