DB/LiquidType

From wowdev
Revision as of 11:26, 23 February 2016 by Mjollna (talk | contribs)

Jump to: navigation, search

Properties of water. Added (build: 5428) to account for the damage caused by the Slime in Naxxramas.

Note that type 8 is used for debugging, and invalid entries might fall back to that.

Offset Name Type Comment
0 Id int
cata minDetail int
cata loDetailID int
cata hiDetailID int
1 Name string
cata flags int
cata soundBank int
2 flags int Water: 1, 2, 4, 8; Magma: 8, 16, 32, 64; Slime: 2, 64, 256; WMO Ocean: 1, 2, 4, 8, 512
3 Type int 0: Water, 1: Ocean, 2: Magma, 3: Slime
4 SoundEntriesID int SoundEntries.dbc irefid
5 SpellID int Spell.dbc irefID
6 maxDarkenDepth float only for slime and magma
7 fogDarkenIntensity float 7,8,9: Only oceans got values here!
8 ambDarkenIntensity float
9 dirDarkenIntensity float
10 lightID int Only Slime (6) and Magma (7)
11 particleScale float 0: Slime, 1: Water / Ocean, 4: Magma
12 particleMovement int
13 particleTexSlots int
14 LiquidMaterialID int (LiquidMaterial.dbc irefid?) this defines the shaders used. (1: "*sLiquidWater", 2: "*sLiquidMagma", 3: "*sLiquidProcWater%s" where %s is an appendix that is currently always "")
15-19 texture string[6] these are passed into the texture[] of the shaders.
20-22 color int[2]
23-40 floats float[18] most likely these are attributes for the shaders. Water: (23, TextureTilesPerBlock),(24, Rotation) Magma: (23, AnimationX),(24, AnimationY)
41-44 ints int[4] if (!material.LVF & ~2) or material.LVF == 4), then [0]: 1 → ocean, 0 → river depth coord table; 1 for oceans, 0 or 1250. only set for water / ocean and only for the procedual in all 3 fields. else only the first.

6.0.1.18179

struct LiquidTypeRec {
  uint32_t m_ID;
  stringref m_name;
  uint32_t m_flags;                   // &4: IsLiquidWaterWalkable
  uint32_t m_soundBank;
  foreign_key<uint32_t, &SoundEntriesRec::m_ID> m_soundID;
  foreign_key<uint32_t, &SpellRec::m_ID> m_spellID;
  float m_maxDarkenDepth;
  float m_fogDarkenIntensity;
  float m_ambDarkenIntensity;
  float m_dirDarkenIntensity;
  foreign_key<uint32_t, &LightRec::m_ID> m_lightID;
  float m_particleScale;
  uint32_t m_particleMovement;
  uint32_t m_particleTexSlots;
  foreign_key<uint32_t, &LiquidMaterialRec::m_ID> m_materialID;
  stringref m_texture[6];            // implementation detail in Liquid::CMaterialSettings limits them to 128 bytes!
  uint32_t m_color[2];
  float m_float[18];
  uint32_t m_int[4];
};