Haha :D , no man he means if you have a nice teleport location in mind and you think it should be added, say what's on your mind.Quote:
You mean ICC_teleporter.sql ? :D i saw that can i extract it now ? does it works correctly ?
Printable View
Haha :D , no man he means if you have a nice teleport location in mind and you think it should be added, say what's on your mind.Quote:
You mean ICC_teleporter.sql ? :D i saw that can i extract it now ? does it works correctly ?
oh... (headbang) :D sorry ... no i dont think for now...
@CthulhuFtagn can i ask you something... ?
In the freshly updates 0025 does it need to be added the missing creatures what i'd been posted early.... you know - i mean for PoS and FoS and HoR :) ?
They were not included in the release... I'm testing first.
Friend sorry to bother with this again but just an update on the problem...i notice that not only Stamina is bugged but also the Attack Power and the Armor...so none of them give the bonus to the pet :)
Sorry if you already knew this friend :)
Thanks
I never used quice before. Had a look at it last night. It's pretty overwhelming. Might just wait for an update unless someone can tell me what to change..
On a side note, anyone know where a characters total achievement points are stored in database? Was thinking of building an achievement ladder or something :-)
Yep, already known.
The game's engine adds them up automatically, the number is not stored in the database.
Small Update Available:
CU_0026.zip (14.82 MB)Code:Fix for truncation.sql
Icecrown Citadel teleporters fix
.tele locations added
TheSpire
ThePlagueworks
TheCrimsonHall
BloodPrinces
TheSanctumofBlood
TheFrostWingHalls
TheDreamwalker
SindragosasDoor
TheFrostQueensLair
Do I donate to you or this site?
Just donate to mmopro.net
http://mmopro.net/forums/payments.php
EDIT: When I tried to check the link above I got the message
I sent a message to MysteriousSouL, we'll see what happens.Quote:
Originally Posted by MusaraWoW
EDIT 2: He's fixed the link.
Just a heads up to all, if you want a quick and easy way to get rid of that "Lazy Leecher" title, you can donate $15 and get Donator status. You get sparklies around your name as well.
Donators
http://mmopro.net/forums/images/ranks/donator.png
It helps keep these forums running, and insures that I can continue to post my repacks/updates here.
Hi Cthulhu Ftagn
Just noticed a small error: When you go to the darkmoon faire in Elwynn forest, the music doesn't play for it. The regular Elwynn music plays instead.
Just FYI
Cheers,
Thank You
Well... i inject correctly the database ... and i update them without errors... but somethings wrong there, cuz my creatures do not cast any spells... maybe thats from scriptdev2 or maybe from empty truncation?
Can anyone confirum for this MYSTERY? :(
Can't confirm that one, not sure what you've done.
If you used the truncation.sql in your mangos database then you shouldn't have ANY creatures... but why you would do that is beyond me. Please stop posting errors (that do not exists) if you have not tried reinstalling the server to check if you did something wrong first.
http://www.youtube.com/watch?v=_5KYRh3qR9o
I'll see what I can do about that. ;)
check out the instances .... i see the normal creatures cast spells ... check the instanses for high level
@CT:
upadate was successful no problems server running great,
hey man i like that new look on your avatar
I'm going to go check a high-level instance, and if you are wasting my time... I will be talking to MysteriousSouL.
Well, I went to Ulduar in the Halls of Lightning and confirmed that you are, in fact, wasting my time again.
http://www.youtube.com/watch?v=CLEDbssPvgE
As you can see I get the knock-back cast at me, as well as Lava Burst at around 00:50.
I've been REALLY patient with you, but now it's getting ridiculous.
EDIT:Thanks GJ, if you want an avatar like mine I can create you one based on your favorite toon/npc/enemy/boss.
okay man... i understand you're really patient to me ... but i saw that works -> i told you FoS, PoS and HoR .... why you make me so stupid ...
Actually your exact words were:
Then when I check the "creatures" you change it to "in instances".Quote:
Originally Posted by Stefan30
So, I checked a level 80 instance.
Then you said:
You need to be more descriptive if you are going to post bugs.Quote:
Originally Posted by Stefan30
An example would be: "I was in <INSTANCE> and the creature <CREATURE> did not cast <SPELL>, it was in <THIS AREA> of the <INSTANCE>"
Update Available:
CU_0027.zip (14.54)Code:MaNGOS updated to 10442
Fix armor bonus part of talent 33853 and ranks
Fix 64962 bonus for 47541 and ranks.
Implement spell 55680.
Increase search distance at height search if we know expected limit.
Removed un-needed dbghelp.dll in the x64 folder
Gonna take a break this weekend, so this'll be the last update for today.
@ GrandpaJohn: I made you a cool avatar.
http://img840.imageshack.us/img840/143/granpajohn.png
@CT:
hey man i really like it iused to dress up as Good ole Santa at my wife's job so i guess it kinda fits lol
I knew you were the cool granpa like that... my "papa" used to do that too.
EDIT: I know you've never used one, here's how to use it.
1. Right-Click the image and save it to your desktop
2. Go to Settings at the Upper-Right of this page
3. Click on Edit Avatar on the left menu under My Settings
4. Click the radio button Use Custom Avatar
5. Click Browse and click on the image you downloaded, Click OK (or Open)
6. Click Save Changes to the right
voila!
hey man there i am lol
it kinda looks like my level 56 alliance knome mage i had name was iggy
Right on! Well, I'll see you guys tomorrow... gonna relax with my little boy and wife. Maybe BBQ tonight.
ok man you have a great time with your son and wife they be more important have a great one
Are you working on a repack for Cataclysm? If so, is this going to be a new repack or an update?
Just checkin' in... yup the Cataclysm repack will be an update just like this, but I will make another topic for it.
Update Available:
CU_0028a.zip (14.54 MB)Code:MaNGOS updated to 10444
Fixed scripted AI init for TemporarySummon/Totem summon code
Fixed expected packet size for SMSG_SET_PROFICIENCY
Commented out deprecated opcode checks
And now back to relaxin' :cool:
Well man :) I know i'm welcome hehe :D
Umm great work for the repack it's working without problems ;)
I'm on my way to test it ;)
Addition:
@Cthulhu Ftagn
Well... it was a looooong night man... so wanna ask you something first...
i was testing all night with my friends (Team & Testers) annd we've got a text file with some unscripted details... can i send you on a private message for sure if there is any mistake not to confuse the users or i must to post here with risk ?
I promise to do my best to describe in detail the information that i givin you. :cool:
Good morning * yawn *, thanks for the comments.
Yeah, just PM it. ;)
Update Available:
CU_0029.zip (14.54 MB)Code:MaNGOS updated to 10447
Certain compilers refuse to erase const_iterator...
Small fix for single target auras: remove caster only auras
Re-implement in more safe way single cast spell targets system.
@CT:
afternoon to you
all updated sucessfully at 12:00 noon my time and everthing running great
loving the avatar man thanks much, have a good time with the family and a great BBQ i hope.
Yep, you're 3 hours ahead from Arizona (Mountain time)... gonna be a good day, the suns out, a nice breeze not too hot, not too cold (where I'm at). You're very welcome.
EDIT: That's why you're so cool... you're from the future! :cool:
good ... waiting for your Private Message CT :)
Go ahead and send the errors you spoke of, I'm gonna go drop off some of my sons old baby clothes at my brothers'.
Umm... dude have a little problem... i'm newrly registered here and i can't send private messages yet ;) i'll try something
GL
Edit: Okey... try this for now download
Can you make this script in your next update is the lichking fightPHP Code:#include "precompiled.h"
#include "def_spire.h"
enum BossSpells
{
SPELL_INFEST = 70541,
SPELL_NECROTIC_PLAGUE = 70337,
SPELL_PLAGUE_SIPHON = 74074,
SPELL_SOUL_REAPER = 69409,
SPELL_SPAWN_DEFILE = 72762,
SPELL_HARVEST_SOUL = 68980,
SPELL_HARVEST_SOUL_TELEPORT = 71372,
//
SPELL_CHANNEL_KING = 71769,
SPELL_BROKEN_FROSTMOURNE = 72398,
SPELL_BOOM_VISUAL = 72726,
SPELL_ICEBLOCK_TRIGGER = 71614,
SPELL_TIRION_LIGHT = 71797,
SPELL_FROSTMOURNE_TRIGGER = 72405,
SPELL_SUMMON_BROKEN_FROSTMOURNE = 72406,
SPELL_SUMMON_BROKEN_FROSTMOURNE_2 = 73017,
SPELL_DISENGAGE = 61508,
SPELL_FURY_OF_FROSTMOURNE = 70063,
SPELL_REVIVE_VISUAL = 37755,
SPELL_REVIVE = 51918,
SPELL_CLONE_PLAYER = 57507,
SPELL_BERSERK = 47008,
SPELL_REMORSELESS_WINTER = 68981,
SPELL_PAIN_AND_SUFFERING = 72133,
SPELL_QUAKE = 72262,
// SPELL_SUMMON_RAGING_SPIRIT = 69201, // triggered
SPELL_SUMMON_RAGING_SPIRIT = 69200,
SPELL_SOUL_SHRIEK = 69242,
SPELL_SUMMON_ICE_SPHERE = 69103,
SPELL_ICE_PULSE = 69099,
SPELL_ICE_BURST = 69108,
SPELL_ICE_SPHERE_VISUAL = 69090,
SPELL_SUMMON_DRUDGE_GHOULS = 70358,
SPELL_SUMMON_SHAMBLING_HORROR = 70372,
SPELL_SHOCKWAVE = 72149,
SPELL_HORROR_ENRAGE = 72143,
SPELL_SUMMON_VILE_SPIRITS = 70498,
SPELL_SPIRITS_BURST = 70503,
SPELL_SUMMON_VALKYR = 69037,
NPC_VALKYR = 36609,
SPELL_WINGS_OF_THE_DAMNED = 74352,
SPELL_DEFILE = 72743,
SPELL_REVALL = 26687,
NPC_ICE_SPHERE = 36633,
NPC_DEFILER = 38757,
NPC_RAGING_SPIRIT = 36701,
NPC_VILE_SPIRIT = 37799,
NPC_STRANGULATE_VEHICLE = 36598,
};
enum Common
{
FINAL_ARTHAS_MOVIE = 16,
};
static Locations SpawnLoc[]=
{
{459.93689f, -2124.638184f, 1040.860107f}, // 0 Lich King Intro
{503.15652f, -2124.516602f, 1040.860107f}, // 1 Lich king move end
{491.27118f, -2124.638184f, 1040.860107f}, // 2 Tirion 1
{481.69797f, -2124.638184f, 1040.860107f}, // 3 Tirion 2
{498.00448f, -2201.573486f, 1046.093872f}, // 4 Valkyrs?
{517.48291f, -2124.905762f, 1040.861328f}, // 5 Tirion?
{529.85302f, -2124.709961f, 1040.859985f}, // 6 Lich king final, o=3.1146
{520.311f, -2124.709961f, 1040.859985f}, // 7 Frostmourne
};
struct MANGOS_DLL_DECL boss_the_lich_king_iccAI : public BSWScriptedAI
{
boss_the_lich_king_iccAI(Creature* pCreature) : BSWScriptedAI(pCreature)
{
pInstance = (instance_icecrown_spire*)pCreature->GetInstanceData();
oldflag = 0;
Reset();
}
instance_icecrown_spire* pInstance;
uint8 stage;
uint32 nextEvent;
uint32 nextPoint;
uint32 UpdateTimer;
uint32 oldflag;
bool movementstarted;
bool battlestarted;
bool finalphase;
Creature* pTirion;
Creature* pFrostmourne;
void Reset()
{
if(!pInstance) return;
resetTimers();
stage = 0;
nextEvent = 0;
nextPoint = 0;
movementstarted = false;
battlestarted = false;
finalphase = false;
m_creature->SetOrientation(0.0f);
pInstance->CloseDoor(pInstance->GetData64(GO_ICESHARD_1));
pInstance->CloseDoor(pInstance->GetData64(GO_ICESHARD_2));
pInstance->CloseDoor(pInstance->GetData64(GO_ICESHARD_3));
pInstance->CloseDoor(pInstance->GetData64(GO_ICESHARD_4));
if (oldflag)
if (GameObject* pGoFloor = pInstance->instance->GetGameObject(pInstance->GetData64(GO_ARTHAS_PLATFORM)))
{
pGoFloor->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_NODESPAWN);
pGoFloor->SetUInt32Value(GAMEOBJECT_BYTES_1,oldflag);
}
pInstance->CloseDoor(pInstance->GetData64(GO_FROSTY_WIND));
}
void MoveInLineOfSight(Unit* pWho)
{
}
void EnterEvadeMode()
{
if (!pInstance) return;
if (finalphase && pInstance->GetData(TYPE_LICH_KING) == IN_PROGRESS) return;
m_creature->RemoveAllAuras();
m_creature->DeleteThreatList();
m_creature->CombatStop(true);
m_creature->LoadCreaturesAddon();
if (m_creature->isAlive())
m_creature->GetMotionMaster()->MoveTargetedHome();
m_creature->SetLootRecipient(NULL);
Reset();
}
void MovementInform(uint32 type, uint32 id)
{
if (type != POINT_MOTION_TYPE || !movementstarted) return;
if (id == nextPoint)
{
movementstarted = false;
pInstance->SetData(TYPE_EVENT,nextEvent);
m_creature->GetMotionMaster()->MovementExpired();
}
}
void KilledUnit(Unit* pVictim)
{
if (!battlestarted) return;
switch (urand(0,1)) {
case 0:
DoScriptText(-1631519,m_creature,pVictim);
break;
case 1:
DoScriptText(-1631517,m_creature,pVictim);
break;
};
}
void JustReachedHome()
{
if (!pInstance) return;
pInstance->SetData(TYPE_LICH_KING, FAIL);
stage = 0;
battlestarted = false;
finalphase = false;
}
void StartMovement(uint32 id, uint32 _nextEvent)
{
nextPoint = id;
nextEvent = _nextEvent;
m_creature->GetMotionMaster()->Clear();
m_creature->GetMotionMaster()->MovePoint(id, SpawnLoc[id].x, SpawnLoc[id].y, SpawnLoc[id].z);
pInstance->SetData(TYPE_EVENT,0);
movementstarted = true;
}
void JustSummoned(Creature* summoned)
{
if(!pInstance || !summoned) return;
if (Unit* pTarget = doSelectRandomPlayerAtRange(60.0f))
{
summoned->SetInCombatWith(pTarget);
summoned->AddThreat(pTarget,100.0f);
}
}
void Aggro(Unit *who)
{
if(!pInstance) return;
pInstance->SetData(TYPE_LICH_KING, IN_PROGRESS);
}
void JustDied(Unit *killer)
{
if(!pInstance) return;
pInstance->SetData(TYPE_LICH_KING, DONE);
DoScriptText(-1631528,m_creature,killer);
pInstance->SetData(TYPE_EVENT,14010);
}
void UpdateAI(const uint32 diff)
{
if(!pInstance) return;
if (pInstance->GetData(TYPE_EVENT_NPC) == NPC_LICH_KING)
{
UpdateTimer = pInstance->GetData(TYPE_EVENT_TIMER);
if (UpdateTimer <= diff)
{
debug_log("EventMGR: creature %u received signal %u ",m_creature->GetEntry(),pInstance->GetData(TYPE_EVENT));
switch (pInstance->GetData(TYPE_EVENT))
{
case 12000:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_STAND);
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
StartMovement(0,12020);
break;
case 12020:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
DoScriptText(-1631501, m_creature);
UpdateTimer = 12000;
pInstance->SetData(TYPE_EVENT,12030);
break;
case 12040:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
DoScriptText(-1631503, m_creature);
UpdateTimer = 8000;
pInstance->SetData(TYPE_EVENT,12041);
break;
case 12041:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_LAUGH);
UpdateTimer = 3000;
pInstance->SetData(TYPE_EVENT,12042);
break;
case 12042:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE,EMOTE_ONESHOT_POINT_NOSHEATHE);
UpdateTimer = 2000;
pInstance->SetData(TYPE_EVENT,12043);
break;
case 12043:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE,EMOTE_ONESHOT_NONE);
UpdateTimer = 10000;
pInstance->SetData(TYPE_EVENT,12050);
break;
case 12060:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_TALK);
DoScriptText(-1631505, m_creature);
UpdateTimer = 10000;
pInstance->SetData(TYPE_EVENT,12080);
break;
case 12080:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE,EMOTE_STATE_READY2H);
UpdateTimer = 2000;
pInstance->SetData(TYPE_EVENT,12100);
break;
case 12100:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE,EMOTE_ONESHOT_NONE);
UpdateTimer = 6000;
pInstance->SetData(TYPE_EVENT,12120);
break;
case 12120:
m_creature->SetInCombatWithZone();
battlestarted = true;
pInstance->SetData(TYPE_EVENT,12200);
UpdateTimer = 10000;
break;
case 12200:
DoScriptText(-1631506, m_creature);
UpdateTimer = 5000;
pInstance->SetData(TYPE_EVENT,12220);
break;
case 13000:
m_creature->SetOrientation(3.1146f);
DoScriptText(-1631507, m_creature);
UpdateTimer = 12000;
finalphase = true;
doCast(SPELL_FURY_OF_FROSTMOURNE);
pInstance->SetData(TYPE_EVENT,13020);
if (pTirion = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_TIRION))) {
m_creature->SetInCombatWith(pTirion);
pTirion->AddThreat(m_creature, 1000.0f);
}
m_creature->SetInCombatWithZone();
break;
case 13020:
DoScriptText(-1631508, m_creature);
UpdateTimer = 12000;
pInstance->SetData(TYPE_EVENT,13060);
break;
case 13060:
DoScriptText(-1631509, m_creature);
UpdateTimer = 15000;
pInstance->SetData(TYPE_EVENT,13100);
break;
case 13100:
DoScriptText(-1631510, m_creature);
UpdateTimer = 15000;
pInstance->SetData(TYPE_EVENT,13110);
doCast(SPELL_CHANNEL_KING);
break;
case 13120:
DoScriptText(-1631511, m_creature);
UpdateTimer = 12000;
pInstance->SetData(TYPE_EVENT,13130);
break;
case 13140:
UpdateTimer = 6000;
doRemove(SPELL_CHANNEL_KING);
pInstance->SetData(TYPE_EVENT,13150);
m_creature->CastSpell(m_creature, SPELL_SUMMON_BROKEN_FROSTMOURNE, false);
break;
case 13160:
UpdateTimer = 6000;
pInstance->SetData(TYPE_EVENT,13170);
m_creature->CastSpell(m_creature, SPELL_SUMMON_BROKEN_FROSTMOURNE_2, false);
break;
case 13180:
UpdateTimer = 12000;
pInstance->SetData(TYPE_EVENT,13190);
if (pFrostmourne = m_creature->SummonCreature(NPC_FROSTMOURNE_HOLDER, SpawnLoc[7].x, SpawnLoc[7].y, SpawnLoc[7].z, 0, TEMPSUMMON_MANUAL_DESPAWN, 5000))
{
pFrostmourne->CastSpell(pFrostmourne, SPELL_BROKEN_FROSTMOURNE, false);
pFrostmourne->CastSpell(pFrostmourne, SPELL_FROSTMOURNE_TRIGGER, false);
pFrostmourne->GetMotionMaster()->MoveChase(m_creature);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED);
}
break;
case 13200:
DoScriptText(-1631512, m_creature);
m_creature->RemoveAurasDueToSpell(SPELL_SUMMON_BROKEN_FROSTMOURNE);
m_creature->RemoveAllAuras();
pFrostmourne->RemoveAurasDueToSpell(SPELL_FROSTMOURNE_TRIGGER);
UpdateTimer = 5000;
pInstance->SetData(TYPE_EVENT,13210);
break;
case 13280:
UpdateTimer = 2000;
pInstance->SetData(TYPE_EVENT,13290);
stage = 13;
if (pFrostmourne) pFrostmourne->ForcedDespawn();
if (Creature* pTemp = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_FROSTMOURNE_TRIGGER)))
pTemp->ForcedDespawn();
if (Creature* pTemp = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_FROSTMOURNE_HOLDER)))
pTemp->ForcedDespawn();
SetCombatMovement(true);
battlestarted = true;
break;
default:
break;
}
} else UpdateTimer -= diff;
pInstance->SetData(TYPE_EVENT_TIMER, UpdateTimer);
}
if (battlestarted && !m_creature->SelectHostileTarget() && !finalphase)
{
battlestarted = false;
pInstance->SetData(TYPE_LICH_KING, FAIL);
pInstance->SetData(TYPE_EVENT,0);
EnterEvadeMode();
return;
}
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
switch(stage)
{
case 0: // Phase 1
// timedCast(SPELL_SHOCKWAVE, diff);
timedCast(SPELL_INFEST, diff);
timedCast(SPELL_SUMMON_DRUDGE_GHOULS, diff);
timedCast(SPELL_PLAGUE_SIPHON, diff);
timedCast(SPELL_SUMMON_SHAMBLING_HORROR, diff);
timedCast(SPELL_NECROTIC_PLAGUE, diff);
DoMeleeAttackIfReady();
if (timedQuery(SPELL_BERSERK, diff))
{
doCast(SPELL_BERSERK);
DoScriptText(-1631518,m_creature);
};
if (m_creature->GetHealthPercent() < 70.0f)
{
stage = 1;
DoScriptText(-1631515,m_creature);
}
break;
case 1: // Go in transition phase
m_creature->AttackStop();
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
SetCombatMovement(false);
StartMovement(1,0);
stage = 2;
break;
case 2:
if (movementstarted) return;
doCast(SPELL_REMORSELESS_WINTER);
stage = 3;
break;
case 3:
timedCast(SPELL_SUMMON_RAGING_SPIRIT, diff);
timedCast(SPELL_SUMMON_ICE_SPHERE, diff);
timedCast(SPELL_PAIN_AND_SUFFERING, diff);
if (timedQuery(SPELL_BERSERK, diff))
{
doCast(SPELL_BERSERK);
DoScriptText(-1631518,m_creature);
};
if (timedQuery(SPELL_REMORSELESS_WINTER, diff))
{
doCast(SPELL_QUAKE);
stage = 4;
DoScriptText(-1631524, m_creature);
pInstance->OpenDoor(pInstance->GetData64(GO_SNOW_EDGE));
};
break;
case 4: // Platform destruct
if (timedQuery(SPELL_QUAKE, diff))
{
pInstance->OpenDoor(pInstance->GetData64(GO_ICESHARD_1));
pInstance->OpenDoor(pInstance->GetData64(GO_ICESHARD_2));
pInstance->OpenDoor(pInstance->GetData64(GO_ICESHARD_3));
pInstance->OpenDoor(pInstance->GetData64(GO_ICESHARD_4));
if (GameObject* pGoFloor = pInstance->instance->GetGameObject(pInstance->GetData64(GO_ARTHAS_PLATFORM)))
{
pGoFloor->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_NODESPAWN);
oldflag = pGoFloor->GetUInt32Value(GAMEOBJECT_BYTES_1);
pGoFloor->SetUInt32Value(GAMEOBJECT_BYTES_1,8449);
}
pInstance->CloseDoor(pInstance->GetData64(GO_FROSTY_WIND));
pInstance->CloseDoor(pInstance->GetData64(GO_SNOW_EDGE));
m_creature->GetMotionMaster()->Clear();
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
SetCombatMovement(true);
stage = 5;
}
break;
case 5: // Phase 2
if (timedQuery(SPELL_SPAWN_DEFILE, diff))
{
doCast(SPELL_SPAWN_DEFILE);
DoScriptText(-1631531,m_creature);
}
if (timedQuery(SPELL_SUMMON_VALKYR, diff))
{
doCast(SPELL_SUMMON_VALKYR);
DoScriptText(-1631527,m_creature);
}
timedCast(SPELL_SOUL_REAPER, diff);
timedCast(SPELL_INFEST, diff);
DoMeleeAttackIfReady();
if (timedQuery(SPELL_BERSERK, diff))
{
doCast(SPELL_BERSERK);
DoScriptText(-1631518,m_creature);
};
if (m_creature->GetHealthPercent() < 40.0f)
{
stage = 6;
DoScriptText(-1631523,m_creature);
}
break;
case 6: // Go in transition phase
m_creature->AttackStop();
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
SetCombatMovement(false);
StartMovement(1,0);
stage = 7;
break;
case 7: // Platform restore
if (movementstarted) return;
if (GameObject* pGoFloor = pInstance->instance->GetGameObject(pInstance->GetData64(GO_ARTHAS_PLATFORM)))
{
pGoFloor->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_NODESPAWN);
pGoFloor->SetUInt32Value(GAMEOBJECT_BYTES_1,oldflag);
}
pInstance->OpenDoor(pInstance->GetData64(GO_FROSTY_WIND));
doCast(SPELL_REMORSELESS_WINTER);
stage = 8;
break;
case 8:
timedCast(SPELL_SUMMON_RAGING_SPIRIT, diff);
timedCast(SPELL_SUMMON_ICE_SPHERE, diff);
timedCast(SPELL_PAIN_AND_SUFFERING, diff);
if (timedQuery(SPELL_BERSERK, diff))
{
doCast(SPELL_BERSERK);
DoScriptText(-1631518,m_creature);
};
if (timedQuery(SPELL_REMORSELESS_WINTER, diff))
{
DoScriptText(-1631524, m_creature);
doCast(SPELL_SUMMON_VILE_SPIRITS);
for (uint8 i = 0; i < getSpellData(SPELL_SUMMON_VILE_SPIRITS); ++i)
doCast(NPC_VILE_SPIRIT);
doCast(SPELL_QUAKE);
stage = 9;
pInstance->OpenDoor(pInstance->GetData64(GO_SNOW_EDGE));
};
break;
case 9: // Platform destruct
if (timedQuery(SPELL_QUAKE, diff))
{
if (GameObject* pGoFloor = pInstance->instance->GetGameObject(pInstance->GetData64(GO_ARTHAS_PLATFORM)))
{
pGoFloor->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED | GO_FLAG_NODESPAWN);
oldflag = pGoFloor->GetUInt32Value(GAMEOBJECT_BYTES_1);
pGoFloor->SetUInt32Value(GAMEOBJECT_BYTES_1,8449);
}
pInstance->CloseDoor(pInstance->GetData64(GO_SNOW_EDGE));
pInstance->CloseDoor(pInstance->GetData64(GO_FROSTY_WIND));
m_creature->GetMotionMaster()->Clear();
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
SetCombatMovement(true);
stage = 10;
}
break;
case 10: // Phase 3
if (timedQuery(SPELL_SPAWN_DEFILE, diff))
{
doCast(SPELL_SPAWN_DEFILE);
// DoScriptText(-1631527,m_creature);
}
timedCast(SPELL_SOUL_REAPER, diff);
if (timedQuery(SPELL_HARVEST_SOUL, diff))
{
doCast(SPELL_HARVEST_SOUL);
DoScriptText(-1631520,m_creature);
}
timedCast(SPELL_SOUL_REAPER, diff);
timedCast(SPELL_INFEST, diff);
DoMeleeAttackIfReady();
if (m_creature->GetHealthPercent() < 10.0f)
{
stage = 11;
DoScriptText(-1631513,m_creature);
}
break;
case 11: // Ending Phase start
m_creature->AttackStop();
SetCombatMovement(false);
StartMovement(6,13000);
stage = 12;
battlestarted = false;
break;
case 12:
break;
case 13:
DoMeleeAttackIfReady();
break;
}
}
};
CreatureAI* GetAI_boss_the_lich_king_icc(Creature* pCreature)
{
return new boss_the_lich_king_iccAI(pCreature);
};
struct MANGOS_DLL_DECL boss_tirion_iccAI : public ScriptedAI
{
boss_tirion_iccAI(Creature* pCreature) : ScriptedAI(pCreature)
{
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
Reset();
}
ScriptedInstance *pInstance;
uint32 UpdateTimer;
uint32 nextEvent;
uint32 nextPoint;
bool movementstarted;
Creature* pMenethil;
void Reset()
{
if(!pInstance) return;
movementstarted = false;
m_creature->RemoveAurasDueToSpell(SPELL_ICEBLOCK_TRIGGER);
m_creature->SetOrientation(M_PI_F);
}
void StartMovement(uint32 id, uint32 _nextEvent)
{
nextPoint = id;
nextEvent = _nextEvent;
m_creature->GetMotionMaster()->MovePoint(id, SpawnLoc[id].x, SpawnLoc[id].y, SpawnLoc[id].z);
pInstance->SetData(TYPE_EVENT,0);
movementstarted = true;
}
void MovementInform(uint32 type, uint32 id)
{
if (type != POINT_MOTION_TYPE || !movementstarted) return;
if (id == nextPoint)
{
movementstarted = false;
pInstance->SetData(TYPE_EVENT,nextEvent);
m_creature->GetMotionMaster()->MovementExpired();
}
}
void doSendCinematic()
{
Map::PlayerList const &pList = m_creature->GetMap()->GetPlayers();
if (pList.isEmpty()) return;
for (Map::PlayerList::const_iterator i = pList.begin(); i != pList.end(); ++i)
if (Player* pPlayer = i->getSource())
if (pPlayer && pPlayer->isAlive() && pPlayer->IsInMap(m_creature))
pPlayer->SendMovieStart(FINAL_ARTHAS_MOVIE);
}
void doRevivePlayers()
{
Map::PlayerList const &pList = pMenethil->GetMap()->GetPlayers();
if (pList.isEmpty()) return;
for (Map::PlayerList::const_iterator i = pList.begin(); i != pList.end(); ++i)
{
if (Player* pPlayer = i->getSource())
{
if (pPlayer && !pPlayer->isAlive() && pPlayer->IsInMap(pMenethil))
{
pMenethil->CastSpell(pPlayer, SPELL_REVALL, true);
pPlayer->ResurrectPlayer(100, false);
}
}
};
}
void UpdateAI(const uint32 diff)
{
if (pInstance->GetData(TYPE_LICH_KING) == FAIL && m_creature->HasAura(SPELL_ICEBLOCK_TRIGGER))
{
m_creature->RemoveAurasDueToSpell(SPELL_ICEBLOCK_TRIGGER);
m_creature->GetMotionMaster()->MoveTargetedHome();
Reset();
}
if (pInstance->GetData(TYPE_EVENT_NPC) == NPC_TIRION)
{
UpdateTimer = pInstance->GetData(TYPE_EVENT_TIMER);
if (UpdateTimer <= diff)
{
debug_log("EventMGR: creature %u received signal %u ",m_creature->GetEntry(),pInstance->GetData(TYPE_EVENT));
switch (pInstance->GetData(TYPE_EVENT))
{
case 12030:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_TALK);
DoScriptText(-1631552, m_creature);
UpdateTimer = 9000;
pInstance->SetData(TYPE_EVENT,12040);
break;
case 12050:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_POINT_NOSHEATHE);
DoScriptText(-1631554, m_creature);
UpdateTimer = 3000;
pInstance->SetData(TYPE_EVENT,12051);
break;
case 12051:
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
UpdateTimer = 1000;
pInstance->SetData(TYPE_EVENT,12052);
break;
case 12052:
m_creature->RemoveSplineFlag(SPLINEFLAG_WALKMODE);
StartMovement(3,12053);
break;
case 12053:
UpdateTimer = 3000;
pInstance->SetData(TYPE_EVENT,12060);
m_creature->CastSpell(m_creature, SPELL_ICEBLOCK_TRIGGER, true);
break;
case 13110:
DoScriptText(-1631555, m_creature);
UpdateTimer = 6000;
m_creature->CastSpell(m_creature, SPELL_TIRION_LIGHT, false);
pInstance->SetData(TYPE_EVENT,13120);
break;
case 13130:
SetCombatMovement(false);
m_creature->RemoveAurasDueToSpell(SPELL_ICEBLOCK_TRIGGER);
UpdateTimer = 500;
m_creature->SetOrientation(0.0f);
pInstance->SetData(TYPE_EVENT,13131);
break;
case 13131:
m_creature->RemoveSplineFlag(SPLINEFLAG_WALKMODE);
StartMovement(2,13132);
break;
case 13132:
StartMovement(5,13140);
DoScriptText(-1631556, m_creature);
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
break;
case 13150:
UpdateTimer = 1000;
pInstance->SetData(TYPE_EVENT,13160);
break;
case 13170:
UpdateTimer = 2000;
pInstance->SetData(TYPE_EVENT,13180);
break;
case 13190:
UpdateTimer = 500;
pInstance->SetData(TYPE_EVENT,13200);
break;
case 13210:
UpdateTimer = 3000;
pInstance->SetData(TYPE_EVENT,13230);
break;
case 13230:
UpdateTimer = 12000;
pMenethil = m_creature->SummonCreature(NPC_MENETHIL, m_creature->GetPositionX()+5, m_creature->GetPositionY()+5, m_creature->GetPositionZ(), 0, TEMPSUMMON_MANUAL_DESPAWN, 5000);
pInstance->SetData(TYPE_EVENT,13250);
DoScriptText(-1631560, pMenethil);
break;
case 13250:
UpdateTimer = 6000;
pInstance->SetData(TYPE_EVENT,13270);
DoScriptText(-1631561, pMenethil);
pMenethil->CastSpell(pMenethil, SPELL_REVIVE_VISUAL, false);
doRevivePlayers();
break;
case 13270:
UpdateTimer = 6000;
pInstance->SetData(TYPE_EVENT,13280);
if (Creature* pLichKing = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_LICH_KING)))
{
m_creature->SetInCombatWith(pLichKing);
pLichKing->SetInCombatWith(m_creature);
pLichKing->AddThreat(m_creature, 1000.0f);
m_creature->AI()->AttackStart(pLichKing);
pMenethil->AI()->AttackStart(pLichKing);
SetCombatMovement(true);
m_creature->GetMotionMaster()->MoveChase(pLichKing);
};
break;
case 13290:
UpdateTimer = 5000;
pInstance->SetData(TYPE_EVENT,13310);
DoScriptText(-1631590, pMenethil);
break;
case 13310:
UpdateTimer = 5000;
pInstance->SetData(TYPE_EVENT,13330);
DoScriptText(-1631591, m_creature);
break;
case 13330:
UpdateTimer = 5000;
pInstance->SetData(TYPE_EVENT,13350);
DoScriptText(-1631592, pMenethil);
break;
case 13350:
UpdateTimer = 2000;
pInstance->SetData(TYPE_EVENT,13370);
DoScriptText(-1631593, m_creature);
break;
case 14010:
m_creature->AttackStop();
SetCombatMovement(false);
UpdateTimer =90000;
pInstance->SetData(TYPE_EVENT,14030);
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
if (Creature* pLichKing = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_LICH_KING)))
pLichKing->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
doSendCinematic();
break;
case 14030:
UpdateTimer = 20000;
pInstance->SetData(TYPE_EVENT,14030);
DoScriptText(-1631594, m_creature);
// if (pMenethil && pMenethil->isAlive()) pMenethil->ForcedDespawn();
if (pMenethil && pMenethil->isAlive()) pMenethil->SetVisibility(VISIBILITY_OFF);
if (Creature* pLichKing = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(NPC_LICH_KING)))
pLichKing->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
pInstance->SetData(TYPE_EVENT,0);
EnterEvadeMode();
break;
default:
break;
}
} else UpdateTimer -= diff;
pInstance->SetData(TYPE_EVENT_TIMER, UpdateTimer);
}
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
DoMeleeAttackIfReady();
}
};
bool GossipHello_boss_tirion_icc(Player* pPlayer, Creature* pCreature)
{
ScriptedInstance* pInstance;
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
if (pInstance->GetData(TYPE_LICH_KING) != NOT_STARTED &&
pInstance->GetData(TYPE_LICH_KING) != FAIL )
{
pPlayer->PlayerTalkClass->SendGossipMenu(721002, pCreature->GetGUID());
return true;
};
pPlayer->ADD_GOSSIP_ITEM_ID(GOSSIP_ICON_CHAT, -1631608, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
pPlayer->PlayerTalkClass->SendGossipMenu(721001, pCreature->GetGUID());
return true;
};
bool GossipSelect_boss_tirion_icc(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
{
ScriptedInstance* pInstance;
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
if (!pInstance) return false;
if (uiAction == GOSSIP_ACTION_INFO_DEF)
{
pPlayer->CLOSE_GOSSIP_MENU();
pInstance->SetData(TYPE_LICH_KING, IN_PROGRESS);
pInstance->SetData(TYPE_EVENT,12000);
return true;
} else return false;
};
CreatureAI* GetAI_boss_tirion_icc(Creature* pCreature)
{
return new boss_tirion_iccAI(pCreature);
};
struct MANGOS_DLL_DECL mob_ice_sphere_iccAI : public BSWScriptedAI
{
mob_ice_sphere_iccAI(Creature *pCreature) : BSWScriptedAI(pCreature)
{
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
Reset();
}
ScriptedInstance *pInstance;
void Reset()
{
resetTimers();
doCast(SPELL_ICE_SPHERE_VISUAL);
m_creature->AddSplineFlag(SPLINEFLAG_WALKMODE);
}
void UpdateAI(const uint32 uiDiff)
{
if (!pInstance || pInstance->GetData(TYPE_LICH_KING) != IN_PROGRESS)
m_creature->ForcedDespawn();
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
{
if (Unit* pTarget = doSelectRandomPlayerAtRange(120.0f))
{
m_creature->SetInCombatWith(pTarget);
m_creature->AddThreat(pTarget,100.0f);
}
return;
}
if (m_creature->getVictim()->GetTypeId() != TYPEID_PLAYER)
return;
timedCast(SPELL_ICE_PULSE, uiDiff);
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 1.0f))
timedCast(SPELL_ICE_BURST,uiDiff);
}
};
CreatureAI* GetAI_mob_ice_sphere_icc(Creature* pCreature)
{
return new mob_ice_sphere_iccAI(pCreature);
};
struct MANGOS_DLL_DECL mob_defiler_iccAI : public BSWScriptedAI
{
mob_defiler_iccAI(Creature *pCreature) : BSWScriptedAI(pCreature)
{
m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData());
Reset();
}
ScriptedInstance *m_pInstance;
uint32 life_timer;
float m_Size0;
float m_Size;
void Reset()
{
SetCombatMovement(false);
life_timer = 30000;
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
m_creature->CastSpell(m_creature, SPELL_DEFILE, true);
m_Size0 = m_creature->GetFloatValue(OBJECT_FIELD_SCALE_X);
m_Size = m_Size0;
}
void AttackStart(Unit *pWho)
{
return;
}
bool doSearchPlayers()
{
if(doSelectRandomPlayerAtRange(m_Size * 3.0f)) return true;
else return false;
}
void UpdateAI(const uint32 uiDiff)
{
if(m_pInstance && m_pInstance->GetData(TYPE_LICH_KING) != IN_PROGRESS)
m_creature->ForcedDespawn();
if (life_timer <= uiDiff)
m_creature->ForcedDespawn();
else life_timer -= uiDiff;
if (doSearchPlayers() && m_Size <= m_Size0 * 6.0f) {
m_Size = m_Size*1.01;
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, m_Size);
}
}
};
CreatureAI* GetAI_mob_defiler_icc(Creature* pCreature)
{
return new mob_defiler_iccAI(pCreature);
}
struct MANGOS_DLL_DECL mob_strangulate_vehicleAI : public ScriptedAI
{
mob_strangulate_vehicleAI(Creature *pCreature) : ScriptedAI(pCreature)
{
m_pInstance = ((ScriptedInstance*)pCreature->GetInstanceData());
Reset();
}
ScriptedInstance *m_pInstance;
void Reset()
{
SetCombatMovement(false);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
}
void AttackStart(Unit *pWho)
{
return;
}
void UpdateAI(const uint32 uiDiff)
{
m_creature->ForcedDespawn();
}
};
CreatureAI* GetAI_mob_strangulate_vehicle(Creature* pCreature)
{
return new mob_strangulate_vehicleAI(pCreature);
}
struct MANGOS_DLL_DECL mob_vile_spiritAI : public BSWScriptedAI
{
mob_vile_spiritAI(Creature *pCreature) : BSWScriptedAI(pCreature)
{
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
Reset();
}
ScriptedInstance *pInstance;
bool movementstarted;
void Reset()
{
resetTimers();
if (Unit* pTarget = doSelectRandomPlayerAtRange(120.0f))
{
m_creature->SetInCombatWith(pTarget);
m_creature->AddThreat(pTarget,1000.0f);
}
SetCombatMovement(false);
movementstarted = false;
m_creature->AddSplineFlag(SPLINEFLAG_WALKMODE);
}
void UpdateAI(const uint32 uiDiff)
{
if (!pInstance || pInstance->GetData(TYPE_LICH_KING) != IN_PROGRESS)
m_creature->ForcedDespawn();
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
if (timedQuery(SPELL_SPIRITS_BURST, uiDiff) && !movementstarted)
{
SetCombatMovement(true);
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
movementstarted = true;
}
if (m_creature->getVictim()->GetTypeId() != TYPEID_PLAYER)
return;
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 1.0f))
{
doCast(SPELL_SPIRITS_BURST);
m_creature->ForcedDespawn();
};
}
};
CreatureAI* GetAI_mob_vile_spirit(Creature* pCreature)
{
return new mob_vile_spiritAI(pCreature);
}
struct MANGOS_DLL_DECL mob_raging_spiritAI : public BSWScriptedAI
{
mob_raging_spiritAI(Creature *pCreature) : BSWScriptedAI(pCreature)
{
pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
Reset();
}
ScriptedInstance *pInstance;
void Reset()
{
resetTimers();
m_creature->SetDisplayId(10771);
}
void UpdateAI(const uint32 uiDiff)
{
if (!pInstance || pInstance->GetData(TYPE_LICH_KING) != IN_PROGRESS)
m_creature->ForcedDespawn();
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
timedCast(SPELL_SOUL_SHRIEK, uiDiff);
}
};
CreatureAI* GetAI_mob_raging_spirit(Creature* pCreature)
{
return new mob_raging_spiritAI(pCreature);
}
void AddSC_boss_the_lich_king_icc()
{
Script *newscript;
newscript = new Script;
newscript->Name = "boss_the_lich_king_icc";
newscript->GetAI = &GetAI_boss_the_lich_king_icc;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "boss_tirion_icc";
newscript->GetAI = &GetAI_boss_tirion_icc;
newscript->pGossipHello = &GossipHello_boss_tirion_icc;
newscript->pGossipSelect = &GossipSelect_boss_tirion_icc;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_ice_sphere_icc";
newscript->GetAI = &GetAI_mob_ice_sphere_icc;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_defiler_icc";
newscript->GetAI = &GetAI_mob_defiler_icc;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_strangulate_vehicle";
newscript->GetAI = &GetAI_mob_strangulate_vehicle;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_vile_spirit";
newscript->GetAI = &GetAI_mob_vile_spirit;
newscript->RegisterSelf();
newscript = new Script;
newscript->Name = "mob_raging_spirit";
newscript->GetAI = &GetAI_mob_raging_spirit;
newscript->RegisterSelf();
};
this is the script from Professor Putricide or is this wrong for mangosPHP Code:// Script Generated: 2010-03-29 23:23:48
// Run this query on your world database
// UPDATE `creature_template` SET ScriptName='npc_Professor Putricide' WHERE `entry`=36678;
#include "precompiled.h"
struct MANGOS_DLL_DECL Professor PutricideAI : public ScriptedAI
{
Professor PutricideAI(Creature* pCreature) : ScriptedAI(pCreature)
{
Reset();
}
uint32 spell1_phase1_Timer;
uint32 spell2_phase1_Timer;
uint32 spell3_phase1_Timer;
uint32 spell4_phase1_Timer;
uint32 spell5_phase1_Timer;
uint32 spell6_phase1_Timer;
uint32 spell1_phase2_Timer;
uint32 spell2_phase2_Timer;
uint32 spell3_phase2_Timer;
uint32 spell4_phase2_Timer;
uint32 spell5_phase2_Timer;
uint32 spell6_phase2_Timer;
uint32 spell1_phase3_Timer;
uint32 spell2_phase3_Timer;
uint32 phase;
void Aggro(Unit* pWho)
{
}
void KilledUnit(Unit* pVictim)
{
}
void JustDied(Unit* pKiller)
{
}
void Reset()
{
spell1_phase1_Timer = 20000+rand()%20000;
spell2_phase1_Timer = 80000+rand()%20000;
spell3_phase1_Timer = 20000+rand()%20000;
spell4_phase1_Timer = 20000+rand()%20000;
spell5_phase1_Timer = 50000+rand()%30000;
spell6_phase1_Timer = 80000+rand()%20000;
spell1_phase2_Timer = 20000+rand()%20000;
spell2_phase2_Timer = 60000+rand()%20000;
spell3_phase2_Timer = 50000+rand()%30000;
spell4_phase2_Timer = 50000+rand()%30000;
spell5_phase2_Timer = 30000+rand()%30000;
spell6_phase2_Timer = 50000+rand()%40000;
spell1_phase3_Timer = 20000+rand()%20000;
spell2_phase3_Timer = 10000+rand()%10000;
phase = 0;
}
void UpdateAI(const uint32 diff)
{
if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
return;
if (phase == 1)
{
if (spell1_phase1_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 70346);
spell1_phase1_Timer = 20000+rand()%20000;
} else spell1_phase1_Timer -= diff;
if (spell2_phase1_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 71968);
spell2_phase1_Timer = 80000+rand()%20000;
} else spell2_phase1_Timer -= diff;
if (spell3_phase1_Timer <= diff)
{
DoCastSpellIfCan(m_creature->getVictim(), 70672);
spell3_phase1_Timer = 20000+rand()%20000;
} else spell3_phase1_Timer -= diff;
if (spell4_phase1_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 70701);
spell4_phase1_Timer = 20000+rand()%20000;
} else spell4_phase1_Timer -= diff;
if (spell5_phase1_Timer <= diff)
{
DoCastSpellIfCan(m_creature->getVictim(), 70447);
spell5_phase1_Timer = 50000+rand()%30000;
} else spell5_phase1_Timer -= diff;
if (spell6_phase1_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 71617);
spell6_phase1_Timer = 80000+rand()%20000;
} else spell6_phase1_Timer -= diff;
}
if (phase == 2)
{
if (spell1_phase2_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 70346);
spell1_phase2_Timer = 20000+rand()%20000;
} else spell1_phase2_Timer -= diff;
if (spell2_phase2_Timer <= diff)
{
DoCastSpellIfCan(m_creature->getVictim(), 71968);
spell2_phase2_Timer = 60000+rand()%20000;
} else spell2_phase2_Timer -= diff;
if (spell3_phase2_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 70672);
spell3_phase2_Timer = 50000+rand()%30000;
} else spell3_phase2_Timer -= diff;
if (spell4_phase2_Timer <= diff)
{
DoCastSpellIfCan(m_creature->getVictim(), 70447);
spell4_phase2_Timer = 50000+rand()%30000;
} else spell4_phase2_Timer -= diff;
if (spell5_phase2_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 71278);
spell5_phase2_Timer = 30000+rand()%30000;
} else spell5_phase2_Timer -= diff;
if (spell6_phase2_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 72297);
spell6_phase2_Timer = 50000+rand()%40000;
} else spell6_phase2_Timer -= diff;
}
if (phase == 3)
{
if (spell1_phase3_Timer <= diff)
{
DoCastSpellIfCan(m_creature, 71603);
spell1_phase3_Timer = 20000+rand()%20000;
} else spell1_phase3_Timer -= diff;
if (spell2_phase3_Timer <= diff)
{
DoCastSpellIfCan(SelectUnit(SELECT_TARGET_RANDOM, 0), 72672);
spell2_phase3_Timer = 10000+rand()%10000;
} else spell2_phase3_Timer -= diff;
}
DoMeleeAttackIfReady();
}
};
CreatureAI* GetAIProfessor Putricide(Creature* pCreature)
{
return new Professor PutricideAI (pCreature);
}
void AddSC_Professor Putricide()
{
Script *newscript;
newscript = new Script;
newscript->Name = "npc_Professor Putricide";
newscript->GetAI = &GetAIProfessor Putricide;
newscript->RegisterSelf();
}
scripts/northrend/icecrown_citadel/icecrown_citadel at master from rsa's scriptdev2 - GitHub
on the page you will find scritps
maybe you can even use them in your next update. I'm trying to just
help
Friend i found some odd problems in game...first this only happens when you create a new character, the old ones work just fine dont ask me why...maybe the area?? or faction...well the first problem is the reputation (not major problem) you start at lvl 1 with all the factions and some more called test??? see the screenshot...
the second one is with the sellers...and this one is the most strange because like i told you i checked with the old character and that not happens :( only the new character have all this problems maybe because of the updates...some items appear to be broken like the throwing weapons...see the screenshot and the last thing...did you changed the ratios?? Xp and that stuff...? because when i created this new character and play for a while i got to lvl 6 like in a blink and with the old character that didn´t happen...its very strange but something´s wrong but i don´t know what...Attachment 459
Ok update the reputation problem must have been some crazy computer freakout so forget about it...the other problem of the sellers still continues :( the one from the photo and that i tested are from Dun Morogh the starting area for Dwarfs and Gnomes...
thanks