classicdb / database

Classic DB is a content database for CMaNGOS Classic: world, NPCs, objects, quests and so on.
https://github.com/cmangos/mangos-classic
Other
87 stars 59 forks source link

Most creatures have armor = 0 #161

Closed Neotmiren closed 8 years ago

Neotmiren commented 10 years ago

http://paste.ubuntu.com/6374597/

This table called maxarmor.sql was generated using .php script containing SQL request

SELECT t1.entry, t1.name, t1.rank, t1.armor, t2.armor AS armorH, IF(t1.armor=0, 99999, t2.armor/t1.armor) AS _H_L_ratio, t1.minlevel, (CAST(t1.minlevel AS SIGNED) - CAST(t2.minlevel AS SIGNED)) AS _LvlDiff, IF(t1.name=t2.name,'',t2.name) AS _newName FROM (world.creature_template AS t1) LEFT JOIN (world_ytdb.creature_template AS t2) USING(entry) WHERE t1.armor < t2.armor AND (CAST(t2.minlevel AS SIGNED) - CAST(t1.minlevel AS SIGNED)) < 7 /* AND t1.name != t2.name */ ORDER BY _LvlDiff;

cala commented 10 years ago

Thank you for this report. However, I'd really like to know the source for the request above please, because armor in Classic and armor in YTDB are not easily comparable as the later is a WotLK DB. :)

Neotmiren commented 10 years ago

The source for UPDATEs is YTDB. If YTDB has greater armor value and level of creature did not changed singnificantly (it changed for city guards, for example) then YTDB value is used.

Classic and WotLK armor values are about the same for the same levels. UPDATEs do not contain too big values (typical for levels > 60). Armor boosting spells, like Ice Armor, give the same increases in Classic and WotLK:

http://www.wowwiki.com/Ice_Armor?oldid=2365982 http://www.wowwiki.com/Ice_Armor?oldid=313033

so the meaning of armor values are about the same.

Probably these values are not ideal. But in any case they are much closer to the real Classic values than сurrent zero armor for most creatures, which makes them too easy for melee attacks.

cala commented 10 years ago

I'm wondering... On one hand, I understand your approach and I agree with it: those armor values have very high chance to be the same between Classic and WotLK. As such, they are needed as they fix a game mechanics that was unbalanced towards melee characters.

On the other hand, a creature with an armor value set to 0 is like a flag saying "My armor value needs to be fixed" and with this updated we will lose that information even if I believe the value is 90% correct.

I would add this update, but I'd like to have @schmoozerd's opinion on the matter, firsthand.

Swater96 commented 10 years ago

Armor isn't the only problem... Immunities are also widely missing from the db

cala commented 10 years ago

I know for sure that most elementals are missing their immunities, but if you know of more creatures with the same issue, please feel free to post their name or entry along with the immunity they are missing.

Neotmiren commented 10 years ago

@Swater96

There is improved version. It maximizes Armor, Immunities and Resistances according to YTDB + PSDB + UDB https://gist.github.com/anonymous/8412281/raw/758bad97834edf9fddc7ee7387cad80db9ee80a1/gistfile1.txt

cala commented 10 years ago

Thank you for this update. I'd like to understand how these values were computed: you have compared the three databases against Classic DB and everytime you have taken the highest value amongst the three?

Neotmiren commented 10 years ago

Yes, results are like this.

PatSmuk commented 10 years ago

Exact armor values are already known and will be ported once @X-Savior is finished the creature stats project (by me if no one does it first). Resistances are also known and I can look into those now.

Neotmiren commented 10 years ago

If these known values are "exact" do they really represent Classic client data? But where from they ported in this case? Very good if these values are from Classic, but why there were mostly zero values in past Classic and TBC databases? In short, what is the origin of data you speak of?

cala commented 10 years ago

