mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
Merge remote branch 'origin/master' into 330
This commit is contained in:
commit
90d76c61fa
17 changed files with 296 additions and 46 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_9015_01_mangos_spell_bonus_data` bit(1) default NULL
|
`required_9025_01_mangos_spell_proc_event` 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';
|
||||||
|
|
||||||
--
|
--
|
||||||
|
|
@ -14036,6 +14036,7 @@ INSERT INTO `spell_bonus_data` VALUES
|
||||||
/* Druid */
|
/* Druid */
|
||||||
(5185, 1.6104, 0, 0, 'Druid - Healing Touch'),
|
(5185, 1.6104, 0, 0, 'Druid - Healing Touch'),
|
||||||
(339, 0, 0.1, 0, 'Druid - Entangling Roots'),
|
(339, 0, 0.1, 0, 'Druid - Entangling Roots'),
|
||||||
|
(60089, 0, 0, 0.05, 'Druid - Faerie Fire (Feral) Triggered'),
|
||||||
(42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'),
|
(42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'),
|
||||||
(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
|
(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
|
||||||
(33763, 0, 0.09518, 0, 'Druid - Lifebloom'),
|
(33763, 0, 0.09518, 0, 'Druid - Lifebloom'),
|
||||||
|
|
@ -18520,6 +18521,7 @@ INSERT INTO `spell_proc_event` VALUES
|
||||||
(63156, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(63156, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(63245, 0x00000000, 5, 0x00000100, 0x00800000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
(63245, 0x00000000, 5, 0x00000100, 0x00800000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||||
(63320, 0x00000000, 5, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(63320, 0x00000000, 5, 0x00040000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
(63373, 0x00000000, 11, 0x80000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(63534, 0x00000000, 6, 0x00000040, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0),
|
(63534, 0x00000000, 6, 0x00000040, 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(63625, 0x00000000, 6, 0x02000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0),
|
(63625, 0x00000000, 6, 0x02000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
(63730, 0x00000000, 6, 0x00000800, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(63730, 0x00000000, 6, 0x00000800, 0x00000004, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||||
|
|
@ -18646,18 +18648,33 @@ CREATE TABLE `spell_threat` (
|
||||||
LOCK TABLES `spell_threat` WRITE;
|
LOCK TABLES `spell_threat` WRITE;
|
||||||
/*!40000 ALTER TABLE `spell_threat` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_threat` DISABLE KEYS */;
|
||||||
INSERT INTO `spell_threat` VALUES
|
INSERT INTO `spell_threat` VALUES
|
||||||
|
(72,293),
|
||||||
(78,20),
|
(78,20),
|
||||||
|
(99,42),
|
||||||
(284,39),
|
(284,39),
|
||||||
(285,59),
|
(285,59),
|
||||||
|
(469,40),
|
||||||
|
(676,104),
|
||||||
(770,108),
|
(770,108),
|
||||||
|
(845,10),
|
||||||
|
(1160,16),
|
||||||
(1608,78),
|
(1608,78),
|
||||||
(1672,180),
|
(1672,180),
|
||||||
(1715,61),
|
(1715,61),
|
||||||
|
(1735,42),
|
||||||
|
(2048,70),
|
||||||
(2139,300),
|
(2139,300),
|
||||||
|
(5242,26),
|
||||||
|
(6190,26),
|
||||||
|
(6192,32),
|
||||||
(6343,17),
|
(6343,17),
|
||||||
(6572,155),
|
(6572,155),
|
||||||
|
(6673,18),
|
||||||
(6574,195),
|
(6574,195),
|
||||||
(6809,89),
|
(6807,322),
|
||||||
|
(6808,322),
|
||||||
|
(6809,322),
|
||||||
|
(7369,40),
|
||||||
(7372,101),
|
(7372,101),
|
||||||
(7373,141),
|
(7373,141),
|
||||||
(7379,235),
|
(7379,235),
|
||||||
|
|
@ -18665,10 +18682,18 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(8198,40),
|
(8198,40),
|
||||||
(8204,64),
|
(8204,64),
|
||||||
(8205,96),
|
(8205,96),
|
||||||
(8972,118),
|
(8972,322),
|
||||||
(9745,148),
|
(9490,42),
|
||||||
(9880,178),
|
(9745,322),
|
||||||
(9881,207),
|
(9747,42),
|
||||||
|
(9880,322),
|
||||||
|
(9881,322),
|
||||||
|
(9898,42),
|
||||||
|
(11549,40),
|
||||||
|
(11550,48),
|
||||||
|
(11551,56),
|
||||||
|
(11554,30),
|
||||||
|
(11555,37),
|
||||||
(11556,43),
|
(11556,43),
|
||||||
(11564,98),
|
(11564,98),
|
||||||
(11565,118),
|
(11565,118),
|
||||||
|
|
@ -18678,6 +18703,8 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(11581,180),
|
(11581,180),
|
||||||
(11600,275),
|
(11600,275),
|
||||||
(11601,315),
|
(11601,315),
|
||||||
|
(11608,60),
|
||||||
|
(11609,70),
|
||||||
(11775,395),
|
(11775,395),
|
||||||
(14921,415),
|
(14921,415),
|
||||||
(16857,108),
|
(16857,108),
|
||||||
|
|
@ -18696,14 +18723,17 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(23925,250),
|
(23925,250),
|
||||||
(24394,580),
|
(24394,580),
|
||||||
(24583,5),
|
(24583,5),
|
||||||
|
(25202,50),
|
||||||
|
(25203,55),
|
||||||
(25231,130),
|
(25231,130),
|
||||||
(25258,286),
|
(25258,286),
|
||||||
(25264,215),
|
(25264,215),
|
||||||
(25269,400),
|
(25269,400),
|
||||||
(25286,175),
|
(25286,175),
|
||||||
(25288,355),
|
(25288,355),
|
||||||
(25289,60),
|
(25289,62),
|
||||||
(26996,176),
|
(26996,322),
|
||||||
|
(26998,42),
|
||||||
(27179,54),
|
(27179,54),
|
||||||
(29704,230),
|
(29704,230),
|
||||||
(29707,196),
|
(29707,196),
|
||||||
|
|
@ -18713,7 +18743,28 @@ INSERT INTO `spell_threat` VALUES
|
||||||
(33745,285),
|
(33745,285),
|
||||||
(33878,129),
|
(33878,129),
|
||||||
(33986,180),
|
(33986,180),
|
||||||
(33987,232);
|
(33987,232),
|
||||||
|
(47436,78),
|
||||||
|
(47437,63),
|
||||||
|
(47439,60),
|
||||||
|
(47440,80),
|
||||||
|
(47449,236),
|
||||||
|
(47450,259),
|
||||||
|
(47487,520),
|
||||||
|
(47488,770),
|
||||||
|
(47497,101),
|
||||||
|
(47498,101),
|
||||||
|
(47501,235),
|
||||||
|
(47502,260),
|
||||||
|
(47519,180),
|
||||||
|
(47520,225),
|
||||||
|
(48479,322),
|
||||||
|
(48480,322),
|
||||||
|
(48559,42),
|
||||||
|
(48560,42),
|
||||||
|
(48567,285),
|
||||||
|
(48568,285),
|
||||||
|
(57823,500);
|
||||||
/*!40000 ALTER TABLE `spell_threat` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_threat` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ CREATE TABLE `realmlist` (
|
||||||
LOCK TABLES `realmlist` WRITE;
|
LOCK TABLES `realmlist` WRITE;
|
||||||
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
||||||
INSERT INTO `realmlist` VALUES
|
INSERT INTO `realmlist` VALUES
|
||||||
(1,'MaNGOS','127.0.0.1',8085,1,0,1,0,0);
|
(1,'MaNGOS','127.0.0.1',8085,1,0,1,0,0,'');
|
||||||
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `realmlist` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|
|
||||||
5
sql/updates/9018_01_mangos_spell_bonus_data.sql
Normal file
5
sql/updates/9018_01_mangos_spell_bonus_data.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_9015_01_mangos_spell_bonus_data required_9018_01_mangos_spell_bonus_data bit;
|
||||||
|
|
||||||
|
DELETE FROM spell_bonus_data WHERE entry = 60089;
|
||||||
|
INSERT INTO spell_bonus_data VALUES
|
||||||
|
(60089,0,0,0.05,'Druid - Faerie Fire (Feral) Triggered');
|
||||||
108
sql/updates/9019_01_mangos_spell_threat.sql
Normal file
108
sql/updates/9019_01_mangos_spell_threat.sql
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_9018_01_mangos_spell_bonus_data required_9019_01_mangos_spell_threat bit;
|
||||||
|
|
||||||
|
DELETE FROM spell_threat WHERE entry IN (
|
||||||
|
-- Battle Shout
|
||||||
|
6673, 5242, 6192, 11549, 11550, 11551, 25289, 2048, 47436,
|
||||||
|
-- Commanding Shout
|
||||||
|
469, 47439, 47440,
|
||||||
|
-- Demoralizing Shout
|
||||||
|
1160, 6190, 11554, 11555, 11556, 25202, 25203, 47437,
|
||||||
|
-- Cleave
|
||||||
|
845, 7369, 11608, 11609, 20569, 25231, 47519, 47520,
|
||||||
|
-- Devastate
|
||||||
|
47497, 47498,
|
||||||
|
-- Disarm
|
||||||
|
676,
|
||||||
|
-- Heroic Strike
|
||||||
|
47450, 47449,
|
||||||
|
-- Revenge
|
||||||
|
57823,
|
||||||
|
-- Shield Bash
|
||||||
|
72,
|
||||||
|
-- Shield Slam
|
||||||
|
47488, 47487,
|
||||||
|
-- Sunder Armor (remove only)
|
||||||
|
47467, 25225, 11597, 11596, 8380, 7405,
|
||||||
|
-- Thunder Clap
|
||||||
|
47502, 47501,
|
||||||
|
-- Maul
|
||||||
|
6807, 6808, 6809, 8972, 9745, 9880, 9881, 26996, 48479, 48480,
|
||||||
|
-- Demoralizing Roar
|
||||||
|
99, 1735, 9490, 9747, 9898, 26998, 48559, 48560,
|
||||||
|
-- Lacerate
|
||||||
|
48567, 48568);
|
||||||
|
|
||||||
|
INSERT INTO spell_threat VALUES
|
||||||
|
-- Battle Shout
|
||||||
|
(6673, 18),
|
||||||
|
(5242, 26),
|
||||||
|
(6192, 32),
|
||||||
|
(11549, 40),
|
||||||
|
(11550, 48),
|
||||||
|
(11551, 56),
|
||||||
|
(25289, 62),
|
||||||
|
(2048, 70),
|
||||||
|
(47436, 78),
|
||||||
|
-- Commanding Shout
|
||||||
|
(469, 40),
|
||||||
|
(47439, 60),
|
||||||
|
(47440, 80),
|
||||||
|
-- Demoralizing Shout
|
||||||
|
(1160, 16),
|
||||||
|
(6190, 26),
|
||||||
|
(11554, 30),
|
||||||
|
(11555, 37),
|
||||||
|
(11556, 43),
|
||||||
|
(25202, 50),
|
||||||
|
(25203, 55),
|
||||||
|
(47437, 63),
|
||||||
|
-- Cleave
|
||||||
|
(845, 10),
|
||||||
|
(7369, 40),
|
||||||
|
(11608, 60),
|
||||||
|
(11609, 70),
|
||||||
|
(20569,100),
|
||||||
|
(25231,130),
|
||||||
|
(47519, 180),
|
||||||
|
(47520, 225),
|
||||||
|
-- Devastate
|
||||||
|
(47497, 101),
|
||||||
|
(47498, 101),
|
||||||
|
-- Disarm
|
||||||
|
(676, 104),
|
||||||
|
-- Heroic Strike
|
||||||
|
(47450, 259),
|
||||||
|
(47449, 236),
|
||||||
|
-- Revenge
|
||||||
|
(57823, 500),
|
||||||
|
-- Shield Bash
|
||||||
|
(72, 293),
|
||||||
|
-- Shield Slam
|
||||||
|
(47488, 770),
|
||||||
|
(47487, 520),
|
||||||
|
-- Thunder Clap
|
||||||
|
(47502, 260),
|
||||||
|
(47501, 235),
|
||||||
|
-- Maul
|
||||||
|
(6807, 322),
|
||||||
|
(6808, 322),
|
||||||
|
(6809, 322),
|
||||||
|
(8972, 322),
|
||||||
|
(9745, 322),
|
||||||
|
(9880, 322),
|
||||||
|
(9881, 322),
|
||||||
|
(26996, 322),
|
||||||
|
(48479, 322),
|
||||||
|
(48480, 322),
|
||||||
|
-- Demoralizing Roar
|
||||||
|
(99, 42),
|
||||||
|
(1735, 42),
|
||||||
|
(9490, 42),
|
||||||
|
(9747, 42),
|
||||||
|
(9898, 42),
|
||||||
|
(26998, 42),
|
||||||
|
(48559, 42),
|
||||||
|
(48560, 42),
|
||||||
|
-- Lacerate
|
||||||
|
(48567, 285),
|
||||||
|
(48568, 285);
|
||||||
5
sql/updates/9025_01_mangos_spell_proc_event.sql
Normal file
5
sql/updates/9025_01_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
ALTER TABLE db_version CHANGE COLUMN required_9019_01_mangos_spell_threat required_9025_01_mangos_spell_proc_event bit;
|
||||||
|
|
||||||
|
DELETE FROM `spell_proc_event` WHERE `entry` = 63373;
|
||||||
|
INSERT INTO `spell_proc_event` VALUES
|
||||||
|
(63373, 0x00000000,11, 0x80000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000, 0.000000, 0.000000, 0);
|
||||||
|
|
@ -213,6 +213,9 @@ pkgdata_DATA = \
|
||||||
9007_01_mangos_spell_proc_event.sql \
|
9007_01_mangos_spell_proc_event.sql \
|
||||||
9010_01_realmd_realmlist.sql \
|
9010_01_realmd_realmlist.sql \
|
||||||
9015_01_mangos_spell_bonus_data.sql \
|
9015_01_mangos_spell_bonus_data.sql \
|
||||||
|
9018_01_mangos_spell_bonus_data.sql \
|
||||||
|
9019_01_mangos_spell_threat.sql \
|
||||||
|
9025_01_mangos_spell_proc_event.sql \
|
||||||
README
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -406,4 +409,7 @@ EXTRA_DIST = \
|
||||||
9007_01_mangos_spell_proc_event.sql \
|
9007_01_mangos_spell_proc_event.sql \
|
||||||
9010_01_realmd_realmlist.sql \
|
9010_01_realmd_realmlist.sql \
|
||||||
9015_01_mangos_spell_bonus_data.sql \
|
9015_01_mangos_spell_bonus_data.sql \
|
||||||
|
9018_01_mangos_spell_bonus_data.sql \
|
||||||
|
9019_01_mangos_spell_threat.sql \
|
||||||
|
9025_01_mangos_spell_proc_event.sql \
|
||||||
README
|
README
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,8 @@
|
||||||
#include "MapManager.h"
|
#include "MapManager.h"
|
||||||
#include "BattleGround.h"
|
#include "BattleGround.h"
|
||||||
#include "BattleGroundAB.h"
|
#include "BattleGroundAB.h"
|
||||||
|
#include "Map.h"
|
||||||
|
#include "InstanceData.h"
|
||||||
|
|
||||||
#include "Policies/SingletonImp.h"
|
#include "Policies/SingletonImp.h"
|
||||||
|
|
||||||
|
|
@ -102,6 +104,8 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
||||||
case ACHIEVEMENT_CRITERIA_REQUIRE_NONE:
|
case ACHIEVEMENT_CRITERIA_REQUIRE_NONE:
|
||||||
case ACHIEVEMENT_CRITERIA_REQUIRE_VALUE:
|
case ACHIEVEMENT_CRITERIA_REQUIRE_VALUE:
|
||||||
case ACHIEVEMENT_CRITERIA_REQUIRE_DISABLED:
|
case ACHIEVEMENT_CRITERIA_REQUIRE_DISABLED:
|
||||||
|
case ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE:
|
||||||
|
case ACHIEVEMENT_CRITERIA_REQUIRE_INSTANCE_SCRIPT:
|
||||||
return true;
|
return true;
|
||||||
case ACHIEVEMENT_CRITERIA_REQUIRE_T_CREATURE:
|
case ACHIEVEMENT_CRITERIA_REQUIRE_T_CREATURE:
|
||||||
if (!creature.id || !ObjectMgr::GetCreatureTemplate(creature.id))
|
if (!creature.id || !ObjectMgr::GetCreatureTemplate(creature.id))
|
||||||
|
|
@ -235,8 +239,6 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
case ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE:
|
|
||||||
return true; // not check correctness node indexes
|
|
||||||
default:
|
default:
|
||||||
sLog.outErrorDb( "Table `achievement_criteria_requirement` (Entry: %u Type: %u) have data for not supported data type (%u), ignore.", criteria->ID, criteria->requiredType,requirementType);
|
sLog.outErrorDb( "Table `achievement_criteria_requirement` (Entry: %u Type: %u) have data for not supported data type (%u), ignore.", criteria->ID, criteria->requiredType,requirementType);
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -244,7 +246,7 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AchievementCriteriaRequirement::Meets(Player const* source, Unit const* target, uint32 miscvalue1 /*= 0*/) const
|
bool AchievementCriteriaRequirement::Meets(uint32 criteria_id, Player const* source, Unit const* target, uint32 miscvalue1 /*= 0*/) const
|
||||||
{
|
{
|
||||||
switch(requirementType)
|
switch(requirementType)
|
||||||
{
|
{
|
||||||
|
|
@ -312,6 +314,16 @@ bool AchievementCriteriaRequirement::Meets(Player const* source, Unit const* tar
|
||||||
return false;
|
return false;
|
||||||
return bg->IsTeamScoreInRange(source->GetTeam()==ALLIANCE ? HORDE : ALLIANCE,bg_loss_team_score.min_score,bg_loss_team_score.max_score);
|
return bg->IsTeamScoreInRange(source->GetTeam()==ALLIANCE ? HORDE : ALLIANCE,bg_loss_team_score.min_score,bg_loss_team_score.max_score);
|
||||||
}
|
}
|
||||||
|
case ACHIEVEMENT_CRITERIA_REQUIRE_INSTANCE_SCRIPT:
|
||||||
|
if (!source->IsInWorld())
|
||||||
|
return false;
|
||||||
|
Map* map = source->GetMap();
|
||||||
|
if (!map->Instanceable())
|
||||||
|
return false;
|
||||||
|
InstanceData* data = ((InstanceMap*)map)->GetInstanceData();
|
||||||
|
if (!data)
|
||||||
|
return false;
|
||||||
|
return data->CheckAchievementCriteriaMeet(criteria_id, source, target, miscvalue1);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
@ -319,7 +331,7 @@ bool AchievementCriteriaRequirement::Meets(Player const* source, Unit const* tar
|
||||||
bool AchievementCriteriaRequirementSet::Meets(Player const* source, Unit const* target, uint32 miscvalue /*= 0*/) const
|
bool AchievementCriteriaRequirementSet::Meets(Player const* source, Unit const* target, uint32 miscvalue /*= 0*/) const
|
||||||
{
|
{
|
||||||
for(Storage::const_iterator itr = storage.begin(); itr != storage.end(); ++itr)
|
for(Storage::const_iterator itr = storage.begin(); itr != storage.end(); ++itr)
|
||||||
if(!itr->Meets(source,target,miscvalue))
|
if(!itr->Meets(criteria_id, source, target, miscvalue))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -60,9 +60,10 @@ enum AchievementCriteriaRequirementType
|
||||||
ACHIEVEMENT_CRITERIA_REQUIRE_S_DRUNK = 15, // drunken_state 0 (enum DrunkenState) of player
|
ACHIEVEMENT_CRITERIA_REQUIRE_S_DRUNK = 15, // drunken_state 0 (enum DrunkenState) of player
|
||||||
ACHIEVEMENT_CRITERIA_REQUIRE_HOLIDAY = 16, // holiday_id 0 event in holiday time
|
ACHIEVEMENT_CRITERIA_REQUIRE_HOLIDAY = 16, // holiday_id 0 event in holiday time
|
||||||
ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE = 17, // min_score max_score player's team win bg and opposition team have team score in range
|
ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE = 17, // min_score max_score player's team win bg and opposition team have team score in range
|
||||||
|
ACHIEVEMENT_CRITERIA_REQUIRE_INSTANCE_SCRIPT = 18, // 0 0 maker instance script call for check curent criteria requirements fit
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MAX_ACHIEVEMENT_CRITERIA_REQUIREMENT_TYPE 18 // maximum value in AchievementCriteriaRequirementType enum
|
#define MAX_ACHIEVEMENT_CRITERIA_REQUIREMENT_TYPE 19 // maximum value in AchievementCriteriaRequirementType enum
|
||||||
|
|
||||||
class Player;
|
class Player;
|
||||||
class Unit;
|
class Unit;
|
||||||
|
|
@ -175,15 +176,18 @@ struct AchievementCriteriaRequirement
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsValid(AchievementCriteriaEntry const* criteria);
|
bool IsValid(AchievementCriteriaEntry const* criteria);
|
||||||
bool Meets(Player const* source, Unit const* target, uint32 miscvalue1 = 0) const;
|
bool Meets(uint32 criteria_id, Player const* source, Unit const* target, uint32 miscvalue1 = 0) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct AchievementCriteriaRequirementSet
|
struct AchievementCriteriaRequirementSet
|
||||||
{
|
{
|
||||||
|
AchievementCriteriaRequirementSet() : criteria_id(0) {}
|
||||||
|
explicit AchievementCriteriaRequirementSet(uint32 id) : criteria_id(id) {}
|
||||||
typedef std::vector<AchievementCriteriaRequirement> Storage;
|
typedef std::vector<AchievementCriteriaRequirement> Storage;
|
||||||
void Add(AchievementCriteriaRequirement const& data) { storage.push_back(data); }
|
void Add(AchievementCriteriaRequirement const& data) { storage.push_back(data); }
|
||||||
bool Meets(Player const* source, Unit const* target, uint32 miscvalue = 0) const;
|
bool Meets(Player const* source, Unit const* target, uint32 miscvalue = 0) const;
|
||||||
private:
|
private:
|
||||||
|
uint32 criteria_id;
|
||||||
Storage storage;
|
Storage storage;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -951,14 +951,13 @@ void GameObject::Use(Unit* user)
|
||||||
{
|
{
|
||||||
Player* player = (Player*)user;
|
Player* player = (Player*)user;
|
||||||
|
|
||||||
// show page
|
if (info->goober.pageId) // show page...
|
||||||
if (info->goober.pageId)
|
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_GAMEOBJECT_PAGETEXT, 8);
|
WorldPacket data(SMSG_GAMEOBJECT_PAGETEXT, 8);
|
||||||
data << GetGUID();
|
data << GetGUID();
|
||||||
player->GetSession()->SendPacket(&data);
|
player->GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
else if (info->questgiver.gossipID)
|
else if (info->goober.gossipID) // ...or gossip, if page does not exist
|
||||||
{
|
{
|
||||||
player->PrepareGossipMenu(this, info->goober.gossipID);
|
player->PrepareGossipMenu(this, info->goober.gossipID);
|
||||||
player->SendPreparedGossip(this);
|
player->SendPreparedGossip(this);
|
||||||
|
|
|
||||||
|
|
@ -70,5 +70,12 @@ class MANGOS_DLL_SPEC InstanceData
|
||||||
//All-purpose data storage 32 bit
|
//All-purpose data storage 32 bit
|
||||||
virtual uint32 GetData(uint32 /*Type*/) { return 0; }
|
virtual uint32 GetData(uint32 /*Type*/) { return 0; }
|
||||||
virtual void SetData(uint32 /*Type*/, uint32 /*Data*/) {}
|
virtual void SetData(uint32 /*Type*/, uint32 /*Data*/) {}
|
||||||
|
|
||||||
|
// Achievement criteria additional requirements check
|
||||||
|
// NOTE: not use this if same can be checked existed requirement types from AchievementCriteriaRequirementType
|
||||||
|
virtual bool CheckAchievementCriteriaMeet(uint32 /*criteria_id*/, Player const* /*source*/, Unit const* /*target*/ = NULL, uint32 /*miscvalue1*/ = 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -504,7 +504,7 @@ void ObjectMgr::LoadCreatureTemplates()
|
||||||
|
|
||||||
if (difficultyEntries[diff].find(i) != difficultyEntries[diff].end())
|
if (difficultyEntries[diff].find(i) != difficultyEntries[diff].end())
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Creature (Entry: %u) listed as difficulty %u but have value in `difficulty_entry_1`.", i, diff + 1);
|
sLog.outErrorDb("Creature (Entry: %u) listed as difficulty %u but have value in `difficulty_entry_%u`.", i, diff + 1, diff + 1);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -581,11 +581,13 @@ void Spell::FillTargetMap()
|
||||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 0:
|
||||||
|
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
||||||
|
tmpUnitMap.push_back(m_caster);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
|
||||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
||||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -1304,7 +1306,7 @@ void Spell::SetTargetMap(uint32 effIndex,uint32 targetMode,UnitList& TagUnitMap)
|
||||||
{
|
{
|
||||||
case SPELLFAMILY_DRUID:
|
case SPELLFAMILY_DRUID:
|
||||||
// Starfall
|
// Starfall
|
||||||
if (m_spellInfo->SpellFamilyFlags2 & UI64LIT(0x00000100))
|
if (m_spellInfo->SpellFamilyFlags2 & 0x00000100)
|
||||||
unMaxTargets = 2;
|
unMaxTargets = 2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -2525,6 +2527,13 @@ void Spell::cast(bool skipCheck)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SPELLFAMILY_DRUID:
|
||||||
|
{
|
||||||
|
// Faerie Fire (Feral)
|
||||||
|
if (m_spellInfo->Id == 16857 && m_caster->m_form != FORM_CAT)
|
||||||
|
AddTriggeredSpell(60089);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SPELLFAMILY_ROGUE:
|
case SPELLFAMILY_ROGUE:
|
||||||
// Fan of Knives (main hand)
|
// Fan of Knives (main hand)
|
||||||
if (m_spellInfo->Id == 51723 && m_caster->GetTypeId() == TYPEID_PLAYER &&
|
if (m_spellInfo->Id == 51723 && m_caster->GetTypeId() == TYPEID_PLAYER &&
|
||||||
|
|
|
||||||
|
|
@ -2275,7 +2275,13 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
||||||
return;
|
return;
|
||||||
case 46699: // Requires No Ammo
|
case 46699: // Requires No Ammo
|
||||||
if (m_target->GetTypeId() == TYPEID_PLAYER)
|
if (m_target->GetTypeId() == TYPEID_PLAYER)
|
||||||
((Player*)m_target)->RemoveAmmo(); // not use ammo and not allow use
|
// not use ammo and not allow use
|
||||||
|
((Player*)m_target)->RemoveAmmo();
|
||||||
|
return;
|
||||||
|
case 62061: // Festive Holiday Mount
|
||||||
|
if (m_target->HasAuraType(SPELL_AURA_MOUNTED))
|
||||||
|
// Reindeer Transformation
|
||||||
|
m_target->CastSpell(m_target, 25860, true, NULL, this);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
@ -4252,13 +4258,18 @@ void Aura::HandleAuraModIncreaseSpeed(bool /*apply*/, bool Real)
|
||||||
m_target->UpdateSpeed(MOVE_RUN, true);
|
m_target->UpdateSpeed(MOVE_RUN, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aura::HandleAuraModIncreaseMountedSpeed(bool /*apply*/, bool Real)
|
void Aura::HandleAuraModIncreaseMountedSpeed(bool apply, bool Real)
|
||||||
{
|
{
|
||||||
// all applied/removed only at real aura add/remove
|
// all applied/removed only at real aura add/remove
|
||||||
if(!Real)
|
if(!Real)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_target->UpdateSpeed(MOVE_RUN, true);
|
m_target->UpdateSpeed(MOVE_RUN, true);
|
||||||
|
|
||||||
|
// Festive Holiday Mount
|
||||||
|
if (apply && GetSpellProto()->SpellIconID != 1794 && m_target->HasAura(62061))
|
||||||
|
// Reindeer Transformation
|
||||||
|
m_target->CastSpell(m_target, 25860, true, NULL, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
||||||
|
|
@ -4286,6 +4297,11 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
||||||
// Dragonmaw Illusion (overwrite mount model, mounted aura already applied)
|
// Dragonmaw Illusion (overwrite mount model, mounted aura already applied)
|
||||||
if( apply && m_target->HasAura(42016,0) && m_target->GetMountID())
|
if( apply && m_target->HasAura(42016,0) && m_target->GetMountID())
|
||||||
m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314);
|
m_target->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID,16314);
|
||||||
|
|
||||||
|
// Festive Holiday Mount
|
||||||
|
if (apply && GetSpellProto()->SpellIconID != 1794 && m_target->HasAura(62061))
|
||||||
|
// Reindeer Transformation
|
||||||
|
m_target->CastSpell(m_target, 25860, true, NULL, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_target->UpdateSpeed(MOVE_FLIGHT, true);
|
m_target->UpdateSpeed(MOVE_FLIGHT, true);
|
||||||
|
|
@ -4772,8 +4788,8 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
|
||||||
// Serpent Sting
|
// Serpent Sting
|
||||||
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000))
|
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000))
|
||||||
{
|
{
|
||||||
// $RAP*0.1/5 bonus per tick
|
// $RAP*0.2/5 bonus per tick
|
||||||
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
|
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.2 / 5);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Immolation Trap
|
// Immolation Trap
|
||||||
|
|
|
||||||
|
|
@ -630,7 +630,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
||||||
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x100000000))
|
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x100000000))
|
||||||
{
|
{
|
||||||
int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE));
|
int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE));
|
||||||
damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.2f);
|
damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f);
|
||||||
}
|
}
|
||||||
// Explosive Trap Effect
|
// Explosive Trap Effect
|
||||||
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000004))
|
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000004))
|
||||||
|
|
@ -4580,14 +4580,8 @@ void Spell::EffectWeaponDmg(uint32 i)
|
||||||
{
|
{
|
||||||
case SPELLFAMILY_WARRIOR:
|
case SPELLFAMILY_WARRIOR:
|
||||||
{
|
{
|
||||||
// Whirlwind, single only spell with 2 weapon white damage apply if have
|
|
||||||
if(m_caster->GetTypeId()==TYPEID_PLAYER && (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000400000000)))
|
|
||||||
{
|
|
||||||
if(((Player*)m_caster)->GetWeaponForAttack(OFF_ATTACK, true, true))
|
|
||||||
spell_bonus += m_caster->CalculateDamage (OFF_ATTACK, normalized);
|
|
||||||
}
|
|
||||||
// Devastate bonus and sunder armor refresh
|
// Devastate bonus and sunder armor refresh
|
||||||
else if(m_spellInfo->SpellVisual[0] == 12295 && m_spellInfo->SpellIconID == 1508)
|
if(m_spellInfo->SpellVisual[0] == 12295 && m_spellInfo->SpellIconID == 1508)
|
||||||
{
|
{
|
||||||
uint32 stack = 0;
|
uint32 stack = 0;
|
||||||
// Need refresh all Sunder Armor auras from this caster
|
// Need refresh all Sunder Armor auras from this caster
|
||||||
|
|
@ -5464,19 +5458,35 @@ void Spell::EffectScriptEffect(uint32 effIndex)
|
||||||
// Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting.
|
// Serpent Sting - Instantly deals 40% of the damage done by your Serpent Sting.
|
||||||
if ((familyFlag & UI64LIT(0x0000000000004000)) && aura->GetEffIndex() == 0)
|
if ((familyFlag & UI64LIT(0x0000000000004000)) && aura->GetEffIndex() == 0)
|
||||||
{
|
{
|
||||||
spellId = 53353; // 53353 Chimera Shot - Serpent
|
// m_amount already include RAP bonus
|
||||||
basePoint = aura->GetModifier()->m_amount * 5 * 40 / 100;
|
basePoint = aura->GetModifier()->m_amount * 5 * 40 / 100;
|
||||||
|
spellId = 53353; // Chimera Shot - Serpent
|
||||||
}
|
}
|
||||||
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
// Viper Sting - Instantly restores mana to you equal to 60% of the total amount drained by your Viper Sting.
|
||||||
if ((familyFlag & UI64LIT(0x0000008000000000)) && aura->GetEffIndex() == 0)
|
if ((familyFlag & UI64LIT(0x0000008000000000)) && aura->GetEffIndex() == 0)
|
||||||
{
|
{
|
||||||
spellId = 53358; // 53358 Chimera Shot - Viper
|
uint32 target_max_mana = unitTarget->GetMaxPower(POWER_MANA);
|
||||||
basePoint = aura->GetModifier()->m_amount * 4 * 60 / 100;
|
if (!target_max_mana)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// ignore non positive values (can be result apply spellmods to aura damage
|
||||||
|
uint32 pdamage = aura->GetModifier()->m_amount > 0 ? aura->GetModifier()->m_amount : 0;
|
||||||
|
|
||||||
|
// Special case: draining x% of mana (up to a maximum of 2*x% of the caster's maximum mana)
|
||||||
|
uint32 maxmana = m_caster->GetMaxPower(POWER_MANA) * pdamage * 2 / 100;
|
||||||
|
|
||||||
|
pdamage = target_max_mana * pdamage / 100;
|
||||||
|
if (pdamage > maxmana)
|
||||||
|
pdamage = maxmana;
|
||||||
|
|
||||||
|
pdamage *= 4; // total aura damage
|
||||||
|
basePoint = pdamage * 60 / 100;
|
||||||
|
spellId = 53358; // Chimera Shot - Viper
|
||||||
target = m_caster;
|
target = m_caster;
|
||||||
}
|
}
|
||||||
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
||||||
if (familyFlag & UI64LIT(0x0000000000008000))
|
if (familyFlag & UI64LIT(0x0000000000008000))
|
||||||
spellId = 53359; // 53359 Chimera Shot - Scorpid
|
spellId = 53359; // Chimera Shot - Scorpid
|
||||||
// ?? nothing say in spell desc (possibly need addition check)
|
// ?? nothing say in spell desc (possibly need addition check)
|
||||||
//if ((familyFlag & UI64LIT(0x0000010000000000)) || // dot
|
//if ((familyFlag & UI64LIT(0x0000010000000000)) || // dot
|
||||||
// (familyFlag & UI64LIT(0x0000100000000000))) // stun
|
// (familyFlag & UI64LIT(0x0000100000000000))) // stun
|
||||||
|
|
|
||||||
|
|
@ -6594,7 +6594,25 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
break;
|
}
|
||||||
|
// Frozen Power
|
||||||
|
if (dummySpell->SpellIconID == 3780)
|
||||||
|
{
|
||||||
|
Unit *caster = triggeredByAura->GetCaster();
|
||||||
|
|
||||||
|
if (!procSpell || !caster)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
float distance = caster->GetDistance(pVictim);
|
||||||
|
int32 chance = triggerAmount;
|
||||||
|
|
||||||
|
if (distance < 15.0f || !roll_chance_i(chance))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// make triggered cast apply after current damage spell processing for prevent remove by it
|
||||||
|
if(Spell* spell = GetCurrentSpell(CURRENT_GENERIC_SPELL))
|
||||||
|
spell->AddTriggeredSpell(63685);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "9015"
|
#define REVISION_NR "9026"
|
||||||
#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_8874_01_characters_character_skills"
|
#define REVISION_DB_CHARACTERS "required_8874_01_characters_character_skills"
|
||||||
#define REVISION_DB_MANGOS "required_9015_01_mangos_spell_bonus_data"
|
#define REVISION_DB_MANGOS "required_9025_01_mangos_spell_proc_event"
|
||||||
#define REVISION_DB_REALMD "required_9010_01_realmd_realmlist"
|
#define REVISION_DB_REALMD "required_9010_01_realmd_realmlist"
|
||||||
#endif // __REVISION_SQL_H__
|
#endif // __REVISION_SQL_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue