New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Q-895 Gizelton Caravan Escort Quest #102
Comments
One problem with this quest along with 5821 is how to handle availability:
So this means that the caravan should move by itself, but at the same time should allow players to take quest only in certain locations. |
Yeah, That would be a task to time correctly. Seems like this would be handled in core like the transports for the Caravan. Just a thought. There is also another one like this at the EP chappel. But that will be later on in another issue... :) |
Condition last-reached waypoint might be helping. Infact i think at some other place there was already talk about adding condition support to quests |
The difficulty that we are facing with quests 5943 and 5821 is not really enabling / disabling the quest. The tricky thing is that the caravan stops in point A and point B for a few min, allowing the player to take the quest. If any player takes the quest then escort starts, otherwise it will continue on its path without player support. The problem comes in when the quest start. The player will escort the caravan, and after the quest is completed, the caravan will continue on it's way. |
well, there exists the possibility to toggle the wait-timer of waypoint-movement. Anyhow - either we postphone this quest until we support real waypoint-movement with sd2, the last will basicly resort to simply storing the player-guid, and giving quest-credit when a player-guid is set when a defined waypoint is reached. Also an idea might be to infact allow storing escort-like information in a place db-scripting can be accessed and as a condition |
Gentlemen, I'd like to draw your attention on a nice PR recently made on Classic DB repository by @Zingzah that addresses those two quests. |
I suppose that I can only take a look at https://github.com/Zingzah/database/commit/e4e1d720a5518f75473bcab6253b549c43cfb9e6 right? Also, I need to check if we actually have the same guids between classic db and udb, in order for me to be able to check this. |
the script for the first escort, its trinitystuff, but it can be ported maybe UPDATE `creature_template` SET `faction_A`=250, `faction_H`=250, `unit_flags`=0, `ScriptName`='npc_cork_gizelton' WHERE `entry`=11625;
UPDATE `creature_template` SET `faction_A`=250, `faction_H`=250, `unit_flags`=0 WHERE `entry` IN (11626, 11564);
DELETE FROM `creature_addon` WHERE `guid`=28714;
DELETE FROM `creature_addon` WHERE `guid`=27290;
DELETE FROM `creature_addon` WHERE `guid`=28728;
DELETE FROM `creature_addon` WHERE `guid`=27289;
DELETE FROM `creature_formations` WHERE `leaderGUID`=28714;
INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES
(28714, 28714, 0, 0, 2),
(28714, 27290, 6, 360, 2),
(28714, 28728, 12, 360, 2),
(28714, 27289, 18, 360, 2);
UPDATE `creature` SET `position_x`=-843.581604, `position_y`=1184.901733, `position_z`=99.684212, `orientation`=3.114390 WHERE `guid`=28714;
UPDATE `creature` SET `position_x`=-836.918823, `position_y`=1183.982666, `position_z`=99.665321, `orientation`=3.076691 WHERE `guid`=27290;
UPDATE `creature` SET `position_x`=-829.472656, `position_y`=1182.002563, `position_z`=99.665321, `orientation`=2.914899 WHERE `guid`=28728;
UPDATE `creature` SET `position_x`=-822.671753, `position_y`=1180.433838, `position_z`=99.662346, `orientation`=2.914899 WHERE `guid`=27289;
DELETE FROM `script_waypoint` WHERE `entry`=11625;
INSERT INTO `script_waypoint` (`entry`, `pointid`, `location_x`, `location_y`, `location_z`, `waittime`, `point_comment`)
VALUES
(11625,0,-847.221,1188.78,99,0,''),
(11625,1,-847.221,1188.78,99,0,''),
(11625,2,-857.324,1187.98,99,0,''),
(11625,3,-869.854,1186.48,98,0,''),
(11625,4,-883.781,1185.01,97,0,''),
(11625,5,-904.03,1183.5,95,0,''),
(11625,6,-935.499,1182.24,91,0,''),
(11625,7,-958.267,1182.92,89,0,''),
(11625,8,-974.384,1182.91,89,1000,'Attack 1'),
(11625,9,-995.034,1177.64,89,0,''),
(11625,10,-1009.27,1177.46,89,0,''),
(11625,11,-1025.51,1181.81,89,0,''),
(11625,12,-1056.65,1186.35,89,0,''),
(11625,13,-1084.96,1184.87,89,0,''),
(11625,14,-1098.32,1187.53,89,0,''),
(11625,15,-1112.01,1190.48,89,0,''),
(11625,16,-1153.93,1192.36,92,1000,'Attack 2'),
(11625,17,-1170.62,1195.64,94,0,''),
(11625,18,-1195.94,1208.73,98,0,''),
(11625,19,-1206.27,1209.18,100,0,''),
(11625,20,-1227.62,1205.96,103,0,''),
(11625,21,-1282.13,1228.26,108,0,''),
(11625,22,-1306.17,1233.9,109,1000,'Attack 3'),
(11625,23,-1317.72,1233.58,110,0,''),
(11625,24,-1343.73,1228.03,111,0,''),
(11625,25,-1373.84,1218.94,111,0,''),
(11625,26,-1412.23,1205.42,111,0,''),
(11625,27,-1417.17,1202.14,111,0,''),
(11625,28,-1446.66,1189.42,111,0,''),
(11625,29,-1467.95,1185.75,110,0,''),
(11625,30,-1485.08,1188.79,107,0,''),
(11625,31,-1492.79,1191.12,105,0,''),
(11625,32,-1505.44,1200.36,100,0,''),
(11625,33,-1514.29,1213.33,94,0,''),
(11625,34,-1521.29,1232.28,87,0,''),
(11625,35,-1523.64,1246.41,82,0,''),
(11625,36,-1521.45,1259.16,77,0,''),
(11625,37,-1517.39,1273.3,71,0,''),
(11625,38,-1513.56,1304.56,63,0,''),
(11625,39,-1512.08,1325.5,60,0,''),
(11625,40,-1502.82,1346.56,58,0,''),
(11625,41,-1488.55,1384.94,58,0,''),
(11625,42,-1485.31,1407.55,58,0,''),
(11625,43,-1487.64,1438.56,58,0,''),
(11625,44,-1490.62,1459.35,58,0,''),
(11625,45,-1476.09,1496.85,58,0,''),
(11625,46,-1457.39,1511.91,59,0,''),
(11625,47,-1446.92,1514.49,59,0,''),
(11625,48,-1426.87,1508.7,59,0,'Quest complete'),
(11625,49,-1410.16,1499.86,59,15000,'Despawn'); /*######
## npc_cork_gizelton
######*/
enum CorkGizeltonMisc
{
NPC_GIZELTON_CARAVAN_KODO = 11564,
NPC_RIGGER = 11626,
NPC_KOLKAR_BATTLE_LORD = 4636,
NPC_KOLKAR_WINDCHASER = 4635,
QUEST_BODYGUARD_TO_HIRE = 5821
};
class npc_cork_gizelton : public CreatureScript
{
public:
npc_cork_gizelton() : CreatureScript("npc_cork_gizelton") { }
struct npc_cork_gizeltonAI : public npc_escortAI
{
npc_cork_gizeltonAI(Creature* creature) : npc_escortAI(creature) { }
void WaypointReached(uint32 waypointId)
{
Player* player = GetPlayerForEscort();
if (!player)
return;
switch (waypointId)
{
case 8:
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -969.05f, 1174.91f, 90.39f, 2.17f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -985.71f, 1173.95f, 91.02f, 1.16f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -983.01f, 1192.88f, 90.01f, 5.42f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -965.51f, 1193.58f, 92.15f, 3.88f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
break;
case 16:
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -1147.83f, 1180.87f, 91.38f, 2.13f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -1163.96f, 1183.72f, 93.79f, 0.84f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -1160.97f, 1201.36f, 93.15f, 5.14f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -1146.20f, 1199.75f, 91.37f, 4.03f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
break;
case 41:
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -1277.78f, 1218.56f, 109.30f, 1.99f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -1292.65f, 1221.28f, 109.99f, 0.73f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_BATTLE_LORD, -1289.25f, 1239.20f, 108.79f, 5.26f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
me->SummonCreature(NPC_KOLKAR_WINDCHASER, -1272.91f, 1234.39f, 108.14f, 3.83f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
break;
case 48:
player->GroupEventHappens(QUEST_BODYGUARD_TO_HIRE, me);
DespawnAll();
break;
}
}
void JustSummoned(Creature* summoned)
{
summoned->AI()->AttackStart(me);
}
void DespawnAll()
{
std::list<Creature*> HelperList;
me->GetCreatureListWithEntryInGrid(HelperList, NPC_RIGGER, 200.0f);
me->GetCreatureListWithEntryInGrid(HelperList, NPC_GIZELTON_CARAVAN_KODO, 200.0f);
if (!HelperList.empty())
for (std::list<Creature*>::iterator itr = HelperList.begin(); itr != HelperList.end(); itr++)
(*itr)->DespawnOrUnsummon();
}
void JustDied(Unit* /*killer*/)
{
if (Player* player = GetPlayerForEscort())
player->FailQuest(QUEST_BODYGUARD_TO_HIRE);
}
void Reset() { }
};
bool OnQuestAccept(Player* player, Creature* creature, Quest const* quest)
{
if (quest->GetQuestId() == QUEST_BODYGUARD_TO_HIRE)
{
if (npc_escortAI* pEscortAI = CAST_AI(npc_cork_gizelton::npc_cork_gizeltonAI, creature->AI()))
pEscortAI->Start(true, false, player->GetGUID());
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
}
return true;
}
CreatureAI* GetAI(Creature* creature) const
{
return new npc_cork_gizeltonAI(creature);
}
}; |
Thanks @Rushor for the data.
Based on this and all the comments above, I think most of the waypoint movement and quests availability could be handled by This raises a question that I hope @Schmoozerd of @xfurry can answer:
|
just a side-node: i saw that you already got datas for the waypoints for both creatures. i don't know if these datas are from current retail, but if you want to sniff it on the current wod-version it will be really hard to find them. 4 months ago i spended like 3 hours to find these creatures in desolace, but they never appeared xD |
The caravan was removed at MoP release unfortunately. |
@cala the answer is yes. Here is some example of create_template_movement points used in scripts: You just have to use WAYPOINT_MOTION_TYPE as a way to switch between the waypoints defined in DB. |
yo @cala https://www.youtube.com/watch?v=svH6_r1Nymw&hd=1 german infos: https://github.com/ClassicWoW/Nefarian_1.12.1_Bugtracker/issues/1246#issuecomment-160980366 https://vanilla-twinhead.twinstar.cz/?issue=3546 english report these are he best reports i could found |
DB background is done in classicdb/database@936a9f2 |
Partially fixed in: cmangos/mangos-wotlk@f4c562e |
Not Sure about all info on this one... :(
Info on quest http://www.wowhead.com/quest=5943
All videos I could find... :)
http://www.youtube.com/watch?v=svH6_r1Nymw
http://www.youtube.com/watch?v=9ytzhlah53s
http://www.youtube.com/watch?v=LVtJz5L1Bi0 @3:50
The text was updated successfully, but these errors were encountered: