mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 23:50:44 +01:00
Merge branch 'master' of github.com:TrinityCore/TrinityCore
This commit is contained in:
24
sql/updates/auth/2013_08_30_04_auth_misc.sql
Normal file
24
sql/updates/auth/2013_08_30_04_auth_misc.sql
Normal 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);
|
||||
|
||||
83
sql/updates/world/2013_08_31_02_world_sai.sql
Normal file
83
sql/updates/world/2013_08_31_02_world_sai.sql
Normal 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');
|
||||
10
sql/updates/world/2013_08_31_03_world_creature_text.sql
Normal file
10
sql/updates/world/2013_08_31_03_world_creature_text.sql
Normal 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');
|
||||
@@ -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');
|
||||
@@ -0,0 +1 @@
|
||||
UPDATE `creature_template` SET `ScriptName`='npc_pet_gen_mojo' WHERE `ScriptName`='npc_mojo';
|
||||
10
sql/updates/world/2013_08_31_06_world_smart_scripts.sql
Normal file
10
sql/updates/world/2013_08_31_06_world_smart_scripts.sql
Normal 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');
|
||||
26
sql/updates/world/2013_08_31_07_world_creature.sql
Normal file
26
sql/updates/world/2013_08_31_07_world_creature.sql
Normal 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;
|
||||
12
sql/updates/world/2013_08_31_08_world_command.sql
Normal file
12
sql/updates/world/2013_08_31_08_world_command.sql
Normal 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';
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
91
src/server/scripts/Pet/pet_generic.cpp
Normal file
91
src/server/scripts/Pet/pet_generic.cpp
Normal 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();
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user