*Merge.
--HG-- branch : trunk
This commit is contained in:
+152
-136
@@ -515,6 +515,29 @@ LOCK TABLES `creature_equip_template` WRITE;
|
|||||||
/*!40000 ALTER TABLE `creature_equip_template` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `creature_equip_template` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `creature_formations`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `creature_formations`;
|
||||||
|
CREATE TABLE `creature_formations` (
|
||||||
|
`leaderGUID` int(11) unsigned NOT NULL,
|
||||||
|
`memberGUID` int(11) unsigned NOT NULL,
|
||||||
|
`dist` float unsigned NOT NULL,
|
||||||
|
`angle` float unsigned NOT NULL,
|
||||||
|
`groupAI` int(11) unsigned NOT NULL,
|
||||||
|
PRIMARY KEY (`follower`));
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `creature_formations`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `creature_formations` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `creature_formations` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `creature_formations` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `creature_involvedrelation`
|
-- Table structure for table `creature_involvedrelation`
|
||||||
--
|
--
|
||||||
@@ -585,63 +608,6 @@ LOCK TABLES `creature_model_info` WRITE;
|
|||||||
/*!40000 ALTER TABLE `creature_model_info` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `creature_model_info` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `waypoint_data`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `waypoint_data`;
|
|
||||||
CREATE TABLE `waypoint_data` (
|
|
||||||
`id` int(10) unsigned NOT NULL default '0' COMMENT 'Creature GUID',
|
|
||||||
`point` mediumint(8) unsigned NOT NULL default '0',
|
|
||||||
`position_x` float NOT NULL default '0',
|
|
||||||
`position_y` float NOT NULL default '0',
|
|
||||||
`position_z` float NOT NULL default '0',
|
|
||||||
`delay` int(10) unsigned NOT NULL default '0',
|
|
||||||
`move_flag` tinyint(1) NOT NULL default '0',
|
|
||||||
`action` int(11) NOT NULL default '0',
|
|
||||||
`action_chance` smallint(3) NOT NULL default '100',
|
|
||||||
`wpguid` int(11) NOT NULL default '0'
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `creature_movement`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `waypoint_data` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `waypoint_data` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `waypoint_data` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `waypoint_scripts`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `waypoint_scripts`;
|
|
||||||
CREATE TABLE `waypoint_scripts` (
|
|
||||||
`id` int(11) unsigned NOT NULL default '0',
|
|
||||||
`delay` int(11) unsigned NOT NULL default '0',
|
|
||||||
`command` int(11) unsigned NOT NULL default '0',
|
|
||||||
`datalong` int(11) unsigned NOT NULL default '0',
|
|
||||||
`datalong2` int(11) unsigned NOT NULL default '0',
|
|
||||||
`dataint` int(11) unsigned NOT NULL default '0',
|
|
||||||
`x` float NOT NULL default '0',
|
|
||||||
`y` float NOT NULL default '0',
|
|
||||||
`z` float NOT NULL default '0',
|
|
||||||
`o` float NOT NULL default '0',
|
|
||||||
`guid` int(11) NOT NULL default '0',
|
|
||||||
PRIMARY KEY (`guid`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `creature_movement`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `waypoint_scripts` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `waypoint_scripts` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `waypoint_scripts` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `creature_onkill_reputation`
|
-- Table structure for table `creature_onkill_reputation`
|
||||||
--
|
--
|
||||||
@@ -843,6 +809,7 @@ CREATE TABLE `custom_texts` (
|
|||||||
`sound` mediumint(8) unsigned NOT NULL default '0',
|
`sound` mediumint(8) unsigned NOT NULL default '0',
|
||||||
`type` tinyint unsigned NOT NULL default '0',
|
`type` tinyint unsigned NOT NULL default '0',
|
||||||
`language` tinyint unsigned NOT NULL default '0',
|
`language` tinyint unsigned NOT NULL default '0',
|
||||||
|
`emote` smallint(5) UNSIGNED NOT NULL default '0',
|
||||||
`comment` text,
|
`comment` text,
|
||||||
PRIMARY KEY (`entry`)
|
PRIMARY KEY (`entry`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Custom Texts';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Custom Texts';
|
||||||
@@ -856,24 +823,6 @@ LOCK TABLES `custom_texts` WRITE;
|
|||||||
/*!40000 ALTER TABLE `custom_texts` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `custom_texts` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `db_version`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `db_version`;
|
|
||||||
CREATE TABLE `db_version` (
|
|
||||||
`version` varchar(120) default NULL
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `db_version`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `db_version` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `db_version` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `db_version` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `disenchant_loot_template`
|
-- Table structure for table `disenchant_loot_template`
|
||||||
--
|
--
|
||||||
@@ -1054,38 +1003,6 @@ LOCK TABLES `eventai_texts` WRITE;
|
|||||||
/*!40000 ALTER TABLE `eventai_texts` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `eventai_texts` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `script_texts`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `script_texts`;
|
|
||||||
CREATE TABLE `script_texts` (
|
|
||||||
`entry` mediumint(8) NOT NULL,
|
|
||||||
`content_default` text NOT NULL,
|
|
||||||
`content_loc1` text,
|
|
||||||
`content_loc2` text,
|
|
||||||
`content_loc3` text,
|
|
||||||
`content_loc4` text,
|
|
||||||
`content_loc5` text,
|
|
||||||
`content_loc6` text,
|
|
||||||
`content_loc7` text,
|
|
||||||
`content_loc8` text,
|
|
||||||
`sound` mediumint(8) unsigned NOT NULL default '0',
|
|
||||||
`type` tinyint unsigned NOT NULL default '0',
|
|
||||||
`language` tinyint unsigned NOT NULL default '0',
|
|
||||||
`comment` text,
|
|
||||||
PRIMARY KEY (`entry`)
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts';
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `script_texts`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `script_texts` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `script_texts` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `script_texts` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `exploration_basexp`
|
-- Table structure for table `exploration_basexp`
|
||||||
--
|
--
|
||||||
@@ -1230,6 +1147,26 @@ LOCK TABLES `game_event` WRITE;
|
|||||||
/*!40000 ALTER TABLE `game_event` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `game_event` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `game_event_battleground_holiday`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `game_event_battleground_holiday`;
|
||||||
|
CREATE TABLE `game_event_battleground_holiday` (
|
||||||
|
`event` int(10) unsigned NOT NULL,
|
||||||
|
`bgflag` int(10) unsigned NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`event`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `game_event_battleground_holiday`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `game_event_battleground_holiday` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `game_event_battleground_holiday` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `game_event_battleground_holiday` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `game_event_condition`
|
-- Table structure for table `game_event_condition`
|
||||||
--
|
--
|
||||||
@@ -13078,24 +13015,6 @@ LOCK TABLES `reserved_name` WRITE;
|
|||||||
/*!40000 ALTER TABLE `reserved_name` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `reserved_name` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
|
||||||
-- Table structure for table `script_db_version`
|
|
||||||
--
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `script_db_version`;
|
|
||||||
CREATE TABLE `script_db_version` (
|
|
||||||
`version` varchar(255) NOT NULL default '' COMMENT 'Database version string'
|
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
||||||
|
|
||||||
--
|
|
||||||
-- Dumping data for table `script_db_version`
|
|
||||||
--
|
|
||||||
|
|
||||||
LOCK TABLES `script_db_version` WRITE;
|
|
||||||
/*!40000 ALTER TABLE `script_db_version` DISABLE KEYS */;
|
|
||||||
/*!40000 ALTER TABLE `script_db_version` ENABLE KEYS */;
|
|
||||||
UNLOCK TABLES;
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `script_texts`
|
-- Table structure for table `script_texts`
|
||||||
--
|
--
|
||||||
@@ -13112,9 +13031,10 @@ CREATE TABLE `script_texts` (
|
|||||||
`content_loc6` text,
|
`content_loc6` text,
|
||||||
`content_loc7` text,
|
`content_loc7` text,
|
||||||
`content_loc8` text,
|
`content_loc8` text,
|
||||||
`sound` tinyint(3) unsigned NOT NULL default '0',
|
`sound` mediumint(8) unsigned NOT NULL default '0',
|
||||||
`type` tinyint(3) unsigned NOT NULL default '0',
|
`type` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`language` tinyint(3) unsigned NOT NULL default '0',
|
`language` smallint(5) unsigned NOT NULL default '0',
|
||||||
|
`emote` smallint(5) UNSIGNED NOT NULL default '0',
|
||||||
`comment` text,
|
`comment` text,
|
||||||
PRIMARY KEY (`entry`)
|
PRIMARY KEY (`entry`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Script Texts';
|
||||||
@@ -13242,26 +13162,24 @@ LOCK TABLES `spell_affect` WRITE;
|
|||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `spell_chain`
|
-- Table structure for table `spell_required`
|
||||||
--
|
--
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `spell_chain`;
|
DROP TABLE IF EXISTS `spell_required`;
|
||||||
CREATE TABLE `spell_chain` (
|
CREATE TABLE `spell_required` (
|
||||||
`spell_id` mediumint(9) NOT NULL default '0',
|
`spell_id` mediumint(9) NOT NULL default '0',
|
||||||
`prev_spell` mediumint(9) NOT NULL default '0',
|
`prev_spell` mediumint(9) NOT NULL default '0',
|
||||||
`first_spell` mediumint(9) NOT NULL default '0',
|
|
||||||
`rank` tinyint(4) NOT NULL default '0',
|
|
||||||
`req_spell` mediumint(9) NOT NULL default '0',
|
`req_spell` mediumint(9) NOT NULL default '0',
|
||||||
PRIMARY KEY (`spell_id`)
|
PRIMARY KEY (`spell_id`)
|
||||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Spell Additinal Data';
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Spell Additinal Data';
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Dumping data for table `spell_chain`
|
-- Dumping data for table `spell_required`
|
||||||
--
|
--
|
||||||
|
|
||||||
LOCK TABLES `spell_chain` WRITE;
|
LOCK TABLES `spell_required` WRITE;
|
||||||
/*!40000 ALTER TABLE `spell_chain` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_required` DISABLE KEYS */;
|
||||||
/*!40000 ALTER TABLE `spell_chain` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_required` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
--
|
||||||
@@ -13751,6 +13669,26 @@ LOCK TABLES `trinity_string` WRITE;
|
|||||||
/*!40000 ALTER TABLE `trinity_string` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `trinity_string` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `transport_events`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `transport_events`;
|
||||||
|
CREATE TABLE `transport_events` (
|
||||||
|
`entry` int(11) unsigned NOT NULL default '0',
|
||||||
|
`waypoint_id` int(11) unsigned NOT NULL default '0',
|
||||||
|
`event_id` int(11) unsigned NOT NULL default '0'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `transport_events`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `trinity_string` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `transport_events` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `transport_events` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `uptime`
|
-- Table structure for table `uptime`
|
||||||
--
|
--
|
||||||
@@ -13772,6 +13710,84 @@ LOCK TABLES `uptime` WRITE;
|
|||||||
/*!40000 ALTER TABLE `uptime` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `uptime` DISABLE KEYS */;
|
||||||
/*!40000 ALTER TABLE `uptime` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `uptime` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `version`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `version`;
|
||||||
|
CREATE TABLE `version` (
|
||||||
|
`core_version` varchar(120) default NULL COMMENT 'Core revision dumped at startup.',
|
||||||
|
`core_revision` BIGINT UNSIGNED default '0',
|
||||||
|
`db_version` varchar(120) default NULL COMMENT 'Version of world DB.',
|
||||||
|
`script_version` varchar(120) default NULL COMMENT 'Version of scripts DB.'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Version Notes';
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `version`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `version` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `version` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `version` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `waypoint_data`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `waypoint_data`;
|
||||||
|
CREATE TABLE `waypoint_data` (
|
||||||
|
`id` int(10) unsigned NOT NULL default '0' COMMENT 'Creature GUID',
|
||||||
|
`point` mediumint(8) unsigned NOT NULL default '0',
|
||||||
|
`position_x` float NOT NULL default '0',
|
||||||
|
`position_y` float NOT NULL default '0',
|
||||||
|
`position_z` float NOT NULL default '0',
|
||||||
|
`delay` int(10) unsigned NOT NULL default '0',
|
||||||
|
`move_flag` tinyint(1) NOT NULL default '0',
|
||||||
|
`action` int(11) NOT NULL default '0',
|
||||||
|
`action_chance` smallint(3) NOT NULL default '100',
|
||||||
|
`wpguid` int(11) NOT NULL default '0'
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `waypoint_data`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `waypoint_scripts` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `waypoint_scripts` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `waypoint_scripts` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Table structure for table `waypoint_scripts`
|
||||||
|
--
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `waypoint_scripts`;
|
||||||
|
CREATE TABLE `waypoint_scripts` (
|
||||||
|
`id` int(11) unsigned NOT NULL default '0',
|
||||||
|
`delay` int(11) unsigned NOT NULL default '0',
|
||||||
|
`command` int(11) unsigned NOT NULL default '0',
|
||||||
|
`datalong` int(11) unsigned NOT NULL default '0',
|
||||||
|
`datalong2` int(11) unsigned NOT NULL default '0',
|
||||||
|
`dataint` int(11) unsigned NOT NULL default '0',
|
||||||
|
`x` float NOT NULL default '0',
|
||||||
|
`y` float NOT NULL default '0',
|
||||||
|
`z` float NOT NULL default '0',
|
||||||
|
`o` float NOT NULL default '0',
|
||||||
|
`guid` int(11) NOT NULL default '0',
|
||||||
|
PRIMARY KEY (`guid`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Dumping data for table `waypoint_scripts`
|
||||||
|
--
|
||||||
|
|
||||||
|
LOCK TABLES `waypoint_scripts` WRITE;
|
||||||
|
/*!40000 ALTER TABLE `waypoint_scripts` DISABLE KEYS */;
|
||||||
|
/*!40000 ALTER TABLE `waypoint_scripts` ENABLE KEYS */;
|
||||||
|
UNLOCK TABLES;
|
||||||
|
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
|
|
||||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||||
|
|||||||
@@ -684,7 +684,7 @@ void ScriptedAI::DoZoneInCombat(Unit* pUnit)
|
|||||||
for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||||
{
|
{
|
||||||
if (Player* i_pl = i->getSource())
|
if (Player* i_pl = i->getSource())
|
||||||
if (!i_pl->isAlive())
|
if (i_pl->isAlive())
|
||||||
{
|
{
|
||||||
pUnit->SetInCombatWith(i_pl);
|
pUnit->SetInCombatWith(i_pl);
|
||||||
i_pl->SetInCombatWith(pUnit);
|
i_pl->SetInCombatWith(pUnit);
|
||||||
@@ -726,6 +726,12 @@ void ScriptedAI::DoModifyThreatPercent(Unit *pUnit, int32 pct)
|
|||||||
m_creature->getThreatManager().modifyThreatPercent(pUnit, pct);
|
m_creature->getThreatManager().modifyThreatPercent(pUnit, pct);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ScriptedAI::DoTeleportTo(float x, float y, float z, uint32 time)
|
||||||
|
{
|
||||||
|
m_creature->Relocate(x,y,z);
|
||||||
|
m_creature->SendMonsterMove(x, y, z, time);
|
||||||
|
}
|
||||||
|
|
||||||
void ScriptedAI::DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o)
|
void ScriptedAI::DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o)
|
||||||
{
|
{
|
||||||
if(!pUnit || pUnit->GetTypeId() != TYPEID_PLAYER)
|
if(!pUnit || pUnit->GetTypeId() != TYPEID_PLAYER)
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
|
|||||||
float DoGetThreat(Unit *u);
|
float DoGetThreat(Unit *u);
|
||||||
void DoModifyThreatPercent(Unit *pUnit, int32 pct);
|
void DoModifyThreatPercent(Unit *pUnit, int32 pct);
|
||||||
|
|
||||||
|
void DoTeleportTo(float x, float y, float z, uint32 time = 0);
|
||||||
|
|
||||||
//Teleports a player without dropping threat (only teleports to same map)
|
//Teleports a player without dropping threat (only teleports to same map)
|
||||||
void DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o);
|
void DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o);
|
||||||
void DoTeleportAll(float x, float y, float z, float o);
|
void DoTeleportAll(float x, float y, float z, float o);
|
||||||
|
|||||||
+1
-2
@@ -192,8 +192,7 @@ struct TRINITY_DLL_DECL boss_talon_king_ikissAI : public ScriptedAI
|
|||||||
float Y = target->GetPositionY();
|
float Y = target->GetPositionY();
|
||||||
float Z = target->GetPositionZ();
|
float Z = target->GetPositionZ();
|
||||||
|
|
||||||
m_creature->Relocate(X,Y,Z);
|
DoTeleportTo(X,Y,Z);
|
||||||
m_creature->SendMonsterMove(X, Y, Z, 0, 0, 0);
|
|
||||||
|
|
||||||
DoCast(target,SPELL_BLINK_TELEPORT);
|
DoCast(target,SPELL_BLINK_TELEPORT);
|
||||||
Blink = true;
|
Blink = true;
|
||||||
|
|||||||
@@ -1470,8 +1470,7 @@ struct TRINITY_DLL_DECL boss_maievAI : public ScriptedAI
|
|||||||
m_creature->AttackStop();
|
m_creature->AttackStop();
|
||||||
m_creature->InterruptNonMeleeSpells(false);
|
m_creature->InterruptNonMeleeSpells(false);
|
||||||
m_creature->GetMotionMaster()->Clear(false);
|
m_creature->GetMotionMaster()->Clear(false);
|
||||||
m_creature->Relocate(x, y, z);
|
DoTeleportTo(x, y, z);
|
||||||
m_creature->SendMonsterMove(x, y, z, 0, 0, 0);
|
|
||||||
DoCast(m_creature, SPELL_TELEPORT_VISUAL, true);
|
DoCast(m_creature, SPELL_TELEPORT_VISUAL, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1947,7 +1946,7 @@ void boss_illidan_stormrageAI::HandleTalkSequence()
|
|||||||
Akama->GetMotionMaster()->Clear(false);
|
Akama->GetMotionMaster()->Clear(false);
|
||||||
//Akama->GetMotionMaster()->MoveIdle();
|
//Akama->GetMotionMaster()->MoveIdle();
|
||||||
Akama->Relocate(x, y, z);
|
Akama->Relocate(x, y, z);
|
||||||
Akama->SendMonsterMove(x, y, z, 0, 0, 0);//Illidan must not die until Akama arrives.
|
Akama->SendMonsterMove(x, y, z, 0);//Illidan must not die until Akama arrives.
|
||||||
Akama->GetMotionMaster()->MoveChase(m_creature);
|
Akama->GetMotionMaster()->MoveChase(m_creature);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -306,8 +306,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
|||||||
DoCast(m_creature,8149);
|
DoCast(m_creature,8149);
|
||||||
|
|
||||||
//Teleport self to a hiding spot (this causes errors in the Trinity log but no real issues)
|
//Teleport self to a hiding spot (this causes errors in the Trinity log but no real issues)
|
||||||
m_creature->Relocate(HIDE_X,HIDE_Y,HIDE_Z,0);
|
DoTeleportTo(HIDE_X,HIDE_Y,HIDE_Z);
|
||||||
m_creature->SendMonsterMove(HIDE_X,HIDE_Y,HIDE_Z,0,true,0);
|
|
||||||
m_creature->addUnitState(UNIT_STAT_FLEEING);
|
m_creature->addUnitState(UNIT_STAT_FLEEING);
|
||||||
|
|
||||||
//Spawn nef and have him attack a random target
|
//Spawn nef and have him attack a random target
|
||||||
|
|||||||
+1
-2
@@ -402,8 +402,7 @@ struct TRINITY_DLL_DECL boss_lady_vashjAI : public ScriptedAI
|
|||||||
Phase = 2;
|
Phase = 2;
|
||||||
|
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->Relocate(MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
|
DoTeleportTo(MIDDLE_X, MIDDLE_Y, MIDDLE_Z);
|
||||||
m_creature->SendMonsterMove(MIDDLE_X, MIDDLE_Y, MIDDLE_Z, 0, 0, 0);
|
|
||||||
|
|
||||||
Creature *pCreature;
|
Creature *pCreature;
|
||||||
for(uint8 i = 0; i < 4; i++)
|
for(uint8 i = 0; i < 4; i++)
|
||||||
|
|||||||
@@ -95,10 +95,12 @@ struct TRINITY_DLL_DECL boss_shazzrahAI : public ScriptedAI
|
|||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
|
||||||
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0);
|
if(target)
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(),0,true,0);
|
{
|
||||||
|
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
DoCast(target,SPELL_ARCANEEXPLOSION);
|
DoCast(target,SPELL_ARCANEEXPLOSION);
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
|
}
|
||||||
|
|
||||||
Blink_Timer = 45000;
|
Blink_Timer = 45000;
|
||||||
}else Blink_Timer -= diff;
|
}else Blink_Timer -= diff;
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -176,7 +176,7 @@ struct TRINITY_DLL_DECL boss_vemAI : public ScriptedAI
|
|||||||
if(target)
|
if(target)
|
||||||
{
|
{
|
||||||
DoCast(target, SPELL_CHARGE);
|
DoCast(target, SPELL_CHARGE);
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
//m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,8 +103,7 @@ struct TRINITY_DLL_DECL boss_ouroAI : public ScriptedAI
|
|||||||
Unit* target = NULL;
|
Unit* target = NULL;
|
||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
|
|
||||||
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
|
||||||
|
|
||||||
ChangeTarget_Timer = 10000 + rand()%10000;
|
ChangeTarget_Timer = 10000 + rand()%10000;
|
||||||
}else ChangeTarget_Timer -= diff;
|
}else ChangeTarget_Timer -= diff;
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ struct TRINITY_DLL_DECL npc_lady_sylvanas_windrunnerAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if( Unit* target = Unit::GetUnit(*summoned,targetGUID) )
|
if( Unit* target = Unit::GetUnit(*summoned,targetGUID) )
|
||||||
{
|
{
|
||||||
target->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), myZ+15.0,0,0,0);
|
target->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), myZ+15.0,0);
|
||||||
target->Relocate(target->GetPositionX(), target->GetPositionY(), myZ+15.0);
|
target->Relocate(target->GetPositionX(), target->GetPositionY(), myZ+15.0);
|
||||||
summoned->CastSpell(target, SPELL_RIBBON_OF_SOULS, false);
|
summoned->CastSpell(target, SPELL_RIBBON_OF_SOULS, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ struct TRINITY_DLL_DECL boss_akilzonAI : public ScriptedAI
|
|||||||
if (target)
|
if (target)
|
||||||
{
|
{
|
||||||
target->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
target->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
||||||
target->SendMonsterMove(x,y,m_creature->GetPositionZ()+15,0,0,0);
|
target->SendMonsterMove(x,y,m_creature->GetPositionZ()+15,0);
|
||||||
}
|
}
|
||||||
Unit *Cloud = m_creature->SummonTrigger(x, y, m_creature->GetPositionZ()+16, 0, 15000);
|
Unit *Cloud = m_creature->SummonTrigger(x, y, m_creature->GetPositionZ()+16, 0, 15000);
|
||||||
if(Cloud)
|
if(Cloud)
|
||||||
|
|||||||
@@ -365,8 +365,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
|
|||||||
|
|
||||||
m_creature->AttackStop();
|
m_creature->AttackStop();
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->Relocate(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2],0);
|
DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]);
|
||||||
m_creature->SendMonsterMove(JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2],0,0,0);
|
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
m_creature->CastSpell(m_creature, SPELL_FIRE_BOMB_CHANNEL, false);
|
m_creature->CastSpell(m_creature, SPELL_FIRE_BOMB_CHANNEL, false);
|
||||||
//DoTeleportPlayer(m_creature, JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2], 0);
|
//DoTeleportPlayer(m_creature, JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2], 0);
|
||||||
@@ -399,8 +398,7 @@ struct TRINITY_DLL_DECL boss_janalaiAI : public ScriptedAI
|
|||||||
|
|
||||||
m_creature->AttackStop();
|
m_creature->AttackStop();
|
||||||
m_creature->GetMotionMaster()->Clear();
|
m_creature->GetMotionMaster()->Clear();
|
||||||
m_creature->Relocate(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2],0);
|
DoTeleportTo(JanalainPos[0][0],JanalainPos[0][1],JanalainPos[0][2]);
|
||||||
m_creature->SendMonsterMove(JanalainPos[0][0], JanalainPos[0][1],JanalainPos[0][2],0,0,0);
|
|
||||||
m_creature->StopMoving();
|
m_creature->StopMoving();
|
||||||
m_creature->CastSpell(m_creature, SPELL_HATCH_ALL, false);
|
m_creature->CastSpell(m_creature, SPELL_HATCH_ALL, false);
|
||||||
HatchAllEggs(2);
|
HatchAllEggs(2);
|
||||||
|
|||||||
@@ -338,8 +338,7 @@ struct TRINITY_DLL_DECL boss_zuljinAI : public ScriptedAI
|
|||||||
case 2:
|
case 2:
|
||||||
case 3:
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
m_creature->Relocate(CENTER_X, CENTER_Y, CENTER_Z,0);
|
DoTeleportTo(CENTER_X, CENTER_Y, CENTER_Z, 100);
|
||||||
m_creature->SendMonsterMove(CENTER_X, CENTER_Y, CENTER_Z,0,0,100);
|
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
|
m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID, 0);
|
||||||
m_creature->RemoveAurasDueToSpell(Transform[Phase].unaura);
|
m_creature->RemoveAurasDueToSpell(Transform[Phase].unaura);
|
||||||
|
|||||||
@@ -106,9 +106,6 @@ struct TRINITY_DLL_DECL boss_jeklikAI : public ScriptedAI
|
|||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
DoCast(target,SPELL_CHARGE);
|
DoCast(target,SPELL_CHARGE);
|
||||||
|
|
||||||
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ struct TRINITY_DLL_DECL boss_mandokirAI : public ScriptedAI
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
DoCast(pUnit,SPELL_CHARGE);
|
DoCast(pUnit,SPELL_CHARGE);
|
||||||
m_creature->SendMonsterMove(pUnit->GetPositionX(), pUnit->GetPositionY(), pUnit->GetPositionZ(), 0, true,1);
|
//m_creature->SendMonsterMove(pUnit->GetPositionX(), pUnit->GetPositionY(), pUnit->GetPositionZ(), 0, true,1);
|
||||||
AttackStart(pUnit);
|
AttackStart(pUnit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,8 +83,7 @@ struct TRINITY_DLL_DECL boss_renatakiAI : public ScriptedAI
|
|||||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||||
if (target)
|
if (target)
|
||||||
{
|
{
|
||||||
m_creature->Relocate(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0);
|
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
|
||||||
DoCast(target,SPELL_AMBUSH);
|
DoCast(target,SPELL_AMBUSH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -194,7 +194,6 @@ struct TRINITY_DLL_DECL boss_thekalAI : public ScriptedAI
|
|||||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||||
{
|
{
|
||||||
DoCast(target,SPELL_CHARGE);
|
DoCast(target,SPELL_CHARGE);
|
||||||
m_creature->SendMonsterMove(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, true,1);
|
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1151,7 +1151,7 @@ void Creature::AI_SendMoveToPacket(float x, float y, float z, uint32 time, uint3
|
|||||||
|
|
||||||
m_startMove = getMSTime();
|
m_startMove = getMSTime();
|
||||||
m_moveTime = time;*/
|
m_moveTime = time;*/
|
||||||
SendMonsterMove(x, y, z, type, MovementFlags, time);
|
SendMonsterMove(x, y, z, time);
|
||||||
}
|
}
|
||||||
|
|
||||||
Player *Creature::GetLootRecipient() const
|
Player *Creature::GetLootRecipient() const
|
||||||
|
|||||||
@@ -148,7 +148,13 @@ Map* MapInstanced::GetInstance(const WorldObject* obj)
|
|||||||
// instantiate or find existing bg map for player
|
// instantiate or find existing bg map for player
|
||||||
// the instance id is set in battlegroundid
|
// the instance id is set in battlegroundid
|
||||||
NewInstanceId = player->GetBattleGroundId();
|
NewInstanceId = player->GetBattleGroundId();
|
||||||
assert(NewInstanceId);
|
if(!NewInstanceId)
|
||||||
|
{
|
||||||
|
if(player->GetSession()->PlayerLoading())
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
assert(NewInstanceId);
|
||||||
|
}
|
||||||
map = _FindMap(NewInstanceId);
|
map = _FindMap(NewInstanceId);
|
||||||
if(!map)
|
if(!map)
|
||||||
map = CreateBattleGround(NewInstanceId);
|
map = CreateBattleGround(NewInstanceId);
|
||||||
|
|||||||
@@ -2111,25 +2111,6 @@ void Spell::cancel()
|
|||||||
|
|
||||||
finish(false);
|
finish(false);
|
||||||
|
|
||||||
// Unsummon summon as possessed creatures on spell cancel
|
|
||||||
if(m_caster->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
{
|
|
||||||
for(int i = 0; i < 3; ++i)
|
|
||||||
{
|
|
||||||
if(m_spellInfo->Effect[i] == SPELL_EFFECT_SUMMON &&
|
|
||||||
(m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED ||
|
|
||||||
m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 ||
|
|
||||||
m_spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
|
|
||||||
{
|
|
||||||
((Player*)m_caster)->StopCastingCharm();
|
|
||||||
break;
|
|
||||||
// Possession is removed in the UnSummon function
|
|
||||||
//if (m_caster->GetCharm())
|
|
||||||
// ((TemporarySummon*)m_caster->GetCharm())->UnSummon();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
m_caster->RemoveDynObject(m_spellInfo->Id);
|
m_caster->RemoveDynObject(m_spellInfo->Id);
|
||||||
m_caster->RemoveGameObject(m_spellInfo->Id,true);
|
m_caster->RemoveGameObject(m_spellInfo->Id,true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ template<>
|
|||||||
inline void Traveller<Player>::MoveTo(float x, float y, float z, uint32 t)
|
inline void Traveller<Player>::MoveTo(float x, float y, float z, uint32 t)
|
||||||
{
|
{
|
||||||
//Only send MOVEMENTFLAG_WALK_MODE, client has strange issues with other move flags
|
//Only send MOVEMENTFLAG_WALK_MODE, client has strange issues with other move flags
|
||||||
i_traveller.SendMonsterMove(x, y, z, 0, MOVEMENTFLAG_WALK_MODE, t);
|
i_traveller.SendMonsterMove(x, y, z, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef Traveller<Creature> CreatureTraveller;
|
typedef Traveller<Creature> CreatureTraveller;
|
||||||
|
|||||||
+54
-10
@@ -300,10 +300,41 @@ void Unit::SendMonsterMoveWithSpeed(float x, float y, float z, uint32 MovementFl
|
|||||||
transitTime = static_cast<uint32>(dist / speed + 0.5);
|
transitTime = static_cast<uint32>(dist / speed + 0.5);
|
||||||
}
|
}
|
||||||
//float orientation = (float)atan2((double)dy, (double)dx);
|
//float orientation = (float)atan2((double)dy, (double)dx);
|
||||||
SendMonsterMove(x, y, z, 0, MovementFlags, transitTime, player);
|
SendMonsterMove(x, y, z, transitTime, player);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player)
|
void Unit::SendMonsterStop()
|
||||||
|
{
|
||||||
|
WorldPacket data( SMSG_MONSTER_MOVE, (17 + GetPackGUID().size()) );
|
||||||
|
data.append(GetPackGUID());
|
||||||
|
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
||||||
|
data << getMSTime();
|
||||||
|
data << uint8(1);
|
||||||
|
SendMessageToSet(&data, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 Time, Player* player)
|
||||||
|
{
|
||||||
|
WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) );
|
||||||
|
data.append(GetPackGUID());
|
||||||
|
|
||||||
|
data << GetPositionX() << GetPositionY() << GetPositionZ();
|
||||||
|
data << getMSTime();
|
||||||
|
|
||||||
|
data << uint8(0);
|
||||||
|
data << uint32((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK);
|
||||||
|
|
||||||
|
data << Time; // Time in between points
|
||||||
|
data << uint32(1); // 1 single waypoint
|
||||||
|
data << NewPosX << NewPosY << NewPosZ; // the single waypoint Point B
|
||||||
|
|
||||||
|
if(player)
|
||||||
|
player->GetSession()->SendPacket(&data);
|
||||||
|
else
|
||||||
|
SendMessageToSet( &data, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player)
|
||||||
{
|
{
|
||||||
WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) );
|
WorldPacket data( SMSG_MONSTER_MOVE, (41 + GetPackGUID().size()) );
|
||||||
data.append(GetPackGUID());
|
data.append(GetPackGUID());
|
||||||
@@ -337,7 +368,7 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 ty
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Movement Flags (0x0 = walk, 0x100 = run, 0x200 = fly/swim)
|
//Movement Flags (0x0 = walk, 0x100 = run, 0x200 = fly/swim)
|
||||||
data << uint32(GetTypeId() == TYPEID_PLAYER ? MOVEMENTFLAG_WALK_MODE : MovementFlags);
|
data << uint32((MovementFlags & MOVEMENTFLAG_LEVITATING) ? MOVEFLAG_FLY : MOVEFLAG_WALK);
|
||||||
|
|
||||||
data << Time; // Time in between points
|
data << Time; // Time in between points
|
||||||
data << uint32(1); // 1 single waypoint
|
data << uint32(1); // 1 single waypoint
|
||||||
@@ -347,9 +378,9 @@ void Unit::SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 ty
|
|||||||
player->GetSession()->SendPacket(&data);
|
player->GetSession()->SendPacket(&data);
|
||||||
else
|
else
|
||||||
SendMessageToSet( &data, true );
|
SendMessageToSet( &data, true );
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, uint32 MovementFlags)
|
void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end)
|
||||||
{
|
{
|
||||||
uint32 traveltime = uint32(path.GetTotalLength(start, end) * 32);
|
uint32 traveltime = uint32(path.GetTotalLength(start, end) * 32);
|
||||||
|
|
||||||
@@ -361,13 +392,10 @@ void Unit::SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, uin
|
|||||||
data << GetPositionY();
|
data << GetPositionY();
|
||||||
data << GetPositionZ();
|
data << GetPositionZ();
|
||||||
|
|
||||||
// unknown field - unrelated to orientation
|
|
||||||
// seems to increment about 1000 for every 1.7 seconds
|
|
||||||
// for now, we'll just use mstime
|
|
||||||
data << getMSTime();
|
data << getMSTime();
|
||||||
|
|
||||||
data << uint8( 0 );
|
data << uint8( 0 );
|
||||||
data << uint32( MovementFlags );
|
data << uint32(((GetUnitMovementFlags() & MOVEMENTFLAG_LEVITATING) || isInFlight())? MOVEFLAG_FLY : MOVEFLAG_WALK);
|
||||||
data << uint32( traveltime );
|
data << uint32( traveltime );
|
||||||
data << uint32( pathSize );
|
data << uint32( pathSize );
|
||||||
data.append( (char*)path.GetNodes(start), pathSize * 4 * 3 );
|
data.append( (char*)path.GetNodes(start), pathSize * 4 * 3 );
|
||||||
@@ -4150,6 +4178,22 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unsummon summon as possessed creatures on spell cancel
|
||||||
|
if(caster->GetTypeId() == TYPEID_PLAYER)
|
||||||
|
{
|
||||||
|
for(int i = 0; i < 3; ++i)
|
||||||
|
{
|
||||||
|
if(AurSpellInfo->Effect[i] == SPELL_EFFECT_SUMMON &&
|
||||||
|
(AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED ||
|
||||||
|
AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 ||
|
||||||
|
AurSpellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
|
||||||
|
{
|
||||||
|
((Player*)caster)->StopCastingCharm();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11425,7 +11469,7 @@ void Unit::StopMoving()
|
|||||||
// Relocate(GetPositionX(), GetPositionY(), z);
|
// Relocate(GetPositionX(), GetPositionY(), z);
|
||||||
Relocate(GetPositionX(), GetPositionY(),GetPositionZ());
|
Relocate(GetPositionX(), GetPositionY(),GetPositionZ());
|
||||||
|
|
||||||
SendMonsterMove(GetPositionX(), GetPositionY(), GetPositionZ(), 0, true, 0);
|
SendMonsterStop();
|
||||||
|
|
||||||
// update position and orientation;
|
// update position and orientation;
|
||||||
WorldPacket data;
|
WorldPacket data;
|
||||||
|
|||||||
+17
-4
@@ -582,6 +582,17 @@ enum NPCFlags
|
|||||||
UNIT_NPC_FLAG_OUTDOORPVP = 0x20000000, // custom flag for outdoor pvp creatures
|
UNIT_NPC_FLAG_OUTDOORPVP = 0x20000000, // custom flag for outdoor pvp creatures
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum MoveFlags
|
||||||
|
{
|
||||||
|
MOVEFLAG_NONE = 0x00000000,
|
||||||
|
MOVEFLAG_SLIDE = 0x00000002,
|
||||||
|
MOVEFLAG_MARCH_ON_SPOT = 0x00000004,
|
||||||
|
MOVEFLAG_JUMP = 0x00000008,
|
||||||
|
MOVEFLAG_WALK = 0x00000100,
|
||||||
|
MOVEFLAG_FLY = 0x00000200, //For dragon (+walk = glide)
|
||||||
|
MOVEFLAG_ORIENTATION = 0x00000400, //Fix orientation
|
||||||
|
};
|
||||||
|
|
||||||
enum MovementFlags
|
enum MovementFlags
|
||||||
{
|
{
|
||||||
MOVEMENTFLAG_NONE = 0x00000000,
|
MOVEMENTFLAG_NONE = 0x00000000,
|
||||||
@@ -593,8 +604,8 @@ enum MovementFlags
|
|||||||
MOVEMENTFLAG_RIGHT = 0x00000020,
|
MOVEMENTFLAG_RIGHT = 0x00000020,
|
||||||
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
MOVEMENTFLAG_PITCH_UP = 0x00000040,
|
||||||
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
MOVEMENTFLAG_PITCH_DOWN = 0x00000080,
|
||||||
MOVEMENTFLAG_WALK_MODE = 0x00000100, // Walking
|
MOVEMENTFLAG_WALK_MODE = 0x00000100,
|
||||||
MOVEMENTFLAG_ONTRANSPORT = 0x00000200, // Used for flying on some creatures
|
MOVEMENTFLAG_ONTRANSPORT = 0x00000200,
|
||||||
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
MOVEMENTFLAG_LEVITATING = 0x00000400,
|
||||||
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
MOVEMENTFLAG_FLY_UNK1 = 0x00000800,
|
||||||
MOVEMENTFLAG_JUMPING = 0x00001000,
|
MOVEMENTFLAG_JUMPING = 0x00001000,
|
||||||
@@ -1124,8 +1135,10 @@ class TRINITY_DLL_SPEC Unit : public WorldObject
|
|||||||
void SendSpellNonMeleeDamageLog(Unit *target,uint32 SpellID,uint32 Damage, SpellSchoolMask damageSchoolMask,uint32 AbsorbedDamage, uint32 Resist,bool PhysicalDamage, uint32 Blocked, bool CriticalHit = false);
|
void SendSpellNonMeleeDamageLog(Unit *target,uint32 SpellID,uint32 Damage, SpellSchoolMask damageSchoolMask,uint32 AbsorbedDamage, uint32 Resist,bool PhysicalDamage, uint32 Blocked, bool CriticalHit = false);
|
||||||
void SendSpellMiss(Unit *target, uint32 spellID, SpellMissInfo missInfo);
|
void SendSpellMiss(Unit *target, uint32 spellID, SpellMissInfo missInfo);
|
||||||
|
|
||||||
void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player = NULL);
|
void SendMonsterStop();
|
||||||
void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end, uint32 MovementFlags);
|
void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint32 Time, Player* player = NULL);
|
||||||
|
//void SendMonsterMove(float NewPosX, float NewPosY, float NewPosZ, uint8 type, uint32 MovementFlags, uint32 Time, Player* player = NULL);
|
||||||
|
void SendMonsterMoveByPath(Path const& path, uint32 start, uint32 end);
|
||||||
void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 MovementFlags, uint32 transitTime = 0, Player* player = NULL);
|
void SendMonsterMoveWithSpeed(float x, float y, float z, uint32 MovementFlags, uint32 transitTime = 0, Player* player = NULL);
|
||||||
void SendMonsterMoveWithSpeedToCurrentDestination(Player* player = NULL);
|
void SendMonsterMoveWithSpeedToCurrentDestination(Player* player = NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ FlightPathMovementGenerator::Initialize(Player &player)
|
|||||||
// do not send movement, it was sent already
|
// do not send movement, it was sent already
|
||||||
i_destinationHolder.SetDestination(traveller, i_path[i_currentNode].x, i_path[i_currentNode].y, i_path[i_currentNode].z, false);
|
i_destinationHolder.SetDestination(traveller, i_path[i_currentNode].x, i_path[i_currentNode].y, i_path[i_currentNode].z, false);
|
||||||
|
|
||||||
player.SendMonsterMoveByPath(GetPath(),GetCurrentNode(),GetPathAtMapEnd(),MOVEMENTFLAG_WALK_MODE|MOVEMENTFLAG_ONTRANSPORT);
|
player.SendMonsterMoveByPath(GetPath(),GetCurrentNode(),GetPathAtMapEnd());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FlightPathMovementGenerator::Finalize(Player & player)
|
void FlightPathMovementGenerator::Finalize(Player & player)
|
||||||
|
|||||||
Reference in New Issue
Block a user