- /*######
- ## Quest: Escape From Silverbrook (12308)
- ## NPC: Ducal's Horse (27409)
- ## NPC: Freed Alliance Scout (27411)
- ######*/
- enum eEscapeFromSilverbrook
- {
- QUEST_ESCAPE_FROM_SILVERBROOK = 12308,
- SPELL_SUMMON_SILVERBROOK_WORGEN = 48681,
- SPELL_ESCAPE_FROM_SILVERBROOK_PERIODIC = 48683,
- SPELL_ESCAPE_FROM_SILVERBROOK_CREDIT = 50473,
- NPC_DUCAL_HORSE = 27409,
- NPC_DUCAL_HORSE_PASSANGER = 26430
- };
- class npc_ducal_horse : public CreatureScript
- {
- public:
- npc_ducal_horse() : CreatureScript("npc_ducal_horse") { }
- struct npc_ducal_horseAI : public npc_escortAI
- {
- npc_ducal_horseAI(Creature* pCreature) : npc_escortAI(pCreature)
- {
- bSummon = false;
- bNpcBoarded = false;
- }
- bool bNpcBoarded;
- bool bSummon;
- uint64 uiPlayerGUID;
- uint32 uiSummonTimer;
- void PassengerBoarded(Unit *who, int8 seatId, bool apply)
- {
- if (who->GetTypeId() == TYPEID_UNIT && seatId == 0)
- {
- bNpcBoarded = apply;
- }
- if (bNpcBoarded)
- {
- if (!HasEscortState(STATE_ESCORT_ESCORTING))
- {
- if (Unit* seat = me->GetVehicleKit()->GetPassenger(1))
- {
- if(!seat)
- return;
- if (Unit* player = seat->GetVehicleKit()->GetPassenger(0))
- {
- uiPlayerGUID = player->GetGUID();
- bSummon = true;
- uiSummonTimer = urand(5000, 10000);
- Start(false, true, uiPlayerGUID, 0, true, true);
- DoCast(SPELL_ESCAPE_FROM_SILVERBROOK_PERIODIC);
- }
- }
- }
- }
- if (!bNpcBoarded && seatId == 0)
- if (who->GetTypeId() == TYPEID_UNIT)
- who->ToCreature()->DespawnOrUnsummon();
- }
- void JustDied(Unit* pKiller)
- {
- if (Vehicle* pVehicle = me->GetVehicleKit())
- if (Unit* pPassenger = pVehicle->GetPassenger(0))
- if (pPassenger->GetTypeId() == TYPEID_UNIT)
- pPassenger->ToCreature()->DespawnOrUnsummon();
- }
- void WaypointReached(uint32 uiWP)
- {
- switch (uiWP)
- {
- case 97:
- bSummon = false;
- break;
- case 102:
- if (Vehicle* pVehicle = me->GetVehicleKit())
- if (Unit* pPassenger = pVehicle->GetPassenger(0))
- pPassenger->ExitVehicle();
- if (Player* pPlayer = GetPlayerForEscort())
- {
- pPlayer->ExitVehicle();
- pPlayer->CastSpell(pPlayer, SPELL_ESCAPE_FROM_SILVERBROOK_CREDIT, true);
- }
- break;
- }
- }
- void JustSummoned(Creature* pSummoned)
- {
- pSummoned->AI()->AttackStart(Player::GetPlayer(*me,uiPlayerGUID));
- }
- void OnCharmed(bool /*apply*/)
- {
- }
- void UpdateAI(const uint32 uiDiff)
- {
- npc_escortAI::UpdateAI(uiDiff);
- if (bSummon)
- {
- if (uiSummonTimer <= uiDiff)
- {
- DoCast(SPELL_SUMMON_SILVERBROOK_WORGEN);
- uiSummonTimer = urand(5000, 10000);
- } else uiSummonTimer -= uiDiff;
- }
- }
- };
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new npc_ducal_horseAI (pCreature);
- }
- };
- class npc_freed_alliance_scout : public CreatureScript
- {
- public:
- npc_freed_alliance_scout() : CreatureScript("npc_freed_alliance_scout") { }
- struct npc_freed_alliance_scoutAI : public npc_escortAI
- {
- npc_freed_alliance_scoutAI(Creature* pCreature) : npc_escortAI(pCreature)
- {
- uiDucalHorseGUID = 0;
- uiPlayerGUID = 0;
- }
- uint64 uiDucalHorseGUID;
- uint64 uiPlayerGUID;
- bool bTalk;
- uint8 uiTalkStage;
- uint32 uiTalkTimer;
- void WaypointReached(uint32 PointId)
- {
- if (PointId == 6)
- {
- if (Creature* pHorse = me->SummonCreature(NPC_DUCAL_HORSE, 4428.630371f, -2488.344238f, 246.493561f, 5.788373f, TEMPSUMMON_MANUAL_DESPAWN))
- uiDucalHorseGUID = pHorse->GetGUID();
- uiTalkTimer = 0;
- bTalk = true;
- }
- }
- void JustRespawned()
- {
- uiDucalHorseGUID = 0;
- }
- void JustDied(Unit* pKiller)
- {
- if (Creature* pHorse = Unit::GetCreature(*me, uiDucalHorseGUID))
- pHorse->DespawnOrUnsummon();
- }
- void UpdateAI(const uint32 uiDiff)
- {
- npc_escortAI::UpdateAI(uiDiff);
- if (bTalk)
- {
- if (uiTalkTimer <= uiDiff)
- {
- switch (uiTalkStage)
- {
- case 0:
- Talk(0);
- uiTalkTimer = 5000;
- break;
- case 1:
- Talk(1);
- uiTalkTimer = 8000;
- break;
- case 2:
- Talk(2);
- Start(false, true, uiPlayerGUID, 0, true);
- SetDespawnAtEnd(false);
- bTalk = false;
- break;
- case 3:
- Talk(3);
- uiTalkTimer = 5000;
- break;
- case 4:
- Talk(4);
- uiTalkTimer = 5000;
- bTalk = false;
- if (Creature* pHorse = Unit::GetCreature(*me, uiDucalHorseGUID))
- me->EnterVehicle(pHorse, 0);
- break;
- }
- uiTalkStage++;
- } else uiTalkTimer -= uiDiff;
- }
- if (!UpdateVictim())
- return;
- DoMeleeAttackIfReady();
- }
- void IsSummonedBy(Unit* owner)
- {
- if (owner->GetEntry() == 27499)
- {
- bTalk = true;
- uiTalkTimer = 0;
- uiTalkStage = 0;
- }
- }
- };
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new npc_freed_alliance_scoutAI (pCreature);
- }
- };
- new npc_ducal_horse;
- new npc_freed_alliance_scout;
- -- Escape from Silverbrook
- -- Caged Prisoner
- SET @ENTRY := 27499;
- SET @SOURCETYPE := 0;
- UPDATE `creature_template` SET AIName='SmartAI' WHERE entry=@ENTRY;
- DELETE FROM `smart_scripts` WHERE entryorguid=@ENTRY AND `source_type`=@SOURCETYPE;
- DELETE FROM `creature_ai_scripts` WHERE `creature_id`=@ENTRY;
- INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`)VALUES
- (@ENTRY,@SOURCETYPE,0,1,19,0,100,0,12308,0,0,0,11,48710,0,0,0,0,0,19,24042,10,0,0,0,0,0,'Caged Prisoner - on quest accepted - summon Freed Alliance Scout'),
- (@ENTRY,@SOURCETYPE,1,2,61,0,100,0,0,0,0,0,9,0,0,0,0,0,0,15,188706,10,0,0,0,0,0,'Caged Prisoner - on quest accepted - summon Freed Alliance Scout'),
- (@ENTRY,@SOURCETYPE,2,0,61,0,100,0,0,0,0,0,41,500,0,0,0,0,0,1,0,0,0,0,0,0,0,'Caged Prisoner - on quest accepted - summon Freed Alliance Scout');
- DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 27409;
- DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = 26430;
- INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `quest_start`, `quest_start_active`, `quest_end`, `cast_flags`, `aura_required`, `aura_forbidden`, `user_type`) VALUES
- (26430, 46598, 0, 0, 0, 1, 0, 0, 0),
- (27409, 48678, 0, 0, 0, 1, 0, 0, 0);
- UPDATE `creature_template` SET `VehicleId` = 51, `IconName`= 'vehichleCursor', `npcflag` = `npcflag`|16777216, `unit_flags` = 0, `ScriptName` = "npc_ducal_horse", `spell1` = 48677, `spell2` = 48768, `spell3` = 48783 WHERE `entry` = 27409;
- UPDATE `creature_template` SET `VehicleId` = 52, `npcflag` = `npcflag`|16777216, `unit_flags` = `unit_flags`|256|512, `spell1` = 48677, `spell2` = 48768, `spell3` = 48783, `flags_extra` = 0 WHERE `entry` = 26430;
- UPDATE `creature_template` SET `ScriptName` = "npc_freed_alliance_scout" WHERE `entry` = 27411;
- DELETE FROM `vehicle_template_accessory` WHERE `entry`=27409;
- INSERT INTO `vehicle_template_accessory` (`entry`, `accessory_entry`, `seat_id`, `minion`, `description`, `summontype`, `summontimer`) VALUES
- (27409,26430,0,0,'Ducal Horse',5,0);
- UPDATE `creature_template` SET `faction_A` = 16, `faction_H` = 16 WHERE entry = 27417;
- DELETE FROM `script_waypoint` WHERE entry = 27409;
- INSERT INTO `script_waypoint` (`entry`, `pointid`, `location_x`, `location_y`, `location_z`, `waittime`, `point_comment`) VALUES
- (27409, 0, 4431.638672, -2481.546143, 245.497971, 0, ''),
- (27409, 1, 4449.238281, -2471.332031, 242.360382, 0, ''),
- (27409, 2, 4461.925293, -2462.848145, 239.519882, 0, ''),
- (27409, 3, 4462.994141, -2448.238037, 237.881256, 0, ''),
- (27409, 4, 4479.575684, -2434.093506, 235.040390, 0, ''),
- (27409, 5, 4488.495605, -2420.688477, 233.043091, 0, ''),
- (27409, 6, 4494.654785, -2414.143066, 230.241013, 0, ''),
- (27409, 7, 4499.730469, -2414.861572, 230.952850, 0, ''),
- (27409, 8, 4510.846191, -2401.806641, 226.618698, 0, ''),
- (27409, 9, 4517.005371, -2388.016357, 220.151077, 0, ''),
- (27409, 10, 4520.017578, -2373.915283, 213.041779, 0, ''),
- (27409, 11, 4524.577637, -2355.400391, 202.208481, 0, ''),
- (27409, 12, 4520.500977, -2332.202148, 190.853638, 0, ''),
- (27409, 13, 4509.677734, -2314.525635, 182.408096, 0, ''),
- (27409, 14, 4488.281250, -2309.130127, 184.351913, 0, ''),
- (27409, 15, 4480.724609, -2311.419434, 185.420715, 0, ''),
- (27409, 16, 4470.293457, -2314.579346, 183.929382, 0, ''),
- (27409, 17, 4453.349121, -2318.290771, 189.487000, 0, ''),
- (27409, 18, 4442.953613, -2311.859375, 192.656219, 0, ''),
- (27409, 19, 4414.564941, -2297.739258, 191.105362, 0, ''),
- (27409, 20, 4396.023438, -2286.889648, 192.638016, 0, ''),
- (27409, 21, 4383.112305, -2278.546631, 188.321487, 0, ''),
- (27409, 22, 4369.118652, -2256.089844, 187.592911, 0, ''),
- (27409, 23, 4339.653320, -2250.217529, 188.636993, 0, ''),
- (27409, 24, 4299.784180, -2260.091309, 205.303589, 0, ''),
- (27409, 25, 4292.068848, -2261.806885, 209.099808, 0, ''),
- (27409, 26, 4258.068359, -2270.728027, 212.053543, 0, ''),
- (27409, 27, 4224.148926, -2276.497559, 214.878052, 0, ''),
- (27409, 28, 4210.618652, -2280.829346, 214.910553, 0, ''),
- (27409, 29, 4193.759766, -2285.936035, 219.885529, 0, ''),
- (27409, 30, 4168.561523, -2272.436279, 221.375009, 0, ''),
- (27409, 31, 4151.019531, -2269.352783, 223.433472, 0, ''),
- (27409, 32, 4131.847168, -2271.157715, 221.920700, 0, ''),
- (27409, 33, 4112.480469, -2276.041748, 219.916550, 0, ''),
- (27409, 34, 4103.597656, -2274.198730, 219.276031, 0, ''),
- (27409, 35, 4093.837158, -2276.393066, 219.042526, 0, ''),
- (27409, 36, 4084.734375, -2272.286133, 217.870331, 0, ''),
- (27409, 37, 4063.238525, -2261.991211, 215.988922, 0, ''),
- (27409, 38, 4059.935547, -2260.473145, 216.993256, 0, ''),
- (27409, 39, 4028.185791, -2252.874512, 218.258530, 0, ''),
- (27409, 40, 4020.977539, -2249.354004, 217.129837, 0, ''),
- (27409, 41, 4005.426025, -2256.105957, 218.451675, 0, ''),
- (27409, 42, 3988.108398, -2262.058350, 217.109756, 0, ''),
- (27409, 43, 3968.364014, -2267.235840, 215.268341, 0, ''),
- (27409, 44, 3953.139893, -2268.633057, 212.391113, 0, ''),
- (27409, 45, 3935.732422, -2276.518066, 209.669937, 0, ''),
- (27409, 46, 3922.170898, -2282.024414, 211.200699, 0, ''),
- (27409, 47, 3913.766846, -2300.279541, 209.620239, 0, ''),
- (27409, 48, 3914.160156, -2317.614990, 208.949615, 0, ''),
- (27409, 49, 3911.533936, -2330.580078, 207.751999, 0, ''),
- (27409, 50, 3907.095947, -2346.107422, 204.630707, 0, ''),
- (27409, 51, 3901.425537, -2362.481201, 206.197708, 0, ''),
- (27409, 52, 3885.374756, -2368.482178, 202.270737, 0, ''),
- (27409, 53, 3871.682617, -2371.436035, 196.694305, 0, ''),
- (27409, 54, 3858.806396, -2374.236816, 194.038589, 0, ''),
- (27409, 55, 3833.323975, -2390.121582, 187.584473, 0, ''),
- (27409, 56, 3818.713379, -2403.767090, 183.718597, 0, ''),
- (27409, 57, 3812.403564, -2425.267334, 185.086273, 0, ''),
- (27409, 58, 3812.611328, -2432.785400, 186.023727, 0, ''),
- (27409, 59, 3812.221680, -2453.928711, 188.508041, 0, ''),
- (27409, 60, 3815.669189, -2479.355957, 192.388458, 0, ''),
- (27409, 61, 3819.468262, -2503.677002, 195.024658, 0, ''),
- (27409, 62, 3822.264648, -2517.937256, 194.068130, 0, ''),
- (27409, 63, 3825.485107, -2534.361572, 196.379684, 0, ''),
- (27409, 64, 3829.201660, -2554.680664, 196.714203, 0, ''),
- (27409, 65, 3836.672119, -2578.528076, 196.706253, 0, ''),
- (27409, 66, 3847.536133, -2609.345459, 200.060410, 0, ''),
- (27409, 67, 3861.525879, -2624.756592, 202.314850, 0, ''),
- (27409, 68, 3882.063232, -2655.939209, 203.425415, 0, ''),
- (27409, 69, 3886.698975, -2663.550293, 208.091705, 0, ''),
- (27409, 70, 3900.575928, -2672.409912, 212.662750, 0, ''),
- (27409, 71, 3909.817383, -2687.583008, 217.098572, 0, ''),
- (27409, 72, 3911.782959, -2695.853027, 220.364487, 0, ''),
- (27409, 73, 3916.008301, -2703.185791, 221.175446, 0, ''),
- (27409, 74, 3912.544678, -2712.180420, 221.059509, 0, ''),
- (27409, 75, 3900.396484, -2743.329346, 219.152481, 0, ''),
- (27409, 76, 3889.821777, -2751.587646, 221.798737, 0, ''),
- (27409, 77, 3883.421875, -2756.963379, 223.885544, 0, ''),
- (27409, 78, 3851.103027, -2769.906494, 227.460480, 0, ''),
- (27409, 79, 3837.903076, -2769.537842, 226.115402, 0, ''),
- (27409, 80, 3813.292725, -2770.593018, 220.927460, 0, ''),
- (27409, 81, 3801.162109, -2771.017578, 219.535080, 0, ''),
- (27409, 82, 3780.501709, -2772.391602, 213.905884, 0, ''),
- (27409, 83, 3767.551025, -2775.388672, 211.281708, 0, ''),
- (27409, 84, 3759.778320, -2782.290771, 209.165924, 0, ''),
- (27409, 85, 3752.759277, -2787.596436, 206.495926, 0, ''),
- (27409, 86, 3729.982422, -2803.813721, 210.023056, 0, ''),
- (27409, 87, 3723.949951, -2808.085693, 211.655594, 0, ''),
- (27409, 88, 3705.986328, -2819.675537, 215.066315, 0, ''),
- (27409, 89, 3685.556152, -2832.987549, 217.602127, 0, ''),
- (27409, 90, 3674.411377, -2843.797852, 217.875214, 0, ''),
- (27409, 91, 3662.455811, -2853.292480, 216.581512, 0, ''),
- (27409, 92, 3647.392822, -2857.280518, 213.150558, 0, ''),
- (27409, 93, 3630.625977, -2860.268555, 214.962250, 0, ''),
- (27409, 94, 3610.744141, -2858.618164, 208.903931, 0, ''),
- (27409, 95, 3587.919189, -2854.562500, 203.447754, 0, ''),
- (27409, 96, 3562.793213, -2842.607666, 197.044495, 0, ''),
- (27409, 97, 3534.265625, -2828.214600, 197.154617, 0, ''),
- (27409, 98, 3515.692871, -2829.376709, 201.276230, 0, ''),
- (27409, 99, 3487.658691, -2829.192871, 202.143524, 0, ''),
- (27409, 100, 3472.460693, -2821.599365, 201.429428, 0, ''),
- (27409, 101, 3460.582031, -2817.212402, 201.804962, 0, ''),
- (27409, 102, 3443.644531, -2811.332520, 202.097687, 0, '');
- DELETE FROM script_waypoint WHERE entry = 27411;
- INSERT INTO `script_waypoint` (`entry`, `pointid`, `location_x`, `location_y`, `location_z`, `waittime`, `point_comment`) VALUES
- (27411, 0, 4394.648438, -2502.304688, 252.802429, 0, ''),
- (27411, 1, 4389.777832, -2502.323242, 252.251602, 0, ''),
- (27411, 2, 4382.442383, -2501.507080, 246.809448, 0, ''),
- (27411, 3, 4381.006836, -2497.183838, 247.235260, 0, ''),
- (27411, 4, 4393.843750, -2484.841553, 248.717392, 0, ''),
- (27411, 5, 4416.043457, -2481.504150, 247.175400, 0, ''),
- (27411, 6, 4425.312500, -2486.656006, 246.555176, 0, '');
- DELETE FROM creature_text WHERE entry = 27411;
- INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
- (27411, 0, 0, 'Were you bitten?', 12, 0, 100, 6, 0, 0, 'Freed Alliance Scout Say1'),
- (27411, 1, 0, 'Answer me! Were you bloody bitten?', 14, 0, 100, 22, 0, 0, 'Freed Alliance Scout Yell'),
- (27411, 2, 0, 'You don\'t even know, do you? The trappers? They\'re not human... we have to get out of here! Come, quick!', 12, 0, 100, 0, 0, 0, 'Freed Alliance Scout Say2'),
- (27411, 3, 0, 'Take Ducal\'s horse, he\'s one of them now!', 12, 0, 100, 0, 0, 0, 'Freed Alliance Scout Say3'),
- (27411, 4, 0, 'There\'s lamp oil in the back - make use of it. The fiends hate fire!', 12, 0, 100, 0, 0, 0, 'Freed Alliance Scout Say4');