Nostalrius 7.7

Tony32

Legendary OT User
Joined
Jun 6, 2008
Messages
1,099
Reaction score
207
I do not like Ezzz, but honestly guys. It's not perfect, nothing ever is. But for gods sake, be thankful for the release. You could have sat here with nothing. No OTHire, no Nostalrius. It would be another story if it wasn't free. You can't really complain if it's free. Spend some time and effort to complete it. Even share it with others. In the end, it might reach "perfect". But it won't ever happen unless all work together.
 

gubbo123

Member
Joined
Aug 15, 2017
Messages
70
Reaction score
2
I do not like Ezzz, but honestly guys. It's not perfect, nothing ever is. But for gods sake, be thankful for the release. You could have sat here with nothing. No OTHire, no Nostalrius. It would be another story if it wasn't free. You can't really complain if it's free. Spend some time and effort to complete it. Even share it with others. In the end, it might reach "perfect". But it won't ever happen unless all work together.
He sold this server for many people, he sold fake real formulas "...
 

tarantonio

Old School Player
Joined
Jun 21, 2009
Messages
713
Reaction score
170
Can you do that with warlocks to show the difference?
It happens with almost any monster, dragon, dragon lord, warlock, demon...
Something is broken in engine.

I can try this night to show you more examples when I'm on a computer.
 

katthult

Active Member
Joined
Jan 20, 2019
Messages
135
Reaction score
38
I do not understand how you guys can complain about these files if you do not like the files, why you download them
its total fucking free to download it and you guys coming with same shit every time about the files there is some formulas that don't work exactly as real tibia...
if you don't like Nostalirius then download Othire or OTX simple as that..
sorry for my Terrible english
 
OP
Ezzz

Ezzz

Developer
Joined
Feb 26, 2010
Messages
1,689
Reaction score
405
Location
Quito, Ecuador
OTHire is extremely off.
Remember that in RealOTS you can hunt Dragons with Demon Skeletons, you can't do this on OTHire or any other OT because formulas are off, you're only able to do so in Nostalrius and RealOTS itself.

I've received many reports about ranged monsters or something off in the monsters attack, I need video of Tibia 7.7 (RealOTS) showing the monsters shooting spells like Warlock to come up with a solution.
 
Last edited:

tarantonio

Old School Player
Joined
Jun 21, 2009
Messages
713
Reaction score
170
OTHire is extremely off.
Remember that in RealOTS you can hunt Dragons with Demon Skeletons, you can't do this on OTHire or any other OT because formulas are off, you're only able to do so in Nostalrius and RealOTS itself.
Dragon vs demon skeleton Nostalrius:
35933

Dragon vs demon skeleton OTHire:
35934

I think OTHire is off, too strong monsters compared to RL Tibia, but Nostalrius monsters seems too weak for me, a demon skeleton is almost inmortal vs dragon or vs warlock.
 

tarantonio

Old School Player
Joined
Jun 21, 2009
Messages
713
Reaction score
170
I've received many reports about ranged monsters or something off in the monsters attack, I need video of Tibia 7.7 (RealOTS) showing the monsters shooting spells like Warlock to come up with a solution.
As you can see a 116 sorc can solo a warlock, but not without problems.
In Nostalrius a 40 sorc can easily handle them.
 
Last edited:

Felipe93

Ghost Member
Joined
Mar 21, 2015
Messages
1,480
Reaction score
207
Location
Chile
Dragon vs demon skeleton Nostalrius:
View attachment 35933

Dragon vs demon skeleton OTHire:
View attachment 35934

I think OTHire is off, too strong monsters compared to RL Tibia, but Nostalrius monsters seems too weak for me, a demon skeleton is almost inmortal vs dragon or vs warlock.
i used to play at tibia 7.4 and i remember that we used monks to hunts dagon because with DS we had to waste few uhs per drag so i think othire formula its ok in comparision to nostalrius (super weak) anyway in othire is a bit OP but that can be easily changed via xml
 

tarantonio

Old School Player
Joined
Jun 21, 2009
Messages
713
Reaction score
170
i used to play at tibia 7.4 and i remember that we used monks to hunts dagon because with DS we had to waste few uhs per drag so i think othire formula its ok in comparision to nostalrius (super weak) anyway in othire is a bit OP but that can be easily changed via xml
OTHire seems too strong to me, but I think the same as you of Nostalrius, super weak.
Example of weak monster:
35935
 

Felipe93

Ghost Member
Joined
Mar 21, 2015
Messages
1,480
Reaction score
207
Location
Chile
OTHire seems too strong to me, but I think the same as you of Nostalrius, super weak.
Example of weak monster:
View attachment 35935
i noticed , did you tried decreasing the damage of the dragon a bit in othire? i think othire works better im using its files in my otx because i thought they were working better with few othire source edits
 

pink_panther

Member
Joined
Sep 10, 2016
Messages
90
Reaction score
17
Dragon vs demon skeleton Nostalrius:


Dragon vs demon skeleton OTHire:


