From 9823356946c39c8825ec0d77034b9e86d9bd2311 Mon Sep 17 00:00:00 2001 From: NoFantasy Date: Mon, 15 Mar 2010 15:46:56 +0100 Subject: [PATCH] [9589] Add additional field for storage of speed_run rate of creature This allow independent rate of walk vs run speed. Existing field renamed to explicit speed_walk. Note that default database rate for run is a result of the most common value seen, 8.0/7.0 Signed-off-by: NoFantasy --- sql/mangos.sql | 5 +++-- sql/updates/9589_01_mangos_creature_template.sql | 4 ++++ sql/updates/Makefile.am | 2 ++ src/game/Creature.cpp | 7 ++++--- src/game/Creature.h | 3 ++- src/game/Unit.cpp | 7 ++++--- src/shared/Database/SQLStorage.cpp | 4 ++-- src/shared/revision_nr.h | 2 +- src/shared/revision_sql.h | 2 +- 9 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 sql/updates/9589_01_mangos_creature_template.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 3ca31e14b..1c756e5a3 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -24,7 +24,7 @@ CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, `cache_id` int(10) default '0', - `required_9539_01_mangos_spell_bonus_data` bit(1) default NULL + `required_9589_01_mangos_creature_template` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -1098,7 +1098,8 @@ CREATE TABLE `creature_template` ( `faction_A` smallint(5) unsigned NOT NULL default '0', `faction_H` smallint(5) unsigned NOT NULL default '0', `npcflag` int(10) unsigned NOT NULL default '0', - `speed` float NOT NULL default '1', + `speed_walk` float NOT NULL default '1' COMMENT 'Result of 2.5/2.5, most common value', + `speed_run` float NOT NULL default '1.14286' COMMENT 'Result of 8.0/7.0, most common value', `scale` float NOT NULL default '1', `rank` tinyint(3) unsigned NOT NULL default '0', `mindmg` float NOT NULL default '0', diff --git a/sql/updates/9589_01_mangos_creature_template.sql b/sql/updates/9589_01_mangos_creature_template.sql new file mode 100644 index 000000000..9f45918e3 --- /dev/null +++ b/sql/updates/9589_01_mangos_creature_template.sql @@ -0,0 +1,4 @@ +ALTER TABLE db_version CHANGE COLUMN required_9539_01_mangos_spell_bonus_data required_9589_01_mangos_creature_template bit; + +ALTER TABLE creature_template ADD COLUMN speed_run float NOT NULL default '1.14286' COMMENT 'Result of 8.0/7.0, most common value' AFTER speed; +ALTER TABLE creature_template CHANGE COLUMN speed speed_walk float NOT NULL default '1' COMMENT 'Result of 2.5/2.5, most common value'; diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index b4ecd65fa..3e656d622 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -87,6 +87,7 @@ pkgdata_DATA = \ 9526_01_mangos_spell_proc_event.sql \ 9528_01_mangos_spell_bonus_data.sql \ 9539_01_mangos_spell_bonus_data.sql \ + 9589_01_mangos_creature_template.sql \ README ## Additional files to include when running 'make dist' @@ -154,4 +155,5 @@ EXTRA_DIST = \ 9526_01_mangos_spell_proc_event.sql \ 9528_01_mangos_spell_bonus_data.sql \ 9539_01_mangos_spell_bonus_data.sql \ + 9589_01_mangos_creature_template.sql \ README diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 2ab304e0b..07b4a4c3c 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -263,9 +263,10 @@ bool Creature::InitEntry(uint32 Entry, uint32 team, const CreatureData *data ) SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); - SetSpeedRate(MOVE_WALK, cinfo->speed); - SetSpeedRate(MOVE_RUN, cinfo->speed); - SetSpeedRate(MOVE_SWIM, cinfo->speed); + SetSpeedRate(MOVE_WALK, cinfo->speed_walk); + SetSpeedRate(MOVE_RUN, cinfo->speed_run); + SetSpeedRate(MOVE_SWIM, 1.0f); // using 1.0 rate + SetSpeedRate(MOVE_FLIGHT, 1.0f); // using 1.0 rate SetFloatValue(OBJECT_FIELD_SCALE_X, cinfo->scale); diff --git a/src/game/Creature.h b/src/game/Creature.h index dfbcb771d..a713309a6 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -81,7 +81,8 @@ struct CreatureInfo uint32 faction_A; uint32 faction_H; uint32 npcflag; - float speed; + float speed_walk; + float speed_run; float scale; uint32 rank; float mindmg; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5bfe19227..a214e473c 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -55,7 +55,7 @@ float baseMoveSpeed[MAX_MOVE_TYPE] = { 2.5f, // MOVE_WALK 7.0f, // MOVE_RUN - 1.25f, // MOVE_RUN_BACK + 2.5f, // MOVE_RUN_BACK 4.722222f, // MOVE_SWIM 4.5f, // MOVE_SWIM_BACK 3.141594f, // MOVE_TURN_RATE @@ -376,8 +376,9 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, SplineTy data << uint32(flags); - if(flags & SPLINEFLAG_WALKMODE) - moveTime *= 1.05f; + // enable me if things goes wrong or looks ugly, it is however an old hack + // if(flags & SPLINEFLAG_WALKMODE) + // moveTime *= 1.05f; data << uint32(moveTime); // Time in between points data << uint32(1); // 1 single waypoint diff --git a/src/shared/Database/SQLStorage.cpp b/src/shared/Database/SQLStorage.cpp index a7e978531..9f8e32a7c 100644 --- a/src/shared/Database/SQLStorage.cpp +++ b/src/shared/Database/SQLStorage.cpp @@ -25,8 +25,8 @@ extern DatabasePostgre WorldDatabase; extern DatabaseMysql WorldDatabase; #endif -const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiiffliiiiiiiliiis"; -const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiiiiiffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiiffliiiiiiiliiii"; +const char CreatureInfosrcfmt[]="iiiiiiiiiisssiiiiiiiiiiifffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiiffliiiiiiiliiis"; +const char CreatureInfodstfmt[]="iiiiiiiiiisssiiiiiiiiiiifffiffiifiiiiiiiiiiffiiiiiiiiiiiiiiiiiiisiiffliiiiiiiliiii"; const char CreatureDataAddonInfofmt[]="iiiiiis"; const char CreatureModelfmt[]="iffbi"; const char CreatureInfoAddonInfofmt[]="iiiiiis"; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 003ca983f..703a02320 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9588" + #define REVISION_NR "9589" #endif // __REVISION_NR_H__ diff --git a/src/shared/revision_sql.h b/src/shared/revision_sql.h index 82c8a6bfb..11c362ef1 100644 --- a/src/shared/revision_sql.h +++ b/src/shared/revision_sql.h @@ -1,6 +1,6 @@ #ifndef __REVISION_SQL_H__ #define __REVISION_SQL_H__ #define REVISION_DB_CHARACTERS "required_9375_01_characters_character_glyphs" - #define REVISION_DB_MANGOS "required_9539_01_mangos_spell_bonus_data" + #define REVISION_DB_MANGOS "required_9589_01_mangos_creature_template" #define REVISION_DB_REALMD "required_9010_01_realmd_realmlist" #endif // __REVISION_SQL_H__