#pragma once

#include "CoreMinimal.h"
#include "DLCCheatComponent.h"
#include "K36CheatComponent.generated.h"

UCLASS(Blueprintable, meta=(BlueprintSpawnableComponent))
class UK36CheatComponent : public UDLCCheatComponent
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36TriggerDiceRollOnSurvivor(int32 result) const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36SpawnHandOfVecnaOnLocallyControlledSurvivor(const FString& localPlayerId) const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36SpawnEyeOfVecnaOnLocallyControlledSurvivor(const FString& localPlayerId) const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36ShowSpectralEntityCollisions(bool showCollisions, bool alsoShowNearMissCollisions);

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36SetForcedDiceValueOnAllTreasureChests(int32 forcedRollValue) const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36SelectSpell(int32 spellSlot);

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36ResetOpenTreasureChests() const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36ResetAllTreasureChests() const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36PrintMagicItemInventoryContents() const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36FillTreasureChestsWithLegendaryMagicItems(const FString& magicItemClassName) const;

	UFUNCTION(BlueprintCallable, Exec)
	void DBD_K36EquipMagicItemOnLocalSurvivor(const FString& magicItemTypeName, const FString& spellCounterType, const FString& localPlayerId);

public:
	UK36CheatComponent();
};

FORCEINLINE uint32 GetTypeHash(const UK36CheatComponent) { return 0; }
