|
|
|
|
@ -0,0 +1,66 @@
|
|
|
|
|
using System;
|
|
|
|
|
using Babushka.scripts.CSharp.Common.Inventory;
|
|
|
|
|
using Babushka.scripts.CSharp.Common.NPC;
|
|
|
|
|
using Godot;
|
|
|
|
|
|
|
|
|
|
namespace Babushka.scripts.CSharp.mock;
|
|
|
|
|
|
|
|
|
|
// Dieses script enthält ALLE möglichen dialogoptionen die Yeli in der gesamten Demo hat.
|
|
|
|
|
// Das script ist dafür verantwortlich den richtigen Dialog zu starten.
|
|
|
|
|
public partial class YeliDialog : Node
|
|
|
|
|
{
|
|
|
|
|
public async void StartDialog() // kann zu jedem zeitpunkt vom spieler getriggert werden
|
|
|
|
|
{
|
|
|
|
|
var potato = ObjectLookup.potatoQuest;
|
|
|
|
|
var yeli = ObjectLookup.yeliNpc;
|
|
|
|
|
var inventory = InventoryManager.Instance.playerInventory!;
|
|
|
|
|
|
|
|
|
|
if (yeli.isSleeping) // wenn yeli schläft kann keine quest von ihr angenommen werden, auch wenn die quest verfügbar ist
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliSleep"); // "ZZZ"
|
|
|
|
|
}
|
|
|
|
|
else if (potato.state == PotatoQuest.State.YeliRequest)
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliAskForPotato"); // "Can you bring me 5 potatoes?"
|
|
|
|
|
potato.state = PotatoQuest.State.BringPotato;
|
|
|
|
|
}
|
|
|
|
|
else if (potato.state == PotatoQuest.State.BringPotato)
|
|
|
|
|
{
|
|
|
|
|
var potatoesTodo = potato.potatoesWanted - potato.potatoesBrought;
|
|
|
|
|
var potatoesAvailable = inventory.TotalItemsOfBlueprint(potato.itemBlueprint);
|
|
|
|
|
var takePotatoes = Math.Min(potatoesTodo, potatoesAvailable);
|
|
|
|
|
|
|
|
|
|
inventory.TryRemoveAllItems(new ItemInstance
|
|
|
|
|
{ blueprint = potato.itemBlueprint, amount = takePotatoes }); // should not fail
|
|
|
|
|
potato.potatoesWanted -= takePotatoes;
|
|
|
|
|
|
|
|
|
|
potatoesTodo = potato.potatoesWanted - potato.potatoesBrought;
|
|
|
|
|
|
|
|
|
|
var isComplete = potatoesTodo <= 0;
|
|
|
|
|
var wasSomeDelivered = takePotatoes > 0;
|
|
|
|
|
|
|
|
|
|
if (isComplete)
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliPotatoThankYou"); // "thanks for bringing me all the potatoes"
|
|
|
|
|
potato.state = PotatoQuest.State.Done;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
DialogicStarter.SetValue("potatoes", potatoesTodo); // setzt die Dialogic variable
|
|
|
|
|
|
|
|
|
|
if (wasSomeDelivered)
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliPotatoThanksButMore"); // "thank you but i need {potatoes} more potatoes"
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliPotatoMore"); // "I still need {potatoes} more potatoes"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await DialogicStarter.Dialog("YeliDefault"); // "I'm happy to have you around" oder so
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|