Boss Freya
Salut a tous voici un script de freya , inspiré d'Hellscream

[code=cpp]/* Copyright klaas*/

#include "precompiled.h"
#include "def_ulduar.h"

#define SP_ATTUNED_TO_NATURE 62519
#define SP_TOUCH_OF_EONAR 62528
#define H_SP_TOUCH_OF_EONAR 62892
#define SP_SUNBEAM 62623
#define H_SP_SUNBEAM 62872
#define SP_GROUND_TREMOR 62437
#define H_SP_GROUND_TREMOR 62859
#define SP_BERSERK 47008


#define CR_DETONATING_LASHER 32918
#define CR_ANCIENT_CONSERVATOR 33203
#define CR_WATER_SPIRIT 33202
#define CR_STORM_LASHER 32919
#define CR_SNAPLASHER 32916

class MANGOS_DLL_DECL boss_freyaAI : public ScriptedAI
{
boss_freyaAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
bool Regular = pCreature->GetMap()->IsRegularDifficulty();
Reset();
}

ScriptedInstance *pInstance;

uint32 SummonTimer;
uint32 WaveNumber;
uint32 WaveType;
uint32 TouchOfEonarTimer;
uint32 SunbeamTimer;
uint32 GroundTremorTimer;
uint32 BerserkTimer;
uint32 WaveNumber;
bool Regular;
ScriptedInstance *pInstance;

void Reset()
{
SummonTimer = 15000;
TouchOfEonarTimer = 6000;//1 Minute dans la phase 1
SunbeamTimer = 4000 + rand()%10000;
GroundTremorTimer = 6000 + rand()%150000;
BerserkTimer = 600000; //10 minutes
WaveNumber = 0;
}
void Aggro(Unit *who)
{
pCreature->AddAura(SP_ATTUNED_TO_NATURE);
pCreature->GetAura(SP_ATTUNED_TO_NATURE , EFFECT_INDEX_0)->SetStackAmount(150);

if(pInstance) pInstance->SetData(TYPE_FREYA,IN_PROGRESS);
}

void JustDied(Unit *killer)
{

if(pInstance) pInstance->SetData(TYPE_FREYA, DONE);
}


void Phase1()
{
if(TouchOfEonarTimer < diff)
{
if( Unit *target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0))
DoCast(target, Regular ? SP_TOUCH_OF_EONAR : H_SP_TOUCH_OF_EONAR);
TouchOfEonarTimer = 6000;
}else TouchOfEonarTimer -= diff;

if(WaveNumber < 6)
{
if(SummonTimer < diff)
{
switch(WaveType)
{
case 0: SummonLashers(); break;
case 1: SummonConservator(); break;
case 2: SummonElementals(); break;
}
WaveType = (WaveType + WaveTypeInc) % 3;
++WaveNumber;
SummonTimer = 60000;
}
else SummonTimer -= diff;
}

}

void SummonLashers()
{
int i;
float x,y;
for(i=0; i<10; ++i)
{
x = (rand_norm() * 30.0f) - 15.0f;
y = (rand_norm() * 30.0f) - 15.0f;
Creature *lasher = DoSpawnCreature(CR_DETONATING_LASHER, x, y, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 2000);
Unit *target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);
if(lasher && target)
lasher->AddThreat(target, 1.0f);

}
}

void SummonConservator()
{
float x = (rand_norm() * 30.0f) - 15.0f;
float y = (rand_norm() * 30.0f) - 15.0f;
Creature *add = DoSpawnCreature(CR_ANCIENT_CONSERVATOR, x, y, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 2000);
Unit *target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);
if(add && target)
add->AddThreat(target, 1.0f);

}

void SummonElementals()
{
Creature *add;
Unit *target;
add = DoSpawnCreature(CR_WATER_SPIRIT, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 2000);
target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);
if(add && target)
add->AddThreat(target, 1.0f);


add = DoSpawnCreature(CR_STORM_LASHER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 2000);
target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);
if(add && target)
add->AddThreat(target, 1.0f);


add = DoSpawnCreature(CR_SNAPLASHER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 2000);
target = m_creature->SelectAttackingTarget(ATTACKING_TARGET_RANDOM, 0);
if(add && target)
add->AddThreat(target, 1.0f);

}

void SummonedCreatureDespawn(Creature* mob)
{
if(!m_creature->HasAura(SP_ATTUNED_TO_NATURE, EFFECT_INDEX_0)) return;

switch(mob->GetEntry())
{
case CR_DETONATING_LASHER:
if(m_creature->GetAura(SP_ATTUNED_TO_NATURE, EFFECT_INDEX_0)->modStackAmount(-2))
m_creature->RemoveAurasDueToSpell(SP_ATTUNED_TO_NATURE);
break;
case CR_ANCIENT_CONSERVATOR:
if(m_creature->GetAura(SP_ATTUNED_TO_NATURE, EFFECT_INDEX_0)->modStackAmount(-25))
m_creature->RemoveAurasDueToSpell(SP_ATTUNED_TO_NATURE);
break;
case CR_SNAPLASHER:
case CR_STORM_LASHER:
case CR_WATER_SPIRIT:
if(m_creature->GetAura(SP_ATTUNED_TO_NATURE, EFFECT_INDEX_0)->modStackAmount(-10))
m_creature->RemoveAurasDueToSpell(SP_ATTUNED_TO_NATURE);

}
}


void UpdateAI(const uint32 diff)
{
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;

if(SunbeamTimer < diff)
{
if(Unit *target = m_creature->SelectAttackingTarget (ATTACKING_TARGET_RANDOM , 0))
DoCast(taret, Rgular ? SP_SUNBEAM : H_SP_SUNBEAM);
SunbeamTimer = 4000 + rand()%10000;
}else SunbeamTimer -= diff;

if(GroundTremorTimer < diff)
{
if(Unit *target = m_creature->SelectAttackingTarget (ATTACKING_TARGET_RANDOM , 0))
DoCast(target , Regular ? SP_GROUND_TREMOR : H_SP_GROUND_TREMOR);
GroundTremorTimer = 6000 + rand()%10000;
}else GroundTremorTimer -= diff;

if(EnrageTimer < diff)
{
DoCast(m_creature, SP_BERSERK);
EnrageTimer = 30000;
}
else EnrageTimer -= diff;


if(m_creature->StackAmount == 0)
{
Phase2();
}


DoMeleeAttackIfReady();
}
};

CreatureAI* GetAI_boss_freya(Creature* pCreature)
{
return new boss_freyaAI(pCreature);
}

void AddSC_boss_freya()
{
Script *newscript;
newscript = new Script;
newscript->Name = "boss_freya";
newscript->GetAI = &GetAI_boss_freya;
newscript->RegisterSelf();
}[/code]
Les scripts sont peut-être différent mais ce script est très inspiré de celui dont Jethro parlais, donc Klaas pourrait quand même mettre ses sources d'inspiration Smile
C'est fait , même si je ne vois pas vraiment a quoi ça sert . Car vu que j'ai modifié le script ceci ne peut pas être prit comme du leech .

Enfin bon si ça vous fait plaisir
Vous êtes idiot ou bien?
Un script de boss peu importe lequel, même repris de zero se ressemblera forcément si vous suivez
un tant soi peu l'origine de celui ci.
pas possible de voir encore ce genre de commentaires sur les forums d'émulation.
...

SgT-Fatality
si tu continues comme ça avec tes remarques a 2 pieces d'argent
tu vas pas aller loin.
note que je peux également trouver des scripts antérieur à celui de Gethro qui ressemble au sien.
leech de gethro dans ce cas ?
tssss..

Fait un tour sur mmo/wned/pro
Regarde les scripts qui trainent & arrête d'être stupide
Klaas arrête de partager ici , aucun intérêt.
[code=cpp]TouchOfEonarTimer = 6000;//1 Minute dans la phase 1[/code]1 minute = 6000 milliseconds Oo?

[code=cpp]BerserkTimer = 600000; //10 minutes[/code]10 minutes = 600000 milliseconds Oo?

[code=cpp]uint32 WaveType;[/code]Aucune affectation de valeur lors du Reset!

[code=cpp]uint32 WaveNumber;[/code]Déclarée deux fois!

[code=cpp]WaveTypeInc[/code]Elle est où sa déclaration Oo?

Je vais te le redire encore une fois:
TESTES TES SCRIPTS AVANT DE LES POSTER!
Le but est de partager quelque chose qui soit un minimum "potable", et je pense que tu ne me connais pas assez pour en tirer de tels propos.
Ben tant mieux pour toi qu'il marche, qu'est-ce que tu veux que je te dises...

(08-06-2010 13:27)Soaik a écrit :  je n'ai pas besoin de connaitre des gens pour savoir qu'ils sont incompétents
Fait attention a ce que tu dis, ça pourrai se retourner contre toi.
Ololz Darknom le roi du Cplushplush . En attendant fait gaffe a ce que tu fais aussi car tu critiques mais tu partages rien , que dale . Je suis pas obligé de partager ici (ce que je ne ferais plus) , Zone Emu se meurt , et ça se voit . Regarde on est devenus tellement maniaques qu'on va jusqu'à crier au scandale car j'ai repris un script . Ce que n'importe qui fait puisque les gens codent a partir des fichiers SD2 qui sont déjà tous mis en forme .

Enfin bon , ça devient n'importe quoi . Et là je rigole pas
(08-06-2010 13:27)Soaik a écrit :  Le scripte est potable vue que chez moi il marche. je n'ai pas besoin de connaitre des gens pour savoir qu'ils sont incompétents
Bref bonne journée

D'habitude je me mêle pas des querelles puérile, mais là c'est un truc de compèt. Déjà ca m'étonnerais qu'il fonctionne chez toi, rien que pour ca :

DarkNOM a écrit :
Code :
uint32 WaveNumber;
Déclarée deux fois!

Donc soit tu postes sans vérifier tes dires, soit tu passe sur les avertissements à la compilation, auquel cas tu prouve ton incompétence.

Ensuite, après une rapide inspection des messages postés par DarkNom d'un coté, et Soaik de l'autre, franchement, si j'étais à ta place, j'éviterais de le traiter d'incompétent, parce que ses messages sont beaucoup plus pertinents que les tiens Smile

Petit ps pour DarkNom quand même :

DarkNOM a écrit :
Code :
BerserkTimer = 600000; //10 minutes
10 minutes = 600000 milliseconds Oo?

Oui Hihi 600000 / 1000 = 600, 600 secondes : 10 minutes.


Edition suite au post de Klaas : Même si je plussoie DarkNom sur certain points, il est vrai que faire remarquer les erreurs du script de façon un peu moins "agressive" aurait sans doute été mieux vu Erf
Citation :Donc soit tu postes sans vérifier tes dires, soit tu passe sur les avertissements à la compilation, auquel cas tu prouve ton incompétence.

Tu parles a qui là ?

Retourner en haut Accueil