Merge branch 'master' of github.com:TrinityCore/TrinityCore

This commit is contained in:
Nay
2013-08-31 22:48:01 +01:00
16 changed files with 385 additions and 147 deletions

View File

@@ -0,0 +1,24 @@
/* cs_bf.cpp */
SET @id = 257;
-- Add new permissions
DELETE FROM `rbac_permissions` WHERE `id` BETWEEN @id AND @id+5;
INSERT INTO `rbac_permissions` (`id`, `name`) VALUES
(@id+0, 'bf'),
(@id+1, 'bf start'),
(@id+2, 'bf stop'),
(@id+3, 'bf switch'),
(@id+4, 'bf timer'),
(@id+5, 'bf enabled');
-- Add permissions to "corresponding Commands Role"
DELETE FROM `rbac_role_permissions` WHERE `permissionId` BETWEEN @id AND @id+5;
INSERT INTO `rbac_role_permissions` (`roleId`, `permissionId`) VALUES
(4, @id+0),
(4, @id+1),
(4, @id+2),
(4, @id+3),
(4, @id+4),
(4, @id+5);

View File

@@ -0,0 +1,83 @@
-- The Lost Mistwhisper Treasure (12575)
SET @TARTEK := 28105;
SET @ZEPTEK := 28399;
SET @HC_RIDE := 46598;
SET @TRIGGER := 5030;
SET @SPEARBORNBUNNY := 28457;
-- REF 6710.741, 5154.322, -19.3981
-- REF 6712.461, 5136.462, -19.3981
-- Propper phasing
DELETE FROM `spell_area` WHERE `spell` = 52217;
INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
(52217, 4306, 12574, 0, 0, 0, 2, 1, 74, 64),
(52217, 4308, 12574, 0, 0, 0, 2, 1, 74, 64);
-- Needs one waypoint for passenger removal
DELETE FROM `waypoints` WHERE `entry`=@ZEPTEK;
INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
(@ZEPTEK, 1, 6712.461, 5136.462, -19.3981, 'Zeptek the Destroyer');
-- Criteria linked with involved relation
DELETE FROM `areatrigger_involvedrelation` WHERE `id` = @TRIGGER;
INSERT INTO `areatrigger_involvedrelation` (`id`,`quest`) VALUES
(@TRIGGER,12575);
DELETE FROM `areatrigger_scripts` WHERE `entry` = @TRIGGER;
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES
(@TRIGGER,'SmartTrigger');
DELETE FROM `smart_scripts` WHERE `entryorguid` =@TRIGGER AND `source_type`=2;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@TRIGGER,2,0,0,46,0,100,0,@TRIGGER,0,0,0,45,1,1,0,0,0,0,10,99764,@SPEARBORNBUNNY,0,0,0,0,0,"On Trigger - Set Data");
DELETE FROM `smart_scripts` WHERE `entryorguid` =@SPEARBORNBUNNY AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(@SPEARBORNBUNNY,0,0,0,10,0,100,0,1,200,10000,10000,11,51642,2,0,0,0,0,7,0,0,0,0,0,0,0,'Spearborn Encampment Bunny - On update OOC - Spellcast Spearborn Encampment Aura'),
(@SPEARBORNBUNNY,0,1,2,38,0,100,0,1,1,300000,300000,45,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Spearborn Encampment Bunny - On Data Set - Set Data'),
(@SPEARBORNBUNNY,0,2,0,61,0,100,0,0,0,0,0,12,@TARTEK,1,300000,0,0,0,8,0,0,0,6709.02, 5169.21, -20.8878, 4.91029, 'Spearborn Encampment Bunny - Linked with Previous Event - Spawn Warlord Tartek');
DELETE FROM `creature` WHERE `id`=@TARTEK;
UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@TARTEK;
DELETE FROM `creature_ai_scripts` WHERE `creature_id` =@TARTEK;
DELETE FROM `smart_scripts` WHERE `entryorguid` =@TARTEK;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(@TARTEK,0,0,1,11,0,100,0,0,0,0,0,2,2061,0,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Spawn - Set Faction'),
(@TARTEK,0,1,2,61,0,100,0,0,0,0,0,18,756,0,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Link - Set Unattackable Flags'),
(@TARTEK,0,2,3,61,0,100,0,0,0,0,0,12,@ZEPTEK,1,100000,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Link - Summon Zeptek'),
(@TARTEK,0,3,4,61,0,100,0,0,0,0,0,11,@HC_RIDE,2,0,0,0,0,11,@ZEPTEK,10,0,0,0,0,0,'Warlord Tartek - On Link - Ride Zeptek'),
(@TARTEK,0,4,5,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Link - Say 0'),
(@TARTEK,0,5,0,4,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Aggro - Say 1'),
(@TARTEK,0,6,0,8,0,100,0,@HC_RIDE,0,0,0,19,756,0,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - On Data set - Remove Unattackable Flags'),
-- Combat
(@TARTEK,0,7,0,9,0,100,0,5000,8000,5000,8000,11,29426,2,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - IC - Cast Heroic Strike'),
(@TARTEK,0,8,0,0,0,100,0,5000,15000,5000,15000,11,35429,2,0,0,0,0,1,0,0,0,0,0,0,0,'Warlord Tartek - IC - Cast Sweeping Strikes'),
(@TARTEK,0,9,0,0,0,100,0,6000,15000,6000,15000,11,15572,2,0,0,0,0,2,0,0,0,0,0,0,0,'Warlord Tartek - IC - Cast Sunder Armor'),
-- Credit
(@TARTEK,0,10,11,6,0,100,0,0,0,0,0,45,1,1,0,0,0,0,9,28121,0,50,0,0,0,0, 'Warlord Tartek - On Death - Set Data Jaloot'), -- If spawned by player, will say text.
(@TARTEK,0,11,0,61,0,100,0,0,0,0,0,15,12575,0,0,0,0,0,7,0,0,0,0,0,0,0,'Warlord Tartek - On Link - Call area explored or event happens');
UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@ZEPTEK;
DELETE FROM `creature_ai_scripts` WHERE `creature_id` =@ZEPTEK;
DELETE FROM `smart_scripts` WHERE `entryorguid` =@ZEPTEK;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(@ZEPTEK,0,0,1,11,0,100,0,0,0,0,0,2,2061,0,0,0,0,0,1,0,0,0,0,0,0,0,'Zeptik The Destroyer - On Spawn - Set Faction'),
(@ZEPTEK,0,1,0,61,0,100,0,0,0,0,0,53,1,@ZEPTEK,0,0,0,0,1,0,0,0,0,0,0,0,'Zeptik The Destroyer - On Link - Start WP'),
(@ZEPTEK,0,2,3,40,0,100,0,1,0,0,0,11,@HC_RIDE,0,0,0,0,0,11,@TARTEK,20,0,0,0,0,0,'Zeptik The Destroyer - ON WP reached - Dismount Tartek'),
(@ZEPTEK,0,3,4,61,0,100,0,0,0,0,0,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,'Zeptik The Destroyer - OnLink - Summon New Zeptek'),
(@ZEPTEK,0,4,0,61,0,100,0,0,0,0,0,28,@HC_RIDE,0,0,0,0,0,1,0,0,0,0,0,0,0,'Zeptik The Destroyer - On LInk - Attack Closest Player');
DELETE FROM `creature_equip_template` WHERE `entry` =@TARTEK;
INSERT INTO `creature_equip_template` (`entry`, `id`, `itemEntry1`, `itemEntry2`, `itemEntry3`) VALUES
(@TARTEK, 1, 5305, 0, 0);
DELETE FROM `creature_text` WHERE `entry` =@TARTEK;
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
(@TARTEK, 0, 0, 'My treasure! You no steal from Tartek, dumb big-tongue traitor thing.', 14, 0, 100, 0, 0, 0, 'Warlord Tartek'),
(@TARTEK, 1, 0, 'Tartek and nasty dragon going to kill you! You so dumb.', 14, 0, 100, 0, 0, 0, 'Warlord Tartek');
-- Needs special flags 2 for external event
UPDATE `quest_template` SET `SpecialFlags`=2 WHERE `Id`=12575;
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@TRIGGER AND `SourceId`=2;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(22,1,@TRIGGER,2,0,9,0,12575,0,0,0,0,'','Trigger only activates if player is on the Lost Mistwhisper Treasure');

View File

@@ -0,0 +1,10 @@
DELETE FROM `creature_text` WHERE `entry`=24480;
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
(24480, 0, 0, 'I thought you''d never ask!', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 1, 'I promise not to give you warts...', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 2, 'This won''t take long, did it?', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 3, 'Now that''s what I call froggy-style!', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 4, 'Listen, $n, I know of a little swamp not too far from here....', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 5, 'Your lily pad or mine?', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 6, 'Feelin'' a little froggy, are ya?', 15, 0, 100, 0, 0, 0, 'Mojo'),
(24480, 0, 7, 'There''s just never enough Mojo to go around...', 15, 0, 100, 0, 0, 0, 'Mojo');

View File

@@ -0,0 +1,3 @@
DELETE FROM `spell_script_names` WHERE `spell_id`=51858;
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(51858, 'spell_q12641_death_comes_from_on_high');

View File

@@ -0,0 +1 @@
UPDATE `creature_template` SET `ScriptName`='npc_pet_gen_mojo' WHERE `ScriptName`='npc_mojo';

View File

@@ -0,0 +1,10 @@
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (18110,18142,18143,18144) AND `source_type`=0;
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
(18110, 0, 0, 1, 8, 0, 100, 1, 31927, 0, 0, 0, 80, 1811000, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit - Run Script'),
(18110, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 33, 18110, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit (Link) - Quest Credit'),
(18142, 0, 0, 1, 8, 0, 100, 1, 31927, 0, 0, 0, 80, 1814200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit - Run Script'),
(18142, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 33, 18142, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit (Link) - Quest Credit'),
(18143, 0, 0, 1, 8, 0, 100, 1, 31927, 0, 0, 0, 80, 1814300, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit - Run Script'),
(18143, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 33, 18143, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit (Link) - Quest Credit'),
(18144, 0, 0, 1, 8, 0, 100, 1, 31927, 0, 0, 0, 80, 1814400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit - Run Script'),
(18144, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 33, 18144, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Windyreed Quest Credit - On Spellhit (Link) - Quest Credit');

View File

@@ -0,0 +1,26 @@
UPDATE `creature` SET
`position_x`=1814.592,
`position_y`=-5988.646,
`position_z`=125.4968,
`orientation`=3.228859
WHERE `id`=28525;
UPDATE `creature` SET
`position_x`=1590.806,
`position_y`=-5731.661,
`position_z`=143.8694,
`orientation`=0.9075712
WHERE `id`=28543;
UPDATE `creature` SET
`position_x`= 1651.211,
`position_y`=-5994.667,
`position_z`=133.5836
WHERE `id`=28542;
UPDATE `creature` SET `position_x`= 1385.928,
`position_x`=1385.928,
`position_y`= -5702.061,
`position_z`= 146.3048,
`orientation`=4.153883
WHERE `id`=28544;

View File

@@ -0,0 +1,12 @@
/* cs_bf.cpp */
SET @id = 257;
-- Update command table with new RBAC permissions
UPDATE `command` SET `permission` = @id+0 WHERE `name` = 'bf';
UPDATE `command` SET `permission` = @id+1 WHERE `name` = 'bf start';
UPDATE `command` SET `permission` = @id+2 WHERE `name` = 'bf stop';
UPDATE `command` SET `permission` = @id+3 WHERE `name` = 'bf switch';
UPDATE `command` SET `permission` = @id+4 WHERE `name` = 'bf timer';
UPDATE `command` SET `permission` = @id+5 WHERE `name` = 'bf enabled';

View File

@@ -154,6 +154,12 @@ enum RBACPermissions
RBAC_PERM_COMMAND_UNBAN_CHARACTER = 254,
RBAC_PERM_COMMAND_UNBAN_IP = 255,
RBAC_PERM_COMMAND_UNBAN_PLAYERACCOUNT = 256,
RBAC_PERM_COMMAND_BF = 257,
RBAC_PERM_COMMAND_BF_START = 258,
RBAC_PERM_COMMAND_BF_STOP = 259,
RBAC_PERM_COMMAND_BF_SWITCH = 260,
RBAC_PERM_COMMAND_BF_TIMER = 261,
RBAC_PERM_COMMAND_BF_ENABLE = 262,
// custom permissions 1000+
RBAC_PERM_MAX

View File

@@ -654,6 +654,7 @@ void AddSC_event_childrens_week();
// Pets
void AddSC_deathknight_pet_scripts();
void AddSC_generic_pet_scripts();
void AddSC_hunter_pet_scripts();
void AddSC_mage_pet_scripts();
void AddSC_priest_pet_scripts();
@@ -1359,6 +1360,7 @@ void AddPetScripts()
{
#ifdef SCRIPTS
AddSC_deathknight_pet_scripts();
AddSC_generic_pet_scripts();
AddSC_hunter_pet_scripts();
AddSC_mage_pet_scripts();
AddSC_priest_pet_scripts();

View File

@@ -35,17 +35,17 @@ public:
{
static ChatCommand battlefieldcommandTable[] =
{
{ "start", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldStart, "", NULL },
{ "stop", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldEnd, "", NULL },
{ "switch", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldSwitch, "", NULL },
{ "timer", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldTimer, "", NULL },
{ "enable", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, &HandleBattlefieldEnable, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
{ "start", RBAC_PERM_COMMAND_BF_START, false, &HandleBattlefieldStart, "", NULL },
{ "stop", RBAC_PERM_COMMAND_BF_STOP, false, &HandleBattlefieldEnd, "", NULL },
{ "switch", RBAC_PERM_COMMAND_BF_SWITCH, false, &HandleBattlefieldSwitch, "", NULL },
{ "timer", RBAC_PERM_COMMAND_BF_TIMER, false, &HandleBattlefieldTimer, "", NULL },
{ "enable", RBAC_PERM_COMMAND_BF_ENABLE, false, &HandleBattlefieldEnable, "", NULL },
{ NULL, 0, false, NULL, "", NULL }
};
static ChatCommand commandTable[] =
{
{ "bf", RBAC_PERM_ADMINISTRATOR_COMMANDS, false, NULL, "", battlefieldcommandTable },
{ NULL, 0, false, NULL, "", NULL }
{ "bf", RBAC_PERM_COMMAND_BF, false, NULL, "", battlefieldcommandTable },
{ NULL, 0, false, NULL, "", NULL }
};
return commandTable;
}

View File

@@ -73,14 +73,12 @@ enum Spells
SPELL_SHIELDWALL = 29390
};
#define POS_Z 81.73f
float Locations[4][3]=
Position const Locations[4] =
{
{-10991.0f, -1884.33f, 0.614315f},
{-10989.4f, -1885.88f, 0.904913f},
{-10978.1f, -1887.07f, 2.035550f},
{-10975.9f, -1885.81f, 2.253890f},
{-10991.0f, -1884.33f, 81.73f, 0.614315f},
{-10989.4f, -1885.88f, 81.73f, 0.904913f},
{-10978.1f, -1887.07f, 81.73f, 2.035550f},
{-10975.9f, -1885.81f, 81.73f, 2.253890f},
};
const uint32 Adds[6]=
@@ -137,7 +135,7 @@ public:
Enrage = false;
InVanish = false;
if (me->GetHealth())
if (me->IsAlive())
SpawnAdds();
if (instance)
@@ -183,39 +181,34 @@ public:
void SpawnAdds()
{
DeSpawnAdds();
if (isAddlistEmpty())
{
Creature* creature = NULL;
std::vector<uint32> AddList;
std::list<uint32> AddList;
for (uint8 i = 0; i < 6; ++i)
AddList.push_back(Adds[i]);
while (AddList.size() > 4)
AddList.erase((AddList.begin())+(rand()%AddList.size()));
Trinity::Containers::RandomResizeList(AddList, 4);
uint8 i = 0;
for (std::vector<uint32>::const_iterator itr = AddList.begin(); itr != AddList.end(); ++itr)
for (std::list<uint32>::const_iterator itr = AddList.begin(); itr != AddList.end() && i < 4; ++itr, ++i)
{
uint32 entry = *itr;
creature = me->SummonCreature(entry, Locations[i][0], Locations[i][1], POS_Z, Locations[i][2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
if (creature)
if (Creature* creature = me->SummonCreature(entry, Locations[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000))
{
AddGUID[i] = creature->GetGUID();
AddId[i] = entry;
}
++i;
}
}else
}
else
{
for (uint8 i = 0; i < 4; ++i)
{
Creature* creature = me->SummonCreature(AddId[i], Locations[i][0], Locations[i][1], POS_Z, Locations[i][2], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000);
if (creature)
{
if (Creature* creature = me->SummonCreature(AddId[i], Locations[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 10000))
AddGUID[i] = creature->GetGUID();
}
}
}
}
@@ -235,9 +228,8 @@ public:
{
if (AddGUID[i])
{
Creature* temp = Creature::GetCreature((*me), AddGUID[i]);
if (temp && temp->IsAlive())
temp->DisappearAndDie();
if (Creature* temp = ObjectAccessor::GetCreature(*me, AddGUID[i]))
temp->DespawnOrUnsummon();
}
}
}

View File

@@ -11,6 +11,7 @@
set(scripts_STAT_SRCS
${scripts_STAT_SRCS}
Pet/pet_dk.cpp
Pet/pet_generic.cpp
Pet/pet_hunter.cpp
Pet/pet_mage.cpp
Pet/pet_priest.cpp

View File

@@ -0,0 +1,91 @@
/*
* Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/>
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* Ordered alphabetically using scriptname.
* Scriptnames of files in this file should be prefixed with "npc_pet_gen_".
*/
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "Player.h"
enum Mojo
{
SAY_MOJO = 0,
SPELL_FEELING_FROGGY = 43906,
SPELL_SEDUCTION_VISUAL = 43919
};
class npc_pet_gen_mojo : public CreatureScript
{
public:
npc_pet_gen_mojo() : CreatureScript("npc_pet_gen_mojo") { }
struct npc_pet_gen_mojoAI : public ScriptedAI
{
npc_pet_gen_mojoAI(Creature* creature) : ScriptedAI(creature) { }
void Reset() OVERRIDE
{
_victimGUID = 0;
if (Unit* owner = me->GetOwner())
me->GetMotionMaster()->MoveFollow(owner, 0.0f, 0.0f);
}
void EnterCombat(Unit* /*who*/) OVERRIDE { }
void UpdateAI(uint32 /*diff*/) OVERRIDE { }
void ReceiveEmote(Player* player, uint32 emote) OVERRIDE
{
me->HandleEmoteCommand(emote);
Unit* owner = me->GetOwner();
if (emote != TEXT_EMOTE_KISS || !owner || owner->GetTypeId() != TYPEID_PLAYER ||
owner->ToPlayer()->GetTeam() != player->GetTeam())
{
return;
}
Talk(SAY_MOJO, player->GetGUID());
if (_victimGUID)
if (Player* victim = ObjectAccessor::GetPlayer(*me, _victimGUID))
victim->RemoveAura(SPELL_FEELING_FROGGY);
_victimGUID = player->GetGUID();
DoCast(player, SPELL_FEELING_FROGGY, true);
DoCast(me, SPELL_SEDUCTION_VISUAL, true);
me->GetMotionMaster()->MoveFollow(player, 0.0f, 0.0f);
}
private:
uint64 _victimGUID;
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
return new npc_pet_gen_mojoAI(creature);
}
};
void AddSC_generic_pet_scripts()
{
new npc_pet_gen_mojo();
}

View File

@@ -2034,6 +2034,79 @@ class spell_q12308_escape_from_silverbrook_summon_worgen : public SpellScriptLoa
}
};
enum DeathComesFromOnHigh
{
SPELL_FORGE_CREDIT = 51974,
SPELL_TOWN_HALL_CREDIT = 51977,
SPELL_SCARLET_HOLD_CREDIT = 51980,
SPELL_CHAPEL_CREDIT = 51982,
NPC_NEW_AVALON_FORGE = 28525,
NPC_NEW_AVALON_TOWN_HALL = 28543,
NPC_SCARLET_HOLD = 28542,
NPC_CHAPEL_OF_THE_CRIMSON_FLAME = 28544
};
// 51858 - Siphon of Acherus
class spell_q12641_death_comes_from_on_high : public SpellScriptLoader
{
public:
spell_q12641_death_comes_from_on_high() : SpellScriptLoader("spell_q12641_death_comes_from_on_high") { }
class spell_q12641_death_comes_from_on_high_SpellScript : public SpellScript
{
PrepareSpellScript(spell_q12641_death_comes_from_on_high_SpellScript);
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_FORGE_CREDIT) ||
!sSpellMgr->GetSpellInfo(SPELL_TOWN_HALL_CREDIT) ||
!sSpellMgr->GetSpellInfo(SPELL_SCARLET_HOLD_CREDIT) ||
!sSpellMgr->GetSpellInfo(SPELL_CHAPEL_CREDIT))
return false;
return true;
}
void HandleDummy(SpellEffIndex /*effIndex*/)
{
uint32 spellId = 0;
TC_LOG_ERROR(LOG_FILTER_SPELLS_AURAS, "spell_q12641_death_comes_from_on_high:: Caster: %s (GUID: %u) On Hit Target: Creature: %s (Entry: %u GUID: %u)",
GetOriginalCaster()->GetName().c_str(), GetOriginalCaster()->GetGUIDLow(), GetHitCreature()->GetName().c_str(), GetHitCreature()->GetEntry(), GetHitCreature()->GetGUIDLow());
switch (GetHitCreature()->GetEntry())
{
case NPC_NEW_AVALON_FORGE:
spellId = SPELL_FORGE_CREDIT;
break;
case NPC_NEW_AVALON_TOWN_HALL:
spellId = SPELL_TOWN_HALL_CREDIT;
break;
case NPC_SCARLET_HOLD:
spellId = SPELL_SCARLET_HOLD_CREDIT;
break;
case NPC_CHAPEL_OF_THE_CRIMSON_FLAME:
spellId = SPELL_CHAPEL_CREDIT;
break;
default:
return;
}
GetOriginalCaster()->CastSpell((Unit*)NULL, spellId, true);
}
void Register() OVERRIDE
{
OnEffectHitTarget += SpellEffectFn(spell_q12641_death_comes_from_on_high_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
SpellScript* GetSpellScript() const OVERRIDE
{
return new spell_q12641_death_comes_from_on_high_SpellScript();
}
};
void AddSC_quest_spell_scripts()
{
new spell_q55_sacred_cleansing();
@@ -2083,4 +2156,5 @@ void AddSC_quest_spell_scripts()
new spell_q12690_burst_at_the_seams();
new spell_q12308_escape_from_silverbrook_summon_worgen();
new spell_q12308_escape_from_silverbrook();
new spell_q12641_death_comes_from_on_high();
}

View File

@@ -1575,130 +1575,34 @@ public:
## npc_brewfest_reveler
####*/
class npc_brewfest_reveler : public CreatureScript
enum BrewfestReveler
{
public:
npc_brewfest_reveler() : CreatureScript("npc_brewfest_reveler") { }
struct npc_brewfest_revelerAI : public ScriptedAI
{
npc_brewfest_revelerAI(Creature* creature) : ScriptedAI(creature) {}
void ReceiveEmote(Player* player, uint32 emote) OVERRIDE
{
if (!IsHolidayActive(HOLIDAY_BREWFEST))
return;
if (emote == TEXT_EMOTE_DANCE)
me->CastSpell(player, 41586, false);
}
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
return new npc_brewfest_revelerAI(creature);
}
SPELL_BREWFEST_TOAST = 41586
};
#define SAY_RANDOM_MOJO0 "Now that's what I call froggy-style!"
#define SAY_RANDOM_MOJO1 "Your lily pad or mine?"
#define SAY_RANDOM_MOJO2 "This won't take long, did it?"
#define SAY_RANDOM_MOJO3 "I thought you'd never ask!"
#define SAY_RANDOM_MOJO4 "I promise not to give you warts..."
#define SAY_RANDOM_MOJO5 "Feelin' a little froggy, are ya?"
#define SAY_RANDOM_MOJO6a "Listen, "
#define SAY_RANDOM_MOJO6b ", I know of a little swamp not too far from here...."
#define SAY_RANDOM_MOJO7 "There's just never enough Mojo to go around..."
class npc_mojo : public CreatureScript
class npc_brewfest_reveler : public CreatureScript
{
public:
npc_mojo() : CreatureScript("npc_mojo") { }
public:
npc_brewfest_reveler() : CreatureScript("npc_brewfest_reveler") { }
struct npc_mojoAI : public ScriptedAI
{
npc_mojoAI(Creature* creature) : ScriptedAI(creature) {Reset();}
uint32 hearts;
uint64 victimGUID;
void Reset() OVERRIDE
struct npc_brewfest_revelerAI : public ScriptedAI
{
victimGUID = 0;
hearts = 15000;
if (Unit* own = me->GetOwner())
me->GetMotionMaster()->MoveFollow(own, 0, 0);
}
npc_brewfest_revelerAI(Creature* creature) : ScriptedAI(creature) { }
void EnterCombat(Unit* /*who*/)OVERRIDE {}
void ReceiveEmote(Player* player, uint32 emote) OVERRIDE
{
if (!IsHolidayActive(HOLIDAY_BREWFEST))
return;
void UpdateAI(uint32 diff) OVERRIDE
if (emote == TEXT_EMOTE_DANCE)
me->CastSpell(player, SPELL_BREWFEST_TOAST, false);
}
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
if (me->HasAura(20372))
{
if (hearts <= diff)
{
me->RemoveAurasDueToSpell(20372);
hearts = 15000;
} hearts -= diff;
}
return new npc_brewfest_revelerAI(creature);
}
void ReceiveEmote(Player* player, uint32 emote) OVERRIDE
{
me->HandleEmoteCommand(emote);
Unit* owner = me->GetOwner();
if (emote != TEXT_EMOTE_KISS || !owner || owner->GetTypeId() != TYPEID_PLAYER ||
owner->ToPlayer()->GetTeam() != player->GetTeam())
{
return;
}
std::string whisp = "";
switch (rand() % 8)
{
case 0:
whisp.append(SAY_RANDOM_MOJO0);
break;
case 1:
whisp.append(SAY_RANDOM_MOJO1);
break;
case 2:
whisp.append(SAY_RANDOM_MOJO2);
break;
case 3:
whisp.append(SAY_RANDOM_MOJO3);
break;
case 4:
whisp.append(SAY_RANDOM_MOJO4);
break;
case 5:
whisp.append(SAY_RANDOM_MOJO5);
break;
case 6:
whisp.append(SAY_RANDOM_MOJO6a);
whisp.append(player->GetName());
whisp.append(SAY_RANDOM_MOJO6b);
break;
case 7:
whisp.append(SAY_RANDOM_MOJO7);
break;
}
me->MonsterWhisper(whisp.c_str(), player->GetGUID());
if (victimGUID)
if (Player* victim = ObjectAccessor::GetPlayer(*me, victimGUID))
victim->RemoveAura(43906); // remove polymorph frog thing
me->AddAura(43906, player); // add polymorph frog thing
victimGUID = player->GetGUID();
DoCast(me, 20372, true); // tag.hearts
me->GetMotionMaster()->MoveFollow(player, 0, 0);
hearts = 15000;
}
};
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
return new npc_mojoAI(creature);
}
};
enum TrainingDummy
@@ -2554,7 +2458,6 @@ void AddSC_npcs_special()
new npc_steam_tonk();
new npc_tonk_mine();
new npc_brewfest_reveler();
new npc_mojo();
new npc_training_dummy();
new npc_wormhole();
new npc_pet_trainer();