mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
DB/SAI: Taking on All Challengers & Defending Your Title
This commit is contained in:
50
sql/updates/world/2012_08_31_00_world_sai.sql
Normal file
50
sql/updates/world/2012_08_31_00_world_sai.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Defending Your Title (13423)
|
||||
-- Taking on All Challengers (12971)
|
||||
|
||||
SET @NPC_CHALLENGER := 30012; -- Victorious Challenger
|
||||
SET @QUEST1 := 12971;
|
||||
SET @QUEST2 := 13423;
|
||||
SET @GOSSIP_MENUID := 9865;
|
||||
SET @SPELL_SUNDER := 11971; -- Sunder Armor
|
||||
SET @SPELL_REND := 11977; -- Rend
|
||||
|
||||
UPDATE `creature_template` SET `faction_A`=2109,`faction_H`=2109,`unit_flags`=0x8000,`npcflag`=0x1,`gossip_menu_id`=@GOSSIP_MENUID,`AIName`='SmartAI',`ScriptName`='' WHERE `entry`=@NPC_CHALLENGER;
|
||||
|
||||
DELETE FROM `creature_template_addon` WHERE `entry`=@NPC_CHALLENGER;
|
||||
INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`auras`) VALUES
|
||||
(@NPC_CHALLENGER,0,0x0,0x1,'');
|
||||
|
||||
DELETE FROM `creature_text` WHERE `entry`=@NPC_CHALLENGER;
|
||||
INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
|
||||
(@NPC_CHALLENGER,0,0,'You will not defeat me!',12,0,100,0,0,0,'Victorious Challenger'),
|
||||
(@NPC_CHALLENGER,0,1,'You''re not worthy of Thorim!',12,0,100,0,0,0,'Victorious Challenger'),
|
||||
(@NPC_CHALLENGER,0,2,'Good luck... You''ll need it!',12,0,100,0,0,0,'Victorious Challenger'),
|
||||
(@NPC_CHALLENGER,0,3,'May the best win!',12,0,100,0,0,0,'Victorious Challenger');
|
||||
|
||||
DELETE FROM `gossip_menu` WHERE `entry`=@GOSSIP_MENUID;
|
||||
INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
|
||||
(@GOSSIP_MENUID,13660);
|
||||
|
||||
DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP_MENUID;
|
||||
INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
|
||||
(@GOSSIP_MENUID,0,0,'Let''s do this, sister.',1,1,0,0,0,0,'');
|
||||
|
||||
DELETE FROM `creature_equip_template` WHERE `entry`=@NPC_CHALLENGER;
|
||||
INSERT INTO `creature_equip_template` (`entry`,`itemEntry1`,`itemEntry2`,`itemEntry3`) VALUES
|
||||
(@NPC_CHALLENGER,40542,39288,0);
|
||||
|
||||
DELETE FROM `smart_scripts` WHERE (`source_type`=0 AND `entryorguid`=@NPC_CHALLENGER) OR (`source_type`=9 AND `entryorguid`=@NPC_CHALLENGER*100);
|
||||
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
|
||||
(@NPC_CHALLENGER,0,0,0,25,0,100,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Victorious Challenger - On Reset - Set Default Faction'),
|
||||
(@NPC_CHALLENGER,0,1,2,62,0,100,0,@GOSSIP_MENUID,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Victorious Challenger - On Gossip - Close Gossip'),
|
||||
(@NPC_CHALLENGER,0,2,0,61,0,100,0,0,0,0,0,80,@NPC_CHALLENGER*100,0,0,0,0,0,1,0,0,0,0,0,0,0,'Victorious Challenger - On Gossip - Run Timed Script'),
|
||||
(@NPC_CHALLENGER,0,3,0,9,0,100,0,0,5,5000,10000,11,@SPELL_SUNDER,0,0,0,0,0,2,0,0,0,0,0,0,0,'Victorious Challenger - On Range - Cast Sunder Armor'),
|
||||
(@NPC_CHALLENGER,0,4,0,0,0,100,0,10000,15000,15000,20000,11,@SPELL_REND,0,0,0,0,0,2,0,0,0,0,0,0,0,'Victorious Challenger - IC - Cast Rend'),
|
||||
(@NPC_CHALLENGER*100,9,0,0,0,0,100,0,1000,1000,1000,1000,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Victorious Challenger - Timed - Talk'),
|
||||
(@NPC_CHALLENGER*100,9,1,0,0,0,100,0,3000,3000,3000,3000,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0,'Victorious Challenger - Timed - Set Faction Hostile'),
|
||||
(@NPC_CHALLENGER*100,9,2,0,0,0,100,0,0,0,0,0,49,0,0,0,0,0,0,7,0,0,0,0,0,0,0,'Victorious Challenger - Timed - Attack Invoker');
|
||||
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP_MENUID;
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
|
||||
(15,@GOSSIP_MENUID,0,0,0,9,0,@QUEST1,0,0,0,0,'','Show gossip option 0 if player has quest Taking on All Challengers'),
|
||||
(15,@GOSSIP_MENUID,0,0,1,9,0,@QUEST2,0,0,0,0,'','Show gossip option 0 if player has quest Defending Your Title');
|
||||
@@ -194,103 +194,6 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_victorious_challenger
|
||||
######*/
|
||||
|
||||
#define GOSSIP_CHALLENGER "Let's do this, sister."
|
||||
|
||||
enum eVictoriousChallenger
|
||||
{
|
||||
QUEST_TAKING_ALL_CHALLENGERS = 12971,
|
||||
QUEST_DEFENDING_YOUR_TITLE = 13423,
|
||||
|
||||
SPELL_SUNDER_ARMOR = 11971,
|
||||
SPELL_REND_VC = 11977
|
||||
};
|
||||
|
||||
class npc_victorious_challenger : public CreatureScript
|
||||
{
|
||||
public:
|
||||
npc_victorious_challenger() : CreatureScript("npc_victorious_challenger") { }
|
||||
|
||||
struct npc_victorious_challengerAI : public ScriptedAI
|
||||
{
|
||||
npc_victorious_challengerAI(Creature* creature) : ScriptedAI(creature) {}
|
||||
|
||||
uint32 SunderArmorTimer;
|
||||
uint32 RendTimer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->RestoreFaction();
|
||||
|
||||
SunderArmorTimer = 10000;
|
||||
RendTimer = 15000;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (RendTimer < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_REND_VC, true);
|
||||
RendTimer = 15000;
|
||||
}else RendTimer -= diff;
|
||||
|
||||
if (SunderArmorTimer < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_SUNDER_ARMOR, true);
|
||||
SunderArmorTimer = 10000;
|
||||
}else SunderArmorTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
me->RestoreFaction();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
bool OnGossipHello(Player* player, Creature* creature)
|
||||
{
|
||||
if (creature->isQuestGiver())
|
||||
player->PrepareQuestMenu(creature->GetGUID());
|
||||
|
||||
if (player->GetQuestStatus(QUEST_TAKING_ALL_CHALLENGERS) == QUEST_STATUS_INCOMPLETE || player->GetQuestStatus(QUEST_DEFENDING_YOUR_TITLE) == QUEST_STATUS_INCOMPLETE)
|
||||
{
|
||||
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CHALLENGER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
|
||||
player->SEND_GOSSIP_MENU(player->GetGossipTextId(creature), creature->GetGUID());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
|
||||
{
|
||||
player->PlayerTalkClass->ClearMenus();
|
||||
if (action == GOSSIP_ACTION_INFO_DEF+1)
|
||||
{
|
||||
player->CLOSE_GOSSIP_MENU();
|
||||
creature->setFaction(14);
|
||||
creature->AI()->AttackStart(player);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return new npc_victorious_challengerAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## npc_loklira_crone
|
||||
######*/
|
||||
@@ -753,7 +656,6 @@ void AddSC_storm_peaks()
|
||||
new npc_agnetta_tyrsdottar();
|
||||
new npc_frostborn_scout();
|
||||
new npc_thorim();
|
||||
new npc_victorious_challenger();
|
||||
new npc_loklira_crone();
|
||||
new npc_injured_goblin();
|
||||
new npc_roxi_ramrocket();
|
||||
|
||||
Reference in New Issue
Block a user