Add files via upload

Updated totemdata.lua to ignore spellname "Totemic Recall" when building the totems.
This commit is contained in:
MDGitHubRepo
2024-11-29 13:25:01 -05:00
committed by GitHub
parent bc470b135c
commit 233acdbaaa
21 changed files with 9486 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
<!--
CALL OF ELEMENTS
The All-In-One Shaman Addon
by Wyverex (2006)
Key Bindings
-->
<Bindings>
<!-- Configuration dialog -->
<Binding name="COESHOWCONFIG" header="CALLOFELEMENTS">
if( COE.Initialized ) then
COE:ToggleConfigFrame();
end
</Binding>
<!-- Healing functions -->
<Binding name="COEBESTHEAL">
if( COE.Initialized ) then
COE_Heal:BestHeal();
end
</Binding>
<Binding name="COEBATTLEHEAL">
if( COE.Initialized ) then
COE_Heal:BattleHeal();
end
</Binding>
<!-- Throw suggested totem -->
<Binding name="COETHROWADVISED">
if( COE.Initialized ) then
COE_Totem:ThrowAdvisedTotem();
end
</Binding>
<!-- Throw suggested totem -->
<Binding name="COETHROWADVISED">
if( COE.Initialized ) then
COE_Totem:ThrowAdvisedTotem();
end
</Binding>
<!-- Totem sets -->
<Binding name="COENEXTSET">
if( COE.Initialized ) then
COE_Totem:SwitchToNextSet();
end
</Binding>
<Binding name="COETHROWSET">
if( COE.Initialized ) then
COE_Totem:ThrowSet();
end
</Binding>
<Binding name="COERESTARTSET">
if( COE.Initialized ) then
COE_Totem:ResetSetCycle();
end
</Binding>
<!-- Earth totems -->
<Binding name="TOTEMEARTH1" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Earth", 1 );
</Binding>
<Binding name="TOTEMEARTH2" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Earth", 2 );
</Binding>
<Binding name="TOTEMEARTH3" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Earth", 3 );
</Binding>
<Binding name="TOTEMEARTH4" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Earth", 4 );
</Binding>
<Binding name="TOTEMEARTH5" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Earth", 5 );
</Binding>
<!-- Fire totems -->
<Binding name="TOTEMFIRE1" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Fire", 1 );
</Binding>
<Binding name="TOTEMFIRE2" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Fire", 2 );
</Binding>
<Binding name="TOTEMFIRE3" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Fire", 3 );
</Binding>
<Binding name="TOTEMFIRE4" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Fire", 4 );
</Binding>
<Binding name="TOTEMFIRE5" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Fire", 5 );
</Binding>
<!-- Water totems -->
<Binding name="TOTEMWATER1" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 1 );
</Binding>
<Binding name="TOTEMWATER2" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 2 );
</Binding>
<Binding name="TOTEMWATER3" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 3 );
</Binding>
<Binding name="TOTEMWATER4" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 4 );
</Binding>
<Binding name="TOTEMWATER5" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 5 );
</Binding>
<Binding name="TOTEMWATER6" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Water", 6 );
</Binding>
<!-- Air totems -->
<Binding name="TOTEMAIR1" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 1 );
</Binding>
<Binding name="TOTEMAIR2" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 2 );
</Binding>
<Binding name="TOTEMAIR3" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 3 );
</Binding>
<Binding name="TOTEMAIR4" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 4 );
</Binding>
<Binding name="TOTEMAIR5" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 5 );
</Binding>
<Binding name="TOTEMAIR6" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 6 );
</Binding>
<Binding name="TOTEMAIR7" header="CALLOFELEMENTS">
COE_Totem:ThrowTotem( "Air", 7 );
</Binding>
</Bindings>
+1412
View File
File diff suppressed because it is too large Load Diff
+565
View File
@@ -0,0 +1,565 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<Script file="COE_Config.lua"/>
<Include file="COE_ConfigTemplates.xml"/>
<Frame name="COE_ConfigFrame" frameStrata="MEDIUM" parent="UIParent" hidden="true" movable="true" enableMouse="true">
<Size>
<AbsDimension x="416" y="480" />
</Size>
<Anchors>
<Anchor point="CENTER" />
</Anchors>
<Scripts>
<OnLoad>
COE_Config:OnFrameLoad();
</OnLoad>
<OnDragStart>
this:StartMoving();
</OnDragStart>
<OnDragStop>
this:StopMovingOrSizing();
</OnDragStop>
</Scripts>
<Backdrop name="COE_ConfigFrameBackdrop" bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<Layers>
<Layer level="ARTWORK">
<Texture name="COE_ConfigFrameHeader" file="Interface\ChatFrame\ChatFrameTab">
<Size>
<AbsDimension x="130" y="30" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="28" />
</Offset>
</Anchor>
</Anchors>
</Texture>
<FontString name="COE_ConfigFrameHeaderText" inherits="GameFontNormal" text="Call Of Elements">
<Anchors>
<Anchor point="CENTER" relativeTo="COE_ConfigFrameHeader" relativePoint="CENTER">
<Offset>
<AbsDimension x="0" y="-5" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<!-- Totem tab -->
<CheckButton name="COE_ConfigTotemTab" inherits="COE_ConfigPanelButtonTemplate" checked="true">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="COE_ConfigFrame" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-8" y="-10"/>
</Offset>
</Anchor>
</Anchors>
<NormalTexture file="Interface\Icons\INV_Misc_Idol_03.blp"/>
<PushedTexture file="Interface\Icons\INV_Misc_Idol_03.blp"/>
</CheckButton>
<Frame name="COE_ConfigTotemTabPanel" inherits="COE_ConfigPanelTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="COE_ConfigTotemTab" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-2" y="3"/>
</Offset>
</Anchor>
</Anchors>
<Frames>
<!-- master switch for the totem bar -->
<CheckButton name="COE_OptionEnableTotemBar" inherits="COE_ConfigCheckButtonTemplate" id="1">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentTitleBox" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="8" y="-3"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<!-- sub panel buttons -->
<CheckButton name="COE_ConfigTotemTotemOptions" inherits="COE_ConfigSubPanelButtonTemplate">
<Anchors>
<Anchor point="CENTER" relativeTo="$parentTitleBox" relativePoint="CENTER">
<Offset>
<AbsDimension x="0" y="-70"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_ConfigTotemTotemBar" inherits="COE_ConfigSubPanelButtonTemplate" checked="true">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="COE_ConfigTotemTotemOptions" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-5" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_ConfigTotemTotemSets" inherits="COE_ConfigSubPanelButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_ConfigTotemTotemOptions" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="5" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<!-- sub panels -->
<Frame name="COE_ConfigTotemTotemBarPanel" inherits="COE_ConfigSubPanelTemplate">
<Frames>
<CheckButton name="COE_OptionFixBar" inherits="COE_ConfigCheckButtonTemplate" id="12">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="8" y="-8"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_OptionGroupBars" inherits="COE_ConfigCheckButtonTemplate" id="22">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionFixBar" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Button name="COE_OptionTTAlignment" inherits="COE_ConfigComboBoxTemplate" id="5">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionGroupBars" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionDisplayMode" inherits="COE_ConfigComboBoxTemplate" id="6">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionTTAlignment" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-15"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionConfigureBar" inherits="COE_ConfigSetButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionDisplayMode" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="8" y="-20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:ConfigureBar();
</OnClick>
</Scripts>
</Button>
<Button name="COE_OptionConfigureOrder" inherits="COE_ConfigSetButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionConfigureBar" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:ConfigureOrder();
</OnClick>
</Scripts>
</Button>
<Button name="COE_OptionCurrentFrame" inherits="COE_ConfigComboBoxTemplate" id="15">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionConfigureBar" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-8" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionDirection" inherits="COE_ConfigComboBoxTemplate" id="16">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionCurrentFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionFrameMode" inherits="COE_ConfigComboBoxTemplate" id="17">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionDirection" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Slider name="COE_OptionFlexCount" inherits="COE_ConfigSliderTemplate" id="18">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionFrameMode" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="12" y="-20"/>
</Offset>
</Anchor>
</Anchors>
</Slider>
</Frames>
</Frame>
<Frame name="COE_ConfigTotemTotemOptionsPanel" inherits="COE_ConfigSubPanelTemplate" hidden="true">
<Frames>
<CheckButton name="COE_OptionEnableTimers" inherits="COE_ConfigCheckButtonTemplate" id="3">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="8" y="-8"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_OptionEnableTimerNotifications" inherits="COE_ConfigCheckButtonTemplate" id="4">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionEnableTimers" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_OptionEnableTimerFrame" inherits="COE_ConfigCheckButtonTemplate" id="20">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionEnableTimerNotifications" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Button name="COE_OptionDisplayAlignment" inherits="COE_ConfigComboBoxTemplate" id="7">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionEnableTimerFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<CheckButton name="COE_OptionFrameTimersOnly" inherits="COE_ConfigCheckButtonTemplate" id="23">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionDisplayAlignment" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-8"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_OptionAdvisor" inherits="COE_ConfigCheckButtonTemplate" id="8">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionFrameTimersOnly" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-15"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Button name="COE_OptionOverrideRank" inherits="COE_ConfigComboBoxTemplate" id="21">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionAdvisor" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionScanTotems" inherits="COE_ConfigSetButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionOverrideRank" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="8" y="-30"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Totem:Rescan();
COE:Message( COESTR_TOTEMSRELOADED );
</OnClick>
</Scripts>
</Button>
<Slider name="COE_OptionScaling" inherits="COE_ConfigSliderTemplate" id="19">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionScanTotems" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnUpdate>
if( this.tooltipShown ) then
local value = math.floor( COE_Config:GetSaved( COEOPT_SCALING ) * 100 ) / 100;
GameTooltip:SetText( value );
end
</OnUpdate>
<OnEnter>
GameTooltip:SetOwner( this, "TOPRIGHT" );
local value = math.floor( COE_Config:GetSaved( COEOPT_SCALING ) * 100 ) / 100;
GameTooltip:SetText( value );
this.tooltipShown = true;
</OnEnter>
<OnLeave>
GameTooltip:Hide();
this.tooltipShown = false;
</OnLeave>
</Scripts>
</Slider>
</Frames>
</Frame>
<Frame name="COE_ConfigTotemTotemSetsPanel" inherits="COE_ConfigSubPanelTemplate" hidden="true">
<Frames>
<CheckButton name="COE_OptionEnableSets" inherits="COE_ConfigCheckButtonTemplate" id="9">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="8" y="-8"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<CheckButton name="COE_OptionEnableAutoSwitch" inherits="COE_ConfigCheckButtonTemplate" id="11">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionEnableSets" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</CheckButton>
<Button name="COE_OptionActiveSet" inherits="COE_ConfigComboBoxTemplate" id="10">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionEnableAutoSwitch" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionConfigureSet" inherits="COE_ConfigSetButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionActiveSet" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:ConfigureSet();
</OnClick>
</Scripts>
</Button>
<Button name="COE_OptionDeleteSet" inherits="COE_ConfigSetButtonTemplate">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionConfigureSet" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:DeleteTotemSet();
</OnClick>
</Scripts>
</Button>
<Button name="COE_OptionNewSet" inherits="COE_ConfigSetButtonTemplate" disabled="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionConfigureSet" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:NewTotemSet();
</OnClick>
</Scripts>
</Button>
<EditBox name="COE_OptionSetName" inherits="COE_ConfigEditTemplate" letters="20">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionNewSet" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="20" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnTextChanged>
COE_Config:NewSetTextChanged();
</OnTextChanged>
</Scripts>
</EditBox>
<Button name="COE_OptionCastOrder1" inherits="COE_ConfigOrderTemplate" id="1">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionNewSet" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="60" y="-10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionCastOrder2" inherits="COE_ConfigOrderTemplate" id="2">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionCastOrder1" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionCastOrder3" inherits="COE_ConfigOrderTemplate" id="3">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionCastOrder2" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="COE_OptionCastOrder4" inherits="COE_ConfigOrderTemplate" id="4">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionCastOrder3" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Frame name="COE_OptionCastOrderString">
<Size>
<AbsDimension x="100" y="16"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_OptionCastOrder2" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="15" y="-13"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontNormal"/>
</Layer>
</Layers>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( getglobal( this:GetName() .. "Text" ) );
</OnLoad>
</Scripts>
</Frame>
</Frames>
</Frame>
</Frames>
</Frame>
<!-- Healing tab -->
<CheckButton name="COE_ConfigHealingTab" inherits="COE_ConfigPanelButtonTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_ConfigTotemTab" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<NormalTexture file="Interface\Icons\Spell_Nature_HealingWaveGreater.blp"/>
<PushedTexture file="Interface\Icons\Spell_Nature_HealingWaveGreater.blp"/>
</CheckButton>
<Frame name="COE_ConfigHealingTabPanel" hidden="true" inherits="COE_ConfigPanelTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="COE_ConfigTotemTab" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-2" y="3"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<!-- Debuff tab -->
<CheckButton name="COE_ConfigDebuffTab" inherits="COE_ConfigPanelButtonTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="COE_ConfigHealingTab" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<NormalTexture file="Interface\Icons\Spell_Nature_NullifyPoison.blp"/>
<PushedTexture file="Interface\Icons\Spell_Nature_NullifyPoison.blp"/>
</CheckButton>
<Frame name="COE_ConfigDebuffTabPanel" hidden="true" inherits="COE_ConfigPanelTemplate">
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="COE_ConfigTotemTab" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-2" y="3"/>
</Offset>
</Anchor>
</Anchors>
</Frame>
<!-- close button -->
<Button name="COE_ConfigClose" inherits="GameMenuButtonTemplate" text="Close">
<Anchors>
<Anchor point="CENTER" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetText( COEUI_STRINGS[this:GetName()] );
</OnLoad>
<OnClick>
COE_Config:CloseDialog();
PlaySound( "igMainMenuOption" );
</OnClick>
</Scripts>
</Button>
</Frames>
</Frame>
</Ui>
+340
View File
@@ -0,0 +1,340 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<Script file="COE_Config.lua"/>
<!-- config panel template -->
<Frame name="COE_ConfigPanelTemplate" virtual="true">
<Size>
<AbsDimension x="360" y="440"/>
</Size>
<Backdrop name="$parentBackdrop" bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="16"/>
</EdgeSize>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="5" right="5" top="5" bottom="5"/>
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>
this:SetBackdropBorderColor( 1, 1, 1 );
this:SetBackdropColor( 0.1, 0.1, 0.1 );
COE_Config:OnConfigElementLoad( getglobal( this:GetName().."TitleBoxText" ) );
</OnLoad>
</Scripts>
<Frames>
<Frame name="$parentTitleBox" inherits="OptionFrameBoxTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="5" y="-5"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT" relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-5" y="-45"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontNormalLarge" text="Blah">
<Anchors>
<Anchor point="TOP" relativeTo="$parentTitleBox" relativePoint="TOP">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
<Anchor point="BOTTOM" relativeTo="$parentTitleBox" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
</Frames>
</Frame>
<!-- config sub panel template -->
<Frame name="COE_ConfigSubPanelTemplate" inherits="OptionFrameBoxTemplate" virtual="true">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="5" y="-115"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-5" y="5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetBackdropBorderColor( 0.5, 0.5, 0.5 );
this:SetBackdropColor( 0.1, 0.1, 0.1 );
</OnLoad>
</Scripts>
</Frame>
<!-- config tab button -->
<CheckButton name="COE_ConfigPanelButtonTemplate" inherits="ActionButtonTemplate" virtual="true">
<Size>
<AbsDimension x="40" y="40"/>
</Size>
<Scripts>
<OnClick>
COE_Config:OnTabButtonClick();
</OnClick>
<OnEnter>
COE_Config:OnConfigElementEnter();
</OnEnter>
<OnLeave>
COE_Config:OnConfigElementLeave();
</OnLeave>
</Scripts>
</CheckButton>
<!-- config sub tab button -->
<CheckButton name="COE_ConfigSubPanelButtonTemplate" inherits="GameMenuButtonTemplate" virtual="true">
<Size>
<AbsDimension x="100" y="30"/>
</Size>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( this );
</OnLoad>
<OnClick>
COE_Config:OnSubTabButtonClick( this );
</OnClick>
<OnEnter>
COE_Config:OnConfigElementEnter();
</OnEnter>
<OnLeave>
COE_Config:OnConfigElementLeave();
</OnLeave>
</Scripts>
</CheckButton>
<!-- check button template -->
<CheckButton name="COE_ConfigCheckButtonTemplate" virtual="true">
<Size>
<AbsDimension x="32" y="32"/>
</Size>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( getglobal( this:GetName() .. "Text" ) );
</OnLoad>
<OnShow>
COE_Config:OnCheckBoxShow();
</OnShow>
<OnClick>
COE_Config:OnCheckBoxClick();
</OnClick>
<OnEnter>
COE_Config:OnConfigElementEnter();
</OnEnter>
<OnLeave>
COE_Config:OnConfigElementLeave();
</OnLeave>
</Scripts>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontNormalSmall" text="">
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
<CheckedTexture file="Interface\Buttons\UI-CheckBox-Check"/>
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
</CheckButton>
<Frame name="COE_ConfigComboBoxTemplate" virtual="true">
<Size>
<AbsDimension x="180" y="20"/>
</Size>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( getglobal( this:GetName() .. "LeftText" ) );
</OnLoad>
</Scripts>
<Frames>
<Button name="$parentCB" inherits="UIDropDownMenuTemplate">
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="-8" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:SetID( this:GetParent():GetID() );
</OnLoad>
<OnShow>
COE_Config:OnComboBoxShow();
</OnShow>
<OnEnter>
COE_Config:OnConfigElementEnter();
</OnEnter>
<OnLeave>
COE_Config:OnConfigElementLeave();
</OnLeave>
</Scripts>
</Button>
<Frame name="$parentLeft">
<Size>
<AbsDimension x="50" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentCB" relativePoint="RIGHT">
<Offset>
<AbsDimension x="120" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parentText" inherits="GameFontNormal" text="">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
</Frames>
</Frame>
<!-- totem set config button -->
<CheckButton name="COE_ConfigSetButtonTemplate" inherits="GameMenuButtonTemplate" virtual="true">
<Size>
<AbsDimension x="150" y="30"/>
</Size>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( this );
</OnLoad>
</Scripts>
</CheckButton>
<!-- totem set edit box -->
<EditBox name="COE_ConfigEditTemplate" historyLines="0" multiline="false" autoFocus="false" numeric="false" virtual="true">
<Size>
<AbsDimension x="124" y="32"/>
</Size>
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\ChatFrame\UI-ChatInputBorder-Left">
<Size>
<AbsDimension x="70" y="32"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="-8" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
<Texture file="Interface\ChatFrame\UI-ChatInputBorder-Right">
<Size>
<AbsDimension x="70" y="32"/>
</Size>
<Anchors>
<Anchor point="RIGHT">
<Offset>
<AbsDimension x="8" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
<FontString inherits="ChatFontNormal"/>
</EditBox>
<!-- cast order template -->
<Button name="COE_ConfigOrderTemplate" virtual="true">
<Size>
<AbsDimension x="120" y="25"/>
</Size>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" justifyH="LEFT" inherits="ChatFontNormal">
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="10" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="$parentMoveDown" inherits="UIPanelScrollDownButtonTemplate" hidden="false">
<Anchors>
<Anchor point="RIGHT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:DoCastOrder( false );
</OnClick>
</Scripts>
</Button>
<Button name="$parentMoveUp" inherits="UIPanelScrollUpButtonTemplate" hidden="false">
<Anchors>
<Anchor point="RIGHT" relativeTo="$parentMoveDown" relativePoint="LEFT">
<Offset>
<AbsDimension x="-2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
COE_Config:DoCastOrder( true );
</OnClick>
</Scripts>
</Button>
</Frames>
</Button>
<!-- cast order template -->
<Slider name="COE_ConfigSliderTemplate" inherits="OptionsSliderTemplate" virtual="true">
<Size>
<AbsDimension x="130" y="15"/>
</Size>
<Scripts>
<OnLoad>
COE_Config:OnConfigElementLoad( getglobal( this:GetName() .. "Text" ) );
</OnLoad>
<OnShow>
COE_Config:OnSliderShow();
</OnShow>
<OnValueChanged>
COE_Config:OnSliderChange();
</OnValueChanged>
</Scripts>
</Slider>
</Ui>
+356
View File
@@ -0,0 +1,356 @@
--[[
CALL OF ELEMENTS
The All-In-One Shaman Addon
by Wyverex (2006)
Healing Module
]]
if( not COE_Heal ) then
COE_Heal = {};
end
--[[ ----------------------------------------------------------------
COE_Heal.Thresholds stores different healing thresholds
HealingNeeded - A target is only healed if it has less than
this health ratio
OverrideTarget - If a friendly target is active and a heal is
attempted, this target is only healed if no party/raid
member is below this health ration threshold
-------------------------------------------------------------------]]
COE_Heal["Thresholds"] = { HealingNeeded = 0.85, OverrideTarget = 0.5 };
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:Init
PURPOSE: Registers events
-------------------------------------------------------------------]]
function COE_Heal:Init()
-- addon loaded?
-- --------------
if( not COE.Initialized ) then
return;
end
this:RegisterEvent( "PLAYER_ENTERING_WORLD" );
end
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:OnEvent
PURPOSE: Handles In-Game events
-------------------------------------------------------------------]]
function COE_Heal:OnEvent( event )
if( event == "PLAYER_ENTERING_WORLD" ) then
-- load healing spells
-- --------------------
COE:ScanHealingSpells();
end
end
--[[ =============================================================================================
P U B L I C H E A L I N G F U N C T I O N S
================================================================================================]]
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:BestHeal
PURPOSE: Determines the party/raid member with the lowest
health ratio and attempts to heal him with the best
possible heal spell but still tries to be as mana
efficient as possible
-------------------------------------------------------------------]]
function COE_Heal:BestHeal()
COE_Heal:Heal( "best" );
end
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:BattleHeal
PURPOSE: Determines the party/raid member with the lowest
health ratio and attempts to heal him with the heal spell
that has the shortest possible cast time but still heals
him a good amount.
If Nature's Swiftness is active, it uses BestHeal instead
-------------------------------------------------------------------]]
function COE_Heal:BattleHeal()
COE_Heal:Heal( "battle" );
end
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:Heal
PURPOSE: Performs the healing logic
-------------------------------------------------------------------]]
function COE_Heal:Heal( type )
-- first determine the target to be healed
-- ----------------------------------------
local target = COE_Heal:DetermineHealTarget();
if( target.ratio > COE_Heal.Thresholds.HealingNeeded ) then
-- no healing needed
-- -------------------
COE:Message( COESTR_NOHEALING );
return;
end
COE:DebugMessage( "Attempting to heal " .. target.target .. " with health ratio: " .. target.ratio ..
" (missing: " .. target.max - target.current .. ")" );
-- then determine the right spell and rank to use
-- -----------------------------------------------
local id, spell, rank;
if( type == "best" ) then
id, spell, rank = COE_Heal:DetermineBestSpell( COE.HealData.Sorted, target.max - target.current );
else
id, spell, rank = COE_Heal:DetermineBattleSpell( target.max - target.current );
end
if( not id ) then
return;
end
COE:DebugMessage( "Using " .. spell .. " (Rank " .. rank .. ")" );
-- is the spell usable?
-- ---------------------
local start, duration = GetSpellCooldown( id, BOOKTYPE_SPELL );
if( start > 0 or duration > 0 ) then
COE:Message( spell .. COESTR_HEALCOOLDOWN );
return;
end
-- is the target in range?
-- ------------------------
-- cast spell
-- -----------
COE:Message( string.format( COESTR_HEALING, UnitName( target.target ), spell, rank ) );
CastSpell( id, BOOKTYPE_SPELL );
SpellTargetUnit( target.target );
end
--[[ =============================================================================================
H E A L I N G L O G I C
================================================================================================]]
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:DetermineHealTarget
PURPOSE: Determines the party/raid member with
the lowest health ratio which can also be the player himself
If a friendly non-party/non-raid target is active,
it will return this target instead, if no party/raid
member falls below the OverrideTarget threshold
-------------------------------------------------------------------]]
function COE_Heal:DetermineHealTarget()
local toBeHealed = { target = nil, ratio = 1.0, current = 0, max = 0 };
-- first check the player
-- -----------------------
local curHealth = UnitHealth( "player" );
local maxHealth = UnitHealthMax( "player" )
local curRatio = curHealth / maxHealth;
toBeHealed.target = "player";
toBeHealed.ratio = curRatio;
toBeHealed.current = curHealth;
toBeHealed.max = maxHealth;
-- then check the party
-- ---------------------
local i;
for i = 1, GetNumPartyMembers() do
curHealth = UnitHealth( "party" .. i );
maxHealth = UnitHealthMax( "party" .. i )
curRatio = curHealth / maxHealth;
if( curRatio < toBeHealed.ratio and curHealth ~= 0 ) then
toBeHealed.target = "party" .. i;
toBeHealed.ratio = curRatio;
toBeHealed.current = curHealth;
toBeHealed.max = maxHealth;
end
end
-- finally check the raid
-- -----------------------
for i = 1, GetNumRaidMembers() do
curHealth = UnitHealth( "raid" .. i );
maxHealth = UnitHealthMax( "raid" .. i )
curRatio = curHealth / maxHealth;
if( curRatio < toBeHealed.ratio and curHealth ~= 0 ) then
toBeHealed.target = "raid" .. i;
toBeHealed.ratio = curRatio;
toBeHealed.current = curHealth;
toBeHealed.max = maxHealth;
end
end
-- do we have a friendly target?
-- ------------------------------
if( UnitExists( "target" ) and UnitIsFriend( "player", "target" ) ) then
local _,class = UnitClass( "target" );
local scale = ( COE.DefClassHealth[class].L60 - COE.DefClassHealth[class].L1 ) / 59;
if( UnitInParty( "target" ) or UnitInRaid( "target" ) ) then
curHealth = UnitHealth( "target" );
maxHealth = UnitHealthMax( "target" );
else
-- estimate the target's real health
-- ----------------------------------
maxHealth = scale * UnitLevel( "target" ) + COE.DefClassHealth[class].L1;
curHealth = maxHealth * UnitHealth( "target" ) / 100;
COE:DebugMessage( curHealth .. " / " .. maxHealth );
end
curRatio = curHealth / maxHealth;
if( curRatio < toBeHealed.ratio and curHealth ~= 0 ) then
-- if target is party or raid member heal it
-- and don't care about the override threshold.
-- the player supposedly knows what he's doing
-- ---------------------------------------------
if( UnitInParty( "target" ) or UnitInRaid( "target" ) ) then
toBeHealed.target = "target";
toBeHealed.ratio = curRatio;
toBeHealed.current = curHealth;
toBeHealed.max = maxHealth;
else
-- only heal the target if no party or raid member
-- is below the override threshold
-- ------------------------------------------------
if( toBeHealed.ratio > COE_Heal.Thresholds.OverrideTarget ) then
COE:DebugMessage( curHealth .. "/" .. maxHealth );
toBeHealed.target = "target";
toBeHealed.ratio = curRatio;
toBeHealed.current = curHealth;
toBeHealed.max = maxHealth;
else
COE:DebugMessage( "Overriding target due to OverrideTarget threshold" );
end
end
end
end
-- round ratio to 2 digits
-- ------------------------
toBeHealed.ratio = math.floor( toBeHealed.ratio * 100 ) / 100;
return toBeHealed;
end
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:DetermineBestSpell
PURPOSE: Determines the the spell to be used to heal possibly
healmount of health but uses least possible mana
-------------------------------------------------------------------]]
function COE_Heal:DetermineBestSpell( spelltable, healamount )
local lowerRank = false;
local i, spell;
for i = table.getn( spelltable ), 1, -1 do
spell = spelltable[i];
local avg = spell.AvgAmount;
if( avg <= healamount ) then
-- found a suitable spell
-- do we have enough mana?
-- ------------------------
if( UnitMana( "player" ) < spell.Mana ) then
lowerRank = true;
else
if( lowerRank ) then
COE:Message( string.format( COESTR_HEALLOWERRANK, spell.Rank ) );
end
return spell.SpellID, spell.Type, spell.Rank;
end
end
end
if( lowerRank ) then
-- out of mana
-- ------------
COE:Message( COESTR_HEALOOM );
return nil;
end
-- if we got here, the target is below threshold but misses
-- less health than our rank 1 spell can heal at minimum
-- use rank 1 explicitly, we want to heal after all...
-- ---------------------------------------------------------
spell = spelltable[1];
if( UnitMana( "player" ) < spell.Mana ) then
-- out of mana
-- ------------
COE:Message( COESTR_HEALOOM );
return nil;
else
return spell.SpellID, spell.Type, 1;
end
end
--[[ ----------------------------------------------------------------
METHOD: COE_Heal:DetermineBattleSpell
PURPOSE: Determines the the spell to be used to heal possibly
healmount of health but uses the least casting time
possible. That is, we use Lesser Healing Wave whenever
possible
If Nature's Swiftness is active, switch to
DetermineBestSpell instead to receive most out of our heal
-------------------------------------------------------------------]]
function COE_Heal:DetermineBattleSpell( healamount )
-- do we possess the lesser wave?
-- -------------------------------
if( table.getn( COE.HealData.Lesser ) == 0 ) then
return COE_Heal:DetermineBestSpell( COE.HealData.Sorted, healamount );
end
-- check for nature's swiftness
-- -----------------------------
-- use lesser healing wave
-- ------------------------
return COE_Heal:DetermineBestSpell( COE.HealData.Lesser, healamount );
end
+18
View File
@@ -0,0 +1,18 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<script file="COE_HealData.lua"/>
<script file="COE_Heal.lua"/>
<!-- Invisible HealFrame for script loading -->
<Frame name="COEHealFrame" frameStrata="LOW" enableMouse="false" hidden="true">
<Scripts>
<OnLoad>
COE_Heal:Init();
</OnLoad>
<OnEvent>
COE_Heal:OnEvent( event );
</OnEvent>
</Scripts>
</Frame>
</Ui>
+171
View File
@@ -0,0 +1,171 @@
--[[
CALL OF ELEMENTS
The All-In-One Shaman Addon
by Wyverex (2006)
Healing Module Data
]]
--[[ ----------------------------------------------------------------
COE.HealData contains a list of all heal spells that the
player possesses
-------------------------------------------------------------------]]
COE["HealData"] = {};
COE.HealData["Wave"] = { };
COE.HealData["Lesser"] = { };
COE.HealData["Sorted"] = {};
--[[ ----------------------------------------------------------------
COE.DefClassHealth contains a an estimation of average player
health by class. Stolen directly from PaladinAssistant :)
Shaman added with a first estimation
-------------------------------------------------------------------]]
COE["DefClassHealth"] = {
["WARRIOR"] = { L1=30, L60=4100 },
["SHAMAN"] = { L1=30, L60=3500 },
["ROGUE"] = { L1=30, L60=3100 },
["HUNTER"] = { L1=30, L60=3100 },
["DRUID"] = { L1=30, L60=3100 },
["WARLOCK"] = { L1=30, L60=2300 },
["MAGE"] = { L1=30, L60=2200 },
["PRIEST"] = { L1=30, L60=2100 }
};
--[[ ----------------------------------------------------------------
METHOD: COE:CreateHealingSpell
PURPOSE: Creates a new healing spell object with default values
-------------------------------------------------------------------]]
function COE:CreateHealingSpell()
return { SpellID = 0, Type = "", Rank = 0, Mana = 0, MinAmount = 0,
MaxAmount = 0, AvgAmount = 0 };
end
--[[ ----------------------------------------------------------------
METHOD: COE:LocalizedSpell
PURPOSE: Returns the english name for a healing spell
-------------------------------------------------------------------]]
function COE:LocalizedSpell( spellname )
if( spellname == COESTR_HEALINGWAVE ) then
return "Wave";
elseif( spellname == COESTR_LESSERWAVE ) then
return "Lesser";
else
return spellname;
end
end
--[[ ----------------------------------------------------------------
METHOD: COEAvgHealComparator
PURPOSE: Comparator for sorting the healing spells for BestHeal
Spells are sorted by average amount of healing
-------------------------------------------------------------------]]
function COEAvgHealComparator( x, y )
return x.AvgAmount < y.AvgAmount;
end
--[[ ----------------------------------------------------------------
METHOD: COE:ScanHealingSpells
PURPOSE: Scans the spellbook for available healing spells and
populates the COE.HealData list
-------------------------------------------------------------------]]
function COE:ScanHealingSpells()
COE:DebugMessage( "Scanning Healing Spells..." );
-- delete existing healing spells
-- -------------------------------
COE.HealData = {};
COE.HealData.Wave = { };
COE.HealData.Lesser = { };
COE.HealData.Sorted = {};
-- iterate over all spells in the spellbook
-- -----------------------------------------
local i = 1;
while true do
local SpellName, SpellRank = GetSpellName( i, BOOKTYPE_SPELL );
if not SpellName then
do break end;
end
-- is this a healing spell?
-- -------------------------
if( string.find( SpellName, COESTR_HEALINGWAVE ) ~= nil or
string.find( SpellName, COESTR_LESSERWAVE ) ~= nil ) then
local valid = true;
local heal = COE:CreateHealingSpell();
heal.SpellID = i;
heal.Type = SpellName;
-- extract mana cost and amount of healing from the tooltip
-- ---------------------------------------------------------
COETotemTT:SetSpell( i, BOOKTYPE_SPELL );
local text = COETotemTTTextLeft2:GetText();
local _,_,value = string.find( text, COESTR_TOTEMMANA );
if( value ) then
heal.Mana = tonumber( value );
else
valid = false;
end
text = COETotemTTTextLeft4:GetText();
_,_,value = string.find( text, COESTR_MINAMOUNT );
if( value ) then
heal.MinAmount = tonumber( value );
else
valid = false;
end
_,_,value = string.find( text, COESTR_MAXAMOUNT );
if( value ) then
heal.MaxAmount = tonumber( value );
else
valid = false;
end
-- valid spell?
-- -------------
if( valid ) then
heal.AvgAmount = heal.MinAmount + (heal.MaxAmount - heal.MinAmount) / 2;
local spell = COE:LocalizedSpell( SpellName );
table.insert( COE.HealData[spell], heal );
table.insert( COE.HealData.Sorted, heal );
heal.Rank = table.getn( COE.HealData[spell] );
COE:DebugMessage( "Found healing spell: " .. SpellName .. " (Rank " .. table.getn( COE.HealData[spell] ) .. ")" );
end
end
i = i + 1;
end
-- sort the list for BestHeal
-- ---------------------------
table.sort( COE.HealData.Sorted, COEAvgHealComparator );
end
+283
View File
@@ -0,0 +1,283 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<script file="COE_TotemData.lua"/>
<script file="COE_TotemVisual.lua"/>
<script file="COE_TotemLogic.lua"/>
<!-- Template for the totem buttons -->
<CheckButton name="COETotemButtonTemplate" inherits="ActionButtonTemplate" virtual="true">
<Size>
<AbsDimension x="36" y="36"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:OnTotemButtonLoad();
</OnLoad>
<OnEvent>
COE_Totem:OnTotemButtonEvent( event );
</OnEvent>
<OnClick>
COE_Totem:OnTotemButtonClick();
</OnClick>
<OnEnter>
COE_Totem:OnEnterTotemButton();
</OnEnter>
<OnLeave>
COE_Totem:OnLeaveTotemButton();
</OnLeave>
<OnUpdate>
COE_Totem:UpdateTotemButton( arg1 );
</OnUpdate>
<OnDragStart>
COE_Totem:ButtonStartDrag();
</OnDragStart>
<OnDragStop>
COE_Totem:ButtonStopDrag();
</OnDragStop>
</Scripts>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parentOverlayTex" file="Interface\Tooltips\UI-Tooltip-Background" hidden="true">
<Size>
<AbsDimension x="34" y="16"/>
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
<Layer level="OVERLAY">
<FontString name="$parentText" inherits="GameFontNormalLarge" text="">
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Color r="1" g="1" b="1"/>
</FontString>
</Layer>
</Layers>
</CheckButton>
<!-- Totem EarthFrame -->
<Frame name="COEEarthFrame" frameStrata="LOW" enableMouse="true" movable="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="50" y="50" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="-75" y="75"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:InitFrame();
this.Element = "Earth";
</OnLoad>
<OnUpdate>
COE_Totem:UpdateFrame( arg1 );
</OnUpdate>
<OnEvent>
COE_Totem:OnFrameEvent( event );
</OnEvent>
</Scripts>
<Frames>
<!-- Create earth totem placeholders -->
<CheckButton name="COETotemEarth1" inherits="COETotemButtonTemplate" hidden="true" id="1">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</CheckButton>
<CheckButton name="COETotemEarth2" inherits="COETotemButtonTemplate" hidden="true" id="2"/>
<CheckButton name="COETotemEarth3" inherits="COETotemButtonTemplate" hidden="true" id="3"/>
<CheckButton name="COETotemEarth4" inherits="COETotemButtonTemplate" hidden="true" id="4"/>
<CheckButton name="COETotemEarth5" inherits="COETotemButtonTemplate" hidden="true" id="5"/>
<CheckButton name="COETotemEarthNone" inherits="COETotemButtonTemplate" hidden="true" id="6"/>
</Frames>
</Frame>
<!-- Totem FireFrame -->
<Frame name="COEFireFrame" frameStrata="LOW" enableMouse="true" movable="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="50" y="50" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="75" y="75"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:InitFrame();
this.Element = "Fire";
</OnLoad>
<OnUpdate>
COE_Totem:UpdateFrame( arg1 );
</OnUpdate>
<OnEvent>
COE_Totem:OnFrameEvent( event );
</OnEvent>
</Scripts>
<Frames>
<!-- Create Fire totem placeholders -->
<CheckButton name="COETotemFire1" inherits="COETotemButtonTemplate" hidden="true" id="11">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</CheckButton>
<CheckButton name="COETotemFire2" inherits="COETotemButtonTemplate" hidden="true" id="12"/>
<CheckButton name="COETotemFire3" inherits="COETotemButtonTemplate" hidden="true" id="13"/>
<CheckButton name="COETotemFire4" inherits="COETotemButtonTemplate" hidden="true" id="14"/>
<CheckButton name="COETotemFire5" inherits="COETotemButtonTemplate" hidden="true" id="15"/>
<CheckButton name="COETotemFireNone" inherits="COETotemButtonTemplate" hidden="true" id="16"/>
</Frames>
</Frame>
<!-- Totem WaterFrame -->
<Frame name="COEWaterFrame" frameStrata="LOW" enableMouse="true" movable="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="50" y="50" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="-75" y="-75"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:InitFrame();
this.Element = "Water";
</OnLoad>
<OnUpdate>
COE_Totem:UpdateFrame( arg1 );
</OnUpdate>
<OnEvent>
COE_Totem:OnFrameEvent( event );
</OnEvent>
</Scripts>
<Frames>
<!-- Create Water totem placeholders -->
<CheckButton name="COETotemWater1" inherits="COETotemButtonTemplate" hidden="true" id="21">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</CheckButton>
<CheckButton name="COETotemWater2" inherits="COETotemButtonTemplate" hidden="true" id="22"/>
<CheckButton name="COETotemWater3" inherits="COETotemButtonTemplate" hidden="true" id="23"/>
<CheckButton name="COETotemWater4" inherits="COETotemButtonTemplate" hidden="true" id="24"/>
<CheckButton name="COETotemWater5" inherits="COETotemButtonTemplate" hidden="true" id="25"/>
<CheckButton name="COETotemWater6" inherits="COETotemButtonTemplate" hidden="true" id="26"/>
<CheckButton name="COETotemWater7" inherits="COETotemButtonTemplate" hidden="true" id="27"/>
<CheckButton name="COETotemWaterNone" inherits="COETotemButtonTemplate" hidden="true" id="28"/>
</Frames>
</Frame>
<!-- Totem AirFrame -->
<Frame name="COEAirFrame" frameStrata="LOW" enableMouse="true" movable="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="50" y="50" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="75" y="-75"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:InitFrame();
this.Element = "Air";
</OnLoad>
<OnUpdate>
COE_Totem:UpdateFrame( arg1 );
</OnUpdate>
<OnEvent>
COE_Totem:OnFrameEvent( event );
</OnEvent>
</Scripts>
<Frames>
<!-- Create Air totem placeholders -->
<CheckButton name="COETotemAir1" inherits="COETotemButtonTemplate" hidden="true" id="31">
<Anchors>
<Anchor point="TOPLEFT"/>
</Anchors>
</CheckButton>
<CheckButton name="COETotemAir2" inherits="COETotemButtonTemplate" hidden="true" id="32"/>
<CheckButton name="COETotemAir3" inherits="COETotemButtonTemplate" hidden="true" id="33"/>
<CheckButton name="COETotemAir4" inherits="COETotemButtonTemplate" hidden="true" id="34"/>
<CheckButton name="COETotemAir5" inherits="COETotemButtonTemplate" hidden="true" id="35"/>
<CheckButton name="COETotemAir6" inherits="COETotemButtonTemplate" hidden="true" id="36"/>
<CheckButton name="COETotemAir7" inherits="COETotemButtonTemplate" hidden="true" id="37"/>
<CheckButton name="COETotemAirNone" inherits="COETotemButtonTemplate" hidden="true" id="38"/>
</Frames>
</Frame>
<!-- Totem MainFrame -->
<Frame name="COETotemFrame" frameStrata="LOW" hidden="true" parent="UIParent">
<Scripts>
<OnLoad>
COE_Totem:InitMainFrame();
</OnLoad>
<OnEvent>
COE_Totem:OnMainFrameEvent( event );
</OnEvent>
</Scripts>
</Frame>
<!-- TimerFrame -->
<Frame name="COETimerFrame" frameStrata="LOW" enableMouse="true" movable="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="50" y="50" />
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="UIParent"/>
</Anchors>
<Scripts>
<OnLoad>
COE_Totem:InitTimerFrame();
</OnLoad>
<OnUpdate>
COE_Totem:UpdateTimerFrame( arg1 );
</OnUpdate>
</Scripts>
<Frames>
<!-- Create Air totem placeholders -->
<CheckButton name="COETimerEarth" inherits="COETotemButtonTemplate" hidden="true" id="1"/>
<CheckButton name="COETimerFire" inherits="COETotemButtonTemplate" hidden="true" id="2"/>
<CheckButton name="COETimerWater" inherits="COETotemButtonTemplate" hidden="true" id="3"/>
<CheckButton name="COETimerAir" inherits="COETotemButtonTemplate" hidden="true" id="4"/>
</Frames>
</Frame>
</Ui>
+827
View File
@@ -0,0 +1,827 @@
--[[
CALL OF ELEMENTS
The All-In-One Shaman Addon
by Wyverex (2006)
Totem Module Data
]]
--[[ ----------------------------------------------------------------
COE.TotemData contains a list of totem classes that are
returned by COE:CreateTotem
For every available totem the player has, one object is
added to this list
-------------------------------------------------------------------]]
COE["TotemData"] = {};
COE["TotemCount"] = 0;
--[[ ----------------------------------------------------------------
COE.MaxTotems stores the maximum number of totems per element
This is taken right from the current game content
-------------------------------------------------------------------]]
COE["MaxTotems"] = { Earth = 5, Fire = 5, Water = 7, Air = 7 };
--[[ ----------------------------------------------------------------
COE.TotemsAvailable contains the number of totems available
of each element
-------------------------------------------------------------------]]
COE["TotemsAvailable"] = {};
COE.TotemsAvailable["Earth"] = 0;
COE.TotemsAvailable["Fire"] = 0;
COE.TotemsAvailable["Water"] = 0;
COE.TotemsAvailable["Air"] = 0;
--[[ ----------------------------------------------------------------
COE.ActiveTotems contains a pointer to the active totem of
each element
COE.TotemPending contains a pointer to the last totem spell
that was initiated but not yet completed. This lets COE check
whether something went wrong while casting (sitting etc.) by
activating the timer first when SPELLCAST_STOP is fired
After the timeout a pending totem timer is automatically removed
to prevent actions that trigger SPELLCAST_STOP and are not
hooked from activating the timer accidentally
-------------------------------------------------------------------]]
COE["ActiveTotems"] = { Earth = nil, Fire = nil, Water = nil, Air = nil };
COE["TotemPending"] = { Totem = nil, UseRank = 0, Timeout = 0.75 };
--[[ ----------------------------------------------------------------
COE.CleansingTotems stores pointers to the buttons and totems
that are able to cleanse poisons, diseases and sleep, charm
or fear effects
-------------------------------------------------------------------]]
COE["CleansingTotems"] = {
Poison = { Totem = nil, Button = nil, Warn = false },
Disease = { Totem = nil, Button = nil, Warn = false },
Tremor = { Totem = nil, Button = nil, Warn = false } };
--[[ ----------------------------------------------------------------
COE.TotemSets contains the totem pointers for each set and
element
-------------------------------------------------------------------]]
COE["TotemSetCount"] = 0;
COE["TotemSets"] = { }
--[[ ----------------------------------------------------------------
COE.SetCycle stores which totem of the active set have
already been thrown
-------------------------------------------------------------------]]
COE["SetCycle"] = { Earth = false, Fire = false, Water = false, Air = false };
--[[ ----------------------------------------------------------------
COE.NoTotem is a placeholder for an empty anchor button
-------------------------------------------------------------------]]
COE["NoTotem"] = { SpellName = "", Element = "", Texture = "Interface\\Icons\\INV_Misc_Idol_03.blp",
ToolPresent = false, Ranks = { SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0 },
MaxRank = 1, isActive = false, CurDuration = 0, CurHealth = 0, CurCooldown = 0 };
--[[ ----------------------------------------------------------------
METHOD: COE:CreateTotem
PURPOSE: Returns the totem class for a new totem
-------------------------------------------------------------------]]
function COE:CreateTotem()
return { SpellName = "", Element = "", Texture = "",
ToolPresent = false, Ranks = {}, MaxRank = 0, isActive = false,
CurDuration = 0, CurHealth = 0, CurCooldown = 0,
isTrinket = false, TrinketSlot = nil };
end
--[[ ----------------------------------------------------------------
METHOD: COE:CreateTotemRank
PURPOSE: Returns the class for a new totem rank
-------------------------------------------------------------------]]
function COE:CreateTotemRank()
return { SpellID = 0, Mana = 0, Duration = 0, Health = 0, Cooldown = 0 };
end
--[[ ----------------------------------------------------------------
METHOD: COE:ElementFromTool
PURPOSE: Returns the element corresponding to a totem tool.
This is needed for the french version to work. In the
english and german versions it just returns the input
-------------------------------------------------------------------]]
function COE:ElementFromTool( element )
if element == COESTR_TOTEMTOOLS_EARTH then
return COESTR_ELEMENT_EARTH;
elseif element == COESTR_TOTEMTOOLS_FIRE then
return COESTR_ELEMENT_FIRE;
elseif element == COESTR_TOTEMTOOLS_WATER then
return COESTR_ELEMENT_WATER;
elseif element == COESTR_TOTEMTOOLS_AIR then
return COESTR_ELEMENT_AIR;
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:LocalizedElement
PURPOSE: Translates a localized element name into english
-------------------------------------------------------------------]]
function COE:LocalizedElement( element )
if( element == COESTR_ELEMENT_EARTH ) then
return "Earth";
elseif( element == COESTR_ELEMENT_FIRE ) then
return "Fire";
elseif( element == COESTR_ELEMENT_WATER ) then
return "Water";
elseif( element == COESTR_ELEMENT_AIR ) then
return "Air";
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:ScanTotems
PURPOSE: Scans the spellbook for available totems and
populates the COE.TotemData list
-------------------------------------------------------------------]]
function COE:ScanTotems()
COE:DebugMessage( "Scanning Totems..." );
-- delete existing totem objects
-- ------------------------------
COE.TotemData = {};
COE.TotemCount = 0;
COE.TotemsAvailable.Earth = 0;
COE.TotemsAvailable.Fire = 0;
COE.TotemsAvailable.Water = 0;
COE.TotemsAvailable.Air = 0;
-- iterate over all spells in the spellbook
-- -----------------------------------------
local i, k = 1;
while true do
local SpellName, SpellRank = GetSpellName( i, BOOKTYPE_SPELL );
if not SpellName or SpellName == "Totemic Recall" then
do break end;
end
-- is this a totem?
-- -----------------
if( string.find( SpellName, COESTR_SCANTOTEMS ) ~= nil ) then
local newtotem = true;
local totem = nil;
-- get the rank value
-- -------------------
local _,_,rank = string.find( SpellRank, COESTR_TOTEMRANK );
if( not rank ) then
rank = 1;
else
rank = tonumber( rank );
end
-- =======================================================================
-- check if totem already exists with another rank in the list
-- =======================================================================
for k = 1, COE.TotemCount do
if( SpellName == COE.TotemData[k].SpellName ) then
-- use existing totem object
-- --------------------------
totem = COE.TotemData[k];
newtotem = false;
break;
end
end
COETotemTT:SetSpell( i, BOOKTYPE_SPELL );
-- =======================================================================
-- create new totem object if not found
-- =======================================================================
if( not totem ) then
totem = COE:CreateTotem();
-- set totem spell name
-- ---------------------
totem.SpellName = SpellName;
-- get totem school from tooltip
-- ------------------------------
local text = COETotemTTTextLeft4;
if( text and text:GetText() ) then
local _,_, element = string.find( text:GetText(), COESTR_TOTEMTOOLS );
if( element ) then
-- if element starts with a |, the player does
-- not possess the needed totem for this spell
-- extract the color code before using the element
-- ------------------------------------------------
if( string.sub( element, 1, 1 ) == "|" ) then
element = string.sub( element, 11 );
end
-- get element from tool
-- ----------------------
element = COE:ElementFromTool( element );
-- translate element to english
-- -----------------------------
element = COE:LocalizedElement( element );
-- valid element?
-- ---------------
if( COE.TotemsAvailable[element] ~= nil ) then
totem.Element = element;
COE.TotemsAvailable[element] = COE.TotemsAvailable[element] + 1;
else
COE:Message( COESTR_INVALIDELEMENT .. SpellName );
end
end
end
-- get totem texture
-- ------------------
totem.Texture = GetSpellTexture( i, BOOKTYPE_SPELL );
-- get tool presence
-- ------------------
totem.ToolPresent = COE:IsToolPresent( i );
end
-- =======================================================================
-- create new totem rank
-- =======================================================================
local totemrank = COE:CreateTotemRank();
-- set totem spell id
-- -------------------
totemrank.SpellID = i;
-- get totem mana cost from tooltip
-- ---------------------------------
text = COETotemTTTextLeft2;
if( text and text:GetText() ) then
local _,_, mana = string.find( text:GetText(), COESTR_TOTEMMANA );
if( mana ) then
totemrank.Mana = tonumber( mana );
end
end
-- get totem duration and health
-- ------------------------------
totemrank.Duration, totemrank.Health, totemrank.Cooldown = COE:GetTotemDurationAndHealth( i );
-- store rank in totem
-- --------------------
totem.Ranks[rank] = totemrank;
if( rank > totem.MaxRank ) then
totem.MaxRank = rank;
end
-- is this a new totem?
-- ---------------------
if( newtotem ) then
-- store totem
-- ------------
COE.TotemCount = COE.TotemCount + 1;
COE.TotemData[COE.TotemCount] = totem;
-- check if it's a cleansing totem
-- --------------------------------
if( SpellName == COESTR_TOTEMPOISON ) then
COE.CleansingTotems.Poison.Totem = totem;
elseif( SpellName == COESTR_TOTEMDISEASE ) then
COE.CleansingTotems.Disease.Totem = totem;
elseif( SpellName == COESTR_TOTEMTREMOR ) then
COE.CleansingTotems.Tremor.Totem = totem;
end
COE:DebugMessage( "Found totem: " .. SpellName );
end
-- =======================================================================
-- check visibility options
-- =======================================================================
if( COE_DisplayedTotems[SpellName] == nil ) then
-- perhaps a new totem. set it to default visible
-- and reorder it when the element count is known
-- -----------------------------------------------
COE_DisplayedTotems[SpellName] = { Order = 0, Element = totem.Element, Visible = true };
else
-- update old saved variables versions by adding the element
-- ----------------------------------------------------------
COE_DisplayedTotems[SpellName]["Element"] = totem.Element;
end
end
i = i + 1;
end
-- ====================================
-- Trinket support
-- ====================================
-- create the trinket totem even if the player doesn't have it.
-- this makes handling it much simpler and the player can choose
-- to make it invisible anyway
-- the player needs to have at least one water totem though
-- --------------------------------------------------------------
if( COE.TotemsAvailable.Water > 0 ) then
local trinket = COE:CreateTotem();
trinket.SpellName = "Trinket";
trinket.Element = "Water";
trinket.Texture = "Interface\\Icons\\INV_Wand_01";
trinket.isTrinket = true;
trinket.ToolPresent, trinket.TrinketSlot = COE:IsTrinketPresent();
trinket.Ranks[0] = COE:CreateTotemRank();
trinket.Ranks[0].Duration = 24;
trinket.Ranks[0].Health = 5;
trinket.Ranks[0].Cooldown = 180;
-- store totem
-- ------------
COE.TotemsAvailable.Water = COE.TotemsAvailable.Water + 1;
COE.TotemCount = COE.TotemCount + 1;
COE.TotemData[COE.TotemCount] = trinket;
if( COE_DisplayedTotems[trinket.SpellName] == nil ) then
-- perhaps a new totem. set it to default visible
-- and reorder it when the element count is known
-- -----------------------------------------------
COE_DisplayedTotems[trinket.SpellName] = { Order = 0, Visible = true };
end
end
-- ===================================
-- Finish
-- ===================================
COE:DebugMessage( "Found " .. COE.TotemCount .. " totems in spellbook" ..
"(" .. COE.TotemsAvailable.Earth .. " Earth, " ..
COE.TotemsAvailable.Fire .. " Fire, " .. COE.TotemsAvailable.Water .. " Water, " ..
COE.TotemsAvailable.Air .. " Air)" );
-- reorder new totems
-- -------------------
COE:ReorderNewTotems();
end
--[[ ----------------------------------------------------------------
METHOD: COE:GetTotemDurationAndHealth
PURPOSE: Extracts the duration of the totem out of the tooltip
When there is more than one time specification present,
the one with the longer duration is used since this is the
totem duration then
Also the health and the cooldown of the totem are returned
-------------------------------------------------------------------]]
function COE:GetTotemDurationAndHealth( spellid )
COETotemTTTextRight3:SetText( nil );
COETotemTT:SetSpell( spellid, BOOKTYPE_SPELL );
text = COETotemTTTextLeft5:GetText();
if( not text ) then
COE:DebugMessage( "nil text with id: " .. spellid );
return 0, 0;
end
local duration = 0;
local health = 0;
local cooldown = 0;
-- ===============================================================
-- Duration
-- ===============================================================
-- first search for a minute specification
-- if we find one it is surely the totem duration
-- -----------------------------------------------
local _,_,minutetext = string.find( text, COESTR_MINUTEDURATION );
if( minutetext ) then
-- calculate the duration in seconds
-- ----------------------------------
local min = tonumber( string.sub( minutetext, 1, 1 ) );
local sec = tonumber( string.sub( minutetext, 3, 4 ) ) / 100 * 60;
duration = min * 60 + sec;
else
_,_,minutetext = string.find( text, COESTR_MINUTEDURATION_INT );
if( minutetext ) then
duration = tonumber( minutetext ) * 60;
else
-- now test for a duration in seconds
-- -----------------------------------
local _,b,sectext1 = string.find( text, COESTR_SECDURATION );
if( sectext1 ) then
-- look if there are two second specifications
-- if so, take the greate one
-- --------------------------------------------
local _,_,sectext2 = string.find( string.sub( text, b ), COESTR_SECDURATION );
if( sectext2 ) then
duration = math.max( tonumber( sectext1 ), tonumber( sectext2 ) );
else
duration = tonumber( sectext1 );
end
end
end
end
-- ===============================================================
-- Health
-- ===============================================================
for num, regex in COESTR_TOTEMHEALTH do
local match = { string.gfind( text, regex )() };
if ( table.getn(match) >= 1 ) then
health = tonumber( match[1] );
break;
end
end
-- ===============================================================
-- Cooldown
-- ===============================================================
text = COETotemTTTextRight3:GetText();
if( not text ) then
cooldown = 0;
else
_,_,cooldown = string.find( text, COESTR_SECDURATION );
if( cooldown ) then
cooldown = tonumber( cooldown );
else
_,_,cooldown = string.find( text, COESTR_MINUTEDURATION_INT );
if( cooldown ) then
cooldown = tonumber( cooldown ) * 60;
else
cooldown = 0;
end
end
end
return duration, health, cooldown;
end
--[[ ----------------------------------------------------------------
METHOD: COE:IsToolPresent
PURPOSE: Checks if the player has the totem of the specified
element in his inventory
This is done by testing the color of the "Tools:" section
in the totem tooltip
-------------------------------------------------------------------]]
function COE:IsToolPresent( spellid )
-- get totem tooltip
-- ------------------
COETotemTT:SetSpell( spellid, BOOKTYPE_SPELL );
-- test for presence of the totem tool
-- ------------------------------------
local text = COETotemTTTextLeft4;
if( text and text:GetText() ) then
local _,_, element = string.find( text:GetText(), COESTR_TOTEMTOOLS );
if( element ) then
-- if element doesn't start with a |, the player
-- possesses the needed totem for this spell
-- ------------------------------------------------
if( string.sub( element, 1, 1 ) ~= "|" ) then
return true;
end
end
end
return false;
end
--[[ ----------------------------------------------------------------
METHOD: COE:IsTrinketPresent
PURPOSE: Checks if the player has the enamored water spirit
trinket equipped and returns the trinket slot
RETURNS: equipped, slot
-------------------------------------------------------------------]]
function COE:IsTrinketPresent()
for i = 0, 1 do
local slot = GetInventorySlotInfo( "Trinket" .. i .. "Slot" );
local item = GetInventoryItemLink( "player", slot );
if( item ) then
local itemname = string.find( item, COESTR_TRINKET );
if( itemname ) then
-- trinket is equipped
-- --------------------
return true, slot;
end
end
end
return false, nil;
end
--[[ ----------------------------------------------------------------
METHOD: COE:ReorderNewTotems
PURPOSE: Assigns each COE_DisplayedTotems entry with a zero
order a valid order depending on the number of available
totems in this element
-------------------------------------------------------------------]]
function COE:ReorderNewTotems()
local nextslot = { Earth = COE.TotemsAvailable.Earth, Fire = COE.TotemsAvailable.Fire,
Water = COE.TotemsAvailable.Water, Air = COE.TotemsAvailable.Air };
local used = { Earth = {}, Fire = {}, Water = {}, Air = {} };
local bError = false;
local k;
for k = 1, COE.TotemCount do
local totem = COE.TotemData[k];
if( COE_DisplayedTotems[totem.SpellName] ~= nil ) then
if( COE_DisplayedTotems[totem.SpellName].Order == 0 ) then
-- this totem has just been added
-- assign the currently free slot
-- -------------------------------
COE_DisplayedTotems[totem.SpellName].Order = nextslot[totem.Element];
nextslot[totem.Element] = nextslot[totem.Element] - 1;
end
-- register that this slot of the element is now in use
-- mark as error if already in use
-- -----------------------------------------------------
if( used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] == nil ) then
used[totem.Element][COE_DisplayedTotems[totem.SpellName].Order] = true;
else
bError = true;
end
end
end
-- are there multiple entries for one slot?
-- -----------------------------------------
if( bError ) then
-- there is something wrong with the saved variables
-- reset all ordering and reassign it
-- --------------------------------------------------
for k = 1, COE.TotemCount do
local totem = COE.TotemData[k];
if( COE_DisplayedTotems[totem.SpellName] ~= nil ) then
COE_DisplayedTotems[totem.SpellName].Order = 0;
end
end
COE:ReorderNewTotems();
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:InitTotemSets
PURPOSE: Fills the COE.TotemSets list with the totem objects
corresponding to the spell names saved in COEOPT_TOTEMSETS
-------------------------------------------------------------------]]
function COE:InitTotemSets()
local indices = { "Earth", "Fire", "Water", "Air" };
COE.TotemSets = {};
-- for each standard set
-- ----------------------
local set;
for set = 1, table.getn( COE_SavedTotemSets ) do
COE.TotemSets[set] = { Earth = nil, Fire = nil, Water = nil, Air = nil,
CastOrder = COE_SavedTotemSets[set].CastOrder };
-- for each element
-- -----------------
local k, totem;
for k = 1,4 do
if( COE_SavedTotemSets[set][indices[k]] ~= "" ) then
-- iterate over all totems
-- ------------------------
for totem in COE.TotemData do
if( COE.TotemData[totem].SpellName == COE_SavedTotemSets[set][indices[k]] ) then
COE.TotemSets[set][indices[k]] = COE.TotemData[totem];
end
end
end
end
end
-- for each custom set
-- --------------------
for set = 1, table.getn( COE_CustomTotemSets ) do
COE.TotemSets[COESET_DEFAULT + set] = { Earth = nil, Fire = nil, Water = nil, Air = nil,
CastOrder = COE_CustomTotemSets[set].CastOrder };
-- for each element
-- -----------------
local k, totem;
for k = 1,4 do
if( COE_CustomTotemSets[set][indices[k]] ~= "" ) then
-- iterate over all totems
-- ------------------------
for totem in COE.TotemData do
if( COE.TotemData[totem].SpellName == COE_CustomTotemSets[set][indices[k]] ) then
COE.TotemSets[COESET_DEFAULT + set][indices[k]] = COE.TotemData[totem];
end
end
end
end
end
COE.TotemSetCount = table.getn( COE.TotemSets );
end
--[[ =============================================================================================
F I X E S
================================================================================================]]
--[[ ----------------------------------------------------------------
METHOD: COE:Fix_CastOrderLocalization
PURPOSE: Correctly localizes the element names in the
cast order in COE_SavedTotemSets
-------------------------------------------------------------------]]
function COE:Fix_CastOrderLocalization()
-- for each standard set
-- ----------------------
local set, k;
for set = 1, table.getn( COE_SavedTotemSets ) do
for k = 1, 4 do
if( COE_SavedTotemSets[set].CastOrder[k] == "Earth" ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Fire" ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Water" ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_SavedTotemSets[set].CastOrder[k] == "Air" ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end
end
end
-- notify user
-- ------------
COE:Message( COESTR_FIXEDSETS );
end
--[[ ----------------------------------------------------------------
METHOD: COE:Fix_DisplayedTotems
PURPOSE: Fixes errors in the COE_DisplayedTotems array
-------------------------------------------------------------------]]
function COE:Fix_DisplayedTotems()
local i;
local fixed = false;
foreach( COE_DisplayedTotems, function( index, value )
-- is this an old-style entry?
-- ----------------------------
if( type( value ) == "boolean" ) then
COE_DisplayedTotems[index] = { Order = 0, Visible = value };
fixed = true;
elseif( type( value ) == "table" ) then
if( COE_DisplayedTotems[index].Visible == nil ) then
COE_DisplayedTotems[index].Visible = true;
fixed = true;
end
if( COE_DisplayedTotems[index].Order == nil ) then
COE_DisplayedTotems[index].Order = 0;
fixed = true;
end
else
COE_DisplayedTotems[index] = { Order = 0, Visible = value };
fixed = true;
end
end );
-- notify user
-- ------------
if( fixed ) then
COE:Message( COESTR_FIXEDDISPLAY );
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:Fix_CastOrderLocalization2
PURPOSE: Correctly localizes the element names in the
cast order in COE_SavedTotemSets
-------------------------------------------------------------------]]
function COE:Fix_CastOrderLocalization2()
-- for each standard set
-- ----------------------
local set, k;
for set = 1, table.getn( COE_SavedTotemSets ) do
for k = 1, 4 do
if( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_FIRE ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_WATER ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_SavedTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_AIR ) then
COE_SavedTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end
end
end
-- for each custom set
-- --------------------
for set = 1, table.getn( COE_CustomTotemSets ) do
for k = 1, 4 do
if( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_EARTH ) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_EARTH;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_FIRE ) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_FIRE;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_WATER ) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_WATER;
elseif( COE_CustomTotemSets[set].CastOrder[k] == COESTR_TOTEMTOOLS_AIR ) then
COE_CustomTotemSets[set].CastOrder[k] = COESTR_ELEMENT_AIR;
end
end
end
end
+1200
View File
File diff suppressed because it is too large Load Diff
+1740
View File
File diff suppressed because it is too large Load Diff
+288
View File
@@ -0,0 +1,288 @@
--[[
CALL OF ELEMENTS
The All-In-One Shaman Addon
by Wyverex (2006)
]]
if( not COE ) then
COE = {};
end
COE_VERSION = 2.6
COECOL_TOTEMWARNING = 1;
COECOL_TOTEMDESTROYED = 2;
COECOL_TOTEMCLEANSING = 3;
--[[ ----------------------------------------------------------------
When DebugMode is set to true, all DebugMessage calls will
write a debug message into the chat frame
-------------------------------------------------------------------]]
COE["DebugMode"] = false;
--[[ ----------------------------------------------------------------
These variables control frame updates
UpdateInterval sets the interval in seconds after which a
frame is updated
ForceUpdate can be used as input into Update handlers to force
an update regardless of the current timer
-------------------------------------------------------------------]]
COE["UpdateInterval"] = 0.1;
COE["ForceUpdate"] = COE.UpdateInterval * 2;
--[[ ----------------------------------------------------------------
The AdvisorInterval controls how often the party/raid is
scanned for debuffs that are curable by totems
The AdvisorWarningInterval controls how often the player is
notified about existing debuffs
-------------------------------------------------------------------]]
COE["AdvisorInterval"] = 1;
COE["AdvisorWarningInterval"] = 7;
--[[ ----------------------------------------------------------------
METHOD: COE:Init
PURPOSE: Loads submodules and initializes data
-------------------------------------------------------------------]]
function COE:Init()
COE:Message( "Call of Elements v" .. COE_VERSION );
-- load only for shamans
-- ----------------------
local _, EnglishClass = UnitClass( "player" );
if( EnglishClass ~= "SHAMAN" ) then
COE:Message( COESTR_NOTASHAMAN );
COE.Initialized = false;
else
COE.Initialized = true;
this:RegisterEvent( "VARIABLES_LOADED" );
-- register shell command
-- -----------------------
SlashCmdList["COE"] = COEProcessShellCommand;
SLASH_COE1="/coe";
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:OnEvent
PURPOSE: Handles frame events
-------------------------------------------------------------------]]
function COE:OnEvent( event )
if( event == "VARIABLES_LOADED" ) then
-- fix saved variables if this update has to do so
-- ------------------------------------------------
COE:FixSavedVariables();
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:Message
PURPOSE: Adds a message to the default chat frame
-------------------------------------------------------------------]]
function COE:Message( msg )
DEFAULT_CHAT_FRAME:AddMessage( "[COE] " .. msg, 0.93, 0.83, 0.45 );
end;
--[[ ----------------------------------------------------------------
METHOD: COE:DebugMessage
PURPOSE: Adds a debug message to the default chat frame if
debug mode is enabled
-------------------------------------------------------------------]]
function COE:DebugMessage( msg )
if( COE.DebugMode ) then
DEFAULT_CHAT_FRAME:AddMessage( "[COE] " .. msg, 0.5, 0.5, 0.5 );
end
end;
--[[ ----------------------------------------------------------------
METHOD: COE:Notification
PURPOSE: Adds a message to the error frame in the upper
screen center
-------------------------------------------------------------------]]
function COE:Notification( msg, color )
local col;
-- choose color
-- -------------
if( color == COECOL_TOTEMWARNING ) then
col = { r = 0, g = 0.6, b = 1 };
elseif( color == COECOL_TOTEMDESTROYED ) then
col = { r = 1, g = 0.4, b = 0 };
elseif( color == COECOL_TOTEMCLEANSING ) then
col = { r = 0, g = 1, b = 0.4 };
else
col = { r = 1, g = 1, b = 1 };
end
-- add message
-- ------------
UIErrorsFrame:AddMessage( msg, col.r, col.g, col.b, 1.0, UIERRORS_HOLD_TIME );
end;
--[[ ----------------------------------------------------------------
METHOD: COE:ToggleConfigFrame
PURPOSE: Toggles the configuration dialog
-------------------------------------------------------------------]]
function COE:ToggleConfigFrame()
if( COE_ConfigFrame:IsVisible() ) then
COE_Config:CloseDialog()
else
COE_ConfigFrame:Show();
end
PlaySound( "igMainMenuOption" );
end
--[[ ----------------------------------------------------------------
METHOD: COEProcessShellCommand
PURPOSE: Executes the entered shell command
-------------------------------------------------------------------]]
function COEProcessShellCommand( msg )
if( msg == "" or msg == "config" ) then
COE:ToggleConfigFrame();
elseif( msg == "list" ) then
COE:DisplayShellCommands();
elseif( msg == "nextset" ) then
COE_Totem:SwitchToNextSet();
elseif( msg == "priorset" ) then
COE_Totem:SwitchToPriorSet();
elseif( msg == "throwset" ) then
COE_Totem:ThrowSet();
elseif( msg == "restartset" ) then
COE_Totem:ResetSetCycle();
elseif( msg == "reset" ) then
COE_Totem:ResetTimers();
elseif( msg == "reload" ) then
COE_Totem:Rescan();
elseif( msg == "resetframes" ) then
COE_Totem:ResetFrames();
elseif( msg == "advised" ) then
COE_Totem:ThrowAdvisedTotem();
elseif( msg == "resetordering" ) then
COE_DisplayedTotems = {};
COE_Totem:Rescan();
elseif( msg == "bestheal" ) then
COE_Heal:BestHeal();
elseif( msg == "battleheal" ) then
COE_Heal:BattleHeal();
else
local _,_,arg = string.find( msg, "set (.*)" );
if( arg ) then
COE_Totem:SwitchToSet( arg );
end
end
end
--[[ ----------------------------------------------------------------
METHOD: COE:DisplayShellCommands
PURPOSE: Shows a list of all shell commands
-------------------------------------------------------------------]]
function COE:DisplayShellCommands()
COE:Message( COESHELL_INTRO );
COE:Message( COESHELL_CONFIG );
COE:Message( COESHELL_LIST );
COE:Message( COESHELL_NEXTSET );
COE:Message( COESHELL_PRIORSET );
COE:Message( COESHELL_SET );
COE:Message( COESHELL_RESTARTSET );
COE:Message( COESHELL_RESET );
COE:Message( COESHELL_RESETFRAMES );
COE:Message( COESHELL_RESETORDERING );
COE:Message( COESHELL_RELOAD );
COE:Message( COESHELL_MACRONOTE );
COE:Message( COESHELL_THROWSET );
COE:Message( COESHELL_ADVISED );
end
--[[ ----------------------------------------------------------------
METHOD: COE:FixSavedVariables
PURPOSE: If this addon version is higher than the one in
the saved variables, check if we have to fix the
saved variables due to fixed bugs
-------------------------------------------------------------------]]
function COE:FixSavedVariables()
-- is the version stored in the saved variables?
-- ----------------------------------------------
if( not COE_Config:GetSaved( COEOPT_VERSION ) ) then
-- this is version <= v1.6
-- ------------------------
COE_Config:SetOption( COEOPT_VERSION, 1.6 );
end
local version = COE_Config:GetSaved( COEOPT_VERSION );
if( version == 1.6 ) then
-- fix localized cast order in 1.7
-- --------------------------------
COE:Fix_CastOrderLocalization();
COE:Message( COESTR_UDATEDSAVED .. "1.7" );
COE_Config:SetOption( COEOPT_VERSION, 1.7 );
version = COE_Config:GetSaved( COEOPT_VERSION );
end
if( version == 1.7 ) then
-- fix cast order again to due to a typo
-- --------------------------------------
COE:Fix_CastOrderLocalization();
COE:Message( COESTR_UDATEDSAVED .. "1.8" );
COE_Config:SetOption( COEOPT_VERSION, 1.8 );
version = COE_Config:GetSaved( COEOPT_VERSION );
end
-- fix totem set element strings
-- ------------------------------
COE:Fix_CastOrderLocalization2();
COE_Config:SetOption( COEOPT_VERSION, 2.1 );
end
+12
View File
@@ -0,0 +1,12 @@
## Interface: 11200
## Title: Call Of Elements
## Notes: The All-In-One Shaman Addon
## OptionalDeps:
## Dependencies: Chronos
## SavedVariables: COE_Saved
## SavedVariablesPerCharacter: COE_SavedTotemSets, COE_CustomTotemSets, COE_DisplayedTotems, COE_TotemBars
CallOfElements.xml
COE_ConfigTemplates.xml
COE_Config.xml
COE_Totem.xml
COE_Heal.xml
+28
View File
@@ -0,0 +1,28 @@
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<script file="Localization.lua"/>
<script file="Localization.de.lua"/>
<script file="Localization.fr.lua"/>
<script file="Localization.cn.lua"/>
<script file="Localization.ko.lua"/>
<script file="CallOfElements.lua"/>
<!-- Invisible MainFrame for script loading -->
<Frame name="COEMainFrame" frameStrata="LOW" enableMouse="false" hidden="true">
<Scripts>
<OnLoad>
COE:Init();
</OnLoad>
<OnEvent>
COE:OnEvent( event );
</OnEvent>
</Scripts>
</Frame>
<GameTooltip name="COETotemTT" inherits="GameTooltipTemplate" frameSTRATA="TOOLTIP">
<Scripts>
<OnLoad>
this:SetOwner(UIParent, "ANCHOR_NONE");
</OnLoad>
</Scripts>
</GameTooltip>
</Ui>
+246
View File
@@ -0,0 +1,246 @@
--[[ ----------------------------------------------------------------
简 体 中 文
-------------------------------------------------------------------]]
if( GetLocale() == "zhCN" ) then
-- Errors
-- -------
COESTR_NOTASHAMAN = "你不是一个萨满祭司。无法加载COE";
COESTR_NOTOTEM = "无可用图腾";
COESTR_UI_NOTASSIGNED = "<无赋值文本>";
COESTR_INVALIDELEMENT = "图腾中的不完整元素: ";
-- Notifications
-- --------------
COESTR_TOTEMWARNING = "%s将在%d秒后到期";
COESTR_TOTEMEXPIRED = "%s到期了";
COESTR_TOTEMDESTROYED = "%s被摧毁了";
COESTR_SWITCHTOSET = "%s图腾组合被激活";
COESTR_FIXEDSETS = "你的图腾阵施放顺序已固定";
COESTR_UDATEDSAVED = "存档变量已更新版本 ";
COESTR_FIXEDDISPLAY = "存档变量中的错误已被修正。";
COESTR_TOTEMSRELOADED = "图腾已被重置";
COESTR_RESTARTINGSET = "动态图腾组合重置";
COESTR_RESET = "计时器已被重置";
COESTR_HEALCOOLDOWN = " 还没有准备好!";
COESTR_NOHEALING = "不需要治疗";
COESTR_HEALING = "治疗%s,法术为%s(等级%d)";
COESTR_HEALLOWERRANK = "魔法不足。使用等级%d代替";
COESTR_HEALOOM = "魔法不足!";
-- String patterns
-- ----------------
COESTR_SCANTOTEMS = "图腾";
COESTR_TOTEMTOOLS = "工具:(.*)图腾";
COESTR_TOTEMMANA = "(%d*)法力值";
COESTR_TOTEMRANK = "等级 (%d)";
COESTR_MINUTEDURATION = "(%d%.%d%d)分钟";
COESTR_MINUTEDURATION_INT = "(%d)分钟";
COESTR_SECDURATION = "(%d%d?)秒";
COESTR_CASTBYNAME = "%(等级 (%d)%)";
COESTR_TOTEMDAMAGE = { ".+击中(.+图腾) ?%u*造成(%d+)点",
".+对(.+图腾) ?%u*造成(%d+)的致命一击伤害",
".+击中(.+ 图腾)造成(%d+)点",
".+对(.+图腾)造成(%d+)的致命一击伤害" };
COESTR_TOTEMHEALTH = { "生命值为(%d*)的", "生命值为(%d*)点的" };
COESTR_SHOCKSPELL = {"(%a*震击)", "地震术" };
COESTR_HEALINGWAVE = "治疗波";
COESTR_LESSERWAVE = "次级治疗波";
COESTR_MINAMOUNT = "(%d*)到";
COESTR_MAXAMOUNT = "到(%d*)";
COESTR_TRINKET = "^.*%[被迷惑的水之魂%].*$";
-- Totem Advisor
-- --------------
COESTR_POISON = "中毒";
COESTR_DISEASE = "疾病";
COESTR_TOTEMPOISON = "清毒图腾";
COESTR_TOTEMDISEASE = "祛病图腾";
COESTR_TOTEMTREMOR = "战栗图腾";
COESTR_CLEANSINGTOTEM = "立即施放%s";
COESTR_TREMOR = {
"睡眠", "恐吓", "心灵尖啸", "精神控制", "低沉咆哮", "恐惧",
"破胆怒吼", "恐慌", "恐吓尖啸", "诱惑",
"恐惧嚎叫", "破胆怒吼", "水晶沉睡"
}
-- Tools
-- ---------
COESTR_TOTEMTOOLS_EARTH = "大地";
COESTR_TOTEMTOOLS_FIRE = "火焰";
COESTR_TOTEMTOOLS_WATER = "水之";
COESTR_TOTEMTOOLS_AIR = "空气";
-- Elements
-- ---------
COESTR_ELEMENT_EARTH = "大地";
COESTR_ELEMENT_FIRE = "火焰";
COESTR_ELEMENT_WATER = "";
COESTR_ELEMENT_AIR = "空气";
-- UI elements
-- ------------
COEUI_STRINGS = {
COE_ConfigClose = "关闭";
COE_ConfigTotemTabPanel = "图腾设定";
COE_ConfigHealingTabPanel = "治疗设定";
COE_ConfigDebuffTabPanel = "Debuff设定";
COE_ConfigTotemTotemBar = "图腾栏";
COE_ConfigTotemTotemOptions = "设定";
COE_ConfigTotemTotemSets = "图腾组合";
COE_OptionEnableTotemBar = "开启图腾栏";
COE_OptionHideBackdrop = "不活动时隐藏背景";
COE_OptionEnableTimers = "开启图腾计时器";
COE_OptionEnableTimerNotifications = "开启信息通知";
COE_OptionTTAlignment = "图腾注释定位";
COE_OptionDisplayMode = "图腾栏默认图腾";
COE_OptionDisplayAlignment = "计时器框体形状";
COE_OptionAdvisor = "开启图腾顾问";
COE_OptionEnableSets = "开启图腾组合";
COE_OptionEnableAutoSwitch = "PVP时自动激活图腾组合";
COE_OptionActiveSet = "动态图腾组合";
COE_OptionNewSet = "新组合";
COE_OptionDeleteSet = "删除组合";
COE_OptionConfigureSet = "配置组合";
COE_OptionStopConfigureSet = "决定";
COE_OptionCastOrderString = "施放顺序";
COE_OptionConfigureBar = "配置所需图腾";
COE_OptionFixBar = "固定图腾栏";
COE_OptionConfigureOrder = "配置图腾顺序";
COE_OptionScanTotems = "重新扫描图腾";
COE_OptionCurrentFrame = "选择要配制的图腾系";
COE_OptionDirection = "该系图腾栏弹出方向";
COE_OptionFrameMode = "该系图腾栏模式";
COE_OptionFlexCount = "该系静态按钮数量";
COE_OptionScaling = "放缩比例";
COE_OptionEnableTimerFrame = "使用单独的计时器框体";
COE_OptionGroupBars = "移动全部图腾栏";
COE_OptionOverrideRank = "设定1级图腾组合键";
COE_OptionFrameTimersOnly = "只在计时器框体中显示图腾计时";
}
-- Tooltips
-- ---------
COEUI_TOOLTIPS = {
COE_ConfigTotemTab = "显示图腾设定";
COE_ConfigHealingTab = "显示治疗设定";
COE_ConfigDebuffTab = "显示debuff设定";
COE_OptionEnableTotemBar = "开启并显示你的图腾栏";
COE_OptionHideBackdrop = "当鼠标不在图腾栏上时隐藏背景";
COE_OptionEnableTimers = "在图腾按钮中显示图腾残余时间";
COE_OptionEnableTimerNotifications = "当图腾到期或被摧毁时显示警告";
COE_OptionAdvisor = "当你或你的队友有一个可被图腾解除的debuff时提示你";
COE_OptionEnableAutoSwitch = "当目标转向一个敌方玩家时自动激活相应职业的图腾组合";
COE_OptionFixBar = "固定图腾栏以防止意外移动";
COE_OptionGroupBars = "当你移动一个图腾栏的时候,其他图腾栏也一起移动";
}
COESTR_TRINKET_TOOLTIP = "被迷惑的水之魂";
COESTR_TRINKET_TOTEM = "上古法力之泉图腾";
-- Combo boxes
-- ------------
COEUI_TTALIGN = {
{ "ANCHOR_TOPLEFT"; "左上" };
{ "ANCHOR_LEFT"; "" };
{ "ANCHOR_BOTTOMLEFT"; "左下" };
{ "ANCHOR_TOPRIGHT"; "右上" };
{ "ANCHOR_RIGHT"; "" };
{ "ANCHOR_BOTTOMRIGHT"; "右下" };
{ "DISABLED"; "不可用" };
}
COEUI_DISPLAYMODE = { "自定义", "最新施放的", "动态图腾组合" }
COEUI_DISPLAYALIGN = { "方形", "垂直", "水平" }
COEUI_PVPSETS = { "[PVP] 德鲁伊", "[PVP] 猎人", "[PVP] 法师", "[PVP] 圣骑士", "[PVP] 牧师",
"[PVP] 盗贼", "[PVP] 萨满祭司", "[PVP] 术士", "[PVP] 战士" }
COEUI_DEFAULTSET = "默认";
COEUI_OVERRIDERANK = { "无按键", "使用SHIFT", "使用ALT", "使用CTRL" };
COEUI_CURRENTFRAME = { "大地", "火焰", "", "空气" };
COEUI_DIRECTION = { "", "", "", "" };
COEUI_FRAMEMODE = { "关闭", "打开", "弹出", "隐藏" };
-- Key bindings
-- -------------
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
BINDING_NAME_COESHOWCONFIG = "显示设置菜单";
BINDING_NAME_COEBESTHEAL = "最佳等级治疗波";
BINDING_NAME_COEBATTLEHEAL = "最佳等级次级治疗波";
BINDING_NAME_COETHROWADVISED = "施放下一个建议图腾";
BINDING_NAME_COENEXTSET = "激活下一组图腾组合";
BINDING_NAME_COETHROWSET = "施放动态图腾组合";
BINDING_NAME_COERESTARTSET = "重启动态图腾组合";
BINDING_NAME_TOTEMEARTH1 = "大地图腾#1";
BINDING_NAME_TOTEMEARTH2 = "大地图腾#2";
BINDING_NAME_TOTEMEARTH3 = "大地图腾#3";
BINDING_NAME_TOTEMEARTH4 = "大地图腾#4";
BINDING_NAME_TOTEMEARTH5 = "大地图腾#5";
BINDING_NAME_TOTEMFIRE1 = "火焰图腾#1";
BINDING_NAME_TOTEMFIRE2 = "火焰图腾#2";
BINDING_NAME_TOTEMFIRE3 = "火焰图腾#3";
BINDING_NAME_TOTEMFIRE4 = "火焰图腾#4";
BINDING_NAME_TOTEMFIRE5 = "火焰图腾#5";
BINDING_NAME_TOTEMWATER1 = "水之图腾#1";
BINDING_NAME_TOTEMWATER2 = "水之图腾#2";
BINDING_NAME_TOTEMWATER3 = "水之图腾#3";
BINDING_NAME_TOTEMWATER4 = "水之图腾#4";
BINDING_NAME_TOTEMWATER5 = "水之图腾#5";
BINDING_NAME_TOTEMWATER6 = "水之图腾#6";
BINDING_NAME_TOTEMAIR1 = "空气图腾#1";
BINDING_NAME_TOTEMAIR2 = "空气图腾#2";
BINDING_NAME_TOTEMAIR3 = "空气图腾#3";
BINDING_NAME_TOTEMAIR4 = "空气图腾#4";
BINDING_NAME_TOTEMAIR5 = "空气图腾#5";
BINDING_NAME_TOTEMAIR6 = "空气图腾#6";
BINDING_NAME_TOTEMAIR7 = "空气图腾#7";
-- Key modifiers
-- --------------
COEMODIFIER_ALT = "ALT";
COEMODIFIER_ALT_SHORT = "A";
COEMODIFIER_CTRL = "CTRL";
COEMODIFIER_CTRL_SHORT = "C";
COEMODIFIER_SHIFT = "SHIFT";
COEMODIFIER_SHIFT_SHORT = "S";
COEMODIFIER_NUMPAD = "Num Pad";
COEMODIFIER_NUMPAD_SHORT = "NP";
-- Shell commands
-- ---------------
COESHELL_INTRO = "Call Of Elements的命令行指令:";
COESHELL_CONFIG = "'/coe' or '/coe config' - 显示设置窗口";
COESHELL_LIST = "'/coe list' - 显示这份列表";
COESHELL_NEXTSET = "'/coe nexset' - 切换到下一组自定义图腾组合或默认图腾组合";
COESHELL_PRIORSET = "'/coe priorset' - 切换到前一组自定义图腾组合或默认图腾组合";
COESHELL_SET = "'/coe set <名字>' - 切换到指定名字的图腾组合。";
COESHELL_RESTARTSET = "'/coe restartset' - 你下次施放图腾组合时重置所有图腾";
COESHELL_RESET = "'/coe reset' - 重置所有计时器和动态图腾组合";
COESHELL_RESETFRAMES = "'/coe resetframes' - 移动各系图腾栏到屏幕中央";
COESHELL_RESETORDERING = "'/coe resetordering' - 重置你的图腾栏顺序";
COESHELL_RELOAD = "'/coe reload' - 重置所有图腾和图腾组合";
COESHELL_MACRONOTE = "下面的命令只有当你把它作为宏拖曳到动作条上时才会起作用:";
COESHELL_THROWSET = "'/coe throwset' - 施放动态图腾组合";
COESHELL_ADVISED = "'/coe advised' - 施放下一个建议图腾";
end
+244
View File
@@ -0,0 +1,244 @@
--[[ ----------------------------------------------------------------
G E R M A N
-------------------------------------------------------------------]]
if( GetLocale() == "deDE" ) then
-- Errors
-- -------
COESTR_NOTASHAMAN = "Ihr seid kein Schamane. Entlade Call Of Elements";
COESTR_NOTOTEM = "Noch kein Totem verf\195\188gbar";
COESTR_UI_NOTASSIGNED = "<Kein Text zugewiesen>";
COESTR_INVALIDELEMENT = "Unbekannter Elementname im Totem gefunden: ";
-- Notifications
-- --------------
COESTR_TOTEMWARNING = "%s l\195\164uft in %d Sekunden ab";
COESTR_TOTEMEXPIRED = "%s ist abgelaufen";
COESTR_TOTEMDESTROYED = "%s wurde ZERST\195\150RT";
COESTR_SWITCHTOSET = "%s Totemset aktiviert";
COESTR_FIXEDSETS = "Die Lokalisierung der Elementreihenfolgen Eurer Totemsets wurden korrigiert.";
COESTR_UDATEDSAVED = "Gespeicherte Einstellungen aktualisiert auf Version ";
COESTR_FIXEDDISPLAY = "Es wurden Fehler in den gespeicherten Einstellungen behoben.";
COESTR_TOTEMSRELOADED = "Totems wurden neu geladen";
COESTR_RESTARTINGSET = "Aktives Set wurde erneuert";
COESTR_RESET = "Timer wurden zur\195\188ckgesetzt";
COESTR_HEALCOOLDOWN = " ist noch nicht bereit!";
COESTR_NOHEALING = "Keine Heilung n\195\182tig";
COESTR_HEALING = "Heile %s mit %s (Rang %d)";
COESTR_HEALLOWERRANK = "Nicht genug Mana. Benutze stattdessen Rang %d";
COESTR_HEALOOM = "Kein Mana mehr!";
-- String patterns
-- ----------------
COESTR_SCANTOTEMS = "Totem";
COESTR_TOTEMTOOLS = "Werkzeuge: (.*)totem";
COESTR_TOTEMMANA = "(%d*) Mana";
COESTR_TOTEMRANK = "Rang (%d)";
COESTR_MINUTEDURATION = "(%d[%.,]%d%d) Min";
COESTR_MINUTEDURATION_INT = "(%d) Min";
COESTR_SECDURATION = "(%d%d?) Sek";
COESTR_CASTBYNAME = "%(Rang (%d)%)";
COESTR_TOTEMDAMAGE = { ".+ trifft (Totem .-) ?%u*%.? kritisch f\195\188r (%d+).",
".+ trifft (Totem .-) ?%u*%.? f\195\188r (%d+)." };
COESTR_TOTEMHEALTH = { "(%d*) Punkt%(en%) Gesundheit"; "(%d*) Gesundheit" };
COESTR_SHOCKSPELL = "(%a*schock)";
COESTR_HEALINGWAVE = "Welle der Heilung";
COESTR_LESSERWAVE = "Geringe Welle der Heilung";
COESTR_MINAMOUNT = "(%d*) bis";
COESTR_MAXAMOUNT = "bis (%d*)";
COESTR_TRINKET = "^.*%[Entz\195\188ckter Wassergeist%].*$";
-- Totem Advisor
-- --------------
COESTR_POISON = "Gift";
COESTR_DISEASE = "Krankheit";
COESTR_TOTEMPOISON = "Totem der Giftreinigung";
COESTR_TOTEMDISEASE = "Totem der Krankheitsreinigung";
COESTR_TOTEMTREMOR = "Totem des Erdsto\195\159es";
COESTR_CLEANSINGTOTEM = "Jetzt %s werfen!";
COESTR_TREMOR = {
"Schlaf", "Terrify", "Psychic Scream", "Mind Control", "Dr\195\182hnendes Gebr\195\188ll", "Fear",
"Intimidating Shout", "Panic", "Terrifying Screech", "Seduction",
"Howl of Terror", "Einsch\195\188chterndes Knurren"
}
-- Tools
-- ---------
COESTR_TOTEMTOOLS_EARTH = "Erd";
COESTR_TOTEMTOOLS_FIRE = "Feuer";
COESTR_TOTEMTOOLS_WATER = "Wasser";
COESTR_TOTEMTOOLS_AIR = "Luft";
-- Elements
-- ---------
COESTR_ELEMENT_EARTH = "Erde";
COESTR_ELEMENT_FIRE = "Feuer";
COESTR_ELEMENT_WATER = "Wasser";
COESTR_ELEMENT_AIR = "Luft";
-- UI elements
-- ------------
COEUI_STRINGS = {
COE_ConfigClose = "Schlie\195\159en";
COE_ConfigTotemTabPanel = "Totemoptionen";
COE_ConfigHealingTabPanel = "Heilungsoptionen";
COE_ConfigDebuffTabPanel = "Debuff-Optionen";
COE_ConfigTotemTotemBar = "Totemleisten";
COE_ConfigTotemTotemOptions = "Optionen";
COE_ConfigTotemTotemSets = "Totem Sets";
COE_OptionEnableTotemBar = "Totemleiste aktivieren";
COE_OptionHideBackdrop = "Hintergrund verbergen wenn inaktiv";
COE_OptionEnableTimers = "Totem Timer aktivieren";
COE_OptionEnableTimerNotifications = "Warnungen anzeigen";
COE_OptionTTAlignment = "Tooltip Ausrichtung";
COE_OptionDisplayMode = "Ankerbutton";
COE_OptionDisplayAlignment = "Anordnung";
COE_OptionAdvisor = "Totemvorschl\195\164ge aktivieren";
COE_OptionEnableSets = "Totem Sets aktivieren";
COE_OptionEnableAutoSwitch = "Sets im PVP automatisch wechseln";
COE_OptionActiveSet = "Aktives Totemset";
COE_OptionNewSet = "Neues Set";
COE_OptionDeleteSet = "Set l\195\182schen";
COE_OptionConfigureSet = "Set konfigurieren";
COE_OptionStopConfigureSet = "OK";
COE_OptionCastOrderString = "Reihenfolge";
COE_OptionConfigureBar = "Totems konfigurieren";
COE_OptionFixBar = "Totemleisten fixieren";
COE_OptionConfigureOrder = "Totemreihenfolge";
COE_OptionScanTotems = "Totems neu laden";
COE_OptionCurrentFrame = "Leiste konfigurieren";
COE_OptionDirection = "Ausrichtung";
COE_OptionFrameMode = "Modus";
COE_OptionFlexCount = "Statische Buttons";
COE_OptionScaling = "Skalierung";
COE_OptionEnableTimerFrame = "Separates Timerfenster anzeigen";
COE_OptionOverrideRank = "Rang 1 Taste";
COE_OptionGroupBars = "Leisten als Gruppe ziehen";
COE_OptionFrameTimersOnly = "Timer NUR im Timerfenster anzeigen";
}
-- Tooltips
-- ---------
COEUI_TOOLTIPS = {
COE_ConfigTotemTab = "Zeigt die Totemoptionen an";
COE_ConfigHealingTab = "Zeigt die Heilungs-Optionen an";
COE_ConfigDebuffTab = "Zeigt die Debuff-Optionen an";
COE_OptionEnableTotemBar = "Aktiviert die Totemleiste,\ndie alle verf\195\188gbaren Totems\nzur schnellen Benutzung anzeigt";
COE_OptionHideBackdrop = "Verbirgt den Hintergrund wenn sich\ndie Maus nicht über der Totemleiste befindet";
COE_OptionEnableTimers = "Aktiviert die Anzeige der noch\nverbleibenden Totemzeit in den Totembuttons";
COE_OptionEnableTimerNotifications = "Zeigt Warnungen an, wenn ein Totem\nabl\195\164uft oder zerst\195\182rt wird";
COE_OptionAdvisor = "Benachrichtigt Euch wenn Ihr oder ein Mitglied\nEurer Gruppe einen Debuff hat,\nder mit einem eurer Totems heilbar ist";
COE_OptionEnableAutoSwitch = "Aktiviert automatisch das passende Totemset,\nwenn ein feindlicher Spieler angew\195\164hlt wird";
COE_OptionFixBar = "Fixiert die Totemleiste, so dass sie nicht mehr\nversehentlich verschoben werden kann";
COE_OptionGroupBars = "Wenn Ihr eine Leiste zieht,\nfolgen die anderen Leisten der Bewegung";
}
COESTR_TRINKET_TOOLTIP = "Entz\195\188ckter Wassergeist";
COESTR_TRINKET_TOTEM = "Uraltes Totem der Manaquelle";
-- Combo boxes
-- ------------
COEUI_TTALIGN = {
{ "ANCHOR_TOPLEFT"; "Oben links" };
{ "ANCHOR_LEFT"; "Links" };
{ "ANCHOR_BOTTOMLEFT"; "Unten links" };
{ "ANCHOR_TOPRIGHT"; "Oben rechts" };
{ "ANCHOR_RIGHT"; "Rechts" };
{ "ANCHOR_BOTTOMRIGHT"; "Unten rechts" };
{ "DISABLED"; "Deaktiviert" };
}
COEUI_DISPLAYMODE = { "Benutzerdefiniert", "Nur Timer", "Aktives Set" }
COEUI_DISPLAYALIGN = { "Box", "Vertikal", "Horizontal" }
COEUI_PVPSETS = { "[PVP] Druide", "[PVP] Hexer", "[PVP] J\195\164ger", "[PVP] Krieger", "[PVP] Magier",
"[PVP] Paladin", "[PVP] Priester", "[PVP] Schamane", "[PVP] Schurke" }
COEUI_DEFAULTSET = "Standardset";
COEUI_OVERRIDERANK = { "Keine Taste", "Mit SHIFT", "Mit ALT", "Mit STRG" };
COEUI_CURRENTFRAME = { "Erde", "Feuer", "Wasser", "Luft" };
COEUI_DIRECTION = { "Hoch", "Runter", "Links", "Rechts" };
COEUI_FRAMEMODE = { "Geschlossen", "Offen", "Flex", "Unsichtbar" };
-- Key bindings
-- -------------
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
BINDING_NAME_COESHOWCONFIG = "Konfigurationsdialog anzeigen";
BINDING_NAME_COEBESTHEAL = "Beste Heilung";
BINDING_NAME_COEBATTLEHEAL = "Kampf-Heilung";
BINDING_NAME_COETHROWADVISED = "Vorgeschlagenen Totem werfen";
BINDING_NAME_COENEXTSET = "Zum n\195\164chsten Totemset wechseln ";
BINDING_NAME_COETHROWSET = "Das aktive Totemset werfen";
BINDING_NAME_COERESTARTSET = "Das aktive Totemset erneuern";
BINDING_NAME_TOTEMEARTH1 = "Erdtotem #1";
BINDING_NAME_TOTEMEARTH2 = "Erdtotem #2";
BINDING_NAME_TOTEMEARTH3 = "Erdtotem #3";
BINDING_NAME_TOTEMEARTH4 = "Erdtotem #4";
BINDING_NAME_TOTEMEARTH5 = "Erdtotem #5";
BINDING_NAME_TOTEMFIRE1 = "Feuertotem #1";
BINDING_NAME_TOTEMFIRE2 = "Feuertotem #2";
BINDING_NAME_TOTEMFIRE3 = "Feuertotem #3";
BINDING_NAME_TOTEMFIRE4 = "Feuertotem #4";
BINDING_NAME_TOTEMFIRE5 = "Feuertotem #5";
BINDING_NAME_TOTEMWATER1 = "Wassertotem #1";
BINDING_NAME_TOTEMWATER2 = "Wassertotem #2";
BINDING_NAME_TOTEMWATER3 = "Wassertotem #3";
BINDING_NAME_TOTEMWATER4 = "Wassertotem #4";
BINDING_NAME_TOTEMWATER5 = "Wassertotem #5";
BINDING_NAME_TOTEMWATER6 = "Wassertotem #6";
BINDING_NAME_TOTEMAIR1 = "Lufttotem #1";
BINDING_NAME_TOTEMAIR2 = "Lufttotem #2";
BINDING_NAME_TOTEMAIR3 = "Lufttotem #3";
BINDING_NAME_TOTEMAIR4 = "Lufttotem #4";
BINDING_NAME_TOTEMAIR5 = "Lufttotem #5";
BINDING_NAME_TOTEMAIR6 = "Lufttotem #6";
BINDING_NAME_TOTEMAIR7 = "Lufttotem #7";
-- Key modifiers
-- --------------
COEMODIFIER_ALT = "ALT";
COEMODIFIER_ALT_SHORT = "A";
COEMODIFIER_CTRL = "STRG";
COEMODIFIER_CTRL_SHORT = "ST";
COEMODIFIER_SHIFT = "SHIFT";
COEMODIFIER_SHIFT_SHORT = "S";
COEMODIFIER_NUMPAD = "Num Pad";
COEMODIFIER_NUMPAD_SHORT = "NP";
-- Shell commands
-- ---------------
COESHELL_INTRO = "Verf\195\188gbare Befehle f\195\188r Call Of Elements:";
COESHELL_CONFIG = "'/coe' oder '/coe config' - Zeigt den Konfigurationsdialog an";
COESHELL_LIST = "'/coe list' - Zeigt diese Liste an";
COESHELL_NEXTSET = "'/coe nexset' - Wechselt zum n\195\164chsten Benutzerset oder zum Standardset";
COESHELL_PRIORSET = "'/coe priorset' - Wechselt zum vorherigen Benutzerset oder zum Standardset";
COESHELL_SET = "'/coe set <name>' - Wechselt zum Set mit dem angegebenen Namen. Gro\195\159-/Kleinschreibung ist wichtig";
COESHELL_RESTARTSET = "'/coe restartset' - Totems werden neu geworfen, wenn das aktive Set das n\195\164chste Mal geworfen wird";
COESHELL_RESET = "'/coe reset' - Setzt alle Timer und das aktive Set zurück";
COESHELL_RESETFRAMES = "'/coe resetframes' - Alle Leisten kehren zur Mitte des Bildschirms zurück";
COESHELL_RESETORDERING = "'/coe resetordering' - Setzt die Reihenfolgen der Totems zurück";
COESHELL_RELOAD = "'/coe reload' - Lädt alle Totems und Sets neu";
COESHELL_MACRONOTE = "Die folgenden Befehle funktionieren nur als Makros auf einem Action Button:";
COESHELL_THROWSET = "'/coe throwset' - Wirft den n\195\164chsten Totem des aktiven Totemsets";
COESHELL_ADVISED = "'/coe advised' - Wirft den n\195\164chsten vorgeschlagenen Totem";
end
+261
View File
@@ -0,0 +1,261 @@
--[[ ----------------------------------------------------------------
F R E N C H by mcaoua
-------------------------------------------------------------------]]
if( GetLocale() == "frFR" ) then
-- Errors
-- -------
COESTR_NOTASHAMAN = "Vous n'\195\70tes pas un chaman. Call Of Elements d\195\169sactiv\195\169";
COESTR_NOTOTEM = "Aucun totem n'est disponible";
COESTR_UI_NOTASSIGNED = "<Pas assign\195\169>";
COESTR_INVALIDELEMENT = "El\195\169ment invalide dans le totem: ";
-- Notifications
-- --------------
COESTR_TOTEMWARNING = "%s expire dans %d secondes";
COESTR_TOTEMEXPIRED = "%s a expir\195\169";
COESTR_TOTEMDESTROYED = "%s a \195\169t\195\169 DETRUIT";
COESTR_SWITCHTOSET = "%s set activ\195\169";
COESTR_FIXEDSETS = "Corrig\195\169 l'ordre de cast des sets.";
COESTR_UDATEDSAVED = "Param\195\168tres sauvegard\195\169s actualis\195\169s pour cette version ";
COESTR_FIXEDDISPLAY = "Corrig\195\169 les erreurs dans les param\195\168tres.";
COESTR_TOTEMSRELOADED = "Totems relanc\195\169";
COESTR_RESTARTINGSET = "Modifi\195\169 le set actif ";
COESTR_RESET = "Timers remis à z\195\169ro";
COESTR_HEALCOOLDOWN = " n'est pas encore pr\195\170t!";
COESTR_NOHEALING = "Pas besoin de soins";
COESTR_HEALING = "Soigne %s avec %s (Rang %d)";
COESTR_HEALLOWERRANK = "Pas assez de mana. Utilise le rang %d";
COESTR_HEALOOM = "Pas assez de mana!";
-- String patterns
-- ----------------
COESTR_SCANTOTEMS = "Totem";
COESTR_TOTEMTOOLS = "Outils..:.Totem.(.*)";
COESTR_TOTEMMANA = "Mana.:.(%d*)";
COESTR_TOTEMRANK = "Rang (%d)";
COESTR_MINUTEDURATION = "(%d%.%d%d) min";
COESTR_MINUTEDURATION_INT = "(%d) min";
COESTR_SECDURATION = "(%d%d?) sec";
COESTR_CASTBYNAME = "%(Rang (%d)%)";
COESTR_TOTEMDAMAGE = { ".+ [crh]+touche (.+ Totem) ?%u* pour (%d+).*" };
COESTR_TOTEMHEALTH = { "(%d*) points de vie" };
COESTR_SHOCKSPELL = "(Horion de %a*)";
COESTR_HEALINGWAVE = "Vague de soins";
COESTR_LESSERWAVE = "Vague de soins inf\195\169rieurs";
COESTR_MINAMOUNT = "(%d*).\195\160";
COESTR_MAXAMOUNT = "\195\160.(%d*)";
COESTR_TRINKET = "^.*%[Esprit de l\039eau amoureux%].*$";
-- Totem Advisor
-- --------------
COESTR_POISON = "Poison";
COESTR_DISEASE = "Maladie"
COESTR_TOTEMPOISON = "Totem de Purification du poison";
COESTR_TOTEMDISEASE = "Totem de Purification des maladies";
COESTR_TOTEMTREMOR = "Totem de S\195\169isme";
COESTR_CLEANSINGTOTEM = "Lance %s maintenant!";
COESTR_TREMOR = {
"Sommeil", "Terrifier", "Cri psychique", "Contr\195\180le mental", "Rugissement", "Peur",
"Cri d'intimidation", "Panique", "Hurlement strident", "S\195\169duction",
"Hurlement de terreur", "Grondement d'intimidation", "L\195\169thargie cristalline"
}
-- Tools
-- ---------
COESTR_TOTEMTOOLS_EARTH = "de terre";
COESTR_TOTEMTOOLS_FIRE = "de feu";
COESTR_TOTEMTOOLS_WATER = "d'eau";
COESTR_TOTEMTOOLS_AIR = "d'air";
-- Elements
-- ---------
COESTR_ELEMENT_EARTH = "Terre";
COESTR_ELEMENT_FIRE = "Feu";
COESTR_ELEMENT_WATER = "Eau";
COESTR_ELEMENT_AIR = "Air";
-- UI elements
-- ------------
COEUI_STRINGS = {
COE_ConfigClose = "Fermer";
COE_ConfigTotemTabPanel = "Options Totem";
COE_ConfigHealingTabPanel = "Options Soins";
COE_ConfigDebuffTabPanel = "Options Debuff";
COE_ConfigTotemTotemBar = "Barres";
COE_ConfigTotemTotemOptions = "Options";
COE_ConfigTotemTotemSets = "Sets";
COE_OptionEnableTotemBar = "Activer";
COE_OptionHideBackdrop = "Cacher le fond quand inactif";
COE_OptionEnableTimers = "Activer l'affichage des dur\195\169es (Timers)";
COE_OptionEnableTimerNotifications = "Activer les notifications";
COE_OptionTTAlignment = "Alignement Tooltip";
COE_OptionDisplayMode = "Bouton d'ancre";
COE_OptionDisplayAlignment = "Alignement";
COE_OptionAdvisor = "Activer l'Advisor";
COE_OptionEnableSets = "Activer les sets";
COE_OptionEnableAutoSwitch = "Changement automatique en PVP";
COE_OptionActiveSet = "Activer set";
COE_OptionNefdwSet = "Nouveau set";
COE_OptionDeleteSet = "Effacer set";
COE_OptionConfigureSet = "Configurer set";
COE_OptionStopConfigureSet = "OK";
COE_OptionCastOrderString = "Ordre de cast";
COE_OptionConfigureBar = "Configurer Totems";
COE_OptionFixBar = "V\195\169rouiller la position";
COE_OptionConfigureOrder = "Configurer Ordre";
COE_OptionScanTotems = "Relancer";
COE_OptionCurrentFrame = "Configurer Barre";
COE_OptionDirection = "Direction";
COE_OptionFrameMode = "Mode";
COE_OptionFlexCount = "Boutons Statiques";
COE_OptionScaling = "Echelle";
COE_OptionEnableTimerFrame = "Affichage des dur\195\169es dans des boutons s\195\169par\195\169s";
COE_OptionGroupBars = "D\195\169placement group\195\169";
COE_OptionOverrideRank = "Forcer le Rang 1";
COE_OptionFrameTimersOnly = "Montrer les dur\195\169es QUE dans les boutons s\195\169par\195\169s";
}
-- Tooltips
-- ---------
COEUI_TOOLTIPS = {
COE_ConfigTotemTab = "Montrer les option de Totem";
COE_ConfigHealingTab = "Montrer les options de soins";
COE_ConfigDebuffTab = "Montrer les options de debuff";
COE_OptionEnableTotemBar = "Activer et afficher la barre qui contient\nles totems disponibles que vous pouvez utiliser";
COE_OptionHideBackdrop = "Cache le fond lorsque la souris\nn'est pas sur la barre";
COE_OptionEnableTimers = "Active l'affichage du temps restant des totems";
COE_OptionEnableTimerNotifications = "Affiche un avertissement lorsqu'un\ntotem expire ou est d\195\169truit";
COE_OptionAdvisor = "Affiche un message lorsqu'un debuff peut \195\170tre enlev\195\169 par un de vos totems";
COE_OptionEnableAutoSwitch = "Active automatiquement le set en fontion\nde la classe de l'ennemi cibl\195\169";
COE_OptionFixBar = "V\195\169rouille la position de la barre\nafin d'\195\169viter un d\195\169placement accidentel";
COE_OptionGroupBars = "Lorsque vous d\195\169placer une barre,\nles autres sont d\195\169plac\195\169es en m\195\170me temps";
}
COESTR_TRINKET_TOOLTIP = "Esprit de l\039eau amoureux";
COESTR_TRINKET_TOTEM = "Ressort Antique De Mana";
-- Combo boxes
-- ------------
COEUI_TTALIGN = {
{ "ANCHOR_TOPLEFT"; "Haut gauche" };
{ "ANCHOR_LEFT"; "Gauche" };
{ "ANCHOR_BOTTOMLEFT"; "Bas gauche" };
{ "ANCHOR_TOPRIGHT"; "Haut droite" };
{ "ANCHOR_RIGHT"; "Droite" };
{ "ANCHOR_BOTTOMRIGHT"; "Bas droite" };
{ "DISABLED"; "D\195\169sactiv\195\169" };
}
COEUI_DISPLAYMODE = { "Customize", "Timers", "Set actif" }
COEUI_DISPLAYALIGN = { "Box", "Vertical", "Horizontal" }
COEUI_PVPSETS = { "[PVP] Druide", "[PVP] Chasseur", "[PVP] Mage", "[PVP] Paladin", "[PVP] Pr\195\170tre",
"[PVP] Voleur", "[PVP] Chaman", "[PVP] D\195\169moniste", "[PVP] Guerrier" }
COEUI_DEFAULTSET = "D\195\169faut";
COEUI_OVERRIDERANK = { "Aucune", "Avec SHIFT", "Avec ALT", "Avec CTRL" };
COEUI_CURRENTFRAME = { "Terre", "Feu", "Eau", "Air" };
COEUI_DIRECTION = { "Haut", "Bas", "Gauche", "Droite" };
COEUI_FRAMEMODE = { "Ferm\195\169", "Ouvert", "Flex", "Cach\195\169" };
-- Key bindings
-- -------------
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
BINDING_NAME_COESHOWCONFIG = "Afficher configuration";
BINDING_NAME_COEBESTHEAL = "Meilleur soin";
BINDING_NAME_COEBATTLEHEAL = "BattleHeal";
BINDING_NAME_COETHROWADVISED = "Lancer le Totem propos\195\169";
BINDING_NAME_COENEXTSET = "Activer le set suivant";
BINDING_NAME_COETHROWSET = "Lancer le set actif";
BINDING_NAME_COERESTARTSET = "Relancer le set actif";
BINDING_NAME_TOTEMEARTH1 = "Totem de terre #1";
BINDING_NAME_TOTEMEARTH2 = "Totem de terre #2";
BINDING_NAME_TOTEMEARTH3 = "Totem de terre #3";
BINDING_NAME_TOTEMEARTH4 = "Totem de terre #4";
BINDING_NAME_TOTEMEARTH5 = "Totem de terre #5";
BINDING_NAME_TOTEMFIRE1 = "Totem de feu #1";
BINDING_NAME_TOTEMFIRE2 = "Totem de feu #2";
BINDING_NAME_TOTEMFIRE3 = "Totem de feu #3";
BINDING_NAME_TOTEMFIRE4 = "Totem de feu #4";
BINDING_NAME_TOTEMFIRE5 = "Totem de feu #5";
BINDING_NAME_TOTEMWATER1 = "Totem d'eau #1";
BINDING_NAME_TOTEMWATER2 = "Totem d'eau #2";
BINDING_NAME_TOTEMWATER3 = "Totem d'eau #3";
BINDING_NAME_TOTEMWATER4 = "Totem d'eau #4";
BINDING_NAME_TOTEMWATER5 = "Totem d'eau #5";
BINDING_NAME_TOTEMWATER6 = "Totem d'eau #6";
BINDING_NAME_TOTEMAIR1 = "Totem d'air #1";
BINDING_NAME_TOTEMAIR2 = "Totem d'air #2";
BINDING_NAME_TOTEMAIR3 = "Totem d'air #3";
BINDING_NAME_TOTEMAIR4 = "Totem d'air #4";
BINDING_NAME_TOTEMAIR5 = "Totem d'air #5";
BINDING_NAME_TOTEMAIR6 = "Totem d'air #6";
BINDING_NAME_TOTEMAIR7 = "Totem d'air #7";
-- Key modifiers
-- --------------
COEMODIFIER_ALT = "ALT";
COEMODIFIER_ALT_SHORT = "A";
COEMODIFIER_CTRL = "CTRL";
COEMODIFIER_CTRL_SHORT = "C";
COEMODIFIER_SHIFT = "SHIFT";
COEMODIFIER_SHIFT_SHORT = "S";
COEMODIFIER_NUMPAD = "Num Pad";
COEMODIFIER_NUMPAD_SHORT = "NP";
-- Shell commands
-- ---------------
COESHELL_INTRO = "Commandes disponibles pour Call Of Elements:";
COESHELL_CONFIG = "'/coe' or '/coe config' - Affiche l'\195\169cran de configuration";
COESHELL_LIST = "'/coe list' - Affiche cette liste";
COESHELL_NEXTSET = "'/coe nexset' - Active le prochain set ou au set par d\195\169faut";
COESHELL_PRIORSET = "'/coe priorset' -Active le set pr\195\169c\195\169dent ou au set par d\195\169faut";
COESHELL_SET = "'/coe set <name>' - Active le set sp\195\169cifi\195\169. <name> est case-sensitive";
COESHELL_RESTARTSET = "'/coe restartset' - Au prochain lancement du set, tous les totems seront relanc\195\169s";
COESHELL_RESET = "'/coe reset' - Initialisation des timers et du set actif";
COESHELL_RESETFRAMES = "'/coe resetframes' - Affiche toutes les barres au centre de l'\195\169cran";
COESHELL_RESETORDERING = "'/coe resetordering' - Initialise l'ordre des totems";
COESHELL_RELOAD = "'/coe reload' - Recharge tous les totems et les sets";
COESHELL_MACRONOTE = "les commandes suivantes ne fonctionnent qu'avec des macros dans les barres d'action:";
COESHELL_THROWSET = "'/coe throwset' - Lance le set actif";
COESHELL_ADVISED = "'/coe advised' - lance le totem propos\195\169";
end
-- ß \195\159
-- ö \195\182
-- é \195\169
-- â \195\162
-- ä \195\164
-- à \195\160
-- ç \195\167
-- ê \195\170
-- ë \195\171
-- è \195\168
-- ï \195\175
-- î \195\174
-- ô \195\180
-- ö \195\182
-- ù \195\185
-- ß \195\159
-- DEFAULT_CHAT_FRAME:AddMessage(element);
-- COE:DebugMessage( "mcaoua:"..);
+246
View File
@@ -0,0 +1,246 @@
--[[ ----------------------------------------------------------------
K O R E A N
-------------------------------------------------------------------]]
if( GetLocale() == "koKR" ) then
-- Errors
-- -------
COESTR_NOTASHAMAN = "주술사가 아닙니다. Call of Elements를 끕니다.";
COESTR_NOTOTEM = "아직 사용가능한 토템이 없습니다.";
COESTR_UI_NOTASSIGNED = "<할당된 텍스트가 없습니다>";
COESTR_INVALIDELEMENT = "토템에서 유효하지 않은 요소가 있습니다.: ";
-- Notifications
-- --------------
COESTR_TOTEMWARNING = "%s|1이;가; %d초 남았습니다.";
COESTR_TOTEMEXPIRED = "%s|1이;가; 사라졌습니다.";
COESTR_TOTEMDESTROYED = "%s|1이;가; 파괴되었습니다.";
COESTR_SWITCHTOSET = "%s 토템 셋이 활성화되었습니다.";
COESTR_FIXEDSETS = "토템셋의 시전순서 배치가 정정되었습니다.";
COESTR_UDATEDSAVED = "저장된 변수가 업데이트 되었습니다. 버전 ";
COESTR_FIXEDDISPLAY = "SavedVariables에 있던 에러가 정정되었습니다.";
COESTR_TOTEMSRELOADED = "토템을 다시 읽어들였습니다.";
COESTR_RESTARTINGSET = "활성화셋을 재시작했습니다.";
COESTR_RESET = "타이머를 초기화하였습니다.";
COESTR_HEALCOOLDOWN = " - 아직 준비되지 않았습니다!";
COESTR_NOHEALING = "치유할 필요가 없습니다.";
COESTR_HEALING = "%s에게 %s(%d레벨)|1을;를; 시전합니다.";
COESTR_HEALLOWERRANK = "마나가 충분하지 않습니다. 대신에 %d레벨을 사용하십시오.";
COESTR_HEALOOM = "마나가 부족합니다!";
-- String patterns
-- ----------------
COESTR_SCANTOTEMS = "토템";
COESTR_TOTEMTOOLS = "도구: (.+)의 토템";
COESTR_TOTEMMANA = "마나 (%d*)";
COESTR_TOTEMRANK = "(%d) 레벨";
COESTR_MINUTEDURATION = "(%d%.%d%d)분";
COESTR_MINUTEDURATION_INT = "(%d)분";
COESTR_SECDURATION = "(%d%d?)초";
COESTR_CASTBYNAME = "%((%d) 레벨%)";
COESTR_TOTEMDAMAGE = { ".+|1이;가; (.+ 토템) ?%u*|1을;를; 공격하여 (%d+)의 .*[치명상피해을를] 입혔습니다.*", ".+|1이;가; .+|1으로;로; (.+ 토템) ?%u*에게 (%d+)의 .*[치명상피해을를] 입혔습니다.*" };
COESTR_TOTEMHEALTH = { "생명력 (%d*)", "(%d*)의 생명력" };
COESTR_SHOCKSPELL = "(.* 충격)";
COESTR_HEALINGWAVE = "치유의 물결";
COESTR_LESSERWAVE = "하급 치유의 물결";
COESTR_MINAMOUNT = "(%d*)~";
COESTR_MAXAMOUNT = "~(%d*)";
COESTR_TRINKET = "^.*%[사로잡힌 물의 정령%].*$";
-- Totem Advisor
-- --------------
COESTR_POISON = "";
COESTR_DISEASE = "질병";
COESTR_TOTEMPOISON = "독 정화 토템";
COESTR_TOTEMDISEASE = "질병 정화 토템";
COESTR_TOTEMTREMOR = "진동의 토템";
COESTR_CLEANSINGTOTEM = "%s - 지금 사용 하세요!";
COESTR_TREMOR = {
"수면", "공포", "영혼의 절규", "정신 지배", "우레와같은 울부짖음",
"위협의 외침", "공황", "공포의 비명소리", "현혹",
"공포의 울부짖음", "위협의 포효", "수정의 자장가", "드루이드의 동면"
}
-- Tools
-- ---------
COESTR_TOTEMTOOLS_EARTH = "대지";
COESTR_TOTEMTOOLS_FIRE = "";
COESTR_TOTEMTOOLS_WATER = "";
COESTR_TOTEMTOOLS_AIR = "바람";
-- Elements
-- ---------
COESTR_ELEMENT_EARTH = "대지";
COESTR_ELEMENT_FIRE = "";
COESTR_ELEMENT_WATER = "";
COESTR_ELEMENT_AIR = "바람";
-- UI elements
-- ------------
COEUI_STRINGS = {
COE_ConfigClose = "닫기";
COE_ConfigTotemTabPanel = "토템 옵션";
COE_ConfigHealingTabPanel = "치유 옵션";
COE_ConfigDebuffTabPanel = "디버프 옵션";
COE_ConfigTotemTotemBar = "토템바";
COE_ConfigTotemTotemOptions = "옵션";
COE_ConfigTotemTotemSets = "토템셋";
COE_OptionEnableTotemBar = "토템바 켜기";
COE_OptionHideBackdrop = "비활성화 상태일 때 배경 숨기기";
COE_OptionEnableTimers = "토템 타이머 켜기";
COE_OptionEnableTimerNotifications = "알림 켜기";
COE_OptionTTAlignment = "툴팁 정렬";
COE_OptionDisplayMode = "앵커 버튼";
COE_OptionDisplayAlignment = "버튼 정렬";
COE_OptionAdvisor = "토템 도우미 켜기";
COE_OptionEnableSets = "토템셋 켜기";
COE_OptionEnableAutoSwitch = "PVP시 토템셋 자동전환";
COE_OptionActiveSet = "토템셋 활성화";
COE_OptionNewSet = "새 토템셋";
COE_OptionDeleteSet = "토템셋 삭제";
COE_OptionConfigureSet = "토템셋 설정";
COE_OptionStopConfigureSet = "확인";
COE_OptionCastOrderString = "시전 순저";
COE_OptionConfigureBar = "토템 설정";
COE_OptionFixBar = "토템바 위치 고정";
COE_OptionConfigureOrder = "순서 설정";
COE_OptionScanTotems = "토템 다시 읽기";
COE_OptionCurrentFrame = "바 설정";
COE_OptionDirection = "방향";
COE_OptionFrameMode = "바 모드";
COE_OptionFlexCount = "고정 버튼";
COE_OptionScaling = "크기";
COE_OptionEnableTimerFrame = "타이머 프레임을 분리 상태로 보여주기";
COE_OptionGroupBars = "그룹으로 바 움직이기";
COE_OptionOverrideRank = "1레벨 사용";
COE_OptionFrameTimersOnly = "타이머를 타이머 프레임에만 나타내기";
}
-- Tooltips
-- ---------
COEUI_TOOLTIPS = {
COE_ConfigTotemTab = "토템 옵션을 보여줍니다.";
COE_ConfigHealingTab = "치유 옵션을 보여줍니다.";
COE_ConfigDebuffTab = "디버프 옵션을 보여줍니다.";
COE_OptionEnableTotemBar = "토템바를 보이도록 설정합니다.";
COE_OptionHideBackdrop = "마우스가 토템바위에 없을 때 배경을 감춥니다.";
COE_OptionEnableTimers = "토템버튼 안쪽에 토템의 남은 시간을 표시합니다.";
COE_OptionEnableTimerNotifications = "토템의 유효시간이 지나거나 파괴되었을 때 경고를 표시합니다.";
COE_OptionAdvisor = "파티나 공격대에 토템으로 치유할 수 있는 디버프에 걸린 플레이어가 있을 경우 알림을 표시합니다.";
COE_OptionEnableAutoSwitch = "적 플레이어에 따라 자동으로 직업 토템셋을 변경합니다.";
COE_OptionFixBar = "토템바의 위치를 고정시킵니다. 이 기능은 갑자기 토템바를 드래그하는 경우를 방지합니다.";
COE_OptionGroupBars = "하나의 바를 움직이면 다른 바들도 같이 움직입니다.";
}
COESTR_TRINKET_TOOLTIP = "사로잡힌 물의 정령";
COESTR_TRINKET_TOTEM = "고대의 마나셈 토템";
-- Combo boxes
-- ------------
COEUI_TTALIGN = {
{ "ANCHOR_TOPLEFT"; "좌 상단" };
{ "ANCHOR_LEFT"; "" };
{ "ANCHOR_BOTTOMLEFT"; "좌 하단" };
{ "ANCHOR_TOPRIGHT"; "우 상단" };
{ "ANCHOR_RIGHT"; "" };
{ "ANCHOR_BOTTOMRIGHT"; "우 하단" };
{ "DISABLED"; "끄기" };
}
COEUI_DISPLAYMODE = { "사용자 설정", "타이머만", "활성화된 셋" }
COEUI_DISPLAYALIGN = { "상자", "세로", "가로" }
COEUI_PVPSETS = { "[PVP] 드루이드", "[PVP] 사냥꾼", "[PVP] 마법사", "[PVP] 성기사", "[PVP] 사제",
"[PVP] Rogue", "[PVP] 주술사", "[PVP] 흑마법사", "[PVP] 전사" }
COEUI_DEFAULTSET = "Default";
COEUI_OVERRIDERANK = { "키없음", "SHIFT키 사용", "ALT키 사용", "CTRL키 사용" };
COEUI_CURRENTFRAME = { "대지", "", "", "바람" };
COEUI_DIRECTION = { "", "아래", "왼쪽", "오른쪽" };
COEUI_FRAMEMODE = { "닫힘", "열림", "수축", "감춤" };
-- Key bindings
-- -------------
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
BINDING_NAME_COESHOWCONFIG = "설정 대화상자 보기";
BINDING_NAME_COEBESTHEAL = "최적 치유";
BINDING_NAME_COEBATTLEHEAL = "전투 치유";
BINDING_NAME_COETHROWADVISED = "토템도우미가 알려준 토템 놓기";
BINDING_NAME_COENEXTSET = "다음 토템셋 활성화";
BINDING_NAME_COETHROWSET = "활성화된 토템셋 놓기";
BINDING_NAME_COERESTARTSET = "활성화된 토템셋 재시작";
BINDING_NAME_TOTEMEARTH1 = "대지의 토템 #1";
BINDING_NAME_TOTEMEARTH2 = "대지의 토템 #2";
BINDING_NAME_TOTEMEARTH3 = "대지의 토템 #3";
BINDING_NAME_TOTEMEARTH4 = "대지의 토템 #4";
BINDING_NAME_TOTEMEARTH5 = "대지의 토템 #5";
BINDING_NAME_TOTEMFIRE1 = "불의 토템 #1";
BINDING_NAME_TOTEMFIRE2 = "불의 토템 #2";
BINDING_NAME_TOTEMFIRE3 = "불의 토템 #3";
BINDING_NAME_TOTEMFIRE4 = "불의 토템 #4";
BINDING_NAME_TOTEMFIRE5 = "불의 토템 #5";
BINDING_NAME_TOTEMWATER1 = "물의 토템 #1";
BINDING_NAME_TOTEMWATER2 = "물의 토템 #2";
BINDING_NAME_TOTEMWATER3 = "물의 토템 #3";
BINDING_NAME_TOTEMWATER4 = "물의 토템 #4";
BINDING_NAME_TOTEMWATER5 = "물의 토템 #5";
BINDING_NAME_TOTEMWATER6 = "물의 토템 #6";
BINDING_NAME_TOTEMAIR1 = "바람의 토템 #1";
BINDING_NAME_TOTEMAIR2 = "바람의 토템 #2";
BINDING_NAME_TOTEMAIR3 = "바람의 토템 #3";
BINDING_NAME_TOTEMAIR4 = "바람의 토템 #4";
BINDING_NAME_TOTEMAIR5 = "바람의 토템 #5";
BINDING_NAME_TOTEMAIR6 = "바람의 토템 #6";
BINDING_NAME_TOTEMAIR7 = "바람의 토템 #7";
-- Key modifiers
-- --------------
COEMODIFIER_ALT = "ALT";
COEMODIFIER_ALT_SHORT = "A";
COEMODIFIER_CTRL = "CTRL";
COEMODIFIER_CTRL_SHORT = "C";
COEMODIFIER_SHIFT = "SHIFT";
COEMODIFIER_SHIFT_SHORT = "S";
COEMODIFIER_NUMPAD = "Num Pad";
COEMODIFIER_NUMPAD_SHORT = "NP";
-- Shell commands
-- ---------------
COESHELL_INTRO = "Call Of Elements에서 사용가능한 쉘 명령어:";
COESHELL_CONFIG = "'/coe' or '/coe config' - 설정 대화상자를 엽니다.";
COESHELL_LIST = "'/coe list' - 이 목록을 보여줍니다.";
COESHELL_NEXTSET = "'/coe nexset' - 다음 사용자정의 토템셋 또는 기본토템셋을 전환합니다.";
COESHELL_PRIORSET = "'/coe priorset' - 기본 토템셋과 사용자정의 우선토템셋을 전환합니다.";
COESHELL_SET = "'/coe set <name>' - 지정된 이름의 토템셋으로 전환합니다. <name>은 (영문)대소문자를 구분합니다.";
COESHELL_RESTARTSET = "'/coe restartset' - 다음 번에 토템셋을 박을 때, 현재 활성화된 토템셋의 모든 토템을 처음부터 다시 시전합니다.";
COESHELL_RESET = "'/coe reset' - 모든 타이머와 활성화된 토템셋을 초기화합니다.";
COESHELL_RESETFRAMES = "'/coe resetframes' - 모든 엘리먼트바를 화면 중간으로 위치시킵니다.";
COESHELL_RESETORDERING = "'/coe resetordering' - 토템바의 순서를 초기화합니다.";
COESHELL_RELOAD = "'/coe reload' - 모든 토템과 토템셋의 설정을 다시 읽어들입니다.";
COESHELL_MACRONOTE = "다음 명령어들은 액션바에 있을 때 매크로로써만 작동합니다.:";
COESHELL_THROWSET = "'/coe throwset' - 활성화된 토템셋을 박습니다.";
COESHELL_ADVISED = "'/coe advised' - 다음 제안된 토템을 박습니다.";
end
+239
View File
@@ -0,0 +1,239 @@
--[[ ----------------------------------------------------------------
E N G L I S H
-------------------------------------------------------------------]]
-- Errors
-- -------
COESTR_NOTASHAMAN = "You are not a shaman. Unloading Call Of Elements";
COESTR_NOTOTEM = "No totem available yet";
COESTR_UI_NOTASSIGNED = "<No text assigned>";
COESTR_INVALIDELEMENT = "Invalid element found in totem: ";
-- Notifications
-- --------------
COESTR_TOTEMWARNING = "%s expires in %d seconds";
COESTR_TOTEMEXPIRED = "%s has expired";
COESTR_TOTEMDESTROYED = "%s has been DESTROYED";
COESTR_SWITCHTOSET = "%s totem set activated";
COESTR_FIXEDSETS = "Fixed the cast order localization of your totem sets.";
COESTR_UDATEDSAVED = "Saved variables have been updated to version ";
COESTR_FIXEDDISPLAY = "Errors in the SavedVariables have been corrected.";
COESTR_TOTEMSRELOADED = "Totems reloaded";
COESTR_RESTARTINGSET = "Active set restarted";
COESTR_RESET = "Timers have been reset";
COESTR_HEALCOOLDOWN = " is not ready yet!";
COESTR_NOHEALING = "No healing needed";
COESTR_HEALING = "Healing %s with %s (Rank %d)";
COESTR_HEALLOWERRANK = "Not enough mana. Using rank %d instead";
COESTR_HEALOOM = "Out of mana!";
-- String patterns
-- ----------------
COESTR_SCANTOTEMS = "Totem";
COESTR_TOTEMTOOLS = "Tools: (.*) Totem";
COESTR_TOTEMMANA = "(%d*) Mana";
COESTR_TOTEMRANK = "Rank (%d)";
COESTR_MINUTEDURATION = "(%d%.%d%d) min";
COESTR_MINUTEDURATION_INT = "(%d) min";
COESTR_SECDURATION = "(%d%d?) sec";
COESTR_CASTBYNAME = "%(Rank (%d)%)";
COESTR_TOTEMDAMAGE = { ".+ [crh]+its (.+ Totem) ?%u* for (%d+).*" };
COESTR_TOTEMHEALTH = { "(%d*) health" };
COESTR_SHOCKSPELL = "(%a* Shock)";
COESTR_HEALINGWAVE = "Healing Wave";
COESTR_LESSERWAVE = "Lesser Healing Wave";
COESTR_MINAMOUNT = "(%d*) to";
COESTR_MAXAMOUNT = "to (%d*)";
COESTR_TRINKET = "^.*%[Enamored Water Spirit%].*$";
-- Totem Advisor
-- --------------
COESTR_POISON = "Poison";
COESTR_DISEASE = "Disease";
COESTR_TOTEMPOISON = "Poison Cleansing Totem";
COESTR_TOTEMDISEASE = "Disease Cleansing Totem";
COESTR_TOTEMTREMOR = "Tremor Totem";
COESTR_CLEANSINGTOTEM = "Throw %s now!";
COESTR_TREMOR = {
"Sleep", "Terrify", "Psychic Scream", "Mind Control", "Bellowing Roar", "Fear",
"Intimidating Shout", "Panic", "Terrifying Screech", "Seduction",
"Howl of Terror", "Intimidating Growl", "Crystalline Slumber", "Druid's Slumber"
}
-- Tools
-- ---------
COESTR_TOTEMTOOLS_EARTH = "Earth";
COESTR_TOTEMTOOLS_FIRE = "Fire";
COESTR_TOTEMTOOLS_WATER = "Water";
COESTR_TOTEMTOOLS_AIR = "Air";
-- Elements
-- ---------
COESTR_ELEMENT_EARTH = "Earth";
COESTR_ELEMENT_FIRE = "Fire";
COESTR_ELEMENT_WATER = "Water";
COESTR_ELEMENT_AIR = "Air";
-- UI elements
-- ------------
COEUI_STRINGS = {
COE_ConfigClose = "Close";
COE_ConfigTotemTabPanel = "Totem Options";
COE_ConfigHealingTabPanel = "Healing Options";
COE_ConfigDebuffTabPanel = "Debuff Options";
COE_ConfigTotemTotemBar = "Totem Bars";
COE_ConfigTotemTotemOptions = "Options";
COE_ConfigTotemTotemSets = "Totem Sets";
COE_OptionEnableTotemBar = "Enable Totem Bar";
COE_OptionHideBackdrop = "Hide background when inactive";
COE_OptionEnableTimers = "Enable totem timers";
COE_OptionEnableTimerNotifications = "Enable notifications";
COE_OptionTTAlignment = "Tooltip Alignment";
COE_OptionDisplayMode = "Anchor Button";
COE_OptionDisplayAlignment = "Button Alignment";
COE_OptionAdvisor = "Enable totem advisor";
COE_OptionEnableSets = "Enable totem sets";
COE_OptionEnableAutoSwitch = "Autoswitch sets in PVP";
COE_OptionActiveSet = "Active totem set";
COE_OptionNewSet = "New set";
COE_OptionDeleteSet = "Delete set";
COE_OptionConfigureSet = "Configure set";
COE_OptionStopConfigureSet = "OK";
COE_OptionCastOrderString = "Cast Order";
COE_OptionConfigureBar = "Configure Totems";
COE_OptionFixBar = "Fix totem bar positions";
COE_OptionConfigureOrder = "Configure Order";
COE_OptionScanTotems = "Reload Totems";
COE_OptionCurrentFrame = "Configure Bar";
COE_OptionDirection = "Direction";
COE_OptionFrameMode = "Bar mode";
COE_OptionFlexCount = "Static buttons";
COE_OptionScaling = "Scaling";
COE_OptionEnableTimerFrame = "Show separate timer frame";
COE_OptionGroupBars = "Move bars as group";
COE_OptionOverrideRank = "Rank 1 modifier";
COE_OptionFrameTimersOnly = "Show timers ONLY in timer frame";
}
-- Tooltips
-- ---------
COEUI_TOOLTIPS = {
COE_ConfigTotemTab = "Shows the totem options";
COE_ConfigHealingTab = "Shows the healing options";
COE_ConfigDebuffTab = "Shows the debuff options";
COE_OptionEnableTotemBar = "Enables and shows the totem bar\nwhich holds all of your available\ntotems for quick use";
COE_OptionHideBackdrop = "Hides the background when the mouse\nis not above the totem bar";
COE_OptionEnableTimers = "Enables the display of\nthe remaining totem time\nshown inside the totem button";
COE_OptionEnableTimerNotifications = "Displays warnings when a totem\nexpires or is destroyed";
COE_OptionAdvisor = "Displays notifications when you\nor a member of your party/raid\nhas a debuff that can be cured\nby one of your totems";
COE_OptionEnableAutoSwitch = "Automatically switches to the\nclass totem set when targetting an\nenemy player";
COE_OptionFixBar = "Fixes the totem bar position\nto prevent dragging it accidentally";
COE_OptionGroupBars = "When you drag one bar,\nthe other bars will follow";
}
COESTR_TRINKET_TOOLTIP = "Enamored Water Spirit";
COESTR_TRINKET_TOTEM = "Ancient Mana Spring Totem";
-- Combo boxes
-- ------------
COEUI_TTALIGN = {
{ "ANCHOR_TOPLEFT"; "Top Left" };
{ "ANCHOR_LEFT"; "Left" };
{ "ANCHOR_BOTTOMLEFT"; "Bottom Left" };
{ "ANCHOR_TOPRIGHT"; "Top Right" };
{ "ANCHOR_RIGHT"; "Right" };
{ "ANCHOR_BOTTOMRIGHT"; "Bottom Right" };
{ "DISABLED"; "Disabled" };
}
COEUI_DISPLAYMODE = { "Customize", "Timers Only", "Active Set" }
COEUI_DISPLAYALIGN = { "Box", "Vertical", "Horizontal" }
COEUI_PVPSETS = { "[PVP] Druid", "[PVP] Hunter", "[PVP] Mage", "[PVP] Paladin", "[PVP] Priest",
"[PVP] Rogue", "[PVP] Shaman", "[PVP] Warlock", "[PVP] Warrior" }
COEUI_DEFAULTSET = "Default";
COEUI_OVERRIDERANK = { "No key", "Use SHIFT", "Use ALT", "Use CTRL" };
COEUI_CURRENTFRAME = { "Earth", "Fire", "Water", "Air" };
COEUI_DIRECTION = { "Up", "Down", "Left", "Right" };
COEUI_FRAMEMODE = { "Closed", "Open", "Flex", "Hidden" };
-- Key bindings
-- -------------
BINDING_HEADER_CALLOFELEMENTS = "Call Of Elements";
BINDING_NAME_COESHOWCONFIG = "Show configuration dialog";
BINDING_NAME_COEBESTHEAL = "BestHeal";
BINDING_NAME_COEBATTLEHEAL = "BattleHeal";
BINDING_NAME_COETHROWADVISED = "Throw next advised totem";
BINDING_NAME_COENEXTSET = "Activate next totem set";
BINDING_NAME_COETHROWSET = "Throw the active totem set";
BINDING_NAME_COERESTARTSET = "Restart the active set";
BINDING_NAME_TOTEMEARTH1 = "Earth Totem #1";
BINDING_NAME_TOTEMEARTH2 = "Earth Totem #2";
BINDING_NAME_TOTEMEARTH3 = "Earth Totem #3";
BINDING_NAME_TOTEMEARTH4 = "Earth Totem #4";
BINDING_NAME_TOTEMEARTH5 = "Earth Totem #5";
BINDING_NAME_TOTEMFIRE1 = "Fire Totem #1";
BINDING_NAME_TOTEMFIRE2 = "Fire Totem #2";
BINDING_NAME_TOTEMFIRE3 = "Fire Totem #3";
BINDING_NAME_TOTEMFIRE4 = "Fire Totem #4";
BINDING_NAME_TOTEMFIRE5 = "Fire Totem #5";
BINDING_NAME_TOTEMWATER1 = "Water Totem #1";
BINDING_NAME_TOTEMWATER2 = "Water Totem #2";
BINDING_NAME_TOTEMWATER3 = "Water Totem #3";
BINDING_NAME_TOTEMWATER4 = "Water Totem #4";
BINDING_NAME_TOTEMWATER5 = "Water Totem #5";
BINDING_NAME_TOTEMWATER6 = "Water Totem #6";
BINDING_NAME_TOTEMAIR1 = "Air Totem #1";
BINDING_NAME_TOTEMAIR2 = "Air Totem #2";
BINDING_NAME_TOTEMAIR3 = "Air Totem #3";
BINDING_NAME_TOTEMAIR4 = "Air Totem #4";
BINDING_NAME_TOTEMAIR5 = "Air Totem #5";
BINDING_NAME_TOTEMAIR6 = "Air Totem #6";
BINDING_NAME_TOTEMAIR7 = "Air Totem #7";
-- Key modifiers
-- --------------
COEMODIFIER_ALT = "ALT";
COEMODIFIER_ALT_SHORT = "A";
COEMODIFIER_CTRL = "CTRL";
COEMODIFIER_CTRL_SHORT = "C";
COEMODIFIER_SHIFT = "SHIFT";
COEMODIFIER_SHIFT_SHORT = "S";
COEMODIFIER_NUMPAD = "Num Pad";
COEMODIFIER_NUMPAD_SHORT = "NP";
-- Shell commands
-- ---------------
COESHELL_INTRO = "Available shell commands for Call Of Elements:";
COESHELL_CONFIG = "'/coe' or '/coe config' - Shows the configuration dialog";
COESHELL_LIST = "'/coe list' - Shows this list";
COESHELL_NEXTSET = "'/coe nexset' - Switches to the next custom totem set or the default set";
COESHELL_PRIORSET = "'/coe priorset' - Switches to the prior custom totem set or the default set";
COESHELL_SET = "'/coe set <name>' - Switches to set with the specified name. <name> is case-sensitive";
COESHELL_RESTARTSET = "'/coe restartset' - Next time you throw the active set, it recasts all totems";
COESHELL_RESET = "'/coe reset' - Resets all timers and the active set";
COESHELL_RESETFRAMES = "'/coe resetframes' - Returns all element bars to the screen center";
COESHELL_RESETORDERING = "'/coe resetordering' - Resets the ordering of your totem bars";
COESHELL_RELOAD = "'/coe reload' - Reloads all totems and sets";
COESHELL_MACRONOTE = "The following commands only work as macros dragged to your action bars:";
COESHELL_THROWSET = "'/coe throwset' - Throws the active totem set";
COESHELL_ADVISED = "'/coe advised' - Throws the next advised totem";
+536
View File
@@ -0,0 +1,536 @@
v2.6
ADDITIONS:
- Korean localization
LeeEui-ho recently sent me the Korean translation and thus completed the
currently supported languages (at least until WoW is available in Spain as well ;-) )
CHANGES:
- Performance upgrade
There were some major memory leaks and COE consumed too much overall processor
time. I changed the way the element frames are updated and now they should no
longer use up a noticeable amount of memory and call the update routines only
when really necessary.
FIXES:
- Disappearing element frames
Whenever the totems were reloaded in "Timers Only" mode, depending on the currently
active totems, a totem frame could have disappeared and would only show up again when
throwing a totem of the same element from your spellbook.
This has been fixed and the timers will now reset properly when your totems are reloaded.
Note that this means, that you will lose active timers upon zoning but in most cases
you wouldn't need them anymore anyway.
=============================================================================================
v2.5
IMPORTANT NOTE:
Please use http://coe.wyverex-cave.net/ for further bug reports and suggestions.
Thank you
ADDITIONS:
- Chinese (simplified) localization
Thanks to windger a chinese translation is available as well.
Note though, that I have no way to test if it is correct or if it even
works at all! Please drop a comment at http://coe.wyverex-cave.net/ if
there are any issues
- Totems sets for named targets
Whenever you target a hostile unit, COE will now check if there is a
custom set with this unit's name available. If it finds one, that set
is activated. That also takes precedence over the PVP sets.
NOTE: The check is case-sensitive, so make sure you spell the name right.
- Tremor totem advisor
Added Druid's Slumber (need translations, though)
- Change anchor totem with CTRL
When pressing the CTRL-key while clicking a totem button, this totem replaces
the anchor totem for this element if it isn't already the anchor totem and
you have the Customize or Active Set mode activated. Furthermore, in Active Set
mode, it will also make the clicked totem part of the current set.
CHANGES:
- Prevent trinket pickup
You can no longer pickup the trinket by shift-dragging the totem button.
This didn't work in 2.4 and wasn't meant to be available anyway, since
the trinket doesn't have spell slot like a totem.
- Removed set restart modifier key
Until 2.4 you could assign a modifier key to automatically restart a set
while clicking a totem and pressing that key. This feature didn't work well
in most cases and it's also quite uselesse since you can also create a
/coe restartset macro (and most players already do this).
- When expanding a flex bar by mousing over it, currently docked totems
(i.e. active or advised totems or those in cooldown) will now show first
independent of their actual ordering. This makes it possible to mouse over
a docked totem and click it right away. Before, if the docked totem had a
high ordering, it would suddenly change its position when opening the bar
and you had to move the mouse again.
FIXES:
- /coe restartset
Due to a change in the last release this command didn't work anymore
This has been fixed
=============================================================================================
v2.4
IMPORTANT NOTE:
Please use http://coe.wyverex-cave.net/ for further bug reports and suggestions.
Thank you
ADDITIONS:
- Added trinket support
The Enamored Water Spirit trinket is now supported as part of the water element bar.
It behaves just like any other totem with the exception that you have to equip the
trinket to actually make it usable. Note that the trinket button will always show
up in the water element bar as long as you possess at least one water totem
but you can choose to make it invisible like any other totem until you got the trinket.
- French localization
Thanks to mcoaua a french localization is finally available now and will be continued
in further releases
Also thanks to Foussa for previous efforts
CHANGES:
- Lag-dependent timer activation
In order to decide whether to really activate a totem timer after trying to
throw a totem, COE will now take the current network lag value into account.
Timers would not activate properly with lag values of 1000ms or more before.
This should now work as expected
- Still active totem timers will now reset when you die
FIXES:
- When in Customize mode, a set element would not be properly reset after expiration,
if it was a dynamic button (i.e. when inactive only showing up when mousing over the bar).
First when opening the bar again, COE would notice that this element in the current
set had already expired and should be thrown again.
This has been fixed
- When switching totem sets, sometimes only the currently active totems would be thrown
again when issuing the next throwset command. This has been fixed
- When switching totem sets using the Customization Dialog, the currently active set
was not reset. The current set will now reset upon switching
- When switching from Customize to Timers Only or Active Set mode while totems were
active, sometimes an active totem showed up twice in its bar afterwards. This will
no longer happen
- The healing module didn't do anything in the german version because the healing spell
localizations were wrong. This has been fixed
=============================================================================================
v2.3
ADDITIONS:
- The "/coe priorset" command lets you cycle backwards through your configured sets now
- Added the option to show the active timers ONLY in the separate timer frame
Note that this means you get no timers at all if you choose to disable the timer frame
CHANGES:
- When the "Autoswitch sets in PVP" option is enabled, COE will automatically switch
back to the last active non-pvp set upon targeting an enemy mob
This should make switching between PVP and PVE more convenient
- COE should no longer try to heal dead or offline targets
FIXES:
- Fixed the german timers. Yes, really :)
- Fixed another one of those niggling typos with the disease totem advisor
- On some systems there was a COE_TotemData:485 nil error
Since this error never appeared on my own system I cannot tell for sure but
it should be more unlikely now that this error appears again.
If it should, please drop a comment for me
=============================================================================================
v2.2
NOTES:
- This is merely a hotfix for 1.10 and is taken right out of development
Chances are that you encounter some problems related to the healing module.
Also, there are features missing I promised for the next release and the
french localization is also not included yet.
But I guess for everyone of you it is more important that COE works again
than getting the new features :)
ADDITIONS:
- Added a basic healing module
A very basic form of healing module has finally found its way into COE.
There are two healing modes that you can trigger by assigning a key binding
in your key bindings dialog.
BATTLE HEAL
When hitting the battle heal key, COE will target the party member with the
lowest health ratio and heal him with the most appropriate spell using as
less casting time as possible (which always results in using the Lesser
Healing Wave actually)
It will only use the rank it really needs and thus helps conserving mana
BEST HEAL
Works just like battle heal but also uses the Healing Wave if it has a better
mana/effect efficiency. So, outside of combat, use best heal and when in combat
use battle heal if healing must be quick or you are in danger of losing casting time
NOTE
I am totally aware that the chain heal and effects like Nature's Swiftness
are not taken into account yet. This primarily results of the fact that I don't
possess any of those spells with my shaman yet. Furthermore I don't have an idea
yet when to use the chain heal in an automated way.
I am grateful for every kind of input regarding possible options and enhancements
to the healing module.
Just drop a comment at http://ui.worldofwar.net/ui.php?id=2126 or
http://www.curse-gaming.com/mod.php?addid=3407
FIXES:
- Fixed COE for 1.10
As far as I have tested, COE should now work properly with patch 1.10
Fortunately, Blizzard didn't prevent any of the functions COE uses from
being called in contrast to some unlucky mods out there...
- German timers
Hopefully, the german timers should now display the correct totem durations
Drop a comment for me if not
=============================================================================================
v2.11
FIXES:
- COE_TotemVisual:167 nil error
Errors in the COE_DisplayedTotems structure will now mostly be
fixed when entering the game. This should eliminate that niggling
error.
I have still no clue, why it happens in the first place, though.
I have ideas but nothing that really explains it.
Basically it seems that the error occurs only when training a totem
skill and don't already possess the corresponding totem.
If you get that error again, you can either relog or reset the
whole totem ordering with the "/coe resetordering" command
=============================================================================================
v2.1
NOTES:
- Thanks to Foussa of Hyjal, a french translation is in progress
and will hopefully be available soon
ADDITIONS:
- Rank 1 totems
You can now define a key modifier that throws the rank 1 totem
instead of the maximum rank when you click on a totem button.
Possible modifiers are Shift, Alt and Ctrl
- Added slash command "/coe reload"
This command does the same as the button in the configuration dialog,
i.e. it reloads all totems and sets
- Added slash command "/coe reset"
Resets all currently active timers and sets. While "/coe restartset"
only resets the active set so you can throw the same totems again,
"/coe reset" will also deactivate all active timers, i.e. you won't
be notified when still active totems expire
- Added slash command "/coe resetframes"
Returns all element bars to the screen center. This is quite handy
if you somehow accidentally moved one of your bars out of the screen
- Added bar grouping
Upon enabling the "Move bars as group" option, all element bars will
retain their relative positions when you drag one of them
I know you've all desperately waited for this one :)
- Spell pickup
When dragging a totem button with the Shift key held down, you will
pickup the spell instead and can drag it to one of your standard
action buttons
If you hold down the Ctrl key additionally, you will pick up the
corresponding rank 1 totem
CHANGES:
- When configuring the active set in "Active Set" bar mode, the active
totem of an element is now immediately made the first totem when you
click it. In v2.0 this was done only when you exited the configuration
mode and that caused a little confusion
- Advisor pet scanning
The totem advisor now also scans your party member's pets for debuffs
that can be cured by one of your totems
- When the next totem that would be thrown in your active set is still
in cooldown, COE will skip to the next totem of the active set instead
of giving a "Spell not ready yet" error message
- All messages from COE in the chat frame will now begin with [COE] and
will have their own color
FIXES:
- When setting the scale to the maximum of 1.2, opening the configuration
dialog decreased the scale by 0.01 up to a somehow arbitrary maximum
value where the scale rested then
This has been fixed
- When you didn't have all totem elements yet, the empty element bars
were nevertheless "visible" and prevented interaction with game elements
behind them. Empty bars will now be invisible
- Sometimes an expiring totem gave a nil-error message when also using the
separate timer frame. This should be fixed now
=============================================================================================
v2.0
CHANGES:
- I separated the visual and logical parts of the totem module and rewrote the
whole visual part. It now has much more customization options than before.
Each element now has its own totem bar and each totem bar is fully customizable
on its own. The former "Display Mode" now controls which totem is shown in the
"anchor button" of each totem bar, which is either your choice ("Customize"),
the (last) active totem ("Timers Only") or the member of the active set ("Active Set").
The bar extends from the anchor button in the direction you choose (Up, Down, Left, Right).
Furthermore, with the bar mode you can control whether only the anchor button ("Closed")
or all configured totems ("Open") should be shown. If you choose the "Flex" mode, only
the anchor button is shown until you mouse over it which will temporarily show all
other totems as well and hide them again after a short delay when the mouse leaves.
By setting the static button count to a value of greater than one, you can also have
a mix of the "Open" and the "Flex" mode, showing a number of totems by default and the
rest when mousing over.
Finally, you can also hide the whole element bar by setting "Hidden" as the bar mode.
Note, that you can still adjust which totems each element bar possesses and in which
order they appear. The anchor totem is always shown, though, thus removing it from the
bar while in "Configure Bar" mode has no effect as long as it is the anchor totem.
The configured totem order is retained whenever possible, that is, when a totem becomes the
anchor totem, e.g. by switching the active set in "Active Set" mode, it is now the first
totem in the bar but all other totems retain their relative ordering.
Also note that while in "Flex" or "Closed" mode, active and advised totems and totems
with an active cooldown will be temporarily shown just as if you were mousing over the bar.
- Made the configuration dialog draggable with the mouse
ADDITIONS:
- You can now activate a separate timer window that only shows totems that are currently active
and drag it where you want it on your screen. I added this feature because I noticed that
although having the timers in the bar and the notifications on the screen, it can happen in
instances that you lose track of your active totems. By dragging the timer frame somewhere
to your screen center you just need a quick look to see how long each of your totems will
be active.
In the configuration dialog you can choose the totem alignment (2x2 Box, Vertical, Horizontal).
- COE now has a scaling bar separate from the rest of your UI so that you can adjust the totem
bar sizes to your likings. The default value of 1.0 means COE scales just as the rest of your
UI does.
FIXES:
- Fixed a typo in the advisor output for the Disease Cleansing Totem
=============================================================================================
v1.82
NOTE:
- When assigning a new talent point you should reload the totems in the
configuration dialog if this talent changed mana cost or totem durations.
There is no way to know ingame when you assign a talent point so you
have to do this manually.
When you log in next time, reload your interface or learn a new skill,
the changes are automatically updated, though.
FIXES:
- Throwing the mana tide totem resulted in an error since the introduction of the
cooldown timers. This should be fixed now
- Fixed a typo in the disease totem advisor
The advisor should now correctly suggest throwing the Disease Cleansing Totem
- Fixed some more issues with the German localization
All totems should now properly keep track of their health and notify you when
they are destroyed by enemies
=============================================================================================
v1.81
FIXES:
- Hotfix for non-shaman classes
I accidentally made the totem bar visible for other classes in the last release
=============================================================================================
v1.8
ADDITIONS:
- Totems with a cooldown now display it in red digits when their timer is
no longer active but they are still cooling down.
This should give you more exact information on when you can cast the
totem again than the default cooldown texture. For better readability
I also removed the cooldown texture for those totems
- You now can restart casting of the active set at any time while in the previous
version you could only throw the set again when one or all of its totems
had already timed out.
Either assign a key binding or create a macro with the command "/coe restartset"
or assign a "Restart set modifier" in the configuration dialog. If you press
this modifier key while attempting to throw the active set, it will first restart
the set.
Note, that this only really works if you click a throwset macro or have the key
binding on your mouse because WOW thinks that the modifier you pressed belongs
to the key binding you want to execute. So if you bound throwing the active set to
your T key for example, you won't be able to restart the set by assigning the ALT
modifier and pressing ALT+T because WOW thinks you want to execute the ALT+T key binding.
Don't know if there is any way to bypass this yet.
CHANGES:
- Removed the totem bar backdrop and the config button
I guess most users didn't use the button anyway and the always
popping in backdrop got on people's nerves :)
You can now drag the totem bar by dragging any of the totem buttons
- Put the totem bar on a lower frame layer to minimize impact on mods
which rely on getting themselves on top of the rest like bag mods, for example
- The totem advisor no longer checks the raid group for debuffs now.
Since totems only have an effect on members of your party and not the
whole raid as I initially supposed, it is just wasted time and misleading
to check the raid as well
FIXES:
- Fixed a bug with the key binding display on the totem buttons.
All totem buttons should now display their appropriate key binding
- While in "Active Set" mode and configuring the active set, the red
borders around the set totems didn't show. This has been fixed
- There seemed to be a typo bug in the SavedVariables repair function of v1.7
Your saved variables will be once again repaired when your first load v1.8
- The mana costs of different ranks of the same totem were not read properly and
thus the totem bar sometimes showed a "usable" totem while the player still
didn't have enough mana. This has been fixed
- Fixed some issues with the German localization
=============================================================================================
v1.7
- Added an option to fix the totem bar position to prevent dragging it accidentally
- The shell command "/coe list" now shows all available shell commands
- In the German version the default totem set and the class sets could not be thrown
due to a localization bug. Also the cast order was not localized.
This has been fixed. Your saved variables should be fixed automatically when first
loading v1.7
Thanks to Shinzhu for pointing me in the right direction
- In "Customize" display mode, the totem order is now customizable for each
element separately. Just click on the "Configure Order" button and swap two
totems of the same element by clicking them one after the other. You cannot
swap totems of different elements, though, and this won't be implemented in
a further release because that would break the whole structure of the mod,
so don't bother asking :)
Note, that upon first loading v1.7 all totems appear in reverse order due to
an internal change in the ordering data structures
- In "Customize"/"Horizontal" and "Customize"/"Vertical" display modes, a small
gap is inserted between totems of different elements to group them visually
=============================================================================================
v1.6
- Added some more spells for the tremor totem advisor
Still need the german translations though
- The totem frame should now have the proper width when not all totems are
shown in "Customize"/"Box" mode
- Added the "Disabled" option in the "Tooltip Alignment" drop down menu.
This disables the tooltips for the totem buttons
- The currently active set did no longer show the red borders in the totem bar
This has been fixed
- When disabling autoswitching sets in PVP, configuration did not work properly
This has been fixed
=============================================================================================
v1.5
- "All Totems" mode has been renamed to "Customize" mode.
You can now customize which totems should be displayed in "Customize" mode
To start configuration click the "Configure Bar" button in the config dialog.
Configuration works exactly like the totem set configuration. Each totem that
should be visible has a green border while configuring.
- Totem button alignment now also works in "Customize" mode. You can align the
buttons either in a box, where totems of one element occupy a single row, or
you can display all totems horizontally or vertically
- By adding the seventh air totem in the last patch I accidentally removed the
sixth water totem :)
The "COE_Totem.lua:199" error should be fixed now
=============================================================================================
v1.4
- Added a seventh air totem button. Must have missed this one before.
COE should now load properly when having all seven air totems
+333
View File
@@ -0,0 +1,333 @@
CALL OF ELEMENTS v2.5
by Wyverex
This is an All-In-One Shaman class addon for World Of Warcraft.
Currently, it features a complete totem module to simplify totem usage
and increase your efficiency in party and in PVP.
Yet to come are a healing module and some miscellanous options that
help with different tasks.
The totem module provides you with customizable frames that hold all
of your totems separated by element and work just like a standard action bars.
In addition, each totem has its own timer that displays how long the totem
will still be active. When there are only 10 or 5 seconds left or when
the totem expires, a notification is shown in the screen center.
Furthermore you are able to create your own totem sets which hold a totem
of each element that can be cast using only one command or button.
There is also one predefined set for each class that is automatically
activated in pvp when you target a hostile player of the corresponding class.
Also in development is the healing module that helps conserving mana
and healing the right group member at the right time more efficiently
than doing this manually.
CONTACT
================
http://coe.wyverex-cave.net
coe@wyverex-cave.net
"Grimhoof" on "Kult der Verdammten" (German RP-PVP Server)
KNOWN ISSUES
================
Since this addon is still under construction and I am currently testing with
a level 35 shaman, I don't rule out that I have forgotten one or the other
special case that occurs first with higher levels.
At least I know that there is a trinket that also throws a totem.
This trinket will not display a timer or use some other totem bar option
until I have access to it and can test it.
Also, the totem advisor will advise the tremor totem only for few
spell effects yet. See the next section
Things YOU can help me with
==============================
I still need help with the following issues:
- Totem advisor
The tremor totem counters fear, charm and sleep effects but, unfortunately,
I have no complete list of all spells that can be countered. The
currently very short list known to me is shown below.
If you come across another effect that can be countered by the tremor totem,
please contact me.
"Sleep", "Terrify", "Psychic Scream", "Mind Control", "Bellowing Roar", "Fear",
"Intimidating Shout", "Panic", "Terrifying Screech", "Seduction",
"Howl of Terror", "Intimidating Growl", "Crystalline Slumber", "Druid's Slumber"
Furthermore, I need the German translations since I only have the english client.
THINGS YET TO COME
==============================
This is a list of features that came to my mind yet. Presumably
there will come more ;-)
- Healing module
Possibly, the healing module will be enhanced in numerous ways
It's very basic at the moment
INSTALLATION
================
Just unzip the CallOfElements folder and the Chronos folder
to your Interface\AddOns\ directory and restart WOW.
It should automatically be loaded when you log into the game.
Note, that COE needs the Chronos addon for all timer functionality and
won't work without it.
Also note, that COE does only really load for shaman classes, since it offers
no use for the other classes. An appropriate message is displayed in this case.
To display the configuration dialog and configure COE, you can either:
- add a key binding or
- use the /coe slash command or
TOTEM MODULE
=================
Totem Bars
------------
There is one totem bar for each totem element you possess which can be Earth, Fire,
Water and Air. Each totem bar is fully customizable on its own and holds a number of
totem buttons which work just like standard action bar buttons complete with cooldown and
usability/out-of-mana display. In addition, if totem timers are activated, each
button shows the time left for its totem, if active.
The bar itself centers around a so-called "anchor button" or "anchor totem".
Which of your totems is taken as the anchor totem for each element is either your
choice ("Customize"), the (last) active totem ("Timers Only") or the member of the
active set ("Active Set").
The bar extends from the anchor button in the direction you choose (Up, Down, Left, Right).
Furthermore, with the bar mode you can control whether only the anchor button ("Closed")
or all configured totems ("Open") should be shown. If you choose the "Flex" mode, only
the anchor button is shown until you mouse over it which will temporarily show all
other totems as well and hide them again after a short delay when the mouse leaves.
By setting the static button count to a value of greater than one, you can also have
a mix of the "Open" and the "Flex" mode, showing a number of totems by default and the
rest when mousing over.
Finally, you can also hide the whole element bar by setting "Hidden" as the bar mode.
You can customize which totems should actually be displayed, by clicking
on the "Configure Bar" button. While in bar configuration mode,
the totem bar will show all available totems. Just click on a totem to toggle its visibility.
Visible totems will have a green border around them while in configuration mode.
The anchor totem is always shown, though, thus removing it from the bar while in
"Configure Bar" mode has no effect as long as it is the anchor totem.
Upon leaving the configuration mode, the last bar mode will be restored.
Apart from customizing which totems to display, you can also change the ordering of
the totems for each bar separately. Just click on the "Configure Order" button
and swap two totems of the same element by clicking them one after the other.
You cannot swap totems of different elements, though.
The configured totem order is retained whenever possible, that is, when a totem becomes the
anchor totem, e.g. by switching the active set in "Active Set" mode, it is now the first
totem in the bar but all other totems retain their relative ordering.
Also note that while in "Flex" or "Closed" mode, active and advised totems and totems
with an active cooldown will be temporarily docked to the bar just as if you were mousing
over the bar. Those totems will also be shown first in the bar if you mouse over the
bar independent of their actual ordering. This makes re-throwing them easier.
You can also set the tooltip alignment to prevent partially hidden tooltips
depending on where you position the totem bar on your screen or disable them at all.
If you want to throw the rank 1 totem instead of the maximum rank, you can assign a
key modifier in the configuration dialog and hold down this modifier while clicking
the desired button. Note, that this only works when clicking a totem.
While holding down the Shift key you can also pickup a totem and drag it one of your
standard action buttons. When additionally holding down the Ctrl key, you will pickup
the corresponding rank 1 totem.
When pressing the CTRL-key while clicking a totem button, this totem replaces
the anchor totem for this element if it isn't already the anchor totem and
you have the Customize or Active Set mode activated. Furthermore, in Active Set
mode, it will also make the clicked totem part of the current set.
Totem Advisor
----------------
Tired of constantly checking your party member's and pets' debuffs for poison, diseases and
other effects that can be countered by your tremor totem? Then enable the
totem advisor and you will be notified when one of your party members has a
debuff that you are able to cure with one of your totems!
The notification will be displayed in the center of the screen and will be
periodically redisplayed until the debuffs are cured (either by a cure spell/totem
or by timing out). Additionally, the corresponding totem button will flash.
To throw the advised totem you can either use your preferred method of throwing
totems or you can use the "Throw next advised totem" key binding which automatically
figures out if there is any advised totem and throws it.
Or create a macro with the slash command "/coe advised" and drag it onto one of your
action buttons.
Totem Timers
----------------
Each totem button has its own timer that is displayed when the associated totem
is active. The timer shows the time in seconds that the totem remains active if
it isn't destroyed before.
When there are only 10 or 5 seconds left, respectively, a notification is shown in
the screen center, if you chose to enable this option. This helps you to plan
the next totem ahead in time.
When a totem expires or is destroyed by an enemy, there is also a notification.
Totems with a cooldown display it in red digits when their timer is no longer
active but they are still cooling down. This should give you more exact information
on when you can cast the totem again than the default cooldown texture.
Totem Sets
----------------
In most situations you throw the same totems over and over again, e.g. Stoneskin
and Healing Stream when facing more than one mob at the same time. So why should
you repeat the same steps all over again if they can be automated? This is why
there are totem sets.
A totem set consists of up to four totems, one of each element, that can be thrown
in any desired order using just one action button or key binding. Just press the
key once for each totem, COE will take care of which totem to throw automatically.
To conserve mana, it will only throw totems that aren't active yet. If the totem that
would be thrown next is still in cooldown, COE will skip to the next totem.
You can restart casting of the active set at any time though.
Either assign a key binding or create a macro with the command "/coe restartset"
or "/coe reset". The latter one also resets the timers.
There are 10 predefined totem sets: one default set and 9 PVP class sets, one for each
available player class. In addition, you can create your own custom named sets for
every situation you can think of.
To configure a set, make it the active set by using the drop down menu in the configuration
dialog and the click the "Configure Set" button. While in set configuration mode,
the totem bars will show all available totems. Just click on a totem to add it to the set
or remove it. Note, that you can only have one totem per element per set.
Upon leaving the configuration mode, the last display mode will be restored.
Finally, you can adjust the order in which the totems will be thrown for this set.
If you enabled the "Autoswitch sets in PVP" option and target an enemy player,
COE will automatically switch to the set corresponding to this player's class because
you usually use different totems when fighting different classes. This should
improve your PVP efficiency since you don't have to worry much about which totems
to throw if you have them preconfigured and just use the key binding for set throwing.
As soon as you target a PVE mob, it will switch back to the last active non-PVP set again.
If you target a hostile unit, and you have a custom set configured that has exactly the
same name as that unit, COE will activate that set. This makes it possible to create
sets for specific encounters (e.g. a "Nefarian" set). Note, that the test is case-sensitive,
though.
There is also the "Activate next totem set" key binding which switches between the
default set and your custom sets and thus provides a fast method to switch between sets.
Note, that there are also slash commands available to use as macros for your action
bars if you desire:
"/coe throwset" throws the active set
"/coe priorset" switches to the prior set
"/coe nextset" switches to the next set
"/coe set <name>" switches to the set with the specified name. Note that <name> is case-sensitive.
"/coe restartset" restarts the active set
HEALING MODULE
=================
COE also helps you with healing your party and raid. Instead of manually selecting a
target and the right healing spell, just assign a key binding for the battle and best heal
and press the key.
COE will heal the party or raid member with the lowest health ratio using the most
appropriate spell. Depending on which healing mode you triggered, the spell selection
will be different:
Battle Heal
--------------
When hitting the battle heal key, COE will target the party member with the
lowest health ratio and heal him with the most appropriate spell using as
less casting time as possible (which always results in using the Lesser
Healing Wave actually)
It will only use the rank it really needs and thus helps conserving mana
Best Heal
--------------
Works just like battle heal but also uses the Healing Wave if it has a better
mana/effect efficiency. So, outside of combat, use best heal and when in combat
use battle heal if healing must be quick or you are in danger of losing casting time
COMPLETE LIST OF COMMANDS
==========================
/coe
/coe config
- shows the config dialog
/coe list
- shows the list of slash commands
/coe priorset
- switches to the prior set
/coe nextset
- switches to the next set
/coe set <name>
- switches to the set with the specified name. Note that <name> is case-sensitive
/coe restartset
- restarts the active set
/coe reset
- resets all timers and the active set
/coe reload
- reloads all totems and sets
/coe resetframes
- returns all element bars to the screen center
/coe resetordering
- resets the ordering of your totem bars
The next commands only work as macros dragged to one of your
action buttons, since Blizzard prevents spells being cast
from the command line:
/coe throwset
- throws the active set
/coe advised
- throws the next advised totem
CREDITS
=================
I would like to thank the authors of the following addons for providing me
with some of my ideas through their own addons. Actually I took their ideas
and refined them into an all-in-one addon and made it smooth at one or the other
edge ;-)
- Totem Timers
- Frowning Circle
- Totem Menu
- Gypsy Mod
- CTRaid
- Healer / Nuker
And a special thanks to the authors of Chronos since COE relies heavily on the
accurate timing functions of Chronos.
Last but certainly not least, I'd like to thank all the people using COE and
giving me feedback. A mod can only evolve and get better when being supported
by the community.
Thank You!