Merge pull request #11667 from Mihapro/Q14069

DB/Quest: Good Help is Hard to Find script
This commit is contained in:
Aokromes
2014-03-22 14:22:29 +01:00
2 changed files with 37 additions and 111 deletions

View File

@@ -0,0 +1,37 @@
-- Good Help is Hard to Find (14069) quest script
DELETE FROM `conditions` WHERE `SourceGroup` = 34830;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(18, 34830, 66306, 0, 7, 9, 0, 14069, 0, 0, 0, 0, 0, '', 'Requires Good Help is Hard to Find quest active for spellclick');
DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 34830;
INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
(34830, 66306, 1, 0);
DELETE FROM `creature_text` WHERE `entry` = 34830;
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
(34830, 0, 0, 'Don''t tase me, mon!', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 1, 'I report you to HR!', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 2, 'I''m going. I''m going!', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 3, 'Oops, break''s over.', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 4, 'Sorry, mon. It won''t happen again.', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 5, 'What I doin'' wrong? Don''t I get a lunch and two breaks a day, mon?', 12, 0, 100, 0, 0, 0, 'Defiant Troll'),
(34830, 0, 6, 'Work was bettah in da Undermine!', 12, 0, 100, 0, 0, 0, 'Defiant Troll');
UPDATE `creature_template` SET `AIName` = "SmartAI", `ScriptName` = '' WHERE `entry` = 34830;
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (34830, 3483000, 3483001, 3483002, 3483003, 3483004);
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
(34830, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 11, 45111, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - on spawn - cast Enrage on self (45111)'),
(34830, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 87, 3483001, 3483002, 3483003, 3483004, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - linked - random actionlist/emote state'),
(3483001, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 17, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - emote state'),
(3483002, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 17, 12, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - emote state'),
(3483003, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 17, 26, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - emote state'),
(3483004, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 17, 378, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - emote state'),
(34830, 0, 5, 0, 8, 0, 100, 1, 66306, 0, 0, 0, 80, 3483000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - on spellhit (66306) - run actionlist (3483000)'),
(3483000, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 83, 16777216, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - remove npc_spellclick_spells flag'),
(3483000, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 28, 45111, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - remove Enrage (45111)'),
(3483000, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 17, 26, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - set emote state (26)'),
(3483000, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 33, 34830, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - give quest credit (34830)'),
(3483000, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - say text 0'),
(3483000, 9, 5, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 89, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - set random movement'),
(3483000, 9, 6, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Defiant Troll - actionlist - despawn');

View File

@@ -13,117 +13,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "Player.h"
/*####
## npc_defiant_troll (http://www.wowhead.com/quest=14069)
####*/
enum DefiantTrollEnum
{
DEFFIANT_KILL_CREDIT = 34830,
SPELL_LIGHTNING_VISUAL = 45870,
SPELL_ENRAGE = 45111,
QUEST_GOOD_HELP_IS_HARD_TO_FIND = 14069,
GO_DEPOSIT = 195489,
SAY_WORK = 0
};
class npc_defiant_troll : public CreatureScript
{
public:
npc_defiant_troll() : CreatureScript("npc_defiant_troll") { }
CreatureAI* GetAI(Creature* creature) const OVERRIDE
{
return new npc_defiant_trollAI(creature);
}
struct npc_defiant_trollAI : public ScriptedAI
{
npc_defiant_trollAI(Creature* creature) : ScriptedAI(creature) { }
uint32 rebuffTimer;
bool work;
void Reset () OVERRIDE
{
rebuffTimer = 0;
work = false;
me->CastSpell(me, SPELL_ENRAGE, true);
}
void MovementInform(uint32 /*type*/, uint32 id) OVERRIDE
{
if (id == 1)
work = true;
}
bool IsWorking() const { return work; }
void UpdateAI(uint32 diff) OVERRIDE
{
if (IsWorking())
me->HandleEmoteCommand(EMOTE_ONESHOT_WORK_MINING);
if (rebuffTimer <= diff)
{
Reset();
switch (urand(0, 2))
{
case 0:
me->HandleEmoteCommand(EMOTE_STATE_EXCLAIM);
break;
case 1:
me->HandleEmoteCommand(EMOTE_STATE_DANCE);
break;
case 2:
me->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
break;
}
rebuffTimer = 120000; // Rebuff again in 2 minutes
}
else
rebuffTimer -= diff;
if (!UpdateVictim())
return;
//DoMeleeAttackIfReady();
}
};
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
{
if (player->GetQuestStatus(QUEST_GOOD_HELP_IS_HARD_TO_FIND) == QUEST_STATUS_INCOMPLETE && !CAST_AI(npc_defiant_troll::npc_defiant_trollAI, creature->AI())->IsWorking())
{
player->CastSpell(creature, SPELL_LIGHTNING_VISUAL, true);
player->KilledMonsterCredit(DEFFIANT_KILL_CREDIT, creature->GetGUID());
creature->AI()->Talk(SAY_WORK);
creature->RemoveAllAuras();
if (GameObject* deposit = creature->FindNearestGameObject(GO_DEPOSIT, 20))
creature->GetMotionMaster()->MovePoint(1, deposit->GetPositionX() - 1.0f, deposit->GetPositionY(), deposit->GetPositionZ());
if (player->GetQuestStatus(QUEST_GOOD_HELP_IS_HARD_TO_FIND) == QUEST_STATUS_COMPLETE)
player->RemoveAura(SPELL_LIGHTNING_VISUAL);
player->CLOSE_GOSSIP_MENU();
return true;
}
player->CLOSE_GOSSIP_MENU();
return false;
}
};
void AddSC_kezan()
{
new npc_defiant_troll();
}