I think OTHire is off, too strong monsters compared to RL Tibia, but Nostalrius monsters seems too weak for me, a demon skeleton is almost inmortal vs dragon or vs warlock.
These are useful (and kinda just cool to watch).

Can you do a demon vs a hydra or something?

I'm testing the attacks formulas. I dont know... it definately feels weaker than it should be.
 
Last edited:

tarantonio

Old School Player
Joined
Jun 21, 2009
Messages
713
Reaction score
170
These are useful (and kinda just cool to watch).

Can you do a demon vs a hydra or something?

I'm testing the attacks formulas. I dont know... it definately feels weaker than it should be.
Here you are:
35936

The XML are OK, but it seems that the source formulas are not working like intended.
I think that the ranged attacks are off, the melee ones seems legit.
 

pinata

New Member
Joined
Apr 12, 2019
Messages
11
Reaction score
5
I looked into it this morning. The fix is to change:

if (normal_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || normal_random(1, 3) == 1))

to:

if (uniform_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1))

in monster.cpp

normal_random uses a normal distribution for generating random numbers, this means that numbers closer to the average are generated most often. Numbers at the extrema, such as 0(in this example), are generated less often. This is useful for getting more consistent damage numbers for instance. Uniform random will give you the expected behavior.

There's other instances in the code where normal_random is also used incorrectly, I believe. For instance, with spears break chance. You might have noticed spears are very durable by default.

I also believe this might be more correct:

if (uniform_random(1, spellBlock.chance) == 1 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1))

Unless spellBlock.chance is decremented at some point, 0 would make a spell that's say a '7' chance in the files, a 1 in 8 chance [0-7].
 
Last edited:

pink_panther

Member
Joined
Sep 10, 2016
Messages
90
Reaction score
17
Here you are:
View attachment 35936

The XML are OK, but it seems that the source formulas are not working like intended.
I think that the ranged attacks are off, the melee ones seems legit.
Seems like melee attacks are fine, it's just spells and casting.

If you test a beholder or something, does it create summons really slowly too?
 

pink_panther

Member
Joined
Sep 10, 2016
Messages
90
Reaction score
17
I looked into it this morning. The fix is to change:

if (normal_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || normal_random(1, 3) == 1))

to:

if (uniform_random(0, spellBlock.chance) == 0 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1))

in monsters.cpp

normal_random uses a normal distribution for generating random numbers, this means that numbers closer to the average are generated most often. Numbers at the extrema, such as 0(in this example), are generated less often. This is useful for getting more consistent damage numbers for instance. Uniform random will give you the expected behavior.

There's other instances in the code where normal_random is also used incorrectly, I believe. For instance, with spears break chance. You might have noticed spears are very durable by default.

I also believe this might be more correct:

if (uniform_random(1, spellBlock.chance) == 1 && (master || health > mType->info.runAwayHealth || uniform_random(1, 3) == 1))

Unless spellBlock.chance is decremented at some point, 0 would make a spell that's say a '7' chance in the files, a 1 in 8 chance (0-7).
I came to say a stupider, less detailed version of this.

Basically, the "random" it uses is not really random. I tested with:

if (rand()%spellBlock.chance == 0 && (master || health > mType->info.runAwayHealth || rand()%3 == 1))

or just

if (rand()%spellBlock.chance == 0)

Worth noting that in programming, the random max number is not inclusive. Eg rand()%100 will return 0-99
 

pinata

New Member
Joined
Apr 12, 2019
Messages
11
Reaction score
5
I came to say a stupider, less detailed version of this.

Basically, the "random" it uses is not really random. I tested with:

if (rand()%spellBlock.chance == 0 && (master || health > mType->info.runAwayHealth || rand()%3 == 1))

or just

if (rand()%spellBlock.chance == 0)

Worth noting that in programming, the random max number is not inclusive. Eg rand()%100 will return 0-99
I believe the function in theforgottenserver is inclusive:

 

pink_panther

Member
Joined
Sep 10, 2016
Messages
90
Reaction score
17
I believe the function in theforgottenserver is inclusive:

That one is, just saying if you use rand(), like rand()%10, its not inclusive. Programming is fun (Y)

Heres my Orc Spearman now.

Before uniform_random(1, spellBlock.chance) == 1


After uniform_random(1, spellBlock.chance) == 1



A Demon vs Hydra.

Before uniform_random(1, spellBlock.chance) == 1


After uniform_random(1, spellBlock.chance) == 1

A lot more agressive with spells and healing.
 
Last edited:

pinata

New Member
Joined
Apr 12, 2019
Messages
11
Reaction score
5
That one is, just saying if you use rand(), like rand()%10, its not inclusive. Programming is fun (Y)
I just wanted to make sure anyone coming in would understand that it was correct. Honestly, if I were just coding it myself I'd use rand() as well, but the nice thing about using the uniform_random function is that the intent is clear, and it's kind of self documenting in that anyone can look up std::uniform_int_distribution and understand what's going on. Instead of doing something like rand()%(max-min) + min; and having to add comments and/or for people to waste time trying to understand it.

Also, I wanted to say it's really immature of some people to take it out on Ezzz.
 
Last edited:
Top