yawow | Дата: Вівторок, 21.06.2011, 14:21 | Сообщение # 8 |
Скаут
Группа: Пользователи
|
SprinterCore, Я сказал это не моя!!! А та что в привате это мояДобавлено (21.06.2011, 14:18) ---------------------------------------------
Quote (yawow) Паблик версия Сервера TrinityCore(Не моя) Описание: Самое главное ЦЛК 12/12 Все прочее НЕБУДУ ОПИСЫВАТЬ работает на отличном качестве
Что тут непонятного?Добавлено (21.06.2011, 14:20) --------------------------------------------- Вот расскажи мне пожалуйсто что это такое? Quote #include "ScriptPCH.h" #include "icecrown_citadel.h" #include "MapManager.h" #include "Transport.h"
// Fusileros #define NPC_ZAFOD_BOOMBOX 37184 #define ITEM_GOBLIN_ROCKET_PACK 49278
const Position SpawnZafodAlliance = { 0.0f, 0.0f, 0.0f, 0.0f };
const Position SpawnZafodHorde = { 0.0f, 0.0f, 0.0f, 0.0f };
#define ZAFOD_BOOMBOX_GOSSIP_GET 1000 #define ZAFOD_BOOMBOX_GOSSIP_CANCEL 1001
// Do_Action #define DO_ACTION_START_GUNSHIP_BATTLE 0 #define DO_ACTION_FINISH_GUNSHIP_BATTLE 1
// tp de fin const Position DeathbringerRise = { -549.80548f, 2211.19238f, 539.29119f, 6.27718f };
// Spawns de NPCs #define SPAWN_SERGEANT 0 #define SPAWN_DISTANCE_0 1 // Soldado con Mortero o Lanza Cohetes #define SPAWN_CAC 2 // Infante de marina o Saqueador #define SPAWN_CAST 3 // Hechizero o Mago de batalla #define SPAWN_DISTANCE_1 4 // Fusileros o Lanzadores de hachas
// Zonas de Spawns const Position SpawnPosAlliance[] = { {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f} };
const Position SpawnPosHorde[] = { {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f, 0.0f} };
//--------------------- Alianza - Definiciones Evento -------------------------------
#define GO_SKYBREAKER 192242 #define GO_GUNSHIP_STAIRS_ALLIANCE 201709 // Acceso innecesario, imposible #define GO_ALLIANCE_GUNSHIP_PORTAL 195371 #define NPC_GUNSHIP_CANNON_ALLIANCE 34929 #define SKYBREAKER_X 0 #define SKYBREAKER_Y 0 #define SKYBREAKER_Z 0 #define SKYBREAKER_RAYON 0 #define NPC_MURADIN_BRONZEBEARD 36948 // Dialogos #define ALLIANCE_GOSSIP_ACTION_START 10875 #define ALLIANCE_GOSSIP_ACTION_CANCEL 1001 #define ALLIANCE_GOSSIP_ACTION_TP 1002 #define NPC_SKYBREAKER_SERGEANT 36961 #define NPC_SKYBREAKER_MORTAR_SOLDIER 36978 #define NPC_SKYBREAKER_MARINE 36950 #define NPC_SKYBREAKER_SORCERER 37026 #define NPC_SKYBREAKER_RIFLEMAN 36969 #define AURA_ON_SKYBREAKER 70120
const Position PosMuradinBronzebeard[]= { {-472.596f, 2466.8701f, 190.7371f, 6.204f}, // Primera posicion {0.0f, 0.0f, 0.0f, 0.0f} // Segunda posicion }; //--------------------------------------------------------------
//--------------------- HORDA ----------------------------------
#define GO_OGRIM_HAMMER 192241 #define GO_GUNSHIP_STAIRS_HORDE 202211 // Innecesario. #define GO_HORDE_GUNSHIP_PORTAL 196413 #define NPC_GUNSHIP_CANNON_HORDE 34935 #define OGRIM_HAMMER_X 0 #define OGRIM_HAMMER_Y 0 #define OGRIM_HAMMER_Z 0 #define OGRIM_HAMMER_RAYON 0 #define NPC_HIGH_OVERLORD_VAROK_SAURFANG 36939// Dialogos #define HORDE_GOSSIP_ACTION_START 10876 #define HORDE_GOSSIP_ACTION_CANCEL 1004 #define HORDE_GOSSIP_ACTION_TP 1005 #define NPC_KORKRON_SERGEANT 36960 #define NPC_KORKRON_ROCKETEER 36982 #define NPC_KORKRON_REAVER 36957 #define NPC_KORKRON_BATTLE_MAGE 37117 #define NPC_KORKRON_AXETHROWER 36968 #define AURA_ON_OGRIM_HAMMER 70121
const Position PosHighOverlordVarokSaurfang[]= { {0.0f, 0.0f, 0.0f, 0.0f}, // Primera posicion {0.0f, 0.0f, 0.0f, 0.0f} // Segunda posicion };
//-----------------------------------------------------------------------
// CA�N_GUNSHIP #define SPELL_CANNON_BLAST 69400 #define SPELL_INCINERATING_BLAST 69402
// MURADIN BARBABRONCE- ALTO_SE�R_SUPREMO_COLMILLOSAURIO #define SPELL_CLEAVE 15284 #define SPELL_RENDING_THROW 70309 #define SPELL_TASTE_OF_BLOOD 69634 #define AURA_BATTLE_FURY_10 72306 #define AURA_BATTLE_FURY_25 72307
// TODOS LOS ENEMIGOS TIENEN ESTE HECHIZO EXCEPTO LOS COMANDANTES #define SPELL_BURNING_PITCH 71335
// HECHICERO - MAGO_DE_BATALLA #define SPELL_BELOW_ZERO 69705
// SOLDADO_CON_MORTERO - LANZACOHETES #define SPELL_ROCKET_ARTILLERY 69679 #define SPELL_EXPLOSION 69680 // Efecto, cuando el cohete explosiona en el suelo.
// SARGENTO #define SPELL_BLADESTORM 69652 #define SPELL_BLADESTORM_TRIGGER 69653 // Uso innecesario SPELL_BLADESTORM #define SPELL_DESPERATE_RESOLVE_10_NM 69647 #define SPELL_DESPERATE_RESOLVE_10_HM 72537 #define SPELL_DESPERATE_RESOLVE_25_NM 72536 #define SPELL_DESPERATE_RESOLVE_25_HM 72538 #define SPELL_WOUNDING_STRIKE_10_NM 69651 #define SPELL_WOUNDING_STRIKE_10_HM 72570 #define SPELL_WOUNDING_STRIKE_25_NM 72569 #define SPELL_WOUNDING_STRIKE_25_HM 72571
// FUSILEROS #define SPELL_SHOOT_10_NM 70162 #define SPELL_SHOOT_10_HM 72567 #define SPELL_SHOOT_25_NM 72566 #define SPELL_SHOOT_25_HM 72568
// LANZADORES_DE_HACHAS #define SPELL_HURL_AXE_10_NM 70161 #define SPELL_HURL_AXE_10_HM 72540 #define SPELL_HURL_AXE_25_NM 72539 #define SPELL_HURL_AXE_25_HM 72541
// BUFF DE EXPERIENCIA #define SPELL_EXPERIENCED 71188 #define SPELL_VETERAN 71193 #define SPELL_ELITE 71195
//----------------------------------------------------------------------- //-- DIALOGOS - MOVER A DB CON NUEVO SISTEMA DE TEXTOS AUN NO ENTIENDO COMO FUNCIONA ------------------ //----------------------------------------------------------------------- // HORDA ---------------------------------------------------------------- //----------------------------------------------------------------------- // PRIMERA_ESCUADRA_ASISTIDA #define SAY_KORKRON_FIRST_SQUAD_0 "Thank the spirits for you, brothers and sisters. The Skybreaker has already left. Quickly now, to Orgrim's Hammer! If you leave soon, you may be able to catch them." #define SAY_KORKRON_FIRST_SQUAD_1 "This should be helpin'ya!" // SEGUNDA_ESCUADRA_ASISTIDA #define SAY_KORKRON_SECOND_SQUAD_0 "Aka'Magosh, brave warriors. The alliance is in great number here." #define SAY_KORKRON_SECOND_SQUAD_1 "Captain Saurfang will be pleased to see you aboard Orgrim's Hammer. Make haste, we will secure the area until you are ready for take-off." // COMIENZA_EL_EVENTO #define YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_0 "Rise up, sons and daughters of the Horde! Today we battle a hated enemy of the Horde! LOK'TAR OGAR! Kor'kron, take us out!" #define YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_1 "What is that?! Something approaching in the distance!" #define YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_2 "ALLIANCE GUNSHIP! ALL HANDS ON DECK!" #define YELL_EVENT_BEGIN_HORDE_MURADIN_BRONZEBEARD_0 "Move yer jalopy or we'll blow it out of the sky, orc! The Horde's got no business here!" #define YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_3 "You will know our business soon! KOR'KRON, ANNIHILATE THEM!" // EMBARQUE AL MARTILLO ORGRIMMAR #define YELL_BOARDING_ORGRIM_S_HAMMER_MURADIN_BRONZEBEARD_0 "Marines, Sergeants, attack!" #define YELL_BOARDING_ORGRIM_S_HAMMER_HIGH_OVERLORD_SAURFANG_0 "You DARE board my ship? Your death will come swiftly." // NUEVO_FUSILERO #define YELL_NEW_RIFLEMEN_MURADIN "Riflemen, shoot faster!" // NUEVO_EQUIPO_DE_MORTERO #define YELL_NEW_MORTAR_TEAM_MURADIN "Mortar team, reload!" // NUEVO_MAGO #define YELL_NEW_MAGE_MURADIN "We're taking hull damage, get a sorcerer out here to shut down those cannons!" // VICTORIA_HORDA #define YELL_HORDE_VICTORY_SAURFANG "The Alliance falter. Onward to the Lich King!" // DERROTA_HORDA #define YELL_HORDE_DEFEAT_SAURFANG "Damage control! Put those fires out! You haven't seen the last of the Horde!" // ALIANZA ------------------------------------------------------------- //----------------------------------------------------------------------- // PRIMERA_ESCUADRA_ASISTIDA #define SAY_SKYBREAKER_FIRST_SQUAD_0 "Thank goodness you arrived when you did, heroes. Orgrim's Hammer has already left. Quickly now, to The Skybreaker! If you leave soon, you may be able to catch them." #define SAY_SKYBREAKER_FIRST_SQUAD_1 "This ought to help!" // SEGUNDA_ESCUADRA_ASISTIDA #define SAY_SKYBREAKER_SECOND_SQUAD_0 "You have my thanks. We were outnumbered until you arrived." #define SAY_SKYBREAKER_SECOND_SQUAD_1 "Captain Muradin is waiting aboard The Skybreaker. We'll secure the area until you are ready for take off." #define SAY_SKYBREAKER_SECOND_SQUAD_2 "Skybreaker infantry, hold position!" // COMIENZA_EL_EVENTO #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_0 "Fire up the engines! We got a meetin' with destiny, lads!" #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_1 "Hold on to yer hats!" #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_2 "What in the world is that? Grab me spyglass, crewman!" #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_3 "By me own beard! HORDE SAILIN' IN FAST 'N HOT!" #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_4 "EVASIVE ACTION! MAN THE GUNS!" #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_5 "Cowardly dogs! Ye blindsided us!" #define YELL_EVENT_BEGIN_ALLIANCE_HIGH_OVERLORD_SAURFANG_0 "This is not your battle, dwarf. Back down or we will be forced to destroy your ship." #define YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_6 "Not me battle? I dunnae who ye? think ye are, mister, but I got a score to settle with Arthas and yer not gettin' in me way! FIRE ALL GUNS! FIRE! FIRE!" // EMBARCANDO_EL_ROMPECIELOS #define YELL_BOARDING_THE_SKYBREAKER_HIGH_OVERLORD_SAURFANG_0 "Reavers, Sergeants, attack!" #define YELL_BOARDING_THE_SKYBREAKER_MURADIN_BRONZEBEARD_0 "What's this then?! Ye won't be takin' this son o' Ironforge's vessel without a fight!." // NUEVO_LANZAHACHAS #define YELL_NEW_AXETHROWERS_HIGH_OVERLORD_SAURFANG_0 "Axethrowers, hurl faster!" // NUEVO_FUSILEROS #define YELL_NEW_ROCKETEERS_HIGH_OVERLORD_SAURFANG_0 "Rocketeers, reload!" // NUEVO_MAGO_DE_BATALLA #define YELL_NEW_BATTLE_MAGE_HIGH_OVERLORD_SAURFANG_0 "We're taking hull damage, get a battle-mage out here to shut down those cannons!" // VICTORIA_ALIANZA #define YELL_ALLIANCE_VICTORY_MURADIN_BRONZEBEARD_0 "Don't say I didn't warn ya, scoundrels! Onward, brothers and sisters!" // DERROTA_ALIANZA #define YELL_ALLIANCE_DEFEAT_MURADIN_BRONZEBEARD_0 "Captain Bartlett, get us out of here! We're taken too much damage to stay afloat!" //----------------------------------------------------------------------- #define SPELL_ACHIEVEMENT 72959 //----------------------------------------------------------------------- #define PHASE_NOT_STARTED 0 #define PHASE_DISTANCE 1 #define PHASE_BOARDING 2 #define PHASE_END 3 #define EXP_NULL 0 #define EXP_EXPERIENCED 20000 #define EXP_VETERAN 40000 #define EXP_ELITE 80000 //-----------------------------------------------------------------------
void buffExp( ScriptedAI * _script, uint32 timer_Spawn) { if ( timer_Spawn < EXP_EXPERIENCED) return; if ( timer_Spawn > EXP_EXPERIENCED && timer_Spawn < EXP_VETERAN) { _script->DoCast( _script->me, SPELL_EXPERIENCED); return; } if ( timer_Spawn > EXP_VETERAN && timer_Spawn < EXP_ELITE) { _script->DoCast( _script->me, SPELL_VETERAN); return; } if ( timer_Spawn > EXP_ELITE) { _script->DoCast( _script->me, SPELL_ELITE); return; } }
class npc_zafod_boombox : public CreatureScript { public: npc_zafod_boombox() : CreatureScript("npc_zafod_boombox") { } struct npc_zafod_boomboxAI : public ScriptedAI { npc_zafod_boomboxAI(Creature* pCreature) : ScriptedAI(pCreature) { pInstance = me->GetInstanceScript(); } void UpdateAI( const uint32 diff) { } InstanceScript* pInstance; }; bool OnGossipHello(Player* pPlayer, Creature* pCreature) { if ( pCreature->GetInstanceScript()->GetBossState(DATA_GUNSHIP_BATTLE_EVENT) == NOT_STARTED || pCreature->GetInstanceScript()->GetBossState(DATA_GUNSHIP_BATTLE_EVENT) == DONE) return false; pPlayer->ADD_GOSSIP_ITEM(49278, "Dame una de estas maquinas", 1000, ZAFOD_BOOMBOX_GOSSIP_GET); pPlayer->ADD_GOSSIP_ITEM(0, "Tal vez, mas tarde", 1001, ZAFOD_BOOMBOX_GOSSIP_CANCEL); pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); return true; } bool OnGossipSelect(Player* player, Creature* pCreature, uint32 /*sender*/, uint32 action) { player->PlayerTalkClass->ClearMenus(); player->CLOSE_GOSSIP_MENU(); switch( action) { case ALLIANCE_GOSSIP_ACTION_START: pCreature->AI()->DoAction( DO_ACTION_START_GUNSHIP_BATTLE); return true; case ALLIANCE_GOSSIP_ACTION_TP: pCreature->AI()->DoAction( DO_ACTION_FINISH_GUNSHIP_BATTLE); return true; case ALLIANCE_GOSSIP_ACTION_CANCEL: return true; }; return false; }
CreatureAI* GetAI(Creature* pCreature) const { return new npc_zafod_boomboxAI(pCreature); } };
class boss_muradin_bronzebeard : public CreatureScript { public: boss_muradin_bronzebeard() : CreatureScript("boss_muradin_bronzebeard") { } struct boss_muradin_bronzebardAI : public BossAI { boss_muradin_bronzebardAI(Creature* pCreature) : BossAI(pCreature, DATA_GUNSHIP_BATTLE_EVENT) { instance->SetBossState(DATA_GUNSHIP_BATTLE_EVENT, NOT_STARTED); instance->SetData(DATA_GUNSHIP_EVENT, PHASE_NOT_STARTED); bDialog = false; dialogID = 0; dialogTimer = 0; } void Reset() { timer_Cleave = urand( 8000, 10000); timer_RendingThrow = urand( 10000, 12000); timer_TasteOfBlood = 0; // -40% bDialog = false; dialogID = 0; dialogTimer = 0; } void DamageTaken(Unit* /*done_by*/, uint32& damage) { if( !bBattleStart) damage = 0; } void EnterCombat(Unit* /*who*/) { } void Spawn( uint32 code) { uint8 spawn = floor( (long double) urand( 0, 5)); switch (code) { case SPAWN_SERGEANT: lSummons.push_back( DoSpawnCreature( NPC_KORKRON_SERGEANT, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_DISTANCE_0: lSummons.push_back( DoSpawnCreature( NPC_KORKRON_ROCKETEER, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_CAC: lSummons.push_back( DoSpawnCreature( NPC_KORKRON_REAVER, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_CAST: lSummons.push_back( DoSpawnCreature( NPC_KORKRON_BATTLE_MAGE, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_DISTANCE_1: lSummons.push_back( DoSpawnCreature( NPC_KORKRON_AXETHROWER, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; }; } void Start() { //zafodBoombox = DoSpawnCreature( NPC_ZAFOD_BOOMBOX, SpawnPosHorde[spawn].GetPositionX(), SpawnPosHorde[spawn].GetPositionY(), SpawnPosHorde[spawn].GetPositionZ(), SpawnPosHorde[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0) } void UpdateAI( const uint32 diff) { if (bDialog) { if (dialogTimer <= diff) { switch (dialogID) { // START_EVENT case 0: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_0, LANG_UNIVERSAL, 0); dialogID = 1; dialogTimer = 2000; break; case 1: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_1, LANG_UNIVERSAL, 0); dialogID = 2; dialogTimer = 2000; break; case 2: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_2, LANG_UNIVERSAL, 0); dialogID = 3; dialogTimer = 2000; break; case 3: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_3, LANG_UNIVERSAL, 0); dialogID = 4; dialogTimer = 2000; break; case 4: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_4, LANG_UNIVERSAL, 0); dialogID = 5; dialogTimer = 2000; break; case 5: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_5, LANG_UNIVERSAL, 0); dialogID = 6; dialogTimer = 2000; break; case 6: if (Creature* pHighOverlordSaurfang = Unit::GetCreature(*me, instance->GetData64( NPC_HIGH_OVERLORD_VAROK_SAURFANG))) { pHighOverlordSaurfang->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_HIGH_OVERLORD_SAURFANG_0, LANG_UNIVERSAL, 0); dialogID = 7; dialogTimer = 2000; } break; case 7: me->MonsterYell( YELL_EVENT_BEGIN_ALLIANCE_MURADIN_BRONZEBEARD_6, LANG_UNIVERSAL, 0); dialogID = 8; dialogTimer = 2000; break; case 8: { Position tp = PosMuradinBronzebeard[1]; Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers(); if( !PlayerList.isEmpty()) { for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { if (Player *pCurrent = i->getSource()) { if (me->GetDistance(pCurrent) <= 100.0f) DoTeleportPlayer( pCurrent, tp.GetPositionX(), tp.GetPositionY(), tp.GetPositionZ(), tp.GetOrientation()); } } } me->SetPosition( tp, true); dialogID = 9; dialogTimer = 10000; } break; // EMBARQUE_EVENTO case 9: if( Creature* pHighOverlordSaurfang = Unit::GetCreature(*me, instance->GetData64( NPC_HIGH_OVERLORD_VAROK_SAURFANG))) { pHighOverlordSaurfang->MonsterYell( YELL_BOARDING_ORGRIM_S_HAMMER_HIGH_OVERLORD_SAURFANG_0, LANG_UNIVERSAL, 0); dialogID = 10; dialogTimer = 2000; } break; case 10: me->MonsterYell( YELL_BOARDING_ORGRIM_S_HAMMER_MURADIN_BRONZEBEARD_0, LANG_UNIVERSAL, 0); dialogID = 11; dialogTimer = 2000; break; case 11: // COMIENZO DE LA BATALLA DE LOS CA�NES ! this->Start(); break; }; } else dialogTimer -= diff; } else if (bBattleStart) { if (!UpdateVictim()) return;
if (( me->GetHealth() / me->GetMaxHealth()) <= 0.4) { if (timer_TasteOfBlood <= diff) { DoCast( me, SPELL_TASTE_OF_BLOOD); timer_TasteOfBlood = 120000; } else timer_TasteOfBlood -= diff; }
if (timer_Cleave <= diff) { DoCastVictim( SPELL_CLEAVE); timer_Cleave = urand( 8000, 10000); } else timer_Cleave -= diff;
if (timer_RendingThrow <= diff) { DoCastVictim( SPELL_RENDING_THROW); timer_RendingThrow = urand( 10000, 12000); } else timer_RendingThrow -= diff; DoMeleeAttackIfReady(); } } void DoAction(const int32 param) { switch( param) { case DO_ACTION_START_GUNSHIP_BATTLE: health_theSkybreaker = RAID_MODE( 600000, 1200000); health_ogrimsHammer = RAID_MODE( 600000, 1200000); instance->SetBossState( DATA_GUNSHIP_BATTLE_EVENT, NOT_STARTED); instance->SetData( DATA_GUNSHIP_EVENT, PHASE_NOT_STARTED); bDialog = true; dialogID = 0; dialogTimer = 0; break; case DO_ACTION_FINISH_GUNSHIP_BATTLE: Position tp = DeathbringerRise; Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers(); if (!PlayerList.isEmpty()) { for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { if (Player *pCurrent = i->getSource()) { if (me->GetDistance(pCurrent) <= 100.0f) DoTeleportPlayer( pCurrent, tp.GetPositionX(), tp.GetPositionY(), tp.GetPositionZ(), tp.GetOrientation()); } } } break; }; } uint32 health_theSkybreaker; uint32 health_ogrimsHammer; std::list<Creature*> lSummons; Creature* zafodBoombox; uint32 timer_Cleave; uint32 timer_RendingThrow; uint32 timer_TasteOfBlood; bool bBattleStart; bool bDialog; uint32 dialogID; uint32 dialogTimer; }; bool OnGossipHello(Player* pPlayer, Creature* pCreature) { if ( pPlayer->GetTeamId() == TEAM_HORDE) return false; InstanceScript* pInstance = pCreature->GetInstanceScript(); if (pInstance && pInstance->GetBossState(DATA_GUNSHIP_BATTLE_EVENT) == NOT_STARTED) { pPlayer->ADD_GOSSIP_ITEM(0, "Mis aliados estan en buen estado, Muradin, Adelante", 10875, ALLIANCE_GOSSIP_ACTION_START); pPlayer->ADD_GOSSIP_ITEM(0, "Volveremos mas adelante", 631, ALLIANCE_GOSSIP_ACTION_CANCEL); pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); return true; } if (pInstance && pInstance->GetBossState(DATA_GUNSHIP_BATTLE_EVENT) == DONE) { pPlayer->ADD_GOSSIP_ITEM(0, "Vamos a la parte superior del Libramorte", 10876, ALLIANCE_GOSSIP_ACTION_TP); pPlayer->ADD_GOSSIP_ITEM(0, "Volveremos mas adelante", 631, ALLIANCE_GOSSIP_ACTION_CANCEL); pPlayer->SEND_GOSSIP_MENU(pPlayer->GetGossipTextId(pCreature), pCreature->GetGUID()); return true; } return false; } bool OnGossipSelect(Player* player, Creature* pCreature, uint32 /*sender*/, uint32 action) { player->PlayerTalkClass->ClearMenus(); player->CLOSE_GOSSIP_MENU(); switch( action) { case ALLIANCE_GOSSIP_ACTION_START: pCreature->AI()->DoAction( DO_ACTION_START_GUNSHIP_BATTLE); //Lanzamiento de los Ca�s ! return true; case ALLIANCE_GOSSIP_ACTION_TP: pCreature->AI()->DoAction( DO_ACTION_FINISH_GUNSHIP_BATTLE); //Fin de los ca�s ! return true; case ALLIANCE_GOSSIP_ACTION_CANCEL: return true; }; return false; } CreatureAI* GetAI(Creature* pCreature) const { return new boss_muradin_bronzebardAI(pCreature); } };
class boss_high_overlord_varok_saurfang : public CreatureScript { public: boss_high_overlord_varok_saurfang() : CreatureScript("boss_high_overlord_varok_saurfang") { } struct boss_high_overlord_varok_saurfangAI : public BossAI { boss_high_overlord_varok_saurfangAI(Creature* pCreature) : BossAI(pCreature, DATA_GUNSHIP_BATTLE_EVENT) { instance->SetBossState( DATA_GUNSHIP_BATTLE_EVENT, NOT_STARTED); instance->SetData( DATA_GUNSHIP_EVENT, PHASE_NOT_STARTED); bDialog = false; dialogID = 0; dialogTimer = 0; } void Reset() { timer_Cleave = urand( 8000, 10000); timer_RendingThrow = urand( 10000, 12000); timer_TasteOfBlood = 0; // -40% bDialog = false; dialogID = 0; dialogTimer = 0; } void DamageTaken(Unit* /*done_by*/, uint32& damage) { if ( !bBattleStart) damage = 0; } void EnterCombat(Unit* /*who*/) { } void Spawn( uint32 code) { uint8 spawn = floor( (long double) urand( 0, 5)); switch( code) { case SPAWN_SERGEANT: lSummons.push_back( DoSpawnCreature( NPC_SKYBREAKER_SERGEANT, SpawnPosAlliance[spawn].GetPositionX(), SpawnPosAlliance[spawn].GetPositionY(), SpawnPosAlliance[spawn].GetPositionZ(), SpawnPosAlliance[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_DISTANCE_0: lSummons.push_back( DoSpawnCreature( NPC_SKYBREAKER_MORTAR_SOLDIER, SpawnPosAlliance[spawn].GetPositionX(), SpawnPosAlliance[spawn].GetPositionY(), SpawnPosAlliance[spawn].GetPositionZ(), SpawnPosAlliance[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_CAC: lSummons.push_back( DoSpawnCreature( NPC_SKYBREAKER_MARINE, SpawnPosAlliance[spawn].GetPositionX(), SpawnPosAlliance[spawn].GetPositionY(), SpawnPosAlliance[spawn].GetPositionZ(), SpawnPosAlliance[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_CAST: lSummons.push_back( DoSpawnCreature( NPC_SKYBREAKER_SORCERER, SpawnPosAlliance[spawn].GetPositionX(), SpawnPosAlliance[spawn].GetPositionY(), SpawnPosAlliance[spawn].GetPositionZ(), SpawnPosAlliance[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; case SPAWN_DISTANCE_1: lSummons.push_back( DoSpawnCreature( NPC_SKYBREAKER_RIFLEMAN, SpawnPosAlliance[spawn].GetPositionX(), SpawnPosAlliance[spawn].GetPositionY(), SpawnPosAlliance[spawn].GetPositionZ(), SpawnPosAlliance[spawn].GetOrientation(), TEMPSUMMON_DEAD_DESPAWN,0)); break; }; } void UpdateAI( const uint32 diff) { if (bDialog) { if (dialogTimer <= diff) { switch (dialogID) { // COMIENZA_EL_EVENTO case 0: me->MonsterYell( YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_0, LANG_UNIVERSAL, 0); dialogID = 1; dialogTimer = 2000; break; case 1: me->MonsterYell( YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_1, LANG_UNIVERSAL, 0); dialogID = 2; dialogTimer = 2000; break; case 2: me->MonsterYell( YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_2, LANG_UNIVERSAL, 0); dialogID = 3; dialogTimer = 2000; break; case 3: if (Creature* pMuradinBronzebeard = Unit::GetCreature(*me, instance->GetData64( NPC_MURADIN_BRONZEBEARD))) { pMuradinBronzebeard->MonsterYell( YELL_EVENT_BEGIN_HORDE_MURADIN_BRONZEBEARD_0, LANG_UNIVERSAL, 0); dialogID = 4; dialogTimer = 2000; } break; case 4: me->MonsterYell( YELL_EVENT_BEGIN_HORDE_HIGH_OVERLORD_SAURFANG_3, LANG_UNIVERSAL, 0); dialogID = 5; dialogTimer = 2000; break; case 5: { Position tp = PosHighOverlordVarokSaurfang[1]; Map::PlayerList const &PlayerList = me->GetMap()->GetPlayers(); if (!PlayerList.isEmpty()) { for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) { if (Player *pCurrent = i->getSource()) { if (me->GetDistance(pCurrent) <= 100.0f) DoTeleportPlayer( pCurrent, tp.GetPositionX(), tp.GetPositionY(), tp.GetPositionZ(), tp.GetOrientation()); } } } me->SetPosition( tp, true); dialogID = 6; dialogTimer = 10000; } break; // EMBARQUE_EVENTO case 6: if (Creature* pMuradinBronzebeard = Unit::GetCreature(*me, instance->GetData64( NPC_MURADIN_BRONZEBEARD))) { pMuradinBronzebeard->MonsterYell( YELL_BOARDING_ORGRIM_S_HAMMER_MURADIN_BRONZEBEARD_0, LANG_UNIVERSAL, 0); dialogID = 7; dialogTimer = 2000; } break; case 7: me->MonsterYell( YELL_BOARDING_ORGRIM_S_HAMMER_HIGH_OVERLORD_SAURFANG_0, LANG_UNIVERSAL, 0); dialogID = 8; dialogTimer = 2000; break; case 8: // COMIENZO DE LA BATALLA DE LOS CA�NES ! break; }; } else dialogTimer -= diff; } if (bBattleStart) { if (!UpdateVictim()) return;
if (( me->GetHealth() / me->GetMaxHealth()) <= 0.4) { if (timer_TasteOfBlood <= diff) { DoCast( me, SPELL_TASTE_OF_BLOOD); timer_TasteOfBlood = 120000; } else timer_TasteOfBlood -= diff; } if (timer_Cleave <= diff) { DoCastVictim( SPELL_CLEAVE); timer_Cleave = urand( 8000, 10000); } else timer_Cleave -= diff;
if (timer_RendingThrow <= diff) { DoCastVictim( SPELL_RENDING_THROW); timer_RendingThrow = urand( 10000, 12000); } else timer_RendingThrow -= diff; Добавлено (21.06.2011, 14:21) --------------------------------------------- Тут даже всё не вместилось
Мой сервер WoW http://yawow.org.ua/
|
|
|
|