This details the structure of data in DT_MonsterFieldAI and what these values actually do.
First off, understand that all of the DataTable values are stored in little endian if you're converting these values to and from hex.
----------------------------
FieldBasicSpeed (float, 4 bytes) - Defines the basic speed, varies from monster to monster, usually ranging from around 600 to 1200. This value is modified by ChaseSpeed/EscapeSpeed/RageSpeed. Also very important to note: Lower is Faster.
So, say if you have a monster with a default basic speed of 900, reducing it to 700 or 600 will make it faster. On the contrary, increasing the value will make it slower.
-----------------
ChaseSpeed (enum, 1 byte) - This (along with the next two) modify the basic speed situationally, it is a value of 01 to 09. This is what speed (modifier) is applied when the enemy has spotted you and tracking you down.
A breakdown of these values:
00- SuperSlow
01- VerySlow
02- Slow
03- SlightlySlow
04- Normal
05- SlightlyFast
06- Fast
07- VeryFast
08- SuperFast
09- Original
-------------------
EscapeSpeed (enum, 1 byte) - This is what speed (modifier) is applied when you are too strong for the enemy and it is trying to run away from you.
----------------------------
RageSpeed (enum, 1 byte) - This is what speed (modifier) is applied when you have shot an enemy with a crossbow and they are coming to exact vengeance upon you.
-----------------------------
SearchType (enum, 1 byte) - Two possible values that define how the monster "senses" you.
01 - EyeSight
02- Hearing
------------------------------
SearchRadius (int, 4 bytes) - Defines the distance that a monster will detect and chase you from. Typical value: ~800
----------------------------
SearchAngle (int, 4 bytes) - Defines the angle that a monster will detect you. Useful values are all in degrees, so 0 - 360. Typical value: ~60-120
----------------------------
SpreadDistance (int, 4 bytes) - Defines the distance that a monster will detect from this spawn ("pop") location. Usually similar or identical to SearchRadius.
----------------------------
MovementWeak (enum, 1 byte) - Defines the monster's movement when it is determined to be weaker than you (see WeakMovementThreshold). Values are 00 - 02.
00- Attack anyway (?)
01- Run away
02- Ignore
------------------------------
MovementStrong (enum, 1 byte) - Defines the monster's movement when it is determined to be stronger than you (see WeakMovementThreshold). Values are 00 - 02.
00- "Smart" rush
01- "Blind" rush
02- Ignore
-------------------------------
WeakMovementThreshold (int, 4 bytes) - A value between -99 and +99 (typically) which determines whether a monster is considered "stronger" or "weaker". -99 will make them always run away. +99 *seems to make them always aggressive.
--------------------------------
--------------------------------
DT_MonsterFieldMovingBounds:
wanderingRadius - 00 00 7A 45 (4000)
float (little endian) - default 00 00 7A 44 (1000)
wanderingMoveDistance - 00 00 FA 44 (2000)
float (little endian) - default 00 00 FA 43 (500)
escapeMoveDistance - (unchanged)
Black Dragon Sequence - 00 00 00 40 (2)
float (little endian) - default 00 80 3B 45 (3000)
rushMoveDistance - 00 B8 88 47 (70000)
Black Dragon Sequence - 00 00 00 40 (2)
float (little endian) - default 2000
chaseRadiusFromFindLocation - 00 50 C3 47 (100000)
Black Dragon Sequence - 00 00 00 40 (2)
float (little endian) - default 3000
chaseRadiusFromPopLocation - 00 50 C3 47 (100000)
Black Dragon Sequence - 00 00 00 40 (2)
float (little endian) - default 5000
chaseRadiusFromFindTargetLocation - 00 50 C3 47 (100000)
Black Dragon Sequence - 00 00 00 40 (2)
float (little endian) - default 4000
0 comments