punish v6.8.18.0
This commit is contained in:
commit
e786325cda
322 changed files with 554232 additions and 0 deletions
|
@ -0,0 +1,159 @@
|
|||
using Dalamud.Game.Text;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Plugin.Services;
|
||||
using Questionable.Data;
|
||||
using Questionable.External;
|
||||
using Questionable.Model;
|
||||
using Questionable.Model.Questing;
|
||||
|
||||
namespace Questionable.Controller.Steps.Common;
|
||||
|
||||
internal static class SendNotification
|
||||
{
|
||||
internal sealed class Factory(AutomatonIpc automatonIpc, AutoDutyIpc autoDutyIpc, BossModIpc bossModIpc, TerritoryData territoryData) : SimpleTaskFactory()
|
||||
{
|
||||
public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
|
||||
{
|
||||
switch (step.InteractionType)
|
||||
{
|
||||
case EInteractionType.Snipe:
|
||||
if (!automatonIpc.IsAutoSnipeEnabled)
|
||||
{
|
||||
return new Task(step.InteractionType, step.Comment);
|
||||
}
|
||||
break;
|
||||
case EInteractionType.Duty:
|
||||
if (!autoDutyIpc.IsConfiguredToRunContent(step.DutyOptions))
|
||||
{
|
||||
EInteractionType interactionType = step.InteractionType;
|
||||
uint? num = step.DutyOptions?.ContentFinderConditionId;
|
||||
object comment;
|
||||
if (num.HasValue)
|
||||
{
|
||||
uint valueOrDefault = num.GetValueOrDefault();
|
||||
comment = territoryData.GetContentFinderCondition(valueOrDefault)?.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
comment = step.Comment;
|
||||
}
|
||||
return new Task(interactionType, (string?)comment);
|
||||
}
|
||||
break;
|
||||
case EInteractionType.SinglePlayerDuty:
|
||||
if (!bossModIpc.IsConfiguredToRunSoloInstance(quest.Id, step.SinglePlayerDutyOptions))
|
||||
{
|
||||
return new Task(step.InteractionType, quest.Info.Name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed record Task(EInteractionType InteractionType, string? Comment) : ITask
|
||||
{
|
||||
public override string ToString()
|
||||
{
|
||||
return "SendNotification";
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class Executor(NotificationMasterIpc notificationMasterIpc, IChatGui chatGui, Configuration configuration) : TaskExecutor<Task>()
|
||||
{
|
||||
protected override bool Start()
|
||||
{
|
||||
if (!configuration.Notifications.Enabled)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string text;
|
||||
switch (base.Task.InteractionType)
|
||||
{
|
||||
case EInteractionType.Duty:
|
||||
text = "Duty";
|
||||
break;
|
||||
case EInteractionType.SinglePlayerDuty:
|
||||
text = "Single player duty";
|
||||
break;
|
||||
case EInteractionType.WaitForManualProgress:
|
||||
case EInteractionType.Snipe:
|
||||
case EInteractionType.Instruction:
|
||||
text = "Manual interaction required";
|
||||
break;
|
||||
default:
|
||||
text = $"{base.Task.InteractionType}";
|
||||
break;
|
||||
}
|
||||
string text2 = text;
|
||||
if (!string.IsNullOrEmpty(base.Task.Comment))
|
||||
{
|
||||
text2 = text2 + " - " + base.Task.Comment;
|
||||
}
|
||||
if (configuration.Notifications.ChatType != XivChatType.None)
|
||||
{
|
||||
XivChatEntry xivChatEntry;
|
||||
switch (configuration.Notifications.ChatType)
|
||||
{
|
||||
case XivChatType.Say:
|
||||
case XivChatType.Shout:
|
||||
case XivChatType.TellOutgoing:
|
||||
case XivChatType.TellIncoming:
|
||||
case XivChatType.Party:
|
||||
case XivChatType.Alliance:
|
||||
case XivChatType.Ls1:
|
||||
case XivChatType.Ls2:
|
||||
case XivChatType.Ls3:
|
||||
case XivChatType.Ls4:
|
||||
case XivChatType.Ls5:
|
||||
case XivChatType.Ls6:
|
||||
case XivChatType.Ls7:
|
||||
case XivChatType.Ls8:
|
||||
case XivChatType.FreeCompany:
|
||||
case XivChatType.NoviceNetwork:
|
||||
case XivChatType.Yell:
|
||||
case XivChatType.CrossParty:
|
||||
case XivChatType.PvPTeam:
|
||||
case XivChatType.CrossLinkShell1:
|
||||
case XivChatType.NPCDialogue:
|
||||
case XivChatType.NPCDialogueAnnouncements:
|
||||
case XivChatType.CrossLinkShell2:
|
||||
case XivChatType.CrossLinkShell3:
|
||||
case XivChatType.CrossLinkShell4:
|
||||
case XivChatType.CrossLinkShell5:
|
||||
case XivChatType.CrossLinkShell6:
|
||||
case XivChatType.CrossLinkShell7:
|
||||
case XivChatType.CrossLinkShell8:
|
||||
xivChatEntry = new XivChatEntry
|
||||
{
|
||||
Message = text2,
|
||||
Type = configuration.Notifications.ChatType,
|
||||
Name = new SeStringBuilder().AddUiForeground("Questionable", 576).Build()
|
||||
};
|
||||
break;
|
||||
default:
|
||||
xivChatEntry = new XivChatEntry
|
||||
{
|
||||
Message = new SeStringBuilder().AddUiForeground("[Questionable] ", 576).Append(text2).Build(),
|
||||
Type = configuration.Notifications.ChatType
|
||||
};
|
||||
break;
|
||||
}
|
||||
XivChatEntry chat = xivChatEntry;
|
||||
chatGui.Print(chat);
|
||||
}
|
||||
notificationMasterIpc.Notify(text2);
|
||||
return true;
|
||||
}
|
||||
|
||||
public override ETaskResult Update()
|
||||
{
|
||||
return ETaskResult.TaskComplete;
|
||||
}
|
||||
|
||||
public override bool ShouldInterruptOnDamage()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue