ArcEmu: C++ Boss Script - ArcEmu

Jump to content

Toggle shoutbox Lastest Announcements

dfighter  : (07 December 2014 - 12:06 PM) Arcemu is in hibernation mode, please read http://arcemu.org/fo...showtopic=26903
dfighter  : (01 January 2013 - 05:56 PM) Arcemu wishes you all a happy new year!
Hasbro  : (12 September 2012 - 10:01 AM) Please excuse our outage from the web! Our web host had a major malfunction!
dfighter  : (01 September 2012 - 04:05 PM) Since the spam bots just don't want to stop, I've enabled admin verification when registering.
dfighter  : (23 January 2012 - 09:56 PM) Please note that from now on you will need to confirm your email on the wiki in order to edit it!
Hasbro  : (31 December 2011 - 12:50 PM) Happy New Years all!
Navid  : (26 December 2011 - 04:09 AM) Merry Christmas !!!!!! Happy holidays all :)
WAmadeus  : (24 December 2011 - 03:54 PM) Merry Christmas to all!
dfighter  : (24 December 2011 - 11:05 AM) The Arcemu team wishes y'all a Merry Christmukkah!
Hasbro  : (05 October 2011 - 12:53 PM) Looking for web designers for upcoming web related project. If you're interested in designing user interfaces contact me
dfighter  : (02 September 2011 - 03:47 PM) So who here wants vehicles in Arcemu? :P http://arcemu.org/fo...showtopic=25440
Hasbro  : (14 August 2011 - 03:25 PM) Join us on irc, grab an irc client and connect to irc.freenode.net join channel #arcemu /server irc.freenode.net:6667 /join #arcemu
jackpoz  : (03 August 2011 - 05:33 AM) to all Lua Engine (old one) users: please check http://arcemu.org/fo...showtopic=25274
Hasbro  : (20 May 2011 - 05:27 PM) Looking for people experienced with CMake configuration and setup! Contact me asap
Hasbro  : (15 May 2011 - 05:03 PM) ArcEmu is recruiting C++ programmers, contact Hasbro if interested.
paroxysm  : (03 May 2011 - 06:26 PM) Updated luabridge gossip example to describe the whole gossip creation process rather than just how to create menu. Gossip tutorial
paroxysm  : (23 April 2011 - 11:35 AM) Lua writers can refer to the Luabridge Tutorials section in the Wiki to learn how to write gossip code correctly.
Hasbro  : (20 April 2011 - 05:22 PM) Thank you for your continuous contribution of bug reports, we are working on them.
Hasbro  : (17 April 2011 - 03:20 AM) Please consider donating to support our bills. Donations can be sent using PayPal to donations@arcemu.org - Thank you for your support.
paroxysm  : (10 April 2011 - 12:43 AM) Refer to the Luabridge Tutorials section in the Wiki to learn the new syntax of luabridge.
Resize Shouts Area

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

C++ Boss Script

#1 User is offline   lexythelord 

  • Member
  • Pip
  • Group: Members
  • Posts: 40
  • Joined: 23-December 10
  • Gender:Male

Posted 16 July 2014 - 06:43 AM

Hello. I'm having trouble with a boss script. Here it is:

Code:
/*
TODO:
-implement heroic stuff;
-implement stinky;
-implement emotes;
*/

#include "Setup.h"

#define FESTERGUT 36626

// Texts
// Festergut
#define SAY_STINKY_DIES "NOOOO! You kill Stinky! You pay!"
#define SAY_AGGRO "Fun time!"
#define SAY_PUNGENT_BLIGHT "Gyah! Uhhh, I not feel so good..."
#define SAY_KILLING_A_PLAYER_1 "Daddy, I did it!"
#define SAY_KILLING_A_PLAYER_2 "Dead, dead, dead!"
#define SAY_BERSERK "Fun time over!"
#define SAY_DEATH "Festergut yells: Da ... Ddy..."

// Professor Putricide
#define SAY_PUTRICIDE_GASEOUS_BLIGHT "Professor Putricide yells: Just an ordinary gas cloud. But watch out, because that's no ordinary gas cloud!"
#define SAY_FESTERGUT_DEATH "Professor Putricide yells: Oh, Festergut. You were always my favorite. Next to Rotface. The good news is you left behind so much gas, I can practically taste it!"

// Emotes - Festergut
// Gas Spore - fart
// Pungent Blight - vomit

// Warnings
#define WARN_PUNGENT_BLIGHT "Festergut begins to cast Pungent Blight!"
#define WARN_GAS_SPORE "Festergut begins to cast Gas Spore!"

enum Spells
{
    // Festergut
	SPELL_BERSERK               = 47008,
    SPELL_INHALE_BLIGHT         = 69165,
    SPELL_PUNGENT_BLIGHT        = 69195,
    SPELL_GASTRIC_BLOAT         = 72219, // 72214 is the proper way (with proc) but atm procs can't have cooldown for creatures
    SPELL_GASTRIC_EXPLOSION     = 72227,
    SPELL_GAS_SPORE             = 69278,
    SPELL_VILE_GAS              = 69240,
    SPELL_INOCULATED            = 69291,

    // Stinky
    SPELL_MORTAL_WOUND          = 71127,
    SPELL_DECIMATE              = 71123,
    SPELL_PLAGUE_STENCH         = 71805,
};

// Timers
int32 BerserkTimer;
int32 InhaleBlightTimer;
int32 VileGasTimer;
int32 GasSporeTimer;
int32 GastricBloatTimer;

// Other
int32 inhaleCounter = 0;

class FestergutAI : public MoonScriptBossAI
{
		MOONSCRIPT_FACTORY_FUNCTION(FestergutAI, MoonScriptBossAI);
		FestergutAI(Creature* pCreature) : MoonScriptBossAI(pCreature)
		{
		    AddEmote(Event_OnCombatStart, SAY_AGGRO, Text_Yell, 16901);
            AddEmote(Event_OnTargetDied, SAY_KILLING_A_PLAYER_1, Text_Yell, 16902);
            AddEmote(Event_OnTargetDied, SAY_KILLING_A_PLAYER_2, Text_Yell, 16903);
            AddEmote(Event_OnDied, SAY_DEATH, Text_Yell, 16094);

			/*
			FESTERGUT:
			------------------------
			BerserkTimer        DONE
			InhaleBlightTimer   DONE
			VileGasTimer        DONE -- not sure if OK 
			GasSporeTimer       DONE
			GastricBloatTimer   DONE
			------------------------
			STINKY:
			MortalWoundTimer
			DecimateTimer
			PlagueStentch			*/

			BerserkTimer = AddTimer(300000); 
			InhaleBlightTimer = AddTimer(27500); // random between 25000 and 30000
			VileGasTimer = AddTimer(28000); // random 28000 - 35000
			GasSporeTimer = AddTimer(20000); // random 20000 - 25000
			GastricBloatTimer = AddTimer(12500); // random 12500 - 15000

		}

		void AIUpdate()
		{
			if(IsTimerFinished(BerserkTimer))
			{
				_unit->CastSpell(_unit, SPELL_BERSERK, true);
				Emote(SAY_BERSERK, Text_Yell, 0);
				RemoveTimer(BerserkTimer);
			}

			if(IsTimerFinished(InhaleBlightTimer))
			{
				if(inhaleCounter == 3)
				{
					SpellDesc* spPungentBlight = AddSpell(SPELL_PUNGENT_BLIGHT, Target_Self, 100, 3, 15, 3.5f, 16);
						spPungentBlight->AddAnnouncement(WARN_PUNGENT_BLIGHT);
					inhaleCounter = 0;
					
					ResetTimer(GasSporeTimer, 20000); // 20000 - 25000 random
				}
				else
				{
					inhaleCounter++;
						_unit->CastSpell(SPELL_TARGET_RANDOM_PLAYER, SPELL_INHALE_BLIGHT, true);

						ResetTimer(InhaleBlightTimer, 33500); // random 33500 - 35000
			}
		}
			
			if(IsTimerFinished(VileGasTimer))
			{
				_unit->CastSpell(SPELL_TARGET_RANDOM_PLAYER, SPELL_VILE_GAS, true);
				ResetTimer(VileGasTimer, 28000); // random 28000 - 35000
			}

			if(IsTimerFinished(GasSporeTimer))
			{
				SpellDesc* spGasSpore = AddSpell(SPELL_GAS_SPORE, Target_Self, 100, 0, 18, 3.5f, 16);
					spGasSpore->AddAnnouncement(WARN_GAS_SPORE);

				ResetTimer(GasSporeTimer, 40000); // random 40000 - 45000
				ResetTimer(VileGasTimer, 28000); // random 28000 - 35000
			}

			if(IsTimerFinished(GastricBloatTimer))
			{
				_unit->CastSpell(SPELL_TARGET_RANDOM_PLAYER, SPELL_GASTRIC_BLOAT, true); // not sure if random player
				
				ResetTimer(GastricBloatTimer, 15000); // random 15000 - 17500
			}
	}

};

void SetupFestergut(ScriptMgr* mgr)
{
    mgr->register_creature_script(FESTERGUT, &FestergutAI::Create);
}

The functions like OnDied etc are working, but the timers are not. Also included what needed to be included in Setup.h and Setup.cpp, no compiling errors.
0

#2 User is offline   dfighter 

  • Titles are overrated
  • PipPipPipPipPipPipPipPipPipPip
  • Group: Administrator
  • Posts: 5,189
  • Joined: 14-June 08
  • IRC:dfighter
  • Gender:Male
  • Server OS:Linux

Posted 17 July 2014 - 08:20 AM

I've never cared to learn the scripting API so I can't help, just give you an advice:
Debug it, trace the execution of the script and find out why it doesn't work.
"The demand for free goods is infinite."
0

#3 User is offline   lexythelord 

  • Member
  • Pip
  • Group: Members
  • Posts: 40
  • Joined: 23-December 10
  • Gender:Male

Posted 17 July 2014 - 08:27 AM

Will do.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users