These values come from sniffs data from official. These sniffs were used by X-Savior, Patman64 and a few other guys to finally understand the whole stat system for creatures. The awesome point from this understanding is that it is applicable to all expansions of the game, including classic. Current values in Classic DB, TBC-DB and other projects come from various sources: sniffs, calculus, wowhead-like site, guess-work (more or less educated). What Patman64 is proposing is to post-poned the current update regarding armor and resistances as he and X-Savior are about to release a massive update based on sniff data.

cala commented 10 years ago

As an update, the immunities changes you are proposing are still valable. Thanks ! :)

Neotmiren commented 10 years ago

Is there really enough old data, sniffed in times of Classic (or TBC?), to cover ALL creatures in database? I suppose that Blizzard Server sends only data needed for visible creatures.

If I understand correctly, all these data was not used before now because of not understanding fully its format, which is understandable now?

Is current Armor/Resistances/etc data in WotLK databases also comes from X-Savior, Patman64 and a few other guys?

cala commented 10 years ago

I suggest you have a look at this (rather long) topic in CMaNGOS forums to understand how recent sniffs are still pertinent data for old content. http://cmangos.net/thread-431.html There are also a great deal of old sniffs available and the new system was sucessfully tested against them.

Regarding current values, most of them come from reliable sources, mostly sniffs from UDB. Some values obtained through UDB sniffs were not ported to Classic (and hence, are missing) as it was not sure they were relevant. The new system should fix that.

Neotmiren commented 10 years ago

Thank you for the link. Saying "how recent sniffs are still pertinent data for old content" you probably mean these words from forum thread:

"All Blizz Does is when they release a new expansion pack is the add an additional base stats table with new stats for all required levels of NPC for that expansion. This then does NOT affect any previous NPC who are already setup and configured with a previous expansion. If they change NPC levels from one expansion it does not matter... all the base stats are there from the old expansions back as well. An example of an NPC who might get boosted up to a higher expansion value as they are released would be Guards. They move them up to higher level and are stronger to keep up with players advancing and getting stronger. So Blizz then would up their level and also up their expansion value to match. We CLEARLY see this when we look at their health values and multipliers... it perfectly falls into the new expansion values each time.

I am 100% Sure Blizz does not contain ANY Health,Mana,Armor,Attack Power, Damage in their version of creature template since this data is ALL AUTOMATICALLY determined based on the NPC Unit_Class + Min/Max Levels + Expansion Value + Multipliers Assigned on an Individual NPC Basis."

By the way, there are no Health, Mana, Armor in Trinity Core DB, but *_mod fields and expansion field.

PatSmuk commented 10 years ago

We don't have sniffs. Data comes from here: http://www.amazon.com/Warcraft-Bestiary-Official-Strategy-Bradygames/dp/0744009790/

Armor in mangos is wrong anyway; it's not one value per creature, it's one multiplier per creature and it changes depending on the level of the creature.

I have almost no confidence in the values of the WotLK DBs and recommend against using them.

Neotmiren commented 10 years ago

Interesting and very unexpected data source. February 4, 2008 is obviously TBC time. Many Classic creatures were nerfed in TBC (elites become non-elite etc.), but probably it applies not to Armor and Resistances... Information about abilities could be useful source for EventAI tables... Yes, it makes things much more clear.

PatSmuk commented 10 years ago

Yup, I remember when the nerf happened. AFAIK it all happened in this patch: http://www.wowwiki.com/Patch_2.3.0

Specifically:

The bestiary does not include Illidan Stormrage (introduced in 2.1.0) so I would believe that the book has the old stats for these creatures. So TBC and beyond will need an adjustment.

cala commented 8 years ago

Armor values are fixed in https://github.com/cmangos/classic-db/commit/3f51ce90efc95a15357d5c1fc02e621158b3cdea Not 100% of the NPCs are fixed but they all have armor now (base armor for their class and level). The NPCs still needing to have their stats fixed will have their armor checked when their time comes.

The ArmorMultiplier values in the commit linked above were computed based on the bestiary values (including level or rank changes between Classic and TBC also the various armor modifier like frost armor spell for example). Exception for the various trigger/targed/model NPCs that are flagged with a specific ArmorMultiplier for now with no effect in-game.

I love so much those stats reworks...