mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 04:37:00 +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,
|
||||
`creature_ai_version` varchar(120) default NULL,
|
||||
`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';
|
||||
|
||||
--
|
||||
|
|
@ -14036,6 +14036,7 @@ INSERT INTO `spell_bonus_data` VALUES
|
|||
/* Druid */
|
||||
(5185, 1.6104, 0, 0, 'Druid - Healing Touch'),
|
||||
(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'),
|
||||
(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
|
||||
(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),
|
||||
(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),
|
||||
(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),
|
||||
(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),
|
||||
|
|
@ -18646,18 +18648,33 @@ CREATE TABLE `spell_threat` (
|
|||
LOCK TABLES `spell_threat` WRITE;
|
||||
/*!40000 ALTER TABLE `spell_threat` DISABLE KEYS */;
|
||||
INSERT INTO `spell_threat` VALUES
|
||||
(72,293),
|
||||
(78,20),
|
||||
(99,42),
|
||||
(284,39),
|
||||
(285,59),
|
||||
(469,40),
|
||||
(676,104),
|
||||
(770,108),
|
||||
(845,10),
|
||||
(1160,16),
|
||||
(1608,78),
|
||||
(1672,180),
|
||||
(1715,61),
|
||||
(1735,42),
|
||||
(2048,70),
|
||||
(2139,300),
|
||||
(5242,26),
|
||||
(6190,26),
|
||||
(6192,32),
|
||||
(6343,17),
|
||||
(6572,155),
|
||||
(6673,18),
|
||||
(6574,195),
|
||||
(6809,89),
|
||||
(6807,322),
|
||||
(6808,322),
|
||||
(6809,322),
|
||||
(7369,40),
|
||||
(7372,101),
|
||||
(7373,141),
|
||||
(7379,235),
|
||||
|
|
@ -18665,10 +18682,18 @@ INSERT INTO `spell_threat` VALUES
|
|||
(8198,40),
|
||||
(8204,64),
|
||||
(8205,96),
|
||||
(8972,118),
|
||||
(9745,148),
|
||||
(9880,178),
|
||||
(9881,207),
|
||||
(8972,322),
|
||||
(9490,42),
|
||||
(9745,322),
|
||||
(9747,42),
|
||||
(9880,322),
|
||||
(9881,322),
|
||||
(9898,42),
|
||||
(11549,40),
|
||||
(11550,48),
|
||||
(11551,56),
|
||||
(11554,30),
|
||||
(11555,37),
|
||||
(11556,43),
|
||||
(11564,98),
|
||||
(11565,118),
|
||||
|
|
@ -18678,6 +18703,8 @@ INSERT INTO `spell_threat` VALUES
|
|||
(11581,180),
|
||||
(11600,275),
|
||||
(11601,315),
|
||||
(11608,60),
|
||||
(11609,70),
|
||||
(11775,395),
|
||||
(14921,415),
|
||||
(16857,108),
|
||||
|
|
@ -18696,14 +18723,17 @@ INSERT INTO `spell_threat` VALUES
|
|||
(23925,250),
|
||||
(24394,580),
|
||||
(24583,5),
|
||||
(25202,50),
|
||||
(25203,55),
|
||||
(25231,130),
|
||||
(25258,286),
|
||||
(25264,215),
|
||||
(25269,400),
|
||||
(25286,175),
|
||||
(25288,355),
|
||||
(25289,60),
|
||||
(26996,176),
|
||||
(25289,62),
|
||||
(26996,322),
|
||||
(26998,42),
|
||||
(27179,54),
|
||||
(29704,230),
|
||||
(29707,196),
|
||||
|
|
@ -18713,7 +18743,28 @@ INSERT INTO `spell_threat` VALUES
|
|||
(33745,285),
|
||||
(33878,129),
|
||||
(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 */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ CREATE TABLE `realmlist` (
|
|||
LOCK TABLES `realmlist` WRITE;
|
||||
/*!40000 ALTER TABLE `realmlist` DISABLE KEYS */;
|
||||
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 */;
|
||||
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 \
|
||||
9010_01_realmd_realmlist.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
|
||||
|
||||
## Additional files to include when running 'make dist'
|
||||
|
|
@ -406,4 +409,7 @@ EXTRA_DIST = \
|
|||
9007_01_mangos_spell_proc_event.sql \
|
||||
9010_01_realmd_realmlist.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
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@
|
|||
#include "MapManager.h"
|
||||
#include "BattleGround.h"
|
||||
#include "BattleGroundAB.h"
|
||||
#include "Map.h"
|
||||
#include "InstanceData.h"
|
||||
|
||||
#include "Policies/SingletonImp.h"
|
||||
|
||||
|
|
@ -102,6 +104,8 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
|||
case ACHIEVEMENT_CRITERIA_REQUIRE_NONE:
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_VALUE:
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_DISABLED:
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE:
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_INSTANCE_SCRIPT:
|
||||
return true;
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_T_CREATURE:
|
||||
if (!creature.id || !ObjectMgr::GetCreatureTemplate(creature.id))
|
||||
|
|
@ -235,8 +239,6 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
|||
return false;
|
||||
}
|
||||
return true;
|
||||
case ACHIEVEMENT_CRITERIA_REQUIRE_BG_LOSS_TEAM_SCORE:
|
||||
return true; // not check correctness node indexes
|
||||
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);
|
||||
return false;
|
||||
|
|
@ -244,7 +246,7 @@ bool AchievementCriteriaRequirement::IsValid(AchievementCriteriaEntry const* cri
|
|||
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)
|
||||
{
|
||||
|
|
@ -312,6 +314,16 @@ bool AchievementCriteriaRequirement::Meets(Player const* source, Unit const* tar
|
|||
return false;
|
||||
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;
|
||||
}
|
||||
|
|
@ -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
|
||||
{
|
||||
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 true;
|
||||
|
|
|
|||
|
|
@ -60,9 +60,10 @@ enum AchievementCriteriaRequirementType
|
|||
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_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 Unit;
|
||||
|
|
@ -175,15 +176,18 @@ struct AchievementCriteriaRequirement
|
|||
}
|
||||
|
||||
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
|
||||
{
|
||||
AchievementCriteriaRequirementSet() : criteria_id(0) {}
|
||||
explicit AchievementCriteriaRequirementSet(uint32 id) : criteria_id(id) {}
|
||||
typedef std::vector<AchievementCriteriaRequirement> Storage;
|
||||
void Add(AchievementCriteriaRequirement const& data) { storage.push_back(data); }
|
||||
bool Meets(Player const* source, Unit const* target, uint32 miscvalue = 0) const;
|
||||
private:
|
||||
uint32 criteria_id;
|
||||
Storage storage;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -951,14 +951,13 @@ void GameObject::Use(Unit* user)
|
|||
{
|
||||
Player* player = (Player*)user;
|
||||
|
||||
// show page
|
||||
if (info->goober.pageId)
|
||||
if (info->goober.pageId) // show page...
|
||||
{
|
||||
WorldPacket data(SMSG_GAMEOBJECT_PAGETEXT, 8);
|
||||
data << GetGUID();
|
||||
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->SendPreparedGossip(this);
|
||||
|
|
|
|||
|
|
@ -70,5 +70,12 @@ class MANGOS_DLL_SPEC InstanceData
|
|||
//All-purpose data storage 32 bit
|
||||
virtual uint32 GetData(uint32 /*Type*/) { return 0; }
|
||||
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
|
||||
|
|
|
|||
|
|
@ -504,7 +504,7 @@ void ObjectMgr::LoadCreatureTemplates()
|
|||
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -581,11 +581,13 @@ void Spell::FillTargetMap()
|
|||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
||||
tmpUnitMap.push_back(m_caster);
|
||||
break;
|
||||
default:
|
||||
{
|
||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
||||
}
|
||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetA[i], tmpUnitMap);
|
||||
SetTargetMap(i, m_spellInfo->EffectImplicitTargetB[i], tmpUnitMap);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1304,7 +1306,7 @@ void Spell::SetTargetMap(uint32 effIndex,uint32 targetMode,UnitList& TagUnitMap)
|
|||
{
|
||||
case SPELLFAMILY_DRUID:
|
||||
// Starfall
|
||||
if (m_spellInfo->SpellFamilyFlags2 & UI64LIT(0x00000100))
|
||||
if (m_spellInfo->SpellFamilyFlags2 & 0x00000100)
|
||||
unMaxTargets = 2;
|
||||
break;
|
||||
default:
|
||||
|
|
@ -2525,6 +2527,13 @@ void Spell::cast(bool skipCheck)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_DRUID:
|
||||
{
|
||||
// Faerie Fire (Feral)
|
||||
if (m_spellInfo->Id == 16857 && m_caster->m_form != FORM_CAT)
|
||||
AddTriggeredSpell(60089);
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_ROGUE:
|
||||
// Fan of Knives (main hand)
|
||||
if (m_spellInfo->Id == 51723 && m_caster->GetTypeId() == TYPEID_PLAYER &&
|
||||
|
|
|
|||
|
|
@ -2273,9 +2273,15 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
|||
}
|
||||
}
|
||||
return;
|
||||
case 46699: // Requires No Ammo
|
||||
if(m_target->GetTypeId() == TYPEID_PLAYER)
|
||||
((Player*)m_target)->RemoveAmmo(); // not use ammo and not allow use
|
||||
case 46699: // Requires No Ammo
|
||||
if (m_target->GetTypeId() == TYPEID_PLAYER)
|
||||
// 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;
|
||||
}
|
||||
break;
|
||||
|
|
@ -4252,13 +4258,18 @@ void Aura::HandleAuraModIncreaseSpeed(bool /*apply*/, bool Real)
|
|||
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
|
||||
if(!Real)
|
||||
return;
|
||||
|
||||
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)
|
||||
|
|
@ -4286,6 +4297,11 @@ void Aura::HandleAuraModIncreaseFlightSpeed(bool apply, bool Real)
|
|||
// Dragonmaw Illusion (overwrite mount model, mounted aura already applied)
|
||||
if( apply && m_target->HasAura(42016,0) && m_target->GetMountID())
|
||||
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);
|
||||
|
|
@ -4772,8 +4788,8 @@ void Aura::HandlePeriodicDamage(bool apply, bool Real)
|
|||
// Serpent Sting
|
||||
if (m_spellProto->SpellFamilyFlags & UI64LIT(0x0000000000004000))
|
||||
{
|
||||
// $RAP*0.1/5 bonus per tick
|
||||
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
|
||||
// $RAP*0.2/5 bonus per tick
|
||||
m_modifier.m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 0.2 / 5);
|
||||
return;
|
||||
}
|
||||
// Immolation Trap
|
||||
|
|
|
|||
|
|
@ -630,7 +630,7 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
|||
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x100000000))
|
||||
{
|
||||
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
|
||||
else if (m_spellInfo->SpellFamilyFlags & UI64LIT(0x00000004))
|
||||
|
|
@ -4580,14 +4580,8 @@ void Spell::EffectWeaponDmg(uint32 i)
|
|||
{
|
||||
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
|
||||
else if(m_spellInfo->SpellVisual[0] == 12295 && m_spellInfo->SpellIconID == 1508)
|
||||
if(m_spellInfo->SpellVisual[0] == 12295 && m_spellInfo->SpellIconID == 1508)
|
||||
{
|
||||
uint32 stack = 0;
|
||||
// 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.
|
||||
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;
|
||||
spellId = 53353; // Chimera Shot - Serpent
|
||||
}
|
||||
// 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)
|
||||
{
|
||||
spellId = 53358; // 53358 Chimera Shot - Viper
|
||||
basePoint = aura->GetModifier()->m_amount * 4 * 60 / 100;
|
||||
uint32 target_max_mana = unitTarget->GetMaxPower(POWER_MANA);
|
||||
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;
|
||||
}
|
||||
// Scorpid Sting - Attempts to Disarm the target for 10 sec. This effect cannot occur more than once per 1 minute.
|
||||
if (familyFlag & UI64LIT(0x0000000000008000))
|
||||
spellId = 53359; // 53359 Chimera Shot - Scorpid
|
||||
spellId = 53359; // Chimera Shot - Scorpid
|
||||
// ?? nothing say in spell desc (possibly need addition check)
|
||||
//if ((familyFlag & UI64LIT(0x0000010000000000)) || // dot
|
||||
// (familyFlag & UI64LIT(0x0000100000000000))) // stun
|
||||
|
|
|
|||
|
|
@ -6594,7 +6594,25 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
|||
}
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "9015"
|
||||
#define REVISION_NR "9026"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef __REVISION_SQL_H__
|
||||
#define __REVISION_SQL_H__
|
||||
#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"
|
||||
#endif // __REVISION_SQL_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue