break;
case EEnemySpawnType.AfterItemUse:
- ArgumentNullException.ThrowIfNull(step.DataId);
ArgumentNullException.ThrowIfNull(step.ItemId);
if (step.GroundTarget == true)
- yield return new UseItem.UseOnGround(quest.Id, step.DataId.Value, step.ItemId.Value,
+ {
+ if (step.DataId != null)
+ yield return new UseItem.UseOnGround(quest.Id, step.DataId.Value, step.ItemId.Value,
+ step.CompletionQuestVariablesFlags, true);
+ else
+ {
+ ArgumentNullException.ThrowIfNull(step.Position);
+ yield return new UseItem.UseOnPosition(quest.Id, step.Position.Value, step.ItemId.Value,
+ step.CompletionQuestVariablesFlags, true);
+ }
+ }
+ else if (step.DataId != null)
+ {
+ yield return new UseItem.UseOnObject(quest.Id, step.DataId.Value, step.ItemId.Value,
step.CompletionQuestVariablesFlags, true);
+ }
else
- yield return new UseItem.UseOnObject(quest.Id, step.DataId.Value, step.ItemId.Value,
+ {
+ yield return new UseItem.UseOnSelf(quest.Id, step.ItemId.Value,
step.CompletionQuestVariablesFlags, true);
+ }
+
yield return new WaitAtEnd.WaitDelay(TimeSpan.FromSeconds(1));
yield return CreateTask(quest, sequence, step);
break;
ElementId? QuestId,
Vector3 Position,
uint ItemId,
- IList<QuestWorkValue?> CompletionQuestVariablesFlags)
- : IUseItemBase
+ IList<QuestWorkValue?> CompletionQuestVariablesFlags,
+ bool StartingCombat = false) : IUseItemBase
{
- public bool StartingCombat => false;
-
public override string ToString() =>
$"UseItem({ItemId} on ground at {Position.ToString("G", CultureInfo.InvariantCulture)})";
}
internal sealed record UseOnSelf(
ElementId? QuestId,
uint ItemId,
- IList<QuestWorkValue?> CompletionQuestVariablesFlags) : IUseItemBase
+ IList<QuestWorkValue?> CompletionQuestVariablesFlags,
+ bool StartingCombat = false) : IUseItemBase
{
- public bool StartingCombat => false;
public override string ToString() => $"UseItem({ItemId})";
}