← Back to list

snd-wrathcombo-integration
by vaoan
⭐ 0🍴 0📅 Dec 31, 2025
SKILL.md
name: SND WrathCombo Integration description: Use this skill when implementing combat rotation automation in SND macros using the WrathCombo plugin. Covers auto-rotation control, combo state management, job configuration, and IPC leasing system.
WrathCombo Integration for SND
This skill covers integration with the WrathCombo plugin for combat rotation automation in SND macros.
Source: Verified from official repository
- https://github.com/PunishXIV/WrathCombo/blob/main/WrathCombo/Services/IPC/Provider.cs
- https://github.com/PunishXIV/WrathCombo/blob/main/WrathCombo/Services/IPC/Leasing.cs
- https://github.com/PunishXIV/WrathCombo/blob/main/WrathCombo/Services/IPC/Enums.cs
Prerequisites
-- Always check plugin availability first
if not HasPlugin("WrathCombo") then
yield("/echo [Script] WrathCombo plugin not available")
return
end
Important: IPC Leasing System
WrathCombo uses a leasing system for IPC control. You must register for a lease before making any Set calls. This allows users to maintain control and revoke external plugin access.
IPC API Reference
Initialization and Status
-- Check if IPC is ready (caches built, fully initialized)
IPC.WrathCombo.IPCReady() → boolean
-- Test IPC connection
IPC.WrathCombo.Test() → nil -- Logs "IPC connection successful"
Lease Registration
-- Register for control of WrathCombo (required before Set calls)
-- Returns: Guid (lease ID) or nil if registration failed
IPC.WrathCombo.RegisterForLease(
string internalPluginName, -- Your plugin's internal name
string pluginName -- Display name shown to users
) → Guid?
-- Register with callback for lease cancellation
IPC.WrathCombo.RegisterForLeaseWithCallback(
string internalPluginName,
string pluginName,
string? ipcPrefixForCallback -- nil = same as internalPluginName
) → Guid?
-- Release your lease (call when done)
IPC.WrathCombo.ReleaseControl(Guid lease) → nil
Auto-Rotation Control
-- Get current auto-rotation state
IPC.WrathCombo.GetAutoRotationState() → boolean
-- Set auto-rotation state (requires lease)
IPC.WrathCombo.SetAutoRotationState(
Guid lease,
boolean enabled -- default: true
) → SetResult
-- Check if current job is ready for auto-rotation
-- (has Single-Target and Multi-Target combos configured in Auto-Mode)
IPC.WrathCombo.IsCurrentJobAutoRotationReady() → boolean
-- Configure current job for auto-rotation (requires lease)
-- Enables ST/MT combos and Auto-Mode using user's existing settings
IPC.WrathCombo.SetCurrentJobAutoRotationReady(Guid lease) → SetResult
Job State Checks
-- Check if current job has ST/MT combos configured
IPC.WrathCombo.IsCurrentJobConfiguredOn() → Dictionary<ComboTargetTypeKeys, ComboSimplicityLevelKeys?>
-- Check if current job has ST/MT combos in Auto-Mode
IPC.WrathCombo.IsCurrentJobAutoModeOn() → Dictionary<ComboTargetTypeKeys, ComboSimplicityLevelKeys?>
Fine-Grained Combo Control
-- Get all combo names for a job
IPC.WrathCombo.GetComboNamesForJob(number jobID) → List<string>?
-- Get all combo option names for a job
IPC.WrathCombo.GetComboOptionNamesForJob(number jobID) → Dictionary<string, List<string>>?
-- Get combo state (enabled + auto-mode)
IPC.WrathCombo.GetComboState(string comboInternalName) → Dictionary<ComboStateKeys, bool>?
-- Set combo state (requires lease)
IPC.WrathCombo.SetComboState(
Guid lease,
string comboInternalName,
boolean comboState, -- default: true
boolean autoState -- default: true
) → SetResult
-- Get combo option state
IPC.WrathCombo.GetComboOptionState(string optionName) → boolean
-- Set combo option state (requires lease)
IPC.WrathCombo.SetComboOptionState(
Guid lease,
string optionName,
boolean state -- default: true
) → SetResult
Enums
SetResult (Return codes for Set operations)
local SetResult = {
IGNORED = -1, -- Default, shouldn't be seen
Okay = 0, -- Success
OkayWorking = 1, -- Success, working asynchronously
IPCDisabled = 10, -- IPC services disabled
InvalidLease = 11, -- Invalid lease ID
BlacklistedLease = 12, -- Lease is blacklisted
Duplicate = 13, -- Already set to this value
PlayerNotAvailable = 14,-- Player object not available
InvalidConfiguration = 15, -- Config not available
InvalidValue = 16, -- Invalid value provided
}
ComboStateKeys
local ComboStateKeys = {
Enabled = 0, -- Whether combo is enabled
AutoMode = 1, -- Whether combo is in Auto-Mode
}
ComboTargetTypeKeys
local ComboTargetTypeKeys = {
SingleTarget = 0,
MultiTarget = 1,
HealST = 2, -- Healer single-target
HealMT = 3, -- Healer multi-target
Other = 4,
}
ComboSimplicityLevelKeys
local ComboSimplicityLevelKeys = {
Simple = 0,
Advanced = 1,
Other = 2,
}
CancellationReason (Why lease was cancelled)
local CancellationReason = {
WrathUserManuallyCancelled = 0, -- User revoked lease
LeaseePluginDisabled = 1, -- Your plugin was disabled
WrathPluginDisabled = 2, -- Wrath is being disabled
LeaseeReleased = 3, -- You released the lease
AllServicesSuspended = 4, -- IPC disabled remotely
JobChanged = 5, -- Player changed jobs
}
Chat Commands
-- Open WrathCombo window
yield("/wrath")
-- Enable/disable auto-rotation
yield("/wrath auto") -- Toggle
yield("/wrath auto on") -- Enable
yield("/wrath auto off") -- Disable
Usage Patterns
Basic Auto-Rotation Control
function EnableWrathAutoRotation()
if not HasPlugin("WrathCombo") then
yield("/echo [Script] WrathCombo not available")
return false
end
-- Check if ready
if not IPC.WrathCombo.IPCReady() then
yield("/echo [Script] WrathCombo IPC not ready")
return false
end
-- Use chat command for simple toggle (no lease needed)
yield("/wrath auto on")
return true
end
Full IPC Control with Lease
local wrathLease = nil
function RegisterWrathControl()
if not HasPlugin("WrathCombo") then
return false
end
if not IPC.WrathCombo.IPCReady() then
return false
end
-- Register for lease
wrathLease = IPC.WrathCombo.RegisterForLease(
"YourPluginName",
"Your Plugin Display Name"
)
if not wrathLease then
yield("/echo [Script] Failed to get Wrath lease")
return false
end
return true
end
function SetupAutoRotation()
if not wrathLease then
if not RegisterWrathControl() then
return false
end
end
-- Check if job is ready
if not IPC.WrathCombo.IsCurrentJobAutoRotationReady() then
-- Configure job for auto-rotation
local result = IPC.WrathCombo.SetCurrentJobAutoRotationReady(wrathLease)
if result ~= 0 and result ~= 1 then -- Not Okay or OkayWorking
yield("/echo [Script] Failed to setup job: " .. result)
return false
end
end
-- Enable auto-rotation
local result = IPC.WrathCombo.SetAutoRotationState(wrathLease, true)
return result == 0 or result == 1
end
function ReleaseWrathControl()
if wrathLease then
IPC.WrathCombo.ReleaseControl(wrathLease)
wrathLease = nil
end
end
Check Job Readiness
function IsJobReadyForCombat()
if not HasPlugin("WrathCombo") then
return false
end
return IPC.WrathCombo.IsCurrentJobAutoRotationReady()
end
Auto-Rotation Config Options
These options can be configured via IPC (from AutoRotationConfigOption enum):
| Option | Type | Description |
|---|---|---|
| InCombatOnly | bool | Only run in combat |
| DPSRotationMode | enum | DPS rotation behavior |
| HealerRotationMode | enum | Healer rotation behavior |
| FATEPriority | bool | Prioritize FATE targets |
| QuestPriority | bool | Prioritize quest targets |
| SingleTargetHPP | int | Single target HP% threshold |
| AoETargetHPP | int | AoE target HP% threshold |
| SingleTargetRegenHPP | int | Regen HP% threshold |
| ManageKardia | bool | Auto-manage Kardia (SGE) |
| AutoRez | bool | Auto-resurrect |
| AutoRezDPSJobs | bool | Rez as DPS jobs |
| AutoCleanse | bool | Auto-cleanse debuffs |
| IncludeNPCs | bool | Include NPCs in healing |
| OnlyAttackInCombat | bool | Only attack in combat |
| OrbwalkerIntegration | bool | Orbwalker integration |
| AutoRezOutOfParty | bool | Auto-rez out of party members |
| DPSAoETargets | int | AoE target count threshold |
| SingleTargetExcogHPP | int | Excogitation HP% threshold |
| AutoRezDPSJobsHealersOnly | bool | Rez DPS jobs only when healer |
Best Practices
- Always check
IPCReady()before using IPC methods - Register for a lease before making any
Setcalls - Release your lease when done to be a good citizen
- Handle lease cancellation - users can revoke at any time
- Check
IsCurrentJobAutoRotationReady()before expecting auto-rotation to work - Use chat commands for simple on/off toggles without needing a lease
- Don't mix IPC with PvP - IPC doesn't work correctly in PvP
Notes
- IPC uses a leasing system to give users control over external access
- Leases can be revoked by users at any time
- Job changes will cancel leases (reason: JobChanged)
SetCurrentJobAutoRotationReadyworks asynchronously and may take several seconds
Score
Total Score
40/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon