diff --git a/Source/the_twilight_abyss/Quest/Quest.cpp b/Source/the_twilight_abyss/Quest/Quest.cpp index bb1c201..451a80c 100644 --- a/Source/the_twilight_abyss/Quest/Quest.cpp +++ b/Source/the_twilight_abyss/Quest/Quest.cpp @@ -33,7 +33,7 @@ bool UQuest::WorldStateMatch(UWorldState* A, UWorldState* B) if (A->Items.IsEmpty() && !B->Items.IsEmpty()) return false; for (UBaseItem* Item : B->Items) { - if (!A->Items.Contains(Item) && Item->StackCount > A->Items[A->Items.Find(Item)]->StackCount) + if (!A->Items.Contains(Item) && Item->StackCount > A->Items[A->Items.IndexOfByPredicate([Item](const UBaseItem* AItem) { return AItem->ItemID == Item->ItemID; })]->StackCount) { return false; } @@ -60,9 +60,9 @@ bool UQuest::FlagTrueMatch(const UWorldState* WorldState, const FString& FlagNam FString UQuest::GetItemCountAndGoalAmount(const UWorldState* WorldState, UBaseItem* Item) const { FString Result; - if (WorldState->Items.Contains(Item)) + if (WorldState->Items.ContainsByPredicate([Item](const UBaseItem* AItem) { return AItem->ItemID == Item->ItemID; })) { - Result += FString::FromInt(WorldState->Items[WorldState->Items.Find(Item)]->StackCount); + Result += FString::FromInt(WorldState->Items[WorldState->Items.IndexOfByPredicate([Item](const UBaseItem* AItem) { return AItem->ItemID == Item->ItemID; })]->StackCount); Result += "/"; Result += FString::FromInt(Goals->Items[Goals->Items.Find(Item)]->StackCount); return Result; diff --git a/Source/the_twilight_abyss/Quest/QuestSystem.h b/Source/the_twilight_abyss/Quest/QuestSystem.h index 8d553df..7db79f8 100644 --- a/Source/the_twilight_abyss/Quest/QuestSystem.h +++ b/Source/the_twilight_abyss/Quest/QuestSystem.h @@ -51,6 +51,7 @@ protected: public: // Called every frame virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; + UFUNCTION(BlueprintCallable) void CheckActiveQuestConditions(); UWorldState* GetWorldState() const;