From 14b030d2ebd9e9943191fbb8c8df0deb8df74fca Mon Sep 17 00:00:00 2001 From: nordsoft Date: Wed, 11 Oct 2023 23:15:24 +0200 Subject: [PATCH] Support hota quest gates --- lib/mapObjects/CQuest.cpp | 15 ++++++++++++++- lib/mapObjects/CQuest.h | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/mapObjects/CQuest.cpp b/lib/mapObjects/CQuest.cpp index ee45b3e01..10818b2aa 100644 --- a/lib/mapObjects/CQuest.cpp +++ b/lib/mapObjects/CQuest.cpp @@ -710,10 +710,23 @@ void CGQuestGuard::init(CRandomGenerator & rand) configuration.info.push_back({}); configuration.info.back().visitType = Rewardable::EEventType::EVENT_FIRST_VISIT; - configuration.info.back().reward.removeObject = true; + configuration.info.back().reward.removeObject = subID == 0 ? true : false; configuration.canRefuse = true; } +void CGQuestGuard::onHeroVisit(const CGHeroInstance * h) const +{ + if(!quest->isCompleted) + CGSeerHut::onHeroVisit(h); + else + cb->setObjProperty(id, CGSeerHut::SEERHUT_COMPLETE, false); +} + +bool CGQuestGuard::passableFor(PlayerColor color) const +{ + return quest->isCompleted; +} + void CGQuestGuard::serializeJsonOptions(JsonSerializeFormat & handler) { //quest only, do not call base class diff --git a/lib/mapObjects/CQuest.h b/lib/mapObjects/CQuest.h index f12a8ae8a..3f76d3550 100644 --- a/lib/mapObjects/CQuest.h +++ b/lib/mapObjects/CQuest.h @@ -151,6 +151,9 @@ class DLL_LINKAGE CGQuestGuard : public CGSeerHut { public: void init(CRandomGenerator & rand) override; + + void onHeroVisit(const CGHeroInstance * h) const override; + bool passableFor(PlayerColor color) const override; template void serialize(Handler &h, const int version) {