Fief WoD : aucun moyen de rentrer dans un fief deja fonde

Les deux points d entree ne se declenchent que si le joueur n a PAS encore de
fief : l objet Master Surveyor (233664, Horde) et Baros Alexston (79243,
Alliance). Une fois le fief fonde, plus rien n y ramenait. Les trois joueurs du
royaume qui en possedent un ne sont jamais alles dessus : aucun personnage n a
jamais ete sur les cartes 1152, 1153, 1158, 1159, 1330 ni 1331.

Gazlowe (78466) et Baros proposent desormais "Emmenez-moi a mon fief" aux
proprietaires. L option est masquee quand on est deja sur une carte de fief,
Gazlowe y etant aussi spawne. Le declencheur de proximite cote Horde n est pas
touche : il aurait teleporte tout passant.

TeleportOwnerAndPlayMovie renomme TeleportOwnerToGarrison, l ancien nom mentait
depuis le retrait du film.
This commit is contained in:
Sylvania
2026-09-07 10:34:22 +02:00
parent c74de0d601
commit d681f73f54
5 changed files with 68 additions and 6 deletions
@@ -0,0 +1,13 @@
-- Retour dans un fief deja fonde.
--
-- Les deux points d'entree du fief WoD ne se declenchent que si le joueur n'a
-- PAS encore de fief : l'objet Master Surveyor (233664, Horde) et Baros
-- Alexston (79243, Alliance). Une fois le fief fonde, plus rien ne permettait
-- d'y entrer. Les trois joueurs du royaume qui possedent un fief ne sont
-- jamais alles dessus (aucun personnage n'a jamais ete sur les cartes 1152,
-- 1153, 1158, 1159, 1330 ni 1331).
--
-- Gazlowe (78466) recoit donc un script qui propose "Emmenez-moi a mon fief"
-- aux proprietaires. Il est aussi spawne DANS les fiefs (cartes 1152, 1153,
-- 1330) : le script n'y propose rien, il teste Map::IsGarrison().
UPDATE `creature_template` SET `ScriptName` = 'npc_gazlowe_garrison' WHERE `entry` = 78466;
@@ -169,12 +169,12 @@ bool WodGarrison::Upgrade()
_owner->SendGarrisonRemoteInfo();
PhasingHandler::OnConditionChange(_owner);
TeleportOwnerAndPlayMovie();
TeleportOwnerToGarrison();
return true;
}
void WodGarrison::TeleportOwnerAndPlayMovie() const
void WodGarrison::TeleportOwnerToGarrison() const
{
Position WodGarrisonEntrancePositions[2][3] =
{
@@ -84,7 +84,7 @@ public:
bool Create(uint32 garrSiteId) override;
bool CanUpgrade(bool checkCost = true);
bool Upgrade();
void TeleportOwnerAndPlayMovie() const;
void TeleportOwnerToGarrison() const;
void Delete() override;
void Enter() override;
@@ -252,7 +252,7 @@ public:
if (Garrison* garr = player->GetGarrison(GARRISON_TYPE_GARRISON))
{
garr->ToWodGarrison()->TeleportOwnerAndPlayMovie();
garr->ToWodGarrison()->TeleportOwnerToGarrison();
player->KilledMonsterCredit(NPC_ESTABLISH_YOUR_GARRISON_KILL_CREDIT);
}
}
@@ -366,6 +366,45 @@ class spell_groog_rampage : public SpellScriptLoader
}
};
/// 78466 - Gazlowe : retour dans un fief deja fonde.
/// Les deux points d'entree existants (l'objet Master Surveyor cote Horde,
/// Baros Alexston cote Alliance) ne se declenchent que si le joueur n'a PAS
/// encore de fief. Une fois celui-ci fonde, plus rien ne permettait d'y entrer.
class npc_gazlowe_garrison : public CreatureScript
{
public:
npc_gazlowe_garrison() : CreatureScript("npc_gazlowe_garrison") { }
enum
{
GOSSIP_ACTION_ENTER_GARRISON = 1000
};
bool OnGossipHello(Player* player, Creature* creature) override
{
if (creature->IsQuestGiver())
player->PrepareQuestMenu(creature->GetGUID());
/// Gazlowe est aussi spawne a l'interieur des fiefs : on n'y propose rien.
if (player->GetGarrison(GARRISON_TYPE_GARRISON) && !player->GetMap()->IsGarrison())
AddGossipItemFor(player, 0, "Emmenez-moi à mon fief.", 0, GOSSIP_ACTION_ENTER_GARRISON);
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
CloseGossipMenuFor(player);
if (action == GOSSIP_ACTION_ENTER_GARRISON)
if (Garrison* garrison = player->GetGarrison(GARRISON_TYPE_GARRISON))
garrison->ToWodGarrison()->TeleportOwnerToGarrison();
return true;
}
};
void AddSC_frostfire_ridge()
{
/* BEGIN */
@@ -376,6 +415,7 @@ void AddSC_frostfire_ridge()
new npc_durotan_frostridge_begin();
new go_frostridge_master_surveyor();
new npc_gazlowe_garrison();
new spell_frostridge_claiming();
@@ -180,20 +180,29 @@ public:
if (player->GetQuestStatus(QUEST_ESTABLISH_YOUR_GARRISON) == QUEST_STATUS_INCOMPLETE)
AddGossipItemFor(player, 60002, 1, 0, 0);
/// Retour dans un fief deja fonde : sans cela plus rien n'y ramene.
if (player->GetGarrison(GARRISON_TYPE_GARRISON) && !player->GetMap()->IsGarrison())
AddGossipItemFor(player, 0, "Emmenez-moi à mon fief.", 0, 1000);
SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 /*action*/) override
bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action) override
{
Garrison* garrison = player->GetGarrison(GARRISON_TYPE_GARRISON);
if (!garrison)
{
CloseGossipMenuFor(player);
player->CreateGarrison(player->IsInAlliance() ? GARRISON_SITE_WOD_ALLIANCE : GARRISON_SITE_WOD_HORDE);
player->GetGarrison(GARRISON_TYPE_GARRISON)->ToWodGarrison()->TeleportOwnerAndPlayMovie();
player->GetGarrison(GARRISON_TYPE_GARRISON)->ToWodGarrison()->TeleportOwnerToGarrison();
player->KilledMonsterCredit(NPC_ESTABLISH_YOUR_GARRISON_KILL_CREDIT);
}
else if (action == 1000)
{
CloseGossipMenuFor(player);
garrison->ToWodGarrison()->TeleportOwnerToGarrison();
}
return true;
}