mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
This commit is contained in:
@@ -1 +1,19 @@
|
||||
DROP TABLE IF EXISTS `spell_proc`;
|
||||
DROP TABLE IF EXISTS `spell_proc`;
|
||||
CREATE TABLE `spell_proc` (
|
||||
`spellId` mediumint(8) NOT NULL DEFAULT '0',
|
||||
`schoolMask` tinyint(4) NOT NULL DEFAULT '0',
|
||||
`spellFamilyName` smallint(5) unsigned NOT NULL DEFAULT '0',
|
||||
`spellFamilyMask0` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`spellFamilyMask1` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`spellFamilyMask2` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`typeMask` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`spellTypeMask` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`spellPhaseMask` int(10) NOT NULL DEFAULT '0',
|
||||
`hitMask` int(10) NOT NULL DEFAULT '0',
|
||||
`attributesMask` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
`ratePerMinute` float NOT NULL DEFAULT '0',
|
||||
`chance` float NOT NULL DEFAULT '0',
|
||||
`cooldown` float unsigned NOT NULL DEFAULT '0',
|
||||
`charges` int(10) unsigned NOT NULL DEFAULT '0',
|
||||
PRIMARY KEY (`spellId`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
DELETE FROM `command` WHERE `name` = 'reload spell_proc';
|
||||
DELETE FROM `command` WHERE `name` = 'reload spell_proc';
|
||||
INSERT INTO `command` VALUES
|
||||
('reload spell_proc',3,'Syntax: .reload spell_proc\nReload spell_proc table.');
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10447,10448,10449,10459,10460,10461) AND `type` IN (11,18);
|
||||
INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
|
||||
VALUES
|
||||
(10447,18,0,0,''),
|
||||
(10448,18,0,0,''),
|
||||
(10449,18,0,0,''),
|
||||
(10459,18,0,0,''),
|
||||
(10460,18,0,0,''),
|
||||
(10461,18,0,0,'');
|
||||
@@ -805,10 +805,10 @@ namespace Trinity
|
||||
float i_range;
|
||||
};
|
||||
|
||||
class AnyUnfriendlyVisibleUnitInObjectRangeCheck
|
||||
class AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck
|
||||
{
|
||||
public:
|
||||
AnyUnfriendlyVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range)
|
||||
AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range)
|
||||
: i_obj(obj), i_funit(funit), i_range(range) {}
|
||||
|
||||
bool operator()(Unit* u)
|
||||
@@ -816,6 +816,8 @@ namespace Trinity
|
||||
return u->isAlive()
|
||||
&& i_obj->IsWithinDistInMap(u, i_range)
|
||||
&& !i_funit->IsFriendlyTo(u)
|
||||
&& i_funit->canAttack(u)
|
||||
&& u->GetCreatureType() != CREATURE_TYPE_CRITTER
|
||||
&& i_funit->canSeeOrDetect(u);
|
||||
}
|
||||
private:
|
||||
|
||||
@@ -5655,11 +5655,11 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const
|
||||
Cell cell(p);
|
||||
cell.data.Part.reserved = ALL_DISTRICT;
|
||||
|
||||
Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck u_check(target, target, radius);
|
||||
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
||||
Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck u_check(target, target, radius);
|
||||
Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck> checker(target, targets, u_check);
|
||||
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||
TypeContainerVisitor<Trinity::UnitListSearcher<Trinity::AnyUnfriendlyAttackableVisibleUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker);
|
||||
|
||||
cell.Visit(p, grid_object_checker, *GetBase()->GetOwner()->GetMap(), *target, radius);
|
||||
cell.Visit(p, world_object_checker, *GetBase()->GetOwner()->GetMap(), *target, radius);
|
||||
|
||||
@@ -332,7 +332,8 @@ class boss_flame_leviathan : public CreatureScript
|
||||
case DATA_UNBROKEN:
|
||||
return Unbroken ? 1 : 0;
|
||||
case DATA_ORBIT_ACHIEVEMENTS:
|
||||
return ActiveTowersCount;
|
||||
if (ActiveTowers) // Only on HardMode
|
||||
return ActiveTowersCount;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -220,8 +220,7 @@ enum FreyaEvents
|
||||
|
||||
#define WAVE_TIME 60000 // Normal wave is one minute
|
||||
#define TIME_DIFFERENCE 10000 // If difference between waveTime and WAVE_TIME is bigger then TIME_DIFFERENCE, schedule EVENT_WAVE in 10 seconds
|
||||
#define DATA_KNOCK_ON_WOOD 1
|
||||
#define DATA_GETTING_BACK_TO_NATURE 2
|
||||
#define DATA_GETTING_BACK_TO_NATURE 1
|
||||
|
||||
class npc_iron_roots : public CreatureScript
|
||||
{
|
||||
@@ -382,6 +381,8 @@ class boss_freya : public CreatureScript
|
||||
}
|
||||
}
|
||||
|
||||
instance->SetData(DATA_KNOCK_ON_WOOD_ACHIEVEMENTS, elderCount);
|
||||
|
||||
if (Elder[0]->isAlive())
|
||||
{
|
||||
Elder[0]->CastSpell(me, SPELL_BRIGHTLEAF_ESSENCE, true);
|
||||
@@ -415,8 +416,6 @@ class boss_freya : public CreatureScript
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DATA_KNOCK_ON_WOOD:
|
||||
return elderCount;
|
||||
case DATA_GETTING_BACK_TO_NATURE:
|
||||
return attunedToNature;
|
||||
}
|
||||
@@ -1611,66 +1610,6 @@ class spell_freya_iron_roots : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_knock_on_wood : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood")
|
||||
{
|
||||
}
|
||||
|
||||
bool OnCheck(Player* /*player*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Freya = target->ToCreature())
|
||||
if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 1)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_knock_knock_on_wood : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood")
|
||||
{
|
||||
}
|
||||
|
||||
bool OnCheck(Player* /*player*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Freya = target->ToCreature())
|
||||
if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 2)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_knock_knock_knock_on_wood : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood")
|
||||
{
|
||||
}
|
||||
|
||||
bool OnCheck(Player* /*player*/, Unit* target)
|
||||
{
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
if (Creature* Freya = target->ToCreature())
|
||||
if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
class achievement_getting_back_to_nature : public AchievementCriteriaScript
|
||||
{
|
||||
public:
|
||||
@@ -1710,8 +1649,5 @@ void AddSC_boss_freya()
|
||||
new npc_iron_roots();
|
||||
new spell_freya_attuned_to_nature_dose_reduction();
|
||||
new spell_freya_iron_roots();
|
||||
new achievement_knock_on_wood();
|
||||
new achievement_knock_knock_on_wood();
|
||||
new achievement_knock_knock_knock_on_wood();
|
||||
new achievement_getting_back_to_nature();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -157,22 +157,40 @@ enum UlduarTowerEvents
|
||||
EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
|
||||
};
|
||||
|
||||
enum UlduarAchievementCriteria
|
||||
enum UlduarAchievementCriteriaIds
|
||||
{
|
||||
ACHIEVEMENT_UNBROKEN_10 = 10044, // Leviathan
|
||||
ACHIEVEMENT_UNBROKEN_25 = 10045,
|
||||
ACHIEVEMENT_CRITERIA_SHUTOUT_10 = 10054,
|
||||
ACHIEVEMENT_CRITERIA_SHUTOUT_25 = 10055,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_CHOPPER_10 = 10046,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_SIEGE_10 = 10047,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_DEMOLISHER_10 = 10048,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_CHOPPER_25 = 10049,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_SIEGE_25 = 10050,
|
||||
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_DEMOLISHER_25 = 10051,
|
||||
ACHIEVEMENT_CRITERIA_HOT_POCKET_10 = 10430, // Ignis
|
||||
ACHIEVEMENT_CRITERIA_HOT_POCKET_25 = 10431,
|
||||
ACHIEVEMENT_CRITERIA_QUICK_SHAVE_10 = 10062, // Razorscale
|
||||
ACHIEVEMENT_CRITERIA_QUICK_SHAVE_25 = 10063,
|
||||
// Flame Leviathan
|
||||
CRITERIA_UNBROKEN_10 = 10044,
|
||||
CRITERIA_UNBROKEN_25 = 10045,
|
||||
CRITERIA_SHUTOUT_10 = 10054,
|
||||
CRITERIA_SHUTOUT_25 = 10055,
|
||||
CRITERIA_3_CAR_GARAGE_CHOPPER_10 = 10046,
|
||||
CRITERIA_3_CAR_GARAGE_SIEGE_10 = 10047,
|
||||
CRITERIA_3_CAR_GARAGE_DEMOLISHER_10 = 10048,
|
||||
CRITERIA_3_CAR_GARAGE_CHOPPER_25 = 10049,
|
||||
CRITERIA_3_CAR_GARAGE_SIEGE_25 = 10050,
|
||||
CRITERIA_3_CAR_GARAGE_DEMOLISHER_25 = 10051,
|
||||
|
||||
// Ignis
|
||||
CRITERIA_HOT_POCKET_10 = 10430,
|
||||
CRITERIA_HOT_POCKET_25 = 10431,
|
||||
|
||||
// Razorscale
|
||||
CRITERIA_QUICK_SHAVE_10 = 10062,
|
||||
CRITERIA_QUICK_SHAVE_25 = 10063,
|
||||
|
||||
// Freya
|
||||
CRITERIA_KNOCK_ON_WOOD_10 = 10447,
|
||||
CRITERIA_KNOCK_ON_WOOD_25 = 10459,
|
||||
CRITERIA_KNOCK_KNOCK_ON_WOOD_10 = 10448,
|
||||
CRITERIA_KNOCK_KNOCK_ON_WOOD_25 = 10460,
|
||||
CRITERIA_KNOCK_KNOCK_KNOCK_ON_WOOD_10 = 10449,
|
||||
CRITERIA_KNOCK_KNOCK_KNOCK_ON_WOOD_25 = 10461,
|
||||
};
|
||||
|
||||
enum UlduarAchievementData
|
||||
{
|
||||
DATA_KNOCK_ON_WOOD_ACHIEVEMENTS = 1,
|
||||
};
|
||||
|
||||
template<class AI>
|
||||
|
||||
Reference in New Issue
Block a user