戦闘 API(リテール版 — パッチ 12.0.0)
WoW リテール版の戦闘関連 API の包括的なリファレンスです。重要:12.0.0 では戦闘ログシステムが根本的に変更されました。 COMBAT_LOG_EVENT_UNFILTERED はアドオンから利用できなくなりました。
出典: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API
現行情報: パッチ 12.0.0(ビルド 65655)— 2026 年 1 月 28 日
対象範囲: リテール版のみ。
重要:12.0.0 の戦闘ログ変更
COMBAT_LOG_EVENT_UNFILTERED(CLEU)はアドオンから利用できなくなりました。
CombatLogGetCurrentEventInfo() は、汚染された(アドオンの)コードから利用できません
- 従来の
COMBAT_LOG_EVENT イベントも利用できません
- 戦闘ログのチャットタブのメッセージは、解析できないエスケープシーケンスである KStrings になりました
- ダメージメーターなどのアドオンは、
C_DamageMeter または組み込みシステムを使用する必要があります
- 新しい
COMBAT_LOG_EVENT_INTERNAL_UNFILTERED が存在しますが、Blizzard のコードに制限されています
新しい戦闘ログイベント(アドオン向け)
| イベント | 説明 |
|---|
COMBAT_LOG_MESSAGE | 書式設定済みの戦闘ログメッセージ(表示テキストのみ) |
COMBAT_LOG_ENTRIES_CLEARED | 戦闘ログのエントリが消去された |
COMBAT_LOG_APPLY_FILTER_SETTINGS | フィルター設定が変更された |
COMBAT_LOG_REFILTER_ENTRIES | エントリの再フィルタリングが必要 |
COMBAT_LOG_MESSAGE_LIMIT_CHANGED | メッセージ上限が変更された |
対象範囲
このスキルでは、以下を扱います。
- 戦闘ログ — 新しい 12.0.0 の戦闘ログシステム、COMBAT_LOG_MESSAGE
- C_DamageMeter — 組み込みのダメージ/回復メーターシステム
- 脅威 — UnitThreatSituation、UnitDetailedThreatSituation
- C_LossOfControl — 行動不能状態の追跡
- C_CombatText — フローティング戦闘テキスト
- C_CombatAudioAlert — 戦闘音声アラートシステム(アクセシビリティ)
- C_Secrets / C_CurveUtil / C_DurationUtil — 戦闘データのシークレット値処理
- エンカウンターイベント — ENCOUNTER_STATE_CHANGED、ENCOUNTER_WARNING、タイムラインイベント
- 観戦/実況 — 観戦モード用の C_Commentator
C_DamageMeter — 組み込みダメージメーター
12.0.0 で新たに追加されました。戦闘ログの解析なしで、公式のダメージ/回復メーターデータを利用できます。
関数
| 関数 | 戻り値 | 説明 |
|---|
C_DamageMeter.GetCurrentSessionID() | sessionID | 現在の戦闘セッション |
C_DamageMeter.GetSessions() | sessions | 利用可能なすべてのセッション |
C_DamageMeter.GetSessionInfo(sessionID) | sessionInfo | セッションの詳細 |
C_DamageMeter.GetPlayerData(sessionID, unitGUID) | playerData | プレイヤーのダメージ/回復 |
C_DamageMeter.GetPartyData(sessionID) | partyData | パーティー/レイド全体のデータ |
C_DamageMeter.ResetSessions() | — | すべてのセッションを消去 |
イベント
| イベント | 説明 |
|---|
DAMAGE_METER_COMBAT_SESSION_UPDATED | セッションデータが更新された |
DAMAGE_METER_CURRENT_SESSION_UPDATED | 現在のセッションが変更された |
DAMAGE_METER_RESET | セッションが消去された |
パターン:ダメージメーターデータの読み取り
local frame = CreateFrame("Frame")
frame:RegisterEvent("DAMAGE_METER_COMBAT_SESSION_UPDATED")
frame:SetScript("OnEvent", function(self, event)
local sessionID = C_DamageMeter.GetCurrentSessionID()
if sessionID then
local partyData = C_DamageMeter.GetPartyData(sessionID)
-- partyData contains per-player damage/healing totals
end
end)
脅威 API
脅威関数
| 関数 | 戻り値 | 説明 |
|---|
UnitThreatSituation(unit [, target]) | status | 脅威状態(0~3) |
UnitDetailedThreatSituation(unit, target) | isTanking, status, scaledPercent, rawPercent, threatValue | 脅威の詳細情報 |
UnitThreatPercentageOfLead(unit, target) | percent | 脅威のリード率 |
脅威状態の値
| 値 | 意味 |
|---|
| 0 | 脅威テーブルに登録されていない |
| 1 | 脅威テーブルに登録されているが、タンク役ではなく、脅威が最大でもない |
| 2 | 脅威テーブルに登録されているが、タンク役ではなく、脅威が最大 |
| 3 | タンク役(敵視を得ており、脅威が最大) |
| nil | ユニットが存在しない、または脅威テーブルがない |
注: 12.0.0 のインスタンスでは、プレイヤー以外のユニットの脅威値がシークレット値である場合があります。UI ウィジェットに直接渡してください。
C_LossOfControl
プレイヤーに適用されたクラウドコントロール効果を追跡します。
| 関数 | 戻り値 | 説明 |
|---|
C_LossOfControl.GetActiveLossOfControlData(index) | data | 有効なCC効果のデータ |
C_LossOfControl.GetActiveLossOfControlDataByUnit(unit, index) | data | ユニットのCCデータ |
C_LossOfControl.GetActiveLossOfControlDataCount() | count | 有効なCC効果の数 |
C_LossOfControl.GetActiveLossOfControlDataCountByUnit(unit) | count | ユニットのCC効果数 |
行動阻害データのフィールド
locType — CCの種類(STUN、FEAR、SILENCEなど)
spellID — CCを引き起こした呪文
displayText — ローカライズされた表示テキスト
iconTexture — 呪文アイコン
startTime — CCの開始時刻
timeRemaining — 残り時間(12.0.0ではDurationObjectの場合があります)
duration — 合計時間
lockoutSchool — ロックアウト対象の系統(SCHOOL_INTERRUPTタイプの場合)
priority — 表示優先度
イベント
| イベント | 説明 |
|---|
LOSS_OF_CONTROL_ADDED | 新しいCC効果が適用された |
LOSS_OF_CONTROL_UPDATE | CC効果が更新された |
C_CombatText — フローティング戦闘テキスト
| 関数 | 戻り値 | 説明 |
|---|
C_CombatText.IsCombatTextEnabled() | enabled | FCTは有効ですか? |
戦闘テキストのCVar
| CVar | 説明 |
|---|
enableFloatingCombatText | FCTの有効化/無効化 |
floatingCombatTextCombatDamage | ダメージを表示 |
floatingCombatTextCombatHealing | 回復を表示 |
floatingCombatTextCombatDamageStyle | ダメージの表示スタイル |
C_CombatAudioAlert — 戦闘音声アラート
戦闘イベントの音声キューを提供する、新しいアクセシビリティシステムです。以前は戦闘ログの解析が必要だった機能の一部を置き換えます。
| 関数 | 戻り値 | 説明 |
|---|
C_CombatAudioAlert.IsEnabled() | enabled | 音声アラートは有効ですか? |
C_CombatAudioAlert.SetEnabled(enabled) | — | 有効化/無効化 |
戦闘データのシークレット値の処理
C_Secrets — シークレット値の判定関数
| 関数 | 戻り値 | 説明 |
|---|
C_Secrets.ShouldUnitHealthBeSecret(unit) | isSecret | このユニットの体力はシークレット値ですか? |
C_Secrets.ShouldUnitPowerBeSecret(unit [, powerType]) | isSecret | パワーはシークレット値ですか? |
C_Secrets.ShouldUnitPowerMaxBeSecret(unit [, powerType]) | isSecret | 最大パワーはシークレット値ですか? |
C_Secrets.ShouldUnitSpellCastBeSecret(unit, spellIdentifier) | isSpellCastSecret | 呪文の詠唱はシークレット値ですか? |
C_Secrets.ShouldUnitSpellCastingBeSecret(unit) | isSpellCastingSecret | すべての詠唱がシークレット値ですか? |
C_CurveUtil — シークレット値用のカーブ
アドオンではシークレット値を計算に使用できないため、カーブを使ってシークレット値の数値を視覚的な出力にマッピングします。
| 関数 | 戻り値 | 説明 |
|---|
C_CurveUtil.CreateCurve() | curveObject | 数値カーブを作成 |
C_CurveUtil.CreateColorCurve() | colorCurveObject | カラーカーブを作成 |
パターン:値を調べずに体力を色に変換
-- Create a color curve: green at 100% → red at 0%
local colorCurve = C_CurveUtil.CreateColorCurve()
-- Configure curve points (green → yellow → red)
local healthBar = CreateFrame("StatusBar", nil, parent)
local hp = UnitHealth(unit) -- SECRET in instances
local maxHp = UnitHealthMax(unit) -- SECRET in instances
healthBar:SetMinMaxValues(0, maxHp) -- widgets accept secrets
healthBar:SetValue(hp) -- widgets accept secrets
-- Color is set by curve without addon seeing the actual number
C_DurationUtil — 時間オブジェクト
| 関数 | 戻り値 | 説明 |
|---|
C_DurationUtil.CreateDuration() | durationObject | 時間オブジェクトを作成 |
-- Use DurationObject for cooldown display
local cooldown = CreateFrame("Cooldown", nil, parent, "CooldownFrameTemplate")
local duration = C_DurationUtil.CreateDuration()
cooldown:SetCooldownFromDurationObject(duration)
エンカウンターイベント
12.0.0で追加されたこれらのイベントは、エンカウンターの状態追跡において、アドオンによる戦闘ログ解析に代わるものです。
| イベント | 説明 |
|---|
ENCOUNTER_STATE_CHANGED | エンカウンターの状態が変化した(開始、全滅、撃破) |
ENCOUNTER_WARNING | 組み込みのエンカウンター警告システム |
ENCOUNTER_TIMELINE_EVENT_START | タイムラインイベントが開始された |
ENCOUNTER_TIMELINE_EVENT_UPDATE | タイムラインイベントが更新された |
ENCOUNTER_TIMELINE_EVENT_END | タイムラインイベントが終了した |
その他の戦闘イベント
| イベント | 説明 |
|---|
PLAYER_REGEN_DISABLED | 戦闘開始 |
PLAYER_REGEN_ENABLED | 戦闘終了 |
PLAYER_ENTER_COMBAT | プレイヤーが自動攻撃を開始 |
PLAYER_LEAVE_COMBAT | プレイヤーが自動攻撃を停止 |
UNIT_COMBAT | ユニットがダメージまたは回復を受けた/与えた |
UNIT_THREAT_SITUATION_UPDATE | 脅威状況が変化 |
UNIT_THREAT_LIST_UPDATE | 脅威テーブルが更新 |
PLAYER_DEAD | プレイヤーが死亡 |
PLAYER_ALIVE | プレイヤーが魂を解放 |
PLAYER_UNGHOST | プレイヤーが蘇生 |
コメンテーター/観戦 API
C_Commentator は、eスポーツ観戦用の観戦モード機能を提供します。
主な関数
| 関数 | 戻り値 | 説明 |
|---|
C_Commentator.IsSpectating() | isSpectating | 観戦モード中かどうか |
C_Commentator.GetAllPlayerData(teamIndex) | playerData | チームの全プレイヤーデータ |
C_Commentator.GetPlayerData(teamIndex, playerIndex) | data | 指定したプレイヤーのデータ |
C_Commentator.GetTeamColorAndName(teamIndex) | color, name | チーム情報 |
C_Commentator.GetMatchDuration() | duration | 試合の経過時間 |
C_Commentator.StartWargame(...) | — | ウォーゲームを開始 |
C_Commentator.UpdatePlayerInfo() | — | プレイヤーデータを更新 |
一般的なパターン
戦闘状態の確認
local function IsInCombat()
return UnitAffectingCombat("player")
end
-- Or use the lockdown check for secure frame operations
if InCombatLockdown() then
print("In combat lockdown — restricted operations blocked")
end
脅威に基づくネームプレートの色分け
-- Note: In 12.0.0 instances, threat values may be secret
local status = UnitThreatSituation("player", "target")
if not issecretvalue(status) then
if status == 3 then
-- Tanking — show red
elseif status == 2 then
-- Pulling aggro — show orange
else
-- Safe — show green
end
end
操作不能状態の表示
local frame = CreateFrame("Frame")
frame:RegisterEvent("LOSS_OF_CONTROL_ADDED")
frame:RegisterEvent("LOSS_OF_CONTROL_UPDATE")
frame:SetScript("OnEvent", function()
local count = C_LossOfControl.GetActiveLossOfControlDataCount()
for i = 1, count do
local data = C_LossOfControl.GetActiveLossOfControlData(i)
if data then
print(data.displayText, data.timeRemaining)
end
end
end)
注意点と制限事項
- CLEU は廃止されています —
COMBAT_LOG_EVENT_UNFILTERED を登録しないでください。12.0.0 ではアドオンのコードに対して発生しません。
- 戦闘ログの解析不可 —
CombatLogGetCurrentEventInfo() は汚染されたコードから利用できません。
- KString のチャットメッセージ — 戦闘ログのチャットタブ出力は解析できない KString になりました。
- ヘルスは秘匿情報です — インスタンス内では
UnitHealth() が秘匿値を返します。そのまま StatusBar:SetValue() に渡してください。
- DurationObjects を使用する — クールダウンを手動で計算しないでください。
C_DurationUtil.CreateDuration() と Cooldown:SetCooldownFromDurationObject() を使用してください。
- 組み込みのダメージメーター — 戦闘イベントを解析する代わりに、ダメージ/回復データには
C_DamageMeter を使用してください。
- SendAddonMessage はブロックされています — インスタンス内ではアドオンメッセージを送信できません。ボス攻略アドオンは新しいエンカウンターイベントのパターンを使用する必要があります。
- ユニット識別情報には制限があります — 戦闘中のインスタンス内では、敵ユニットに対する
UnitName() や UnitClass() が秘匿値を返す場合があります。
- インスタンス内の脅威情報 — 脅威値は秘匿値の場合があります。ウィジェットに直接渡し、条件分岐には使用しないでください。
- 設計方針 — アドオンは戦闘で競争上の優位性を提供してはなりません。Blizzard は、制限された機能の大半を置き換える組み込み機能を提供しています。