• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

[SHARE] Creature Script

Mookz

Epic Member
Code:
#define Creature Azhara World Boss

enum Spells
{
	Spell_Fireblast = 36920,
	Spell_Frostbolt = 43035,
	Spell_ArcaneMissiles  = 109900,
	Spell_BerzerkerBlaze = 147038,
};
 enum Events
{
    EVENT_Fireblast = 1,
    EVENT_Frostbolt = 2,
    EVENT_ArcaneMissiles = 3,
	EVENT_BerzerkerBlaze = 4,
};
 void EnterCombat(Unit* /*who*/) OVERRIDE
{
	                events.ScheduleEvent(EVENT_Fireblast, 8000);
                events.ScheduleEvent(EVENT_Frostbolt, 12000);
                events.ScheduleEvent(EVENT_ArcaneMissiles , 10000);
				events.ScheduleEvent(EVENT_BerzerkerBlaze, 9000);
}

 while (uint32 eventId = events.ExecuteEvent())
{
    switch (eventId)
    {
        case EVENT_Fireblast:
            DoCastVictim(Spell_Fireblast, 8000);
            events.ScheduleEvent(EVENT_Fireblast, 8000);
			break;
        case EVENT_Frostbolt:
			if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
                DoCast(target, SPELL_Frostbolt);
            break;
        case EVENT_ArcaneMissiles:
			if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0))
                DoCast(target, SPELL_ArcaneMissiles);
            break;
		case EVENT_BerzerkerBlaze:
			 DoCast(me, SPELL_BerzerkerBlaze);
            events.ScheduleEvent(EVENT_BerzerkerBlaze, 9000);
			break;
        default:
            break;
    }
}
 public:
    npc_boss_died() : CreatureScript("npc_boss_died") { }
	
    struct npc_boss_diedAI : public ScriptedAI
    {
        npc_boss_diedAI(Creature* creature) : ScriptedAI(creature) { }
		
        void JustDied(Unit* killer)
        {
            std::ostringstream ss;
            if (killer->GetTypeId() == TYPEID_PLAYER)
            {
                ss << killer->ToPlayer()->GetName()
                   << " has killed "
                   << me->GetName()
                   << " a Rare Boss!";
                sWorld->SendGlobalText(ss.str().c_str(), NULL);
            }
        }
   };
	
    CreatureAI* GetAI(Creature* creature) const
    {
        return new npc_boss_diedAI(creature);
    }
};

void AddSC_rare_boss()
{
    new npc_boss_died;
}
class npc_rare_boss_trigger : public CreatureScript
{
public:
    npc_rare_boss_trigger() : CreatureScript("npc_rare_boss_trigger") { }
	
    struct npc_rare_boss_triggerAI : public ScriptedAI
    {
        npc_rare_boss_triggerAI(Creature* creature) : ScriptedAI(creature) { }
		
        uint32 spawnTimer;
		
        void Reset()
        {
            spawnTimer = 3600000; // 3600000 = 1hr
        }
		
        void UpdateAI(uint32 diff)
        {
            if (spawnTimer <= diff)
            {
                int random = urand(0, 2);
                if (random == 0)
                    me->SummonCreature(ENTRYID, X, Y, Z, O, TEMPSUMMON_MANUAL_DESPAWN, 0);
                else if (random == 1)
                    me->SummonCreature(ENTRYID, X, Y, Z, O, TEMPSUMMON_MANUAL_DESPAWN, 0);
                else if (random == 2)
                    me->SummonCreature(ENTRYID, X, Y, Z, O, TEMPSUMMON_MANUAL_DESPAWN, 0);
                spawnTimer = 3600000;
            }
            else
                spawnTimer -= diff;
        }
   };
	
    CreatureAI* GetAI(Creature* creature) const
    {
        return new npc_rare_boss_triggerAI(creature);
    }
};

void AddSC_boss_trigger()
{
    new npc_rare_boss_trigger;
}

I do not take credit for this script. I just wanted to share it for everyone here on ED!
 
Last edited by a moderator:

frost

Banned
thanks for sharing this :) i just love creature scripts. i use them as references as im scripting my own :D
 
Top