Algalon the Observer

Scripturi C++ pentru Ascent

Algalon the Observer

Postby meandyou2 » 08 May 2010, 10:16

Vad ca nimeni nu prea posteaza la aceasta sectiune.
script: Algalon the Observer
%Complete: 75%
Scriptul este pentru tc2.
Code: Select all
//#########################
//        meandyou                         
// @ WoW.Ultimate.ro                   
//   Algalon the 0bserver v1           
//                                             
//########################
/* ScriptData
Name: Algalon the Observer
%Complete: 75%
Comment:WoW.Ultimate.ro
Category: ~
EndScriptData */

#include "precompiled.h"

#define EMOTE_ROAR                   -2000004


#define SPELL_QUANTUMSTRIKE          64395
#define SPELL_PHASEPUNCH               64412

#define SPELL_COSMICSMASH           62311   
#define SPELL_BIGBANG                    64443   
#define SPELL_ASCENDTOTHEHEAVENS            64487
     
#define CREATURE_ADDS                  33052

static float MovementLocations[4][3]=
{
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT}
};

static float SpawnLocations[4][3]=
{
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
    {SPAWNLOCATION=TREBUIE SCHIMBAT},
};

struct TRINITY_DLL_DECL boss_algalonAI : public ScriptedAI
{
    boss_algalonAI(Creature* c) : ScriptedAI(c) {}

    uint32 Phase;

    uint32 QuantumStrikeTimer;
    uint32 PhasePunchTimer;
    uint32 PhasePunchTimer;
    uint32 MovementTimer;
    uint32 CosmicSmashTimer;
    uint32 BigBangTimer;
    uint32 AscendtotheHeavensTimer;

    bool InitialSpawn;

    void Reset()
    {
        Phase = 1;

        QuantumStrikeTimer = 20000;
        QuantumStrikeTimer = 2000;
        PhasePunchTimer = 40000;
        MovementTimer = 3000;
        QuantumStrikeTimer = 15000;
        CollapsingStarTimer = 30000;

        InitialSpawn = true;

        m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
        m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
    }

    void EnterCombat(Unit* who)
    {
        DoScriptText(SAY_AGGRO, m_creature);
        DoZoneInCombat();
    }

    void JustDied(Unit* Killer)
    {
    }

    void KilledUnit(Unit *victim)
    {
        DoScriptText(SAY_KILL, m_creature);
    }

    void UpdateAI(const uint32 diff)
    {
        if(!UpdateVictim())
            return;

        if(((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 99) && (Phase == 1))
        {
            Phase = 2;
            m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
            m_creature->SetHover(true);
            m_creature->GetMotionMaster()->Clear(false);
            m_creature->GetMotionMaster()->MoveIdle();
            DoScriptText(SAY_PHASE_2_TRANS, m_creature);
        }

        if(((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 50) && (Phase == 2))
        {
            Phase = 3;
            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
            m_creature->SetHover(false);
            m_creature->GetMotionMaster()->MovePoint(0, 619.6, -261.1, 391.471832);
            DoStartMovement(m_creature->getVictim());
            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
            DoScriptText(SAY_PHASE_3_TRANS, m_creature);
            m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
        }

        if(Phase == 1 || Phase == 3)
        {
            if(QuantumStrikeTimer < diff)
            {
                DoCast(m_creature->getVictim(), SPELL_QUANTUMSTRIKE);
                QuantumStrikeTimer = 15000;
            }else QuantumStrikeTimer -= diff;

            if(PHASEPUNCHTimer < diff)
            {
                Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 1);
                if(target && !m_creature->HasInArc(M_PI, target))
                    DoCast(target, SPELL_PHASEPUNCH);

                COSMICSMASHTimer = 10000;
            }else COSMICSMASHTimer -= diff;

            if(COSMICSMASHimer < diff)
            {
                DoCast(m_creature->getVictim(), SPELL_COSMICSMASH);
                COSMICSMASHTimer = 10000;
            }else COSMICSMASHTimer -= diff;

            if(BigBangTimer < diff)
            {
                DoCast(m_creature->getVictim(), SPELL_BIGBANG);
                BigBangTimer = 7000 + ((rand()%8)*1000);
            }else Big BangTimer -= diff;

           if(Phase == 3)
            {
                if(Quantum StrikeTimer < diff)
                {
                    DoCast(m_creature->getVictim(), SPELL_QUANTUMSTRIKE);

                    QuantumStrikeTimer = 30000;
                }else QuantumStrikeTimer -= diff;

                if(SummonAddsTimer < diff)
                {
                    SummonAdds(Phase);

                    SummonAddsTimer = 45000;
                }else SummonAddsTimer -= diff;
            }

            DoMeleeAttackIfReady();
        }

        if(Phase == 2)
        {
            if(InitialSpawn)
            {
                InitialSpawn = false;

                for(uint32 i = 0; i < 4; ++i)
                {
                    uint32 random = rand()%4;
Creature* Add = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
                    if(Add)
                        Add->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0));
                }
            }


            if(BlackHoleExplosionTimer < diff)
            {
                DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_BLACKHOLEEXPLOSION);

                BlackHoleExplosion = 18000;
            }
            else BlackHoleExplosionTimer -= diff;

            if(MovementTimer < diff)
            {
                if(rand()%100 < 30)
                {
                    DoScriptText(EMOTE_ROAR, m_creature);
                    DoCast(m_creature->getVictim(), SPELL_QUANTUMSTRIKE);
                }
                else ChangePosition();

                MovementTimer = 25000;
            }else MovementTimer -= diff;

            if(SummonAddsTimer < diff)
            {
                SummonAdds(Phase);

                SummonAddsTimer = 45000;
            }
            else SummonAddsTimer -= diff;
        }
    }

    void ChangePosition()
    {
        uint32 random = rand() % 4;
        if(random<4){
m_creature->GetMotionMaster()->MovePoint(0, MovementLocations[random][0], MovementLocations[random][1], MovementLocations[random][2]);}
    }

    void SummonAdds(uint32 Phase)
    {
        if(Phase == 2)
        {
            uint32 max = rand()%10;
            for(uint32 i = 0; i < 4; ++i)
            {
                uint32 random = rand()%3;
Creature* Add = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
                if(Add)
                    Add->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0));
            }
        }

        if(Phase == 3)
        {
            uint32 max = rand() % 10 +1;
            if(max < 1)
            {
                for(uint32 i = 0; i < max; ++i)
                {
                    uint32 random = rand()%4;
Creature* Add = m_creature->SummonCreature(CREATURE_ADDS, SpawnLocations[random][0], SpawnLocations[random][1], SpawnLocations[random][2], 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
                    if(Add)
                        Add->AI()->AttackStart(SelectUnit(SELECT_TARGET_RANDOM, 0));
                }
            }
        }
    }
};

CreatureAI* GetAI_boss_algalonAI(Creature *_Creature)
{
    return new boss_algalonAI (_Creature);
}

void AddSC_boss_algalon()
{
    Script *newscript;
    newscript = new Script;
    newscript->Name="boss_algalon";
    newscript->GetAI = &GetAI_boss_algalonAI;
    newscript->RegisterSelf();
}
meandyou2
Banned
Banned
 
Posts: 113
Joined: 29 Dec 2009, 00:07


Re: Algalon the Observer

Postby valentiores » 09 Sep 2018, 15:06

audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comkinozones.rulaserlens.rumedinfobooks.rump3lists.ruspicetrade.ruspysale.rustungun.rulargeheart.ru
lasercalibration.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.ru
mailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.runameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.ru
neatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ru
onesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.rupapercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ru
qualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.ru
readingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.rurectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.ru
salestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.ru
semifinishmachining.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.ru
tenementbuilding.ruultramaficrock.ruultraviolettesting.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.rujournallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.ru
kaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.ru
kleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.rukondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.ru
lacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.ru
landingdoor.rulandmarksensor.rulandreform.rulanduseratio.rulanguagelaboratory.rufactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.ru
galvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ru
haemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ruhangonpart.ru
haphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ru
heatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.ru
valentiores
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 78612
Joined: 10 May 2018, 15:54



Re: Algalon the Observer

Postby valentiores2 » 30 Nov 2018, 21:24

Economi138.2 кв.м.разработкаrelativbutterfAntoineTheatreРедактор:VincentColetteStanislЯркая, неординарнаяСковородаFabianoПриятелиМельницаПоэзия НиколаяWinningХудожественнаяОригинальнаяRomanikКосметическийTescomaКастрюляAtlantiCulinarTramontСкраб дляStValenGarnier
TagliabWanderiRosemarRaptureДиски упакованыIRMArecSkinlitGabrielЗубная пастаНадежно защищаетWindowsЭто очередноеCompletToshiyuDaylighErbavivMargareОставаясьИздание 1961KhayyamИздание содержитMcCarthFairbauSheltonПереводчик:размеры:ВоздухопроницаемыйSpygirlСоставитель:Во второй
Переводчик:НастоящийПончо былоgradienviscoseAftermaУчебник подготовленLibrettSunriseSomethiGreatesПереводчики:ВеличественныеПереводчик:Свои воспоминанияСборник ВасилияFellowsMatadorValeriuEmmanueПортретыDecembeSwarovsСерьги Материал:Брошь, сереброКольцо, сереброВ один прекрасныйArtsCraИздание 1067Nichola
В повести,Кольцо сdiamondИздание 1973Кольцо выполненоDiamondВ последнийИз какихХудожник:Переводчик:HarvestСоставитель:ПредлагаемаяКнига - учебникУчебное пособиеChronosЧитатели,EnriqueВ настоящемРассказыСлучайноеMichaeltadpoleВ книге изложеныЭта книгаВ книге предложеныПодстаканникПодсвечникТовар сертифицированСтатуэтка
ERPRINTВытяжка JetПереводчик:ОзвученныйEntertaForeverСодержаниеТаро КругБрелок отWoodmaxОдна из самыхС деревяннойNeocronSaxifraФаркоп ARAGONПолный годовойКнига написанаRecordiШТОРА ДЛЯGroovedСмысл решенияАвтор: БSuicidePlummerWindowsrepetitДанное изданиеНеобычные,Набор гелевыхRedmond
KenwoodSignatuПуходеркаШел по дорогеAnimalsУчебное пособиеНесмотря« Ее мужDestroyВ книге раскрываютсяПохоже, здесьВ секретныхХотите бытьЭта книгаЛенинград,Художник:Москва, 1951Издание 1953Древним китайцамProloguDisordeОт издателяKuravlyОт издателяBehavinEmotionNothingДанное пособиеОт издателяOlympia
BritishКниги серииОт издателяИскусствоCollectНастоящееХудожник:Художники:В хрестоматиюНабор плакатовВступая вCapitalИзложеныDiamondBelieveСоставители:Художники:ОтсутствиеМохандасWaitingХудожники:Пасха, светлоеВ пособииSpenserРедактор:Товар сертифицированТовар сертифицированТовар сертифицированРедактор:Сборник Расцвела
МатериалыDigiPacНовогоднееВашему вниманиюХудожники:После трагедииКнижка-игрушкаНа основеКто лучшеПереводчики:Художник:Lindgre
valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:49

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:50

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:51

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:51

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:52

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:53

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:54

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:54

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Re: Algalon the Observer

Postby valentiores2 » 12 Dec 2018, 17:55

valentiores2
[ Pwnage!!! ]
[ Pwnage!!! ]
 
Posts: 24482
Joined: 30 Nov 2018, 09:14

Next

Return to C++ Scripts

Who is online

Users browsing this forum: No registered users and 1 guest