mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 13:37:05 +00:00
[10109] Add and use actual bounding_radius/combat_reach per model for characters.
Data are stored in same table as for creature (like dbc models data), and provides the default values for playable races. Currently the bounding and reach are applied only at creation and load. Note that these values are modified by scale. For player case, scale is always 1.0 as default. For later, auras and spell effects that change scale and/or modelid must in addition make sure bounding_radius are updated accordingly to the new scale and/or model (combat_reach does not seem to be affected by such changes, and is always 1.5 for players). Signed-off-by: NoFantasy <nofantasy@nf.no>
This commit is contained in:
parent
698fe93eb7
commit
bb3b0bd598
6 changed files with 75 additions and 13 deletions
|
|
@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
|
||||||
`version` varchar(120) default NULL,
|
`version` varchar(120) default NULL,
|
||||||
`creature_ai_version` varchar(120) default NULL,
|
`creature_ai_version` varchar(120) default NULL,
|
||||||
`cache_id` int(10) default '0',
|
`cache_id` int(10) default '0',
|
||||||
`required_10107_01_mangos_mangos_string` bit(1) default NULL
|
`required_10109_01_mangos_creature_model_info` bit(1) default NULL
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -970,7 +970,25 @@ CREATE TABLE `creature_model_info` (
|
||||||
LOCK TABLES `creature_model_info` WRITE;
|
LOCK TABLES `creature_model_info` WRITE;
|
||||||
/*!40000 ALTER TABLE `creature_model_info` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `creature_model_info` DISABLE KEYS */;
|
||||||
INSERT INTO `creature_model_info` VALUES
|
INSERT INTO `creature_model_info` VALUES
|
||||||
(10045, 1, 1.5, 2, 0);
|
(49, 0.3060, 1.5, 0, 50),
|
||||||
|
(50, 0.2080, 1.5, 1, 49),
|
||||||
|
(51, 0.3720, 1.5, 0, 52),
|
||||||
|
(52, 0.2360, 1.5, 1, 51),
|
||||||
|
(53, 0.3470, 1.5, 0, 54),
|
||||||
|
(54, 0.3470, 1.5, 1, 53),
|
||||||
|
(55, 0.3890, 1.5, 0, 56),
|
||||||
|
(56, 0.3060, 1.5, 1, 55),
|
||||||
|
(59, 0.9747, 1.5, 0, 60),
|
||||||
|
(60, 0.8725, 1.5, 1, 59),
|
||||||
|
(1478, 0.3060, 1.5, 0, 1479),
|
||||||
|
(1479, 0.3060, 1.5, 1, 1478),
|
||||||
|
(1563, 0.3519, 1.5, 0, 1564),
|
||||||
|
(1564, 0.3519, 1.5, 1, 1563),
|
||||||
|
(10045, 1.0000, 1.5, 2, 0),
|
||||||
|
(15475, 0.3830, 1.5, 1, 15476),
|
||||||
|
(15476, 0.3830, 1.5, 0, 15475),
|
||||||
|
(16125, 1.0000, 1.5, 0, 16126),
|
||||||
|
(16126, 1.0000, 1.5, 1, 16125);
|
||||||
/*!40000 ALTER TABLE `creature_model_info` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `creature_model_info` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|
|
||||||
22
sql/updates/10109_01_mangos_creature_model_info.sql
Normal file
22
sql/updates/10109_01_mangos_creature_model_info.sql
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_10107_01_mangos_mangos_string required_10109_01_mangos_creature_model_info bit;
|
||||||
|
|
||||||
|
DELETE FROM creature_model_info WHERE modelid IN (49,50,51,52,53,54,55,56,59,60,1478,1479,1563,1564,15475,15476,16125,16126);
|
||||||
|
INSERT INTO creature_model_info (modelid, bounding_radius, combat_reach, gender, modelid_other_gender) VALUES
|
||||||
|
(49, 0.3060, 1.5, 0, 50),
|
||||||
|
(50, 0.2080, 1.5, 1, 49),
|
||||||
|
(51, 0.3720, 1.5, 0, 52),
|
||||||
|
(52, 0.2360, 1.5, 1, 51),
|
||||||
|
(53, 0.3470, 1.5, 0, 54),
|
||||||
|
(54, 0.3470, 1.5, 1, 53),
|
||||||
|
(55, 0.3890, 1.5, 0, 56),
|
||||||
|
(56, 0.3060, 1.5, 1, 55),
|
||||||
|
(59, 0.9747, 1.5, 0, 60),
|
||||||
|
(60, 0.8725, 1.5, 1, 59),
|
||||||
|
(1478, 0.3060, 1.5, 0, 1479),
|
||||||
|
(1479, 0.3060, 1.5, 1, 1478),
|
||||||
|
(1563, 0.3519, 1.5, 0, 1564),
|
||||||
|
(1564, 0.3519, 1.5, 1, 1563),
|
||||||
|
(15475, 0.3830, 1.5, 1, 15476),
|
||||||
|
(15476, 0.3830, 1.5, 0, 15475),
|
||||||
|
(16125, 1.0000, 1.5, 0, 16126),
|
||||||
|
(16126, 1.0000, 1.5, 1, 16125);
|
||||||
|
|
@ -94,6 +94,7 @@ pkgdata_DATA = \
|
||||||
10106_01_mangos_command.sql \
|
10106_01_mangos_command.sql \
|
||||||
10106_02_mangos_mangos_string.sql \
|
10106_02_mangos_mangos_string.sql \
|
||||||
10107_01_mangos_mangos_string.sql \
|
10107_01_mangos_mangos_string.sql \
|
||||||
|
10109_01_mangos_creature_model_info.sql \
|
||||||
README
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -168,4 +169,5 @@ EXTRA_DIST = \
|
||||||
10106_01_mangos_command.sql \
|
10106_01_mangos_command.sql \
|
||||||
10106_02_mangos_mangos_string.sql \
|
10106_02_mangos_mangos_string.sql \
|
||||||
10107_01_mangos_mangos_string.sql \
|
10107_01_mangos_mangos_string.sql \
|
||||||
|
10109_01_mangos_creature_model_info.sql \
|
||||||
README
|
README
|
||||||
|
|
|
||||||
|
|
@ -681,23 +681,33 @@ bool Player::Create( uint32 guidlow, const std::string& name, uint8 race, uint8
|
||||||
|
|
||||||
uint8 powertype = cEntry->powerType;
|
uint8 powertype = cEntry->powerType;
|
||||||
|
|
||||||
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, DEFAULT_WORLD_OBJECT_SIZE);
|
|
||||||
SetFloatValue(UNIT_FIELD_COMBATREACH, 1.5f);
|
|
||||||
|
|
||||||
setFactionForRace(race);
|
setFactionForRace(race);
|
||||||
|
|
||||||
uint32 RaceClassGender = ( race ) | ( class_ << 8 ) | ( gender << 16 );
|
uint32 RaceClassGender = ( race ) | ( class_ << 8 ) | ( gender << 16 );
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_BYTES_0, ( RaceClassGender | ( powertype << 24 ) ) );
|
SetUInt32Value(UNIT_FIELD_BYTES_0, ( RaceClassGender | ( powertype << 24 ) ) );
|
||||||
|
|
||||||
InitDisplayIds();
|
InitDisplayIds();
|
||||||
|
|
||||||
|
if (CreatureModelInfo const* modelInfo = sObjectMgr.GetCreatureModelInfo(GetDisplayId()))
|
||||||
|
{
|
||||||
|
// bounding_radius and combat_reach is normally modified by scale, but player is always 1.0 scale by default so no need to modify values here.
|
||||||
|
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, modelInfo->bounding_radius);
|
||||||
|
SetFloatValue(UNIT_FIELD_COMBATREACH, modelInfo->combat_reach);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, DEFAULT_WORLD_OBJECT_SIZE);
|
||||||
|
SetFloatValue(UNIT_FIELD_COMBATREACH, 1.5f);
|
||||||
|
}
|
||||||
|
|
||||||
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP );
|
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP );
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE );
|
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE );
|
||||||
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);
|
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);
|
||||||
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); // fix cast time showed in spell tooltip on client
|
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); // fix cast time showed in spell tooltip on client
|
||||||
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3
|
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3
|
||||||
|
|
||||||
// -1 is default value
|
SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, -1); // -1 is default value
|
||||||
SetInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, -1);
|
|
||||||
|
|
||||||
SetUInt32Value(PLAYER_BYTES, (skin | (face << 8) | (hairStyle << 16) | (hairColor << 24)));
|
SetUInt32Value(PLAYER_BYTES, (skin | (face << 8) | (hairStyle << 16) | (hairColor << 24)));
|
||||||
SetUInt32Value(PLAYER_BYTES_2, (facialHair | (0x00 << 8) | (0x00 << 16) | (0x02 << 24)));
|
SetUInt32Value(PLAYER_BYTES_2, (facialHair | (0x00 << 8) | (0x00 << 16) | (0x02 << 24)));
|
||||||
|
|
@ -14994,8 +15004,20 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
|
||||||
_LoadIntoDataField(fields[60].GetString(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE);
|
_LoadIntoDataField(fields[60].GetString(), PLAYER_EXPLORED_ZONES_1, PLAYER_EXPLORED_ZONES_SIZE);
|
||||||
_LoadIntoDataField(fields[63].GetString(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE*2);
|
_LoadIntoDataField(fields[63].GetString(), PLAYER__FIELD_KNOWN_TITLES, KNOWN_TITLES_SIZE*2);
|
||||||
|
|
||||||
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, DEFAULT_WORLD_OBJECT_SIZE);
|
InitDisplayIds();
|
||||||
SetFloatValue(UNIT_FIELD_COMBATREACH, 1.5f);
|
|
||||||
|
if (CreatureModelInfo const* modelInfo = sObjectMgr.GetCreatureModelInfo(GetDisplayId()))
|
||||||
|
{
|
||||||
|
// bounding_radius and combat_reach is normally modified by scale, but player is always 1.0 scale by default so no need to modify values here.
|
||||||
|
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, modelInfo->bounding_radius);
|
||||||
|
SetFloatValue(UNIT_FIELD_COMBATREACH, modelInfo->combat_reach);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, DEFAULT_WORLD_OBJECT_SIZE);
|
||||||
|
SetFloatValue(UNIT_FIELD_COMBATREACH, 1.5f);
|
||||||
|
}
|
||||||
|
|
||||||
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f);
|
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f);
|
||||||
|
|
||||||
uint32 money = fields[8].GetUInt32();
|
uint32 money = fields[8].GetUInt32();
|
||||||
|
|
@ -15014,8 +15036,6 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder )
|
||||||
SetUInt32Value(PLAYER_AMMO_ID, fields[62].GetUInt32());
|
SetUInt32Value(PLAYER_AMMO_ID, fields[62].GetUInt32());
|
||||||
SetByteValue(PLAYER_FIELD_BYTES, 2, fields[64].GetUInt8());
|
SetByteValue(PLAYER_FIELD_BYTES, 2, fields[64].GetUInt8());
|
||||||
|
|
||||||
InitDisplayIds();
|
|
||||||
|
|
||||||
// cleanup inventory related item value fields (its will be filled correctly in _LoadInventory)
|
// cleanup inventory related item value fields (its will be filled correctly in _LoadInventory)
|
||||||
for(uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
|
for(uint8 slot = EQUIPMENT_SLOT_START; slot < EQUIPMENT_SLOT_END; ++slot)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10108"
|
#define REVISION_NR "10109"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef __REVISION_SQL_H__
|
#ifndef __REVISION_SQL_H__
|
||||||
#define __REVISION_SQL_H__
|
#define __REVISION_SQL_H__
|
||||||
#define REVISION_DB_CHARACTERS "required_10051_01_characters_character_aura"
|
#define REVISION_DB_CHARACTERS "required_10051_01_characters_character_aura"
|
||||||
#define REVISION_DB_MANGOS "required_10107_01_mangos_mangos_string"
|
#define REVISION_DB_MANGOS "required_10109_01_mangos_creature_model_info"
|
||||||
#define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version"
|
#define REVISION_DB_REALMD "required_10008_01_realmd_realmd_db_version"
|
||||||
#endif // __REVISION_SQL_H__
|
#endif // __REVISION_SQL_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue