Explorar o código

Support hota quest gates

nordsoft %!s(int64=2) %!d(string=hai) anos
pai
achega
14b030d2eb
Modificáronse 2 ficheiros con 17 adicións e 1 borrados
  1. 14 1
      lib/mapObjects/CQuest.cpp
  2. 3 0
      lib/mapObjects/CQuest.h

+ 14 - 1
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

+ 3 - 0
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 <typename Handler> void serialize(Handler &h, const int version)
 	{