/src/server/scripts/Pet/pet_generic.cpp
https://gitlab.com/tkrokli/TrinityCore_434 · C++ · 93 lines · 56 code · 17 blank · 20 comment · 9 complexity · 7793ff51f2a7f11310156e5ee359cc99 MD5 · raw file
- /*
- * Copyright (C) 2008-2015 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.Clear();
- 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);
- 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:
- ObjectGuid _victimGUID;
- };
- CreatureAI* GetAI(Creature* creature) const override
- {
- return new npc_pet_gen_mojoAI(creature);
- }
- };
- void AddSC_generic_pet_scripts()
- {
- new npc_pet_gen_mojo();
- }