WoWInterface SVN PowerAurasClassic

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 20 to Rev 21
    Reverse comparison

Rev 20 → Rev 21

trunk/PowerAuras/Notes-enGB.txt New file
0,0 → 1,230
-------- ---------------------------------------------------------------------------------------------------------------------------------------
FRANCAIS
--------
 
Cet AddOn a été créé afin d'avoir une meilleure visibilité lorsque l'on acquière des buffs, debuffs, points de combos, enchantement d'arme... Très util principalement pour les buffs ou debuffs court, il permet d'avoir au centre de l'écran, ou autour de son personnages, des effets visuels extrèmement paramétrables, plutôt que tout le temps avoir à regarder si on a l'icone du buff ou debuff sur les bords de l'écran.
 
Initialement créé pour avoir un aperçu des buffs d'amélioration courts comme "idées claires" ou un quelconque bijou qui boosterait notre attaque, il fonctionne désormais aussi bien avec des débuffs (quel que soient leur nom), les type de débuffs (magie, malédiction, etc), les points de combos, les effets de zone ainsi que les enchantements d'armes
 
 
Utilisation :
 
Tapez /powa
pour avoir accès au menu d'édition des effets, il ne vous reste plus qu'à choisir la texture à appliquer à l'effet, la position, taille, symétrie, etc...
Entrez ensuite le nom ou une partie du nom du buff/debuff (ex: si vous cherchez à activer l'effet visuel sur "Idées claires", vous pouvez n'entrer que "claires" dans le nom du buff).
 
L'addon se chargera donc d'afficher l'effet là où vous le désirez et à le faire disparaitre une fois le buff fini.
 
 
Vous pouvez aussi facilement ajouter de nouvelles textures en les mettant dans le dossier "custom" de l'addon.
 
 
 
-= Mises à jour : =-
 
Version 2.34 :
--------------
+ Ajout d'une activation d'effet suivant les actions utilisable de vos barres d'actions
- Finalement, correction d'un bug qui empechait certaines personne d'utiliser les effets d'enchantements d'arme
 
Version 2.32 :
--------------
+ Compatibilité avec la version 2.0.3 de WoW
+ Désormais Power Auras est livré avec 50 textures (plus besoin de télécharger les packs 1 et 2)
+ Ajout de 3 timers supplémentaires
+ Ajout d'un décompte de durée des buffs / debuffs sur la cible
+ Ajout de la possibilité de créer ses propres textures et de les inclure facilement (dans le dossier "Custom")
+ Ajout des tests sur les cibles amies ou ennemies
+ Possibilité de déplacer les effets ou timers sur l'écran plus facilement
+ Possibilité d'afficher les textures avec une transparence normale
- Les effets de zones ne devraient plus persister à la mort ou au changement de zone
- Corrections de quelques bugs mineurs
 
 
Version 2.17 :
--------------
+ Compatibilité avec la version 2.0.0 de WoW
 
Version 2.16 :
--------------
- Correction d'un problème d'allocation de mémoire trop important
- Correction d'un message d'erreur qui parfois pouvait survenir
+ Ajout de 2 paramètres : "Afficher si en combat" et "Afficher si hors combat"
 
Version 2.15 :
--------------
+ Ajout d'une nouvelle interface pour facilement naviguer entre les effets. Elle dispose de 120 effets par personnage et de 240 effets communs à tous les personnages.
+ Tous les effets pourront être copiés ou déplacés entre les diverses pages disponibles, et les pages pourront être renommées pour une meilleur visibilité
+ Ajout d'une fonction pour activer ou désactiver les effets
+ Ajout de l'activation des effets par debuff de zone (marche avec les pluies de feu, blizzard, etc...)
+ Ajout de l'activation des effets par enchantement des armes (droite, gauche ou les deux)
+ Ajout de l'activation des effets par points de combo, pour les druides-chat et voleurs
+ Ajout du paramètre "Sur la cible" pour activer les effets suivant les buffs/debuffs qu'aura la cible
+ Ajout du paramètre "Couleurs aléatoire", afin que la couleur d'un effet change à chaque activation
+ Ajout du paramètre "Texture WoW", permettant d'utiliser 25 textures internes du jeu à la place des textures de l'Addon
+ Les modifications de taille des textures seront désormais plus précises
- Suppression de la fonction "Liste" qui n'est plus utilisée pour sauvegarder des effets, tous vos effets sauvegardés seront placés dans les pages d'effets communs à tous les personnages et mis sur "OFF".
- Corrections de quelques bugs mineurs
 
 
Version 2.10 :
--------------
+ Ajout d'un bouton "+" permettant d'ajouter facilement un effet supplémentaire
+ Ajout d'un bouton "-" qui efface toutes les pages d'effets inutilisées et trie les autres par type
+ Désormais vous pouvez déplacer les effets plus précisément sur l'écran, et n'importe où
+ Ajout d'une commande qui définie si les Majuscules/minuscules des noms des buffs/débuff doivent être prises en compte (corrige certains soucis avec les versions non latines du jeu)
+ Ajout de deux options d'animation supplémentaires : "animation de départ" et "animation de fin", permettant des combinaisons d'effets plus sympas
+ Changement des numéros d'animation par des noms
+ Finallement, ajout de la 10ème animation
+ Ajout d'un paramètre qui remplace les centièmes de secondes du compteur de durée par la durée du second buff/débuff le plus court
+ Amélioration visuelle de l'interface d'option
- Suppression du paramètre de "disparition rapide" qui est devenu obsolète
- Suppression des lignes de commandes avancées qui ne sont plus utiles
- Enfin, correction du bug qui faisait que certains effets apparaissaient ou disparaissaient aléatoirement
- Corrections mineures de certains bugs d'animation
 
 
Version 2.01 :
--------------
+ Ajout du timer pour les débuffs et type de débuffs (et d'autres fonctions)
+ Ajout du paramètre "vitesse d'animation" pour tous les effets
+ Ajout du paramètre "durée de l'animation", si vous voulez que l'effet soit masqué après un certain temps
+ Ajout d'un paramètre permettant d'afficher les effets si les buffs/débuff ne sont pas actifs
+ Ajout d'une option qui vous permet de choisir plus facilement le nombre maximum de textures disponible pour l'AddOn
- Correction d'un bug qui empêchait les types de débuff de fonctionner correctement sur les versions non anglaises du jeu
- Correction d'un bug qui empêchait la sauvegarde du nombre max de textures
 
 
Version 1.12b :
---------------
- Ajout de 5 textures et de 3 animations (penser à ne pas écraser vos textures si vous en avez modifiées ou créés de nouvelles)
- Ajout d'un timer déplaçable pour les buffs (gestion des debuffs dans une future version). Le timer affichera toujours le temps restant du buff le plus court actif.
- Vous pouvez augmenter le nombre d'effet maximum jusqu'à 100 (via la commande /powa maxeffect)
- Vous pouvez entrer plusieurs noms de buffs/débuffs dans une seule page d'effet, si vous les séparez par un "/" (ex : Robustesse/Don du fauve)
- Vous pouvez activer un type de debuff qui n'est pas une magie, maladie, etc... via le nom "aucun" (l'effet s'activera si un débuff n'a aucun type particulier). De plus, vous pouvez entrer plusieurs type de débuffs dans la partie "nom du débuff" (pour pister les poisons en même temps que les maladies par exemple).
 
 
Version 1.12a :
---------------
- Correction d'un problème d'allocation de mémoire, tout devrait fonctionner normalement désormais
 
 
Version 1.12 :
--------------
- Ajout de la possibilité de sauvegarder ses effets dans une liste commune à tous les personnages, cliquez sur le bouton "Liste"
- Ajout de fonctions avancées, disponibles en tapant : /powa help
 
 
------- ----------------------------------------------------------------------------------------------------------------------------------------
ENGLISH
-------
 
This Mod was created to have a better visibility when you gain buffs, debuffs and many more. Very util for shorts buffs or debuffs, it allows you to have in the center of the screen, or around your character, very customizable visual effects, rather than all the time have to look on the other side of the screen to see if you have a buff or a debuff on you.
 
Initially created to have an better visibility on the short buffs like "clear cast" or some boost trinket you activate, it works now with debuffs (whatever their name), debuff types like Magic or Curse, combo points, Aoe debuffs and weapon enchants.
 
How to use :
 
Type /powa
to open the effect editor, then you can choose the texture to apply to the effect, the position, the size, the symmetry, etc...
Then, enter the name or a part of the name of the buff / debuff (ex: if you try to activate the visual effect on "Clear cast", you can enter only "Clear" in the name of the buff).
 
The Mod will take care to show the effect where you wish and to remove it when the buff is finished.
 
 
You can so easily change the 20 available textures or add new ones.
 
 
 
- = Updates: =-
 
Version 2.34 :
--------------
+ Added an effect activation when a specific action is ready or not in your action bars.
- Finally, corrected the bug that cause some weapon enchant effect don't appear normally.
 
Version 2.32 :
--------------
+ Compatibility with version 2.0.3 of Wow
+ Power Auras come now with 50 textures (you don't need anymore to download the 2 texture packs)
+ Added 3 timers
+ Added a timer duration for buffs/debuffs on the target
+ You can now add easily your own textures (in the "Custom" Directory)
+ Added tests on friendly or ennemy target
+ Added a easy way to move the effects or timer anywhere on the screen
+ You can now display the textures with the normal transparency mode
- The Aoe debuffs should no longer persist after death or zone change
- Corrections of some minor bugs
 
Version 2.17 :
--------------
+ Compatibility to version 2.0.0 of Wow
 
Version 2.16 :
--------------
- Fixed the problem of high memory usage
- Fixed some error message that sometimes can be displayed
+ Added 2 options : "Only if in combat" and "Only if not in combat" for every effects
 
Version 2.15 :
--------------
+ Added a new interface to easily navigate through all the effects. You can now create/edit 120 effects per character and 240 effects shared by all your characters.
+ All the effects can be copied and moved in the differents pages available, and the pages can be renamed for better visibility
+ Added a function to put the effects ON or OFF
+ Added the effect activation by AOE debuffs (like rain of fire, blizzard, etc...)
+ Added the effect activation by weapon enchants (main hand, off hand or both hands)
+ Added the effect activation by combo points, for cats-druids and rogues
+ Added the option "On target" to display effects when the target has a buff/debuff
+ Added the option "Random color" to randomly change the color of an effect after each activation
+ Added the option "WoW Textures", which can be used to browse through 25 internal textures of the game instead of the mod's textures
+ Texture size modifications will now be more precise.
- Removed the panel "List" which is not any more used to save effects, all your saved effects will be placed in the global effects' pages and put on "OFF".
- Corrections of some minor bugs
 
 
Version 2.10 :
--------------
+ Added a button "+" to easily add more effects
+ Added a button "-" to clear all unused effects and sort the other by type
+ You can now move the effects with more precision and anywhere one the screen (or outside ;)
+ Added a way to ignore or not the upper/lowercase of buffs/debuffs names (fixing some bugs in non-latin versions of the game)
+ Added two new animation's options : "Begin animation" and "End animation", allowing more cool effects combinations
+ Changed numbers of animations by names
+ Finally, added the 10th animation
+ Added a option to show the 2 shortest timers for both buffs and debuffs
+ Visual upgrade of the option interface
- Useless option "Quick Hide" as been removed
- Advanced command line parameters removed (no more used)
- Finally, fixed the bug which cause some effects beeing randomly activated or deactivated
- Some minor animation bugs fixes
 
 
Version 2.01 :
--------------
+ Added a timer for debuffs and debuff types (and more functions)
+ Added the option "animation speed" for all effects
+ Added the option "animation duration", if you want an effect to be hidden after some time
+ Added the option to show the effects only when buff/debuff are not active
+ Added an option to easily change the number of textures available to the Mod
- Fixed a bug causing incorrect display of debuff types on non-english versions of the game
- Fixed a bug not allowing to save the maximum number of texture correctly
 
 
Version 1.12b :
---------------
- Added 5 textures and 3 animations (don't overwrite your textures if you modified or created new ones)
- Added a movable timer for buffs (debuffs in a future version). This timer will always show the remaining time of the shortest buff.
- You can now increase the maximum number of effects to 100 (with the command /powa maxeffect)
- You can enter several names of buffs/debuffs on a single page of effect, if you separate them by "/" (ex: Fortitude/Mark of the wild)
- You can activate a type of debuff which isn't a Magic, Disease... with the word "None" (the effect will show if the debuff has no particular type). Furthermore, you can enter multiple type of debuffs to the "Name of the debuff" (to track Poison and Disease for example).
 
 
Version 1.12a :
---------------
- Fixed a problem with memory usage, it should work great now
 
 
Version 1.12:
-------------
- Added the possibility to save yours effects in a list common to all the characters, juste click the button "List"
- Added advanced options, available by typing : / powa help
\ No newline at end of file
trunk/PowerAuras/localisation_frFR.lua New file
0,0 → 1,267
if (GetLocale() == "frFR") then
 
PowaAuras.Anim[0] = "[Invisible]";
PowaAuras.Anim[1] = "Statique";
PowaAuras.Anim[2] = "Clignotement";
PowaAuras.Anim[3] = "Agrandir";
PowaAuras.Anim[4] = "Pulsation";
PowaAuras.Anim[5] = "Effet bulle";
PowaAuras.Anim[6] = "Goutte d'eau";
PowaAuras.Anim[7] = "Electrique";
PowaAuras.Anim[8] = "R\195\169tr\195\169cir";
PowaAuras.Anim[9] = "Flamme";
PowaAuras.Anim[10] = "Orbite";
 
PowaAuras.BeginAnimDisplay[0] = "[Aucun]";
PowaAuras.BeginAnimDisplay[1] = "Zoom Avant";
PowaAuras.BeginAnimDisplay[2] = "Zoom Arriere";
PowaAuras.BeginAnimDisplay[3] = "Transparence seule";
PowaAuras.BeginAnimDisplay[4] = "Gauche";
PowaAuras.BeginAnimDisplay[5] = "Haut-Gauche";
PowaAuras.BeginAnimDisplay[6] = "Haut";
PowaAuras.BeginAnimDisplay[7] = "Haut-Droite";
PowaAuras.BeginAnimDisplay[8] = "Droite";
PowaAuras.BeginAnimDisplay[9] = "Bas-Droite";
PowaAuras.BeginAnimDisplay[10] = "Bas";
PowaAuras.BeginAnimDisplay[11] = "Bas-Gauche";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[Aucun]";
PowaAuras.EndAnimDisplay[1] = "Zoom Avant";
PowaAuras.EndAnimDisplay[2] = "Zoom Arriere";
PowaAuras.EndAnimDisplay[3] = "Transparence seule";
 
-- untranslated--francais--------------------- --
PowaAuras.Sound[0] = "None"; --
PowaAuras.Sound[1] = "LEVELUP"; --
PowaAuras.Sound[2] = "LOOTWINDOWCOINSOUND";
PowaAuras.Sound[3] = "MapPing"; --
PowaAuras.Sound[4] = "Exploration";
PowaAuras.Sound[5] = "QUESTADDED"; --
PowaAuras.Sound[6] = "QUESTCOMPLETED";
PowaAuras.Sound[7] = "WriteQuest"; --
PowaAuras.Sound[8] = "Fishing Reel in";
PowaAuras.Sound[9] = "igPVPUpdate"; --
PowaAuras.Sound[10] = "ReadyCheck";
PowaAuras.Sound[11] = "RaidWarning"; --
PowaAuras.Sound[12] = "AuctionWindowOpen";
PowaAuras.Sound[13] = "AuctionWindowClose"; --
PowaAuras.Sound[14] = "TellMessage";
PowaAuras.Sound[15] = "igBackPackOpen"; --
 
PowaAuras.Text = {
welcome = "Tapez /powa pour afficher les options.",
 
aucune = "Aucune",
aucun = "Aucun",
largeur = "Largeur",
hauteur = "Hauteur",
mainHand = "droite",
offHand = "gauche",
bothHands = "toutes",
 
DebuffType =
{
Magic = "Magie",
Disease = "Maladie",
Curse = "Mal\195\169diction",
Poison = "Poison",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "CC",
[PowaAuras.DebuffCatType.Silence] = "Silence",
[PowaAuras.DebuffCatType.Snare] = "Snare",
[PowaAuras.DebuffCatType.Stun] = "Stun",
[PowaAuras.DebuffCatType.Root] = "Root",
[PowaAuras.DebuffCatType.Disarm] = "Disarm",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
-- Main
nomEnable = "Activer Power Auras",
aideEnable = "Active tous les effets de Power Auras",
ListePlayer = "Page",
ListeGlobal = "Global",
aideMove = "D\195\169place l'effet s\195\169l\195\169ctionn\195\169 ici.",
aideCopy = "Copie l'effet s\195\169l\195\169ctionn\195\169 ici.",
nomRename = "Renommer",
aideRename = "Renomme la page d'effet en cours.",
nomTest = "Tester",
nomHide = "Tout masquer",
nomEdit = "Editer",
nomNew = "Nouveau",
nomDel = "Suppr.",
nomImport = "Import", --- untranslated
nomExport = "Export", --- untranslated
aideImport = "Paste the Aura String to the editbox and press \'Accept\'", --- untranslated
aideExport = "Copy the Aura String from the editbox to share with others.", --- untranslated
aideDel = "Supprime l'effet s\195\169l\195\169ctionn\195\169 (appuyez sur CTRL pour autoriser la suppression)",
nomMove = "D\195\169placer",
nomCopy = "Copier",
nomPlayerEffects = "Effets du personnage",
nomGlobalEffects = "Effets\nglobaux",
aideEffectTooltip = "(Maj-click pour mettre cet effet sur ON ou OFF)",
 
-- untranslated --francais-------------------
nomDebug = "Activer Debug Messages",
aideDebug = "Shows Debug Messages in the chat",
 
nomSound = "Sound to play",
aideSound = "Plays a sound at the beginning.",
nomCustomSound = "OR soundfile:",
aideCustomSound = "Enter a soundfile that is in the Sounds folder, BEFORE you started the game. mp3 and wav are supported. example: 'cookie.mp3' ;)",
 
nomExact = "Exact Name",
nomThreshold = "Threshold",
nomGCD = "Global Cooldown",
aideThreshInv = "Check this to invert the threshold logic. Health/Mana: default = Low Warning / checked = High Warning. Energy/Rage/Power: default = High Warning / checked = Low Warning", --- untranslated
nomThreshInv = "</>",
nomMine = "Cast by me", --- untranslated
nomDispellable = "I can dispell",
 
aideGCD = "Check this and the Global Cooldown triggers with aura. May cause blinking the aura, when an action only has a Global Cooldown.",
aideStance = "Select which Stance,Aura or Form trigger the event.",
 
nomCheckHealth = "Health",
nomCheckMana = "Mana",
nomCheckRageEnergy = "Rage/Energy/Runic",
nomCheckStance = "Stance",
nomCheckSpells = "Spell Alert", --- untranslated
nomCheckOwnSpell = "Spell from my Spellbook",
 
aideExact = "Check this to test the exact name of the buff/debuff.",
aideMine = "Check this to test only buffs/debuffs cast by the player", --- untranslated
 
nomTabSound = "Sound",
nomTabTimer = "Timer",
-- -------------------------------------------
 
nomTexture = "Texture",
aideTexture = "La texture \195\160 afficher. Vous pouvez facilement remplacer les textures en changeant les fichier Aura#.tga du dossier de l'AddOn.",
nomAnim1 = "Animation principale",
nomAnim2 = "Animation secondaire",
aideAnim1 = "Anime la texture ou pas, avec diff\195\169rents effets.",
aideAnim2 = "Cette animation sera affich\195\169e avec moins d'opacit\195\169 que la principale. Attention, afin de ne pas surcharger le tout.",
nomDeform = "D\195\169formation",
aideDeform = "Etire la texture vers le haut ou en largeur.",
aideColor = "Cliquez ici pour changer la couleur de la texture.",
aideFont = "Click here to pick Font. Press OK to apply the selection.", --- untranslated
aideMultiID = "Enter here other Aura IDs to combine checks. Multiple IDs must be separated with '/'. Aura ID can be found as [#] on first line of Aura tooltip.", --- untranslated
aideTooltipCheck = "Also check the tooltip starts with this text", --- untranslated
aideBuff = "Entrez ici le nom du buff, ou une partie du nom, qui doit activer/d\195\169sactiver l'effet. Vous pouvez entrer plusieurs noms s'ils sont s\195\169par\195\169 comme il convient (ex: Super Buff/Puissance)",
aideBuff2 = "Entrez ici le nom du d\195\169buff, ou une partie du nom, qui doit activer/d\195\169sactiver l'effet. Vous pouvez entrer plusieurs noms s'ils sont s\195\169par\195\169 comme il convient (ex: Maladie noire/Peste)",
aideBuff3 = "Entrez ici le type du d\195\169buff qui doit activer ou d\195\169sactiver l'effet (Poison, Maladie, Mal\195\169diction, Magie ou Aucun). Vous pouvez aussi entrer plusieurs types de d\195\169buffs \195\160 la fois.",
aideBuff4 = "Entrez ici le nom de l'effet de zone qui activera l'effet (comme une pluie de feu par exemple, g\195\169n\195\169ralement le nom de l'effet est disponible dans le journal de combat)",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)", --- untranslated
aideBuff6 = "Vous pouvez entrez ici le ou les chiffres des points de combos qui activeront l'effet (ex : 1 ou 1/2/3 ou 0/4/5 etc...) ",
aideBuff7 = "Indiquez ici le nom, ou une partie du nom, d'une des actions dans vos barres. L'effet sera actif si l'action est utilisable.",
 
aideSpells = "Enter here the Spell Name that will trigger a spell alert Aura.", --- untranslated
aideStacks = "Enter here the operator and the amount of stacks, which must activate/deactivate the effect. It works only with an operator! ex: '<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'", -- untranslated
 
aideUnitn = "Entrez ici le nom du unit, qui doit activer/d\195\169sactiver l'effet. Works only for raid/partymembers.",
aideUnitn2 = "Only for raid/group.",
aideMaxTex = "Defini le maximum de textures disponibles dans l'Editeur d'Effets. Si vous rajoutez des textures en les mettant dans le dossier de l'AddOn (nomm\195\169es de AURA1.tga \195\160 AURA50.tga) c'est ici qu'il faudra le signaler.",
aideAddEffect = "Ajoute une page d'effet.",
aideWowTextures = "Cochez cette case pour utiliser les textures internes du jeu plut\195\180t que le dossier de l'addon pour cet effet.",
aideRealaura = "Reale Aura",
aideTextAura = "Check this to type text instead of texture.", -- untranslated
aideCustomTextures = "Cochez cette case pour utiliser les textures pr\195\169sentes dans le sous-dossier 'Custom'. Vous devez connaitre le nom du fichier et indiquer son nom (ex : myTexture.tga)", --- untraslated (needs update to match enGB string)
aideRandomColor = "Cochez cette case pour que l'effet prenne des couleurs au hasard \195\160 chaque activation.",
aideTexMode = "Decochez cette case pour utiliser la transparence de la texture. Par defaut, les couleurs sombres seront plus transparentes.",
nomActivationBy = "Activation par :",
nomOwnTex = "Use own Texture", -- untranslated
aideOwnTex = "Use the De/Buff or Ability Texture instead.", -- untranslated
nomStacks = "Stacks", -- untranslated
 
nomSpeed = "Vitesse d'Anim.",
nomBegin = "Animation de d\195\169part",
nomEnd = "Animation de fin",
nomSymetrie = "Sym\195\169trie",
nomAlpha = "Transparence",
nomPos = "Position",
nomTaille = "Taille",
 
nomCheckBuff = "Buff",
nomCheckDebuff = "Debuff",
nomCheckDebuffType = "Type du Debuff",
nomCheckAoeDebuff = "Debuff de zone",
nomCheckEnchant = "Enchant. d'arme",
nomCheckCombo = "Combos",
nomCheckSkill = "Action utilisable",
nomCheckAggro = "Aggro", -- untranslated
nomCheckPvP = "PvP", -- untranslated
 
nomCheckTarget = "Cible ennemie",
nomCheckFriend = "Cible amie",
nomCheckParty = "Cible partie",
nomCheckFocus = "Cible focus",
nomCheckRaid = "Cible raid",
nomCheckGroupOrSelf = "Raid/Party or self",
nomCheckGroupAny = "Any", --- untranslated
nomCheckOptunitn = "Cible unit",
aideTarget = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible ennemie.",
aideTargetFriend = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible amie.",
aideParty = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible partie.",
aideGroupOrSelf = "Check this to test a party or raid member or self.",
aideFocus = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible focus.",
aideRaid = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible raid.",
aideGroupAny = "Cochez cette case pour v\195\169rifier plut\195\180t les buffs/d\195\169buffs d'une cible unit de raid ou partie.",
aideExact = "Check this to test the exact name of the buff/debuff.",
aideMine = "Check this to test only buffs/debuffs cast by the player", --- untranslated
nomCheckShowTimer = "Afficher",
nomTimerDuration = "Chronometre",
 
aideTimerDuration = "Affiche un timer pour simuler la dur\195\169e d'un buff/debuff sur la cible (0 pour d\195\169sactiver)",
aideShowTimer = "Cochez cette case pour afficher la dur\195\169e de cet effet.",
aideSelectTimer = "Choisissez quel timer sera pris pour afficher la dur\195\169e",
aideSelectTimerBuff = "Choisissez quel timer sera pris pour afficher la dur\195\169e (celui-ci est reserv\195\169 aux buffs du joueur)",
aideSelectTimerDebuff = "Choisissez quel timer sera pris pour afficher la dur\195\169e (celui-ci est reserv\195\169 aux debuffs du joueur)",
 
nomCheckInverse = "Afficher si inactif",
aideInverse = "Cochez cette case pour afficher cet effet uniquement quand le buff/d\195\169buff n'est pas actif.",
 
nomCheckIgnoreMaj = "Ignorer les majuscules",
aideIgnoreMaj = "Cochez cette case pour ignorer les majuscules/minuscules du nom des buffs/d\195\169buffs.",
 
nomDuration = "Dur\195\169e de l'Anim.",
aideDuration = "Pass\195\169 ce d\195\169lai, l'animation sera masqu\195\169e (0 pour d\195\169sactiver)",
 
nomCentiemes = "Afficher centiemes",
nomDual = "Afficher 2 dur\195\169es",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "Fermer",
nomEffectEditor = "Editeur d'Effet",
nomAdvOptions = "Options",
nomMaxTex = "Maximum de textures disponibles",
nomTabAnim = "Animation",
nomTabActiv = "Activation",
nomWowTextures = "Textures WoW",
nomCustomTextures = "Autres Textures",
nomRealaura = "Reale Aura",
nomTextAura = "Text Aura", --- untranslated
nomRandomColor = "Couleurs al\195\169atoires",
nomTexMode = "Glow",
nomInCombat = "Actif si en combat",
aideInCombat = "Affiche cet effet uniquement si le personnage est en combat.",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomNotInCombat = "Actif si hors combat",
aideNotInCombat = "Affiche cet effet uniquement si le personnage ne se trouve pas en combat.",
 
nomIsMounted = "Only if Mounted", -- untranslated
aideIsMounted = "Checked: Only when on mount. Uncheked: Only when dismounted.", -- untranslated
nomInVehicle = "Only if in Vehicle", -- untranslated
aideInVehicle = "Checked: Only when in vehicle. Uncheked: Only when not in vehicle.", -- untranslated
nomIsInRaid = "Only if in Raid", -- untranslated
aideIsInRaid = "Show this effect only when you are in a raid.", -- untranslated
nomResting = "Only if Resting",
aideResting = "Checked: Only when Resting. Uncheked: Only when not Resting.",
};
end
 
trunk/PowerAuras/timers.txt New file
0,0 → 1,10
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
\ No newline at end of file
trunk/PowerAuras/TODO.txt New file
0,0 → 1,30
-- * [DONE] Aggro gain/loss aura.
-- * [DONE] Option to use item/spell icons available on your actionbars instead of the pre-defined ones
-- * [DONE] PvP flagged
-- * [DONE] Make the custom texture field accept spell name (for spellbook spells) or spellid as input.
-- * [DONE] Option to use text as aura
-- * [DONE] Option to combine checks (AND logic)
-- * [DONE] new trigger: Minimal spell alert functionality (enemytarget/focus spellcasts)
-- * [DONE] option to test buff/debuffs casted by the player only.
-- * [DONE] Link timer to aura to overcome the 5timers limit.
-- * [DONE] Export/Import Auras.
-- * [DONE] Death Knight presence.
-- * [DONE] Better formatting of export strings (add whitespace so they wrap).
-- * [DONE] Smaller increments in health/mana/energy sliders.
-- * [DONE] "Casted" -> "Cast" typo.
-- * [DONE] Timer texture glow option.
-- * [DONE]Vehicle support and option to disable if in vehicle.
-- * [partially done] a redesign of Custom/Default auras to make adding / managing auras easier.
-- * Timer offset option.
-- * Enable Timer for Debuffs on enemies (if possible)
-- * Hide when resting option.
-- * Support for spellid in buff/debuff fields.
-- * Death Knight Runes.
-- * new trigger: Target Properties (name, race, class, creature family or type, classification)
-- * new trigger: Buff type for hostiles
-- * Option to show stacks instead of timer or secondary timer.
-- * a couple more transformation effects. (wiggle, ripple, explosion, flip, spin)
-- * Add more debuff types. (fear, bleed, stun, snare, sap etc). EDIT: Not possible without hardcoded debuff lists :(
-- * loop sound option: main problem how to determine loop duration?
-- * optimize code and table usage
-- * rename "Global 10" to "Share" and change the "Rename" button to "Send" for sending the page effects to other users.
trunk/PowerAuras/CN_NOTES.txt New file
0,0 → 1,66
- =============== ¸üÐÂÈÕÖ¾: ===============-
* v.2.37
 
-- Ôö¼ÓÁËÒ»¸ö¼¤»îÌõ¼þ,µ±ÍŶӳÉÔ±»ñµÃij¸ödebuffʱ´¥·¢
-- Ôö¼ÓÁËÒ»¸ö¼¤»îÌõ¼þ,µ±ÍŶӳÉԱȫ²¿»ñµÃij¸öbuffʱ´¥·¢
-- Ôö¼ÓÁ˽¹µã×·×Ù
-- Ôö¼ÓÁËÍŶÓ×·×Ù
-- Ôö¼ÓÁËС¶Ó×·×Ù(Äã¿ÉÒÔÊäÈëÒ»¸öС¶ÓÃûÀ´¼ì²âËûÃǵÄbuff/debuff,Ö»Äܼì²â×Ô¼ºÍŶÓÖеÄС¶Ó)
-- Ôö¼ÓÁ˵ÂÓïÖ§³Ö
 
But i had no time to test this in raid. pls report if it works or not.
 
 
v.2.36b
-- ÐÞÕýÁËbuff/debuff±»Ë¢ÐÂʱ,ÌØЧʱ¼ä²»¸Ä±äµÄ´íÎó
 
v.2.36a
-- È¡ÏûÁËÁÄÌì´°¿ÚÖеÄdebugÅÅ´íÐÅÏ¢
-- Ôö¼ÓÁËÈý¸ö±±Å·×ÖÌåµÄ×Ô¶¨Òå²ÄÖÊ,¼ûcustomÎļþ¼Ð
-- ÍŶÓbuffÏÖÔÚÖ»ÔÚÍŶÓģʽÏÂÓÐЧ
 
v.2.35
-- Ôö¼ÓÁËÒ»¸ö¼ì²éÍŶӳÉÔ±buff/debuffµÄÑ¡Ïî
 
Version 2.34 :
--------------
+ Ôö¼ÓÁËÒ»¸ö¼¤»îÌõ¼þ£ºÖ¸¶¨¶¯×÷ÊÇ·ñÀäÈ´£¨»òÖ¸¶¨¶¯×÷ÊÇ·ñÔÚ¶¯×÷ÌõÉÏ£©
- ×îÖÕ£¬ÐÞÕýÁËijЩÎäÆ÷¸½Ä§²»ÄÜÕýÈ·ÏÔʾµÄbug¡£
 
Version 2.32 :
--------------
+ Ϊ2.03°æ±¾×öÁ˼æÈÝÐÔµ÷Õû
+ PowerAuras°²×°°üÀïÏÖÔÚ°üÀ¨50ÖÖ²ÄÖÊ(Äã²»ÐèÒªÔÚ¶îÍâÏÂÔØÁíÍâÁ½¸ö²ÄÖÊ°üÁË)
+ Ôö¼ÓÁË3¸ö¼ÆʱÆ÷
+ Ôö¼ÓÁËÒ»¸ö¼ÆʱÆ÷ÒÔÏÔʾĿ±êÉíÉÏbuff/debuffµÄ³ÖÐøʱ¼ä
+ ÏÖÔÚ×Ô¶¨Òå²ÄÖʱäµÃÈÝÒ×ÁË,ÄãÖ»Ðè°Ñ×öºÃµÄ²ÄÖÊ·ÅÔÚCustomÎļþ¼ÐÏÂ
+ Ôö¼ÓÁËÒ»¸öÔÚÓѺÃ/µÐ¶ÔÄ¿±êÉϽøÐвâÊԵŦÄÜ
+ Ôö¼ÓÁËÒ»¸ö·½·¨Ê¹Íæ¼Ò¸ü·½±ãµÄÒƶ¯ÌØЧºÍ¼ÆʱÆ÷ÔÚÆÁÄ»ÉϵÄλÖÃ
+ ÏÖÔÚ¿ÉÒÔÈòÄÖÊÏÔʾΪÕý³£Í¸Ã÷ģʽÁË
- AOE·¨ÊõÌØЧÔÚÄãËÀÍö»òÇл»ÇøÓòʱÄÜÕýÈ·ÏûʧÁË
- ÐÞÕýÁËһЩÆäËü½ÏСµÄbug
 
Version 2.17 :
--------------
+ Ϊ2.0.0°æ±¾×öÁ˼æÈÝÐÔµ÷Õû
 
[11/07]Version 2.16 :
--------------
- ÐÞÕýÁ˵¼ÖÂÄÚ´æÕ¼Óùý¸ßµÄÎÊÌâ;
- ÐÞÕýÁËijЩÇé¿ö»áµ¯³ö´íÎóÌáʾµÄÎÊÌâ
+ ΪÿÖÖÌØЧÔö¼ÓÁËÁ½¸öÑ¡Ïî:"½öÓÃÓÚÕ½¶·×´Ì¬"ºÍ"½öÓÃÓÚ·ÇÕ½¶·×´Ì¬"
 
[11/03]Version 2.15 :
--------------
+ Ôö¼ÓÁËÒ»¸öнçÃæ·½±ã¹ÜÀíËùÓÐÌØЧ.ÏÖÔÚÿ¸ö½ÇÉ«¿ÉÒÔ´´½¨/±à¼­¹²120¸öÌØЧ,»¹¿ÉÒÔ±£´æ240¸öËùÓнÇÉ«¿ÉÓõĹ²ÓÃÌØЧ.
+ ËùÓеÄÌØЧ¶¼¿ÉÒÔÔÚ¿ÉÓõķÖÀàÖи´ÖÆ»òÕßÒƶ¯,ÕâЩ·ÖÀàÄã¿ÉÒÔÖØÃüÃû,ÒÔ±ã¸üºÃµÄ¹ÜÀíºÍʹÓÃÕâЩÌØЧ.
+ Ôö¼ÓÁËÒ»¸ö¿ÉÒÔµ¥¶ÀÆôÓÃ/½ûÓÃij¸öÌØЧµÄ¹¦ÄÜ
+ Ôö¼ÓÁËÒ»¸öͨ¹ýÊܵ½AOEÀà·¨ÊõÓ°Ïì¶ø¼¤»îÌØЧµÄ¼¤»î·½Ê½(±ÈÈç »ðÑæÖ®Óê, ±©·çÑ©, µÈµÈ...)
+ Ôö¼ÓÁËÒ»¸öͨ¹ýÎäÆ÷¸½Ä§¼¤¶ø¼¤»îÌØЧµÄ¼¤»î·½Ê½ (Ö÷ÊÖ, ¸±ÊÖ »òË«ÎäÆ÷)
+ Ôö¼ÓÁËÒ»¸öͨ¹ý»ñµÃÁ¬»÷µãÊý¶ø¼¤»îÌØЧµÄ¼¤»î·½Ê½,µÁÔôºÍèÐÎ̬µÄµÂ³ÒÁ¿ÉÓÃ.
+ Ôö¼ÓÁËÒ»¸öÑ¡Ïî"ÔÚÄ¿±êÉíÉÏ",×÷ÓÃÊǵ±Ä¿±êÉíÉÏÓÐijÖÖBUFF»òÕßDEBUFFʱ,Äã¿ÉÒÔ¿´¼û¶¨ÒåºÃµÄÌØЧ.
+ Ôö¼ÓÁËÒ»¸öÑ¡Ïî"Ëæ»úÑÕÉ«",×÷ÓÃÊǵ±ÌØЧÿ´Î¼¤»îʱ¶¼Ñ¡ÔñÒ»ÖÖËæ»úµÄÑÕÉ«
+ Ôö¼ÓÁËÒ»¸öÑ¡Ïî"WOWÄÚÖòÄÖÊ",×÷ÓÃÊÇ¿ÉÓÃä¯ÀÀºÍʹÓÃÓÎÏ·ÄÚÖõÄ25ÖÖ²ÄÖʶø²»Ê¹Óòå¼þ×Ô´øµÄ²ÄÖÊ.
+ ²ÄÖʳߴçÐ޸ŦÄܽ«»á¸ü¾«È·.
- È¥³ýÁË[Áбí]Ãæ°å,ÒԺ󽫲»ÔÙʹÓÃ[Áбí]¹¦ÄÜÀ´±£´æÌØЧ,ËùÓÐÌØЧ½«±»±£´æÔÚ[¹«ÓÃÌØЧ·ÖÀà]ÖÐ,²¢±»ÉèÖÃΪ"½ûÓÃ"
- ÐÞÕýÁËһЩСbug
\ No newline at end of file
trunk/PowerAuras/PowerAuras.xml New file
0,0 → 1,2937
<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/
..\..\FrameXML\UI.xsd">
 
<Frame name="PowaAuras_Frame"
hidden="false">
<Scripts>
<OnLoad>
PowaAuras:OnLoad(self)
</OnLoad>
<OnEvent>
if (PowaAuras.ModTest == false) then
PowaAuras:Debug(event);
end
PowaAuras[event](PowaAuras, ...);
</OnEvent>
<OnUpdate>
PowaAuras:OnUpdate(elapsed)
</OnUpdate>
</Scripts>
</Frame>
 
<GameTooltip name="PowaAuras_Tooltip"
frameStrata="TOOLTIP"
hidden="false"
parent="UIParent"
inherits="GameTooltipTemplate">
<Anchors>
<Anchor point="BOTTOM"
relativePoint="TOP">
<Offset>
<AbsDimension x="0"
y="100" />
</Offset>
</Anchor>
</Anchors>
</GameTooltip>
<GameTooltip name="PowaAction_Tooltip"
frameStrata="TOOLTIP"
hidden="false"
parent="UIParent"
inherits="GameTooltipTemplate">
<Anchors>
<Anchor point="BOTTOM"
relativePoint="TOP">
<Offset>
<AbsDimension x="0"
y="100" />
</Offset>
</Anchor>
</Anchors>
</GameTooltip>
<!-- Copied from OptionSliderTemplate 2.4.3 because Blizzard is ......
Check to see if they use consistent fontsizes in build > 8982 and remove this template.
Revert PowaBarSliderTemplate to inherit from OptionsSliderTemplate if it's fixed as well. -->
<Slider name="OptionsSmallSliderTemplate" orientation="HORIZONTAL" virtual="true" enableMouse="true">
<Size>
<AbsDimension x="144" y="17"/>
</Size>
<HitRectInsets>
<AbsInset left="0" right="0" top="-10" bottom="-10"/>
</HitRectInsets>
<Backdrop bgFile="Interface\Buttons\UI-SliderBar-Background" edgeFile="Interface\Buttons\UI-SliderBar-Border" tile="true">
<EdgeSize>
<AbsValue val="8"/>
</EdgeSize>
<TileSize>
<AbsValue val="8"/>
</TileSize>
<BackgroundInsets>
<AbsInset left="3" right="3" top="6" bottom="6"/>
</BackgroundInsets>
</Backdrop>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOM" relativePoint="TOP"/>
</Anchors>
</FontString>
<FontString name="$parentLow" inherits="GameFontHighlightSmall" text="LOW">
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-4" y="3"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
<FontString name="$parentHigh" inherits="GameFontHighlightSmall" text="HIGH">
<Anchors>
<Anchor point="TOPRIGHT" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="4" y="3"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnEnter>
if ( self:IsEnabled() ) then
if ( self.tooltipText ) then
GameTooltip:SetOwner(self, self.tooltipOwnerPoint or "ANCHOR_RIGHT");
GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1);
end
if ( self.tooltipRequirement ) then
GameTooltip:AddLine(self.tooltipRequirement, 1.0, 1.0, 1.0, 1.0);
GameTooltip:Show();
end
end
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
<ThumbTexture name="$parentThumb" file="Interface\Buttons\UI-SliderBar-Button-Horizontal">
<Size>
<AbsDimension x="32" y="32"/>
</Size>
</ThumbTexture>
</Slider>
<Slider name="PowaBarSliderTemplate"
inherits="OptionsSmallSliderTemplate"
virtual="true">
<Scripts>
<OnEnter>
if (self.aide) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);
end
</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Slider>
<CheckButton name="PowaCheckTemplate"
inherits="OptionsSmallCheckButtonTemplate"
virtual="true">
<HitRectInsets>
<AbsInset left="0"
right="0"
top="0"
bottom="0" />
</HitRectInsets>
</CheckButton>
<CheckButton name="PowaRadioTemplate"
inherits="UIRadioButtonTemplate"
virtual="true">
<HitRectInsets>
<AbsInset left="0"
right="0"
top="0"
bottom="0" />
</HitRectInsets>
<Scripts>
<OnEnter>
if (self.tooltipText) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1);
end
</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</CheckButton>
<Button name="PowaFontButtonTemplate" virtual="true">
<Size>
<AbsDimension x="200" y="16"/>
</Size>
<Layers>
<Layer level="BORDER">
<FontString name="$parentText" inherits="GameFontNormalSmall" justifyH="CENTER">
<Size>
<AbsDimension x="196" y="14"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="10" y="-3"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
PowaAuras:FontButton_OnClick(self);
</OnClick>
</Scripts>
<HighlightTexture file="Interface\QuestFrame\UI-QuestTitleHighlight" alphaMode="ADD">
<Size>
<AbsDimension x="200" y="16"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="5" y="-2"/>
</Offset>
</Anchor>
</Anchors>
</HighlightTexture>
</Button>
<Frame name="PowaDebugMessages"
parent="UIParent"
frameStrata="HIGH"
hidden="true">
<Size>
<AbsDimension x="300"
y="300" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="UIParent"
relativePoint="LEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer>
<FontString name="PowaDebugMessagesText"
inherits="GameFontNormalSmall"
justifyH="LEFT"
text="Texte">
<Size>
<AbsDimension x="300"
y="300" />
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="14" />
</FontHeight>
</FontString>
</Layer>
</Layers>
</Frame>
 
<Frame name="PowaBarConfigFrame"
movable="true"
parent="UIParent"
frameStrata="DIALOG"
hidden="true"
enableMouse="true"
enableKeyboard="true">
<Size>
<AbsDimension x="348"
y="704" />
</Size>
<Anchors>
<Anchor point="CENTER"
relativeTo="UIParent">
<Offset>
<AbsDimension x="0"
y="50" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\DialogFrame\UI-DialogBox-Border"
tile="true">
<BackgroundInsets>
<AbsInset left="11"
right="12"
top="12"
bottom="11" />
</BackgroundInsets>
<TileSize>
<AbsValue val="200" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.9, 1.0, 0.95); self:SetBackdropColor(0.6, 0.6, 0.6);</OnLoad>
<OnMouseDown>PowaAuras:Bar_MouseDown(self, button, "PowaBarConfigFrame" );</OnMouseDown>
<OnMouseUp>PowaAuras:Bar_MouseUp(self, button, "PowaBarConfigFrame" );</OnMouseUp>
</Scripts>
<Layers>
<Layer>
<Texture file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="180"
y="32" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="8" />
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.2"
right="0.8"
top="0"
bottom="0.6" />
</Texture>
<FontString name="PowaHeader"
inherits="GameFontNormalSmall"
text="POWER AURAS">
<Size>
<AbsDimension x="140"
y="0" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="-4" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="14" />
</FontHeight>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="PowaCloseButton">
<Size>
<AbsDimension x="30"
y="30" />
</Size>
<Anchors>
<Anchor point="TOPRIGHT"
relativeTo="PowaBarConfigFrame"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-4"
y="-4" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>PowaAuras:EditorClose();</OnClick>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Up" />
<PushedTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Down" />
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight"
alphaMode="ADD" />
</Button>
<Frame name="PowaBarConfigFrameEditor">
<Size>
<AbsDimension x="310"
y="300" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Layers>
<Layer>-- texture
<Texture name="AuraTexture"
file="Interface\AddOns\PowerAuras\Auras\Aura1.tga"
alphaMode="ADD">
<Size>
<AbsDimension x="107"
y="107" />
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="22"
y="-5" />
</Offset>
</Anchor>
</Anchors>
</Texture></Layer>
</Layers>
<Frames>
<Slider name="PowaBarAuraTextureSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="230"
y="16" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="AuraTexture"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-80"
y="-104" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.aide = PowaAuras.Text.aideTexture; self:SetValueStep(1);
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraTextureSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<EditBox name="PowaBarAurasText"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="225"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarAuraTextureSlider"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="5"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="100" />
</Layer>
</Layers>
<Scripts>
<OnLoad>self:SetMaxLetters(100)</OnLoad>
<OnEnterPressed>PowaAuras:AurasTextChanged(); self:ClearFocus()</OnEnterPressed>
<OnEditFocusLost>PowaAuras:AurasTextChanged()</OnEditFocusLost>
<OnEscapePressed>PowaAuras:AurasTextCancel(); self:ClearFocus()</OnEscapePressed>
</Scripts>
</EditBox>
<Button name="PowaFontsButton" inherits="OptionsButtonTemplate" text="[T]">
<Size>
<AbsDimension x="22"
y="22" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarAurasText"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="5"
y="3" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>PowaAuras:OpenFontSelector(self);</OnClick>
<OnEnter>
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(PowaAuras.Text.aideFont, nil, nil, nil, nil, 1);
</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Button>
<EditBox name="PowaBarCustomTexName"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="145"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarAuraTextureSlider"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="5"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="100" />
</Layer>
</Layers>
<Scripts>
<OnLoad>self:SetMaxLetters(100)</OnLoad>
<OnEnterPressed>PowaAuras:CustomTextChanged() self:ClearFocus()</OnEnterPressed>
</Scripts>
</EditBox>
<CheckButton name="PowaTextAuraButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarAuraTextureSlider"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="100"
y="8" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideTextAura;
getglobal("PowaTextAuraButtonText"):SetText(PowaAuras.Text.nomTextAura);
</OnLoad>
<OnClick>PowaAuras:TextAuraChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaCustomTextureButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaTextAuraButton"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="-2" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideCustomTextures;
getglobal("PowaCustomTextureButtonText"):SetText(PowaAuras.Text.nomCustomTextures);
</OnLoad>
<OnClick>PowaAuras:CustomTexturesChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaWowTextureButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaCustomTextureButton"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="-2" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideWowTextures;
getglobal("PowaWowTextureButtonText"):SetText(PowaAuras.Text.nomWowTextures);
</OnLoad>
<OnClick>PowaAuras:WowTexturesChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaRandomColorButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="AuraTexture"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-15"
y="-42" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideRandomColor;
getglobal("PowaRandomColorButtonText"):SetText(PowaAuras.Text.nomRandomColor);
</OnLoad>
<OnClick>PowaAuras:RandomColorChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaTexModeButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaWowTextureButton"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="-2" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideTexMode;
getglobal("PowaTexModeButtonText"):SetText(PowaAuras.Text.nomTexMode);
</OnLoad>
<OnClick>PowaAuras:TexModeChecked();</OnClick>
</Scripts>
</CheckButton>
<Slider name="PowaBarAuraSymSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="AuraTexture"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-55" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0,3); self:SetValue(0); self:SetValueStep(1);
getglobal("PowaBarAuraSymSliderText"):SetText(PowaAuras.Text.nomSymetrie.." : "..PowaAuras.Text.aucune);
getglobal("PowaBarAuraSymSliderLow"):SetText(PowaAuras.Text.aucune);
getglobal("PowaBarAuraSymSliderHigh"):SetText("XY");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraSymSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaBarAuraAlphaSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarAuraTextureSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="50"
y="-17" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0.1,1.0); self:SetValue(1.0); self:SetValueStep(0.05);
getglobal("PowaBarAuraAlphaSliderText"):SetText(PowaAuras.Text.nomAlpha.." : 1.0");
getglobal("PowaBarAuraAlphaSliderLow"):SetText("10");
getglobal("PowaBarAuraAlphaSliderHigh"):SetText("100");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraAlphaSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaBarAuraDeformSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarAuraAlphaSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-17" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.aide = PowaAuras.Text.aideDeform; self:SetMinMaxValues(0.5,1.5); self:SetValue(1); self:SetValueStep(0.05);
getglobal("PowaBarAuraDeformSliderText"):SetText(PowaAuras.Text.nomDeform.." : 1");
getglobal("PowaBarAuraDeformSliderLow"):SetText(PowaAuras.Text.hauteur);
getglobal("PowaBarAuraDeformSliderHigh"):SetText(PowaAuras.Text.largeur);
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraDeformSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaBarAuraSizeSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="268"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarAuraSymSlider"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="-18" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0.1,2.0); self:SetValue(1.0); self:SetValueStep(0.02);
getglobal("PowaBarAuraSizeSliderText"):SetText(PowaAuras.Text.nomTaille.." : 100");
getglobal("PowaBarAuraSizeSliderLow"):SetText("10%");
getglobal("PowaBarAuraSizeSliderHigh"):SetText("200%");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraSizeSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaBarAuraCoordXSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="220"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarAuraSizeSlider"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="-18" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(-300,300); self:SetValue(0); self:SetValueStep(1);
getglobal("PowaBarAuraCoordXSliderText"):SetText(PowaAuras.Text.nomPos.." X : 0");
getglobal("PowaBarAuraCoordXSliderLow"):SetText("-300");
getglobal("PowaBarAuraCoordXSliderHigh"):SetText("300");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraCoordXSliderChanged();</OnValueChanged>
<OnMouseUp>
self:SetMinMaxValues(self:GetValue()-200,self:GetValue()+200);
getglobal("PowaBarAuraCoordXSliderLow"):SetText(self:GetValue()-200);
getglobal("PowaBarAuraCoordXSliderHigh"):SetText(self:GetValue()+200);
</OnMouseUp>
</Scripts>
</Slider>
<EditBox name="PowaBarAuraCoordXEdit"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="40"
y="16" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaBarAuraCoordXSlider"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="10"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="6" />
</Layer>
</Layers>
<Scripts>
<OnLoad>self:SetMaxLetters(6)</OnLoad>
<OnEnterPressed>self:ClearFocus() PowaAuras:TextCoordXChanged();</OnEnterPressed>
</Scripts>
</EditBox>
<Slider name="PowaBarAuraCoordSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="220"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarAuraCoordXSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-16" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(-300,300); self:SetValue(-30); self:SetValueStep(1);
getglobal("PowaBarAuraCoordSliderText"):SetText(PowaAuras.Text.nomPos.." Y : -30");
getglobal("PowaBarAuraCoordSliderLow"):SetText("-300");
getglobal("PowaBarAuraCoordSliderHigh"):SetText("300");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraCoordSliderChanged();</OnValueChanged>
<OnMouseUp>
self:SetMinMaxValues(self:GetValue()-200,self:GetValue()+200);
getglobal("PowaBarAuraCoordSliderLow"):SetText(self:GetValue()-200);
getglobal("PowaBarAuraCoordSliderHigh"):SetText(self:GetValue()+200);
</OnMouseUp>
</Scripts>
</Slider>
<EditBox name="PowaBarAuraCoordYEdit"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="40"
y="16" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaBarAuraCoordSlider"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="10"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="6" />
</Layer>
</Layers>
<Scripts>
<OnLoad>self:SetMaxLetters(6)</OnLoad>
<OnEnterPressed>self:ClearFocus() PowaAuras:TextCoordYChanged();</OnEnterPressed>
</Scripts>
</EditBox>
<Button name="PowaColor">
<Size>
<AbsDimension x="16"
y="16" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="AuraTexture"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-11"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parent_SwatchBg">
<Size>
<AbsDimension x="14"
y="14" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Color r="1.0"
g="1.0"
b="1.0" />
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>getglobal(self:GetName().."_SwatchBg").r = 1.0; getglobal(self:GetName().."_SwatchBg").g = 1.0; getglobal(self:GetName().."_SwatchBg").b = 1.0;</OnLoad>
<OnClick>PowaAuras:OpenColorPicker();</OnClick>
<OnEnter>
getglobal(self:GetName().."_SwatchBg"):SetVertexColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(PowaAuras.Text.aideColor, nil, nil, nil, nil, 1);
</OnEnter>
<OnLeave>getglobal(self:GetName().."_SwatchBg"):SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b); GameTooltip:Hide();</OnLeave>
</Scripts>
<NormalTexture name="$parentNormalTexture"
file="Interface\ChatFrame\ChatFrameColorSwatch" />
</Button>
<Frame name="PowaBarConfigFrameEditor2">
<Size>
<AbsDimension x="310"
y="340" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarConfigFrameEditor"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Layers>
<Layer>
<Texture name="PowaIconTexture"
file="Interface\InventoryItems\WowUnknownItem01">
<Size>
<AbsDimension x="40"
y="40" />
</Size>
<Anchors>
<Anchor point="TOPRIGHT"
relativeTo="PowaBarConfigFrameEditor2"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-5"
y="-5" />
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
<Frames>
<EditBox name="PowaBarBuffName"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="272"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor2"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="13"
y="-55" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self:SetMaxLetters(200) self.aide = PowaAuras.Text.aideBuff;</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:TextChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="200" />
</Layer>
<Layer level="OVERLAY">
<FontString name="PowaBarBuffNameText"
inherits="GameFontNormalSmall"
justifyH="LEFT"
text="">
<Size>
<AbsDimension x="150"
y="20" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarBuffName"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
<EditBox name="PowaBarMultiID"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="145"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPRIGHT"
relativeTo="PowaBarBuffName"
relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="0"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self:SetMaxLetters(50) self.aide = PowaAuras.Text.aideMultiID;</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:MultiIDChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="50" />
</Layer>
<Layer level="OVERLAY">
<FontString name="PowaBarMultiIDText"
inherits="GameFontNormalSmall"
justifyH="LEFT"
text="">
<Size>
<AbsDimension x="150"
y="20" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarMultiID"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
<EditBox name="PowaBarTooltipCheck"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="145"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarMultiID"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self:SetMaxLetters(15) self.aide = PowaAuras.Text.aideTooltipCheck;</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:TooltipCheckChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="50" />
</Layer>
<Layer level="OVERLAY">
<FontString name="PowaBarTooltipCheckText"
inherits="GameFontNormalSmall"
justifyH="LEFT"
text="">
<Size>
<AbsDimension x="150"
y="20" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarTooltipCheck"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
<EditBox name="PowaBarBuffStacks"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="50"
y="16" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarBuffName"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="200"
y="12" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaBarBuffStacksLabel"):SetText(PowaAuras.Text.nomStacks);
self:SetMaxLetters(10);
self.aide = PowaAuras.Text.aideStacks;
</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:StacksTextChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="RIGHT"
relativePoint="LEFT">
<Offset>
<AbsDimension x="-5"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
<Frame name="PowaDropDownBuffType"
inherits="UIDropDownMenuTemplate"
id="10">
<Size>
<AbsDimension x="225" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarBuffName"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-25"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="21"
y="5" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownBuffTypeLabel"):SetText(PowaAuras.Text.nomActivationBy);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT");</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Frame>
<Frame name="PowaDropDownStance"
inherits="UIDropDownMenuTemplate"
id="12">
<Size>
<AbsDimension x="210" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarBuffName"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="30"
y="20" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="TOPRIGHT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="-5" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownStanceLabel"):SetText(PowaAuras.Text.nomStance);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(PowaAuras.Text.aideStance, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Frame>
<Slider name="PowaBarThresholdSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="245"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarBuffName"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="18" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0,100); self:SetValue(50); self:SetValueStep(2);
getglobal("PowaBarThresholdSliderText"):SetText(PowaAuras.Text.nomThreshold.." : 50");
getglobal("PowaBarThresholdSliderLow"):SetText("0%");
getglobal("PowaBarThresholdSliderHigh"):SetText("100%");
</OnLoad>
<OnValueChanged>PowaAuras:BarThresholdSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<CheckButton name="PowaThresholdInvertButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarThresholdSlider"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="2"
y="3" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideThreshInv; getglobal("PowaThresholdInvertButtonText"):SetText(PowaAuras.Text.nomThreshInv);</OnLoad>
<OnClick>PowaAuras:ThresholdInvertChecked(self);</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaOwntexButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaDropDownBuffType"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-70"
y="15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideOwnTex; getglobal("PowaOwntexButtonText"):SetText(PowaAuras.Text.nomOwnTex); getglobal("PowaOwntexButtonText"):SetTextColor(1.0,0.2,0.2);</OnLoad>
<OnClick>PowaAuras:OwntexChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaExactButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarBuffName"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="-8"
y="-10" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideExact; getglobal("PowaExactButtonText"):SetText(PowaAuras.Text.nomExact); getglobal("PowaExactButtonText"):SetTextColor(1.0,0.2,0.2);</OnLoad>
<OnClick>PowaAuras:ExactChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaIgnoreMajButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaExactButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideIgnoreMaj; getglobal("PowaIgnoreMajButtonText"):SetText(PowaAuras.Text.nomCheckIgnoreMaj);</OnLoad>
<OnClick>PowaAuras:IgnoreMajChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaGCDButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaIgnoreMajButton"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideGCD;
getglobal("PowaGCDButtonText"):SetText(PowaAuras.Text.nomGCD);
getglobal("PowaGCDButtonText"):SetTextColor(1.0,0.2,0.2);
</OnLoad>
<OnClick>PowaAuras:GCDChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaInverseButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaGCDButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideInverse;
getglobal("PowaInverseButtonText"):SetText(PowaAuras.Text.nomCheckInverse);
</OnLoad>
<OnClick>PowaAuras:InverseChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaMineButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaInverseButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideMine;
getglobal("PowaMineButtonText"):SetText(PowaAuras.Text.nomMine);
getglobal("PowaMineButtonText"):SetTextColor(1.0,0.2,0.2);
</OnLoad>
<OnClick>PowaAuras:MineChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaInCombatButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaInverseButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideInCombat; getglobal("PowaInCombatButtonText"):SetText(PowaAuras.Text.nomInCombat);</OnLoad>
<OnClick>PowaAuras:CombatChecked(1);</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaNotInCombatButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaInCombatButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideNotInCombat;
getglobal("PowaNotInCombatButtonText"):SetText(PowaAuras.Text.nomNotInCombat);
</OnLoad>
<OnClick>PowaAuras:CombatChecked(2);</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaIsInRaidButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaInCombatButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideIsInRaid;
getglobal("PowaIsInRaidButtonText"):SetText(PowaAuras.Text.nomIsInRaid);
getglobal("PowaIsInRaidButtonText"):SetTextColor(1.0,0.2,0.2);
</OnLoad>
<OnClick>PowaAuras:CheckedButtonOnClick(self, "isinraid");</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaRestingButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaIsInRaidButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideResting;
getglobal("PowaRestingButtonText"):SetText(PowaAuras.Text.nomResting);
</OnLoad>
<OnClick>PowaAuras:CheckedButtonOnClick(self, "ignoreResting");</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaIsMountedButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaIsInRaidButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideIsMounted;
getglobal("PowaIsMountedButtonText"):SetText(PowaAuras.Text.nomIsMounted);
</OnLoad>
<OnClick>PowaAuras:CheckedButtonOnClick(self, "ismounted");</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaInVehicleButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaIsMountedButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideInVehicle;
getglobal("PowaInVehicleButtonText"):SetText(PowaAuras.Text.nomInVehicle);
</OnLoad>
<OnClick>PowaAuras:CheckedButtonOnClick(self, "inVehicle");</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaTargetButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaIsMountedButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideTarget;
getglobal("PowaTargetButtonText"):SetText(PowaAuras.Text.nomCheckTarget);
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
</OnLoad>
<OnClick>PowaAuras:TargetChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaTargetFriendButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaTargetButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideTargetFriend;
getglobal("PowaTargetFriendButtonText"):SetText(PowaAuras.Text.nomCheckFriend);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:TargetFriendChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaFocusButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaTargetButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideFocus;
getglobal("PowaFocusButtonText"):SetText(PowaAuras.Text.nomCheckFocus);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:FocusChecked();</OnClick>
</Scripts>
</CheckButton>
 
<CheckButton name="PowaGroupOrSelfButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaFocusButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideGroupOrSelf;
getglobal("PowaGroupOrSelfButtonText"):SetText(PowaAuras.Text.nomCheckGroupOrSelf);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:GroupOrSelfChecked();</OnClick>
</Scripts>
</CheckButton>
 
 
<CheckButton name="PowaPartyButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaFocusButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideParty;
getglobal("PowaPartyButtonText"):SetText(PowaAuras.Text.nomCheckParty);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:PartyChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaRaidButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaPartyButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideRaid;
getglobal("PowaRaidButtonText"):SetText(PowaAuras.Text.nomCheckRaid);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:RaidChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaGroupAnyButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaRaidButton"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideGroupAny;
getglobal("PowaGroupAnyButtonText"):SetText(PowaAuras.Text.nomCheckGroupAny);
</OnLoad>
<OnClick>PowaAuras:GroupAnyChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaOptunitnButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaPartyButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideOptunitn;
getglobal("PowaOptunitnButtonText"):SetText(PowaAuras.Text.nomCheckOptunitn);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:OptunitnChecked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaTalentGroup1Button"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaOptunitnButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideTalentGroup1; getglobal("PowaTalentGroup1ButtonText"):SetText(PowaAuras.Text.nomTalentGroup1);</OnLoad>
<OnClick>PowaAuras:TalentGroup1Checked();</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaTalentGroup2Button"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaTalentGroup1Button"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="100"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>self.tooltipText = PowaAuras.Text.aideTalentGroup2; getglobal("PowaTalentGroup2ButtonText"):SetText(PowaAuras.Text.nomTalentGroup2);</OnLoad>
<OnClick>PowaAuras:TalentGroup2Checked();</OnClick>
</Scripts>
</CheckButton>
<EditBox name="PowaBarUnitn"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="150"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaOptunitnButtonText"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="80"
y="3" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="200" />
</Layer>
</Layers>
<Scripts>
<OnLoad>self:SetMaxLetters(200) self.aide = PowaAuras.Text.aideUnitn;</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:UnitnTextChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="OVERLAY">
<FontString name="PowaBarUnitnText"
inherits="GameFontNormalSmall"
justifyH="LEFT"
text="">
<Size>
<AbsDimension x="150"
y="20" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarUnitn"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
</Frames>
</Frame>
<Frame name="PowaBarConfigFrameEditor3"
hidden="true">
<Size>
<AbsDimension x="310"
y="130" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarConfigFrameEditor"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Frames>
<Frame name="PowaDropDownAnimBegin"
inherits="UIDropDownMenuTemplate"
id="1">
<Size>
<AbsDimension x="140" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor3"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-8"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="21"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownAnimBeginLabel"):SetText(PowaAuras.Text.nomBegin);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
</Scripts>
</Frame>
<Frame name="PowaDropDownAnimEnd"
inherits="UIDropDownMenuTemplate"
id="2">
<Size>
<AbsDimension x="140" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaDropDownAnimBegin"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="21"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownAnimEndLabel"):SetText(PowaAuras.Text.nomEnd);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
</Scripts>
</Frame>
<Frame name="PowaDropDownAnim1"
inherits="UIDropDownMenuTemplate"
id="3">
<Size>
<AbsDimension x="140" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaDropDownAnimBegin"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-10" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="21"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownAnim1Label"):SetText(PowaAuras.Text.nomAnim1);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(PowaAuras.Text.aideAnim1, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Frame>
<Frame name="PowaDropDownAnim2"
inherits="UIDropDownMenuTemplate"
id="4">
<Size>
<AbsDimension x="140" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaDropDownAnim1"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="21"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownAnim2Label"):SetText(PowaAuras.Text.nomAnim2);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(PowaAuras.Text.aideAnim2, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Frame>
<Slider name="PowaBarAuraAnimSpeedSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarConfigFrameEditor3"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="10"
y="15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0.50,2.00); self:SetValue(1.0); self:SetValueStep(0.05);
getglobal("PowaBarAuraAnimSpeedSliderText"):SetText(PowaAuras.Text.nomSpeed.." : 100%");
getglobal("PowaBarAuraAnimSpeedSliderLow"):SetText("50");
getglobal("PowaBarAuraAnimSpeedSliderHigh"):SetText("200");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraAnimSpeedSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaBarAuraDurationSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaBarAuraAnimSpeedSlider"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="10"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.aide = PowaAuras.Text.aideDuration; self:SetMinMaxValues(0,30); self:SetValue(0); self:SetValueStep(1);
getglobal("PowaBarAuraDurationSliderText"):SetText(PowaAuras.Text.nomDuration.." : 0 sec");
getglobal("PowaBarAuraDurationSliderLow"):SetText(PowaAuras.Text.aucune);
getglobal("PowaBarAuraDurationSliderHigh"):SetText("30");
</OnLoad>
<OnValueChanged>PowaAuras:BarAuraAnimDurationSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
</Frames>
</Frame>
<Frame name="PowaBarConfigFrameEditor5"
hidden="true">
<Size>
<AbsDimension x="310"
y="150" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarConfigFrameEditor"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Frames>
<Frame name="PowaDropDownSound"
inherits="UIDropDownMenuTemplate"
id="11">
<Size>
<AbsDimension x="220" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor5"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="5"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="$parentLabel"
inherits="GameFontNormalSmall">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="15"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
getglobal("PowaDropDownSoundLabel"):SetText(PowaAuras.Text.nomSound);
UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);
</OnLoad>
<OnShow>UIDropDownMenu_Initialize(self, PowaAuras.DropDownMenu_Initialize);</OnShow>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(PowaAuras.Text.aideSound, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
</Frame>
<EditBox name="PowaBarCustomSound"
autoFocus="false"
inherits="InputBoxTemplate">
<Size>
<AbsDimension x="150"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaDropDownSound"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="20"
y="-15" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="ChatFontNormal"
bytes="200" />
</Layer>
</Layers>
<Scripts>
<OnLoad>getglobal("PowaBarCustomSoundText"):SetText(PowaAuras.Text.nomCustomSound); self:SetMaxLetters(200) self.aide = PowaAuras.Text.aideCustomSound;</OnLoad>
<OnEnterPressed>self:ClearFocus()</OnEnterPressed>
<OnTextChanged>PowaAuras:CustomSoundTextChanged()</OnTextChanged>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT"); GameTooltip:SetText(self.aide, nil, nil, nil, nil, 1);</OnEnter>
<OnLeave>GameTooltip:Hide();</OnLeave>
</Scripts>
<Layers>
<Layer level="OVERLAY">
<FontString name="PowaBarCustomSoundText"
inherits="GameFontNormalSmall"
justifyH="LEFT">
<Size>
<AbsDimension x="220"
y="20" />
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="PowaBarCustomSound"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</EditBox>
</Frames>
</Frame>
<Frame name="PowaBarConfigFrameEditor4"
hidden="true">
<Size>
<AbsDimension x="310"
y="260" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBarConfigFrameEditor"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Frames>
<CheckButton name="PowaShowTimerButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor4"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="10"
y="-5" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideShowTimer;
getglobal("PowaShowTimerButtonText"):SetText(PowaAuras.Text.nomCheckShowTimer);
getglobal("PowaShowTimerButtonText"):SetTextColor(0.2,1.0,0.2);
</OnLoad>
<OnClick>PowaAuras:ShowTimerChecked(self);</OnClick>
</Scripts>
</CheckButton>
<Slider name="PowaTimerCoordXSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor4"
relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="10"
y="-42" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(-150,150); self:SetValue(0); self:SetValueStep(5);
getglobal("PowaTimerCoordXSliderText"):SetText(PowaAuras.Text.nomPos.." X : 0");
getglobal("PowaTimerCoordXSliderLow"):SetText("-150");
getglobal("PowaTimerCoordXSliderHigh"):SetText("150");
</OnLoad>
<OnValueChanged>PowaAuras:TimerCoordXSliderChanged();</OnValueChanged>
<OnMouseUp>
self:SetMinMaxValues(self:GetValue()-100,self:GetValue()+100);
getglobal("PowaTimerCoordXSliderLow"):SetText(self:GetValue()-100);
getglobal("PowaTimerCoordXSliderHigh"):SetText(self:GetValue()+100);
</OnMouseUp>
</Scripts>
</Slider>
<Slider name="PowaTimerCoordSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="LEFT"
relativeTo="PowaTimerCoordXSlider"
relativePoint="RIGHT">
<Offset>
<AbsDimension x="10"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(-200,100); self:SetValue(0); self:SetValueStep(5);
getglobal("PowaTimerCoordSliderText"):SetText(PowaAuras.Text.nomPos.." Y : 0");
getglobal("PowaTimerCoordSliderLow"):SetText("-200");
getglobal("PowaTimerCoordSliderHigh"):SetText("100");
</OnLoad>
<OnValueChanged>PowaAuras:TimerCoordSliderChanged();</OnValueChanged>
<OnMouseUp>
self:SetMinMaxValues(self:GetValue()-100,self:GetValue()+100);
getglobal("PowaTimerCoordSliderLow"):SetText(self:GetValue()-100);
getglobal("PowaTimerCoordSliderHigh"):SetText(self:GetValue()+100);
</OnMouseUp>
</Scripts>
</Slider>
<Slider name="PowaTimerSizeSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaTimerCoordXSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-20" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0.5,2.0); self:SetValue(1.0); self:SetValueStep(0.05);
getglobal("PowaTimerSizeSliderText"):SetText(PowaAuras.Text.nomTaille.." : 1.0");
getglobal("PowaTimerSizeSliderLow"):SetText("0.5");
getglobal("PowaTimerSizeSliderHigh"):SetText("2.0");
</OnLoad>
<OnValueChanged>PowaAuras:TimerSizeSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaTimerAlphaSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaTimerCoordSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-20" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self:SetMinMaxValues(0.1,1.0); self:SetValue(1.0); self:SetValueStep(0.05);
getglobal("PowaTimerAlphaSliderText"):SetText(PowaAuras.Text.nomAlpha.." : 1.0");
getglobal("PowaTimerAlphaSliderLow"):SetText("0.1");
getglobal("PowaTimerAlphaSliderHigh"):SetText("1.0");
</OnLoad>
<OnValueChanged>PowaAuras:TimerAlphaSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<Slider name="PowaTimerDurationSlider"
inherits="PowaBarSliderTemplate">
<Size>
<AbsDimension x="130"
y="16" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaTimerAlphaSlider"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="-20" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.aide = PowaAuras.Text.aideTimerDuration; self:SetMinMaxValues(0,60); self:SetValue(0); self:SetValueStep(1);
getglobal("PowaTimerDurationSliderText"):SetText(PowaAuras.Text.nomTimerDuration.." : 0");
getglobal("PowaTimerDurationSliderLow"):SetText("0");
getglobal("PowaTimerDurationSliderHigh"):SetText("60");
</OnLoad>
<OnValueChanged>PowaAuras:TimerDurationSliderChanged();</OnValueChanged>
</Scripts>
</Slider>
<CheckButton name="PowaBuffTimerCentsButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaTimerSizeSlider"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0"
y="-10" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>getglobal("PowaBuffTimerCentsButtonText"):SetText(PowaAuras.Text.nomCentiemes);</OnLoad>
<OnClick>PowaAuras:TimerChecked(self, "cents");</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaBuffTimerDualButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBuffTimerCentsButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="4" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>getglobal("PowaBuffTimerDualButtonText"):SetText(PowaAuras.Text.nomDual);</OnLoad>
<OnClick>PowaAuras:TimerChecked(self, "dual");</OnClick>
</Scripts>
</CheckButton>
 
<CheckButton name="PowaBuffTimerLeadingZerosButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBuffTimerDualButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="4" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>getglobal("PowaBuffTimerLeadingZerosButtonText"):SetText(PowaAuras.Text.nomHideLeadingZeros);</OnLoad>
<OnClick>PowaAuras:TimerChecked(self, "HideLeadingZeros");</OnClick>
</Scripts>
</CheckButton>
 
<CheckButton name="PowaBuffTimerTransparentButton"
inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25"
y="25" />
</Size>
<Anchors>
<Anchor point="TOP"
relativeTo="PowaBuffTimerLeadingZerosButton"
relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0"
y="4" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>getglobal("PowaBuffTimerTransparentButtonText"):SetText(PowaAuras.Text.nomTransparent);</OnLoad>
<OnClick>PowaAuras:TimerTransparentChecked(self);</OnClick>
</Scripts>
</CheckButton>
 
</Frames>
</Frame>
<Button name="PowaEditorTab2"
inherits="TabButtonTemplate">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativePoint="TOPLEFT"
relativeTo="PowaBarConfigFrameEditor2">
<Offset>
<AbsDimension x="5"
y="-2" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PanelTemplates_SelectTab(self);
PanelTemplates_DeselectTab(PowaEditorTab1);
PanelTemplates_DeselectTab(PowaEditorTab3);
PanelTemplates_DeselectTab(PowaEditorTab4);
getglobal("PowaBarConfigFrameEditor2"):Show();
getglobal("PowaBarConfigFrameEditor3"):Hide();
getglobal("PowaBarConfigFrameEditor4"):Hide();
getglobal("PowaBarConfigFrameEditor5"):Hide();
PlaySound("igCharacterInfoTab");
</OnClick>
<OnLoad>
getglobal("PowaEditorTab2Text"):SetText(PowaAuras.Text.nomTabActiv);
PanelTemplates_SelectTab(self); PanelTemplates_TabResize(self, 0);
getglobal(self:GetName().."HighlightTexture"):SetWidth(self:GetTextWidth() + 31);
</OnLoad>
</Scripts>
</Button>
<Button name="PowaEditorTab1"
inherits="TabButtonTemplate">
<Anchors>
<Anchor point="LEFT"
relativePoint="RIGHT"
relativeTo="PowaEditorTab2">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PanelTemplates_SelectTab(self);
PanelTemplates_DeselectTab(PowaEditorTab2);
PanelTemplates_DeselectTab(PowaEditorTab3);
PanelTemplates_DeselectTab(PowaEditorTab4);
getglobal("PowaBarConfigFrameEditor2"):Hide();
getglobal("PowaBarConfigFrameEditor3"):Show();
getglobal("PowaBarConfigFrameEditor4"):Hide();
getglobal("PowaBarConfigFrameEditor5"):Hide();
PlaySound("igCharacterInfoTab");
</OnClick>
<OnLoad>
getglobal("PowaEditorTab1Text"):SetText(PowaAuras.Text.nomTabAnim);
PanelTemplates_DeselectTab(self);
PanelTemplates_TabResize(self, 0);
getglobal(self:GetName().."HighlightTexture"):SetWidth(self:GetTextWidth() + 31);
</OnLoad>
</Scripts>
</Button>
<Button name="PowaEditorTab4"
inherits="TabButtonTemplate">
<Anchors>
<Anchor point="LEFT"
relativePoint="RIGHT"
relativeTo="PowaEditorTab1">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PanelTemplates_SelectTab(self);
PanelTemplates_DeselectTab(PowaEditorTab1);
PanelTemplates_DeselectTab(PowaEditorTab2);
PanelTemplates_DeselectTab(PowaEditorTab3);
getglobal("PowaBarConfigFrameEditor5"):Show();
getglobal("PowaBarConfigFrameEditor2"):Hide();
getglobal("PowaBarConfigFrameEditor3"):Hide();
getglobal("PowaBarConfigFrameEditor4"):Hide();
PlaySound("igCharacterInfoTab");
</OnClick>
<OnLoad>
getglobal("PowaEditorTab4Text"):SetText(PowaAuras.Text.nomTabSound);
PanelTemplates_DeselectTab(self);
PanelTemplates_TabResize(self, 0);
getglobal(self:GetName().."HighlightTexture"):SetWidth(self:GetTextWidth() + 31);
</OnLoad>
</Scripts>
</Button>
<Button name="PowaEditorTab3"
inherits="TabButtonTemplate">
<Anchors>
<Anchor point="LEFT"
relativePoint="RIGHT"
relativeTo="PowaEditorTab4">
<Offset>
<AbsDimension x="0"
y="0" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PanelTemplates_SelectTab(self);
PanelTemplates_DeselectTab(PowaEditorTab1);
PanelTemplates_DeselectTab(PowaEditorTab2);
PanelTemplates_DeselectTab(PowaEditorTab4);
getglobal("PowaBarConfigFrameEditor4"):Show();
getglobal("PowaBarConfigFrameEditor2"):Hide();
getglobal("PowaBarConfigFrameEditor3"):Hide();
getglobal("PowaBarConfigFrameEditor5"):Hide();
PowaAuras:UpdateTimerOptions();
PlaySound("igCharacterInfoTab");
</OnClick>
<OnLoad>
getglobal("PowaEditorTab3Text"):SetText(PowaAuras.Text.nomTabTimer);
PanelTemplates_DeselectTab(self);
PanelTemplates_TabResize(self, 0);
getglobal(self:GetName().."HighlightTexture"):SetWidth(self:GetTextWidth() + 31);
</OnLoad>
</Scripts>
</Button>
</Frames>
</Frame>
</Frames>
</Frame>
<Frame name="FontSelectorFrame"
movable="false"
parent="UIParent"
frameStrata="DIALOG"
hidden="true"
enableMouse="true"
enableKeyboard="true">
<Size>
<AbsDimension x="250"
y="225" />
</Size>
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="PowaBarConfigFrame"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="0"
y="-200" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\DialogFrame\UI-DialogBox-Border"
tile="true">
<BackgroundInsets>
<AbsInset left="11"
right="12"
top="12"
bottom="11" />
</BackgroundInsets>
<TileSize>
<AbsValue val="200" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop>
<Scripts>
<OnShow>PowaAuras:FontSelectorOnShow(self);</OnShow>
</Scripts>
<Layers>
<Layer>
<Texture file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="180"
y="32" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="8" />
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.2"
right="0.8"
top="0"
bottom="0.6" />
</Texture>
<FontString name="PowaFontHeader"
inherits="GameFontNormalSmall"
text="Font Picker">
<Size>
<AbsDimension x="120"
y="0" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="-4" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="14" />
</FontHeight>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="PowaFontsCloseButton">
<Size>
<AbsDimension x="30"
y="30" />
</Size>
<Anchors>
<Anchor point="TOPRIGHT"
relativeTo="FontSelectorFrame"
relativePoint="TOPRIGHT">
<Offset>
<AbsDimension x="-4"
y="-4" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>PowaAuras:FontSelectorClose(self);</OnClick>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Up" />
<PushedTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Down" />
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight"
alphaMode="ADD" />
</Button>
<Button name="PowaFontsOkayButton" inherits="OptionsButtonTemplate" text="Okay">
<Anchors>
<Anchor point="BOTTOMLEFT"
relativeTo="FontSelectorFrame"
relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="20"
y="15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>PowaAuras:FontSelectorOkay(self);</OnClick>
</Scripts>
</Button>
<Button name="PowaFontsCancelButton" inherits="OptionsButtonTemplate" text="Cancel">
<Anchors>
<Anchor point="BOTTOMRIGHT"
relativeTo="FontSelectorFrame"
relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-20"
y="15" />
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>PowaAuras:FontSelectorCancel(self);</OnClick>
</Scripts>
</Button>
<Frame name="FontSelectorEditor">
<Size>
<AbsDimension x="210"
y="162" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0"
y="-25" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01"
edgeFile="Interface\Tooltips\UI-Tooltip-Border"
tile="true">
<EdgeSize>
<AbsValue val="12" />
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2"
right="2"
top="2"
bottom="2" />
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>self:SetBackdropBorderColor(0.0, 0.0, 0.0); self:SetBackdropColor(0.1, 0.1, 0.1);</OnLoad>
</Scripts>
<Frames>
<ScrollFrame name="$parentScrollFrame" inherits="FauxScrollFrameTemplate">
<Anchors>
<Anchor point="TOPLEFT"
relativeTo="FontSelectorEditor">
<Offset>
<AbsDimension x="-22" y="-3"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT"
relativeTo="FontSelectorEditor">
<Offset>
<AbsDimension x="-22" y="2"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnVerticalScroll>
FauxScrollFrame_OnVerticalScroll(self, offset, 16, PowaAuras.FontScrollBar_Update);
</OnVerticalScroll>
<OnShow>
PowaAuras.FontScrollBar_Update(self);
</OnShow>
</Scripts>
</ScrollFrame>
<Button name="$parentScrollButton1" inherits="PowaFontButtonTemplate" id="1">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parent" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton2" inherits="PowaFontButtonTemplate" id="2">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton1" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton3" inherits="PowaFontButtonTemplate" id="3">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton2" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton4" inherits="PowaFontButtonTemplate" id="4">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton3" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton5" inherits="PowaFontButtonTemplate" id="5">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton4" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton6" inherits="PowaFontButtonTemplate" id="6">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton5" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton7" inherits="PowaFontButtonTemplate" id="7">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton6" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton8" inherits="PowaFontButtonTemplate" id="8">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton7" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton9" inherits="PowaFontButtonTemplate" id="9">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton8" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
<Button name="$parentScrollButton10" inherits="PowaFontButtonTemplate" id="10">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentScrollButton9" relativePoint="BOTTOMLEFT">
</Anchor>
</Anchors>
</Button>
</Frames>
</Frame>
</Frames>
</Frame>
</Ui>
\ No newline at end of file
trunk/PowerAuras/PowerOptions.lua New file
0,0 → 1,2689
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MAIN OPTIONS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
-- ---------------------------------------------------------------------------------------------------------------------
 
-- ---------------------------------------------------------------------------------------------------------------------
function PowaAuras:UpdateMainOption()
-- traductions
getglobal("PowaOptionsHeader"):SetText("POWER AURAS "..self.Version);
getglobal("PowaMainHideAllButton"):SetText(self.Text.nomHide);
getglobal("PowaMainTestButton"):SetText(self.Text.nomTest);
getglobal("PowaEditButton"):SetText(self.Text.nomEdit);
getglobal("PowaOptionsRename"):SetText(self.Text.nomRename);
if (self.Misc.disabled) then
getglobal("PowaEnableButton"):SetChecked(false);
else
getglobal("PowaEnableButton"):SetChecked(true);
end
if (self.Misc.debug) then
getglobal("PowaDebugButton"):SetChecked(true);
else
getglobal("PowaDebugButton"):SetChecked(false);
end
 
-- affiche les icones
for i = 1, 24 do
local k = ((self.MainOptionPage-1)*24) + i;
--self:Message("icon ", k);
local aura = self.Auras[k];
-- icone
if (aura == nil) then
getglobal("PowaIcone"..i):SetNormalTexture("Interface\\PaperDoll\\UI-Backpack-EmptySlot");
getglobal("PowaIcone"..i):SetText("");
getglobal("PowaIcone"..i):SetAlpha(0.33);
else
--self:Message("buffname ", aura.buffname, "icon", aura.icon);
if (aura.buffname == "" or aura.buffname == " ") then -- pas de nom -> desactive
getglobal("PowaIcone"..i):SetNormalTexture("Interface\\PaperDoll\\UI-Backpack-EmptySlot");
elseif (aura.icon == "") then -- active mais pas d'icone
getglobal("PowaIcone"..i):SetNormalTexture("Interface\\Icons\\Inv_Misc_QuestionMark");
else
getglobal("PowaIcone"..i):SetNormalTexture(aura.icon);
end
-- off ou ON
if (aura.buffname ~= "" and aura.buffname ~= " " and aura.off) then
getglobal("PowaIcone"..i):SetText("OFF");
else
getglobal("PowaIcone"..i):SetText("");
end
-- surbrillance de l'effet en cours
if (self.CurrentAuraId == k) then -- le bouton en cours
if (aura == nil or aura.buffname == "" or aura.buffname == " ") then -- nulle
getglobal("PowaSelected"):Hide();
else
getglobal("PowaSelected"):SetPoint("CENTER", "PowaIcone"..i, "CENTER");
getglobal("PowaSelected"):Show();
end
end
-- grisage des effets non visibles
if (not aura.Showing) then
getglobal("PowaIcone"..i):SetAlpha(0.33);
else
getglobal("PowaIcone"..i):SetAlpha(1.0);
end
end
end
-- choisi la liste en cours
getglobal("PowaOptionsList"..self.MainOptionPage):SetHighlightTexture("Interface\\Buttons\\UI-Panel-Button-Highlight");
getglobal("PowaOptionsList"..self.MainOptionPage):LockHighlight();
end
 
-- ---------------------------------------------------------------------------------------------------------------------
function PowaAuras:IconeClick(owner, button)
local iconeID = owner:GetID();
local auraId = ((self.MainOptionPage-1)*24) + iconeID;
 
if (self.MoveEffect > 0) then -- mode move, annule
return;
end
if (ColorPickerFrame:IsVisible()) then -- color picker visible, ca deconne
return;
end
local aura = self.Auras[auraId];
if (self.Auras[auraId] == nil or aura.buffname == "" or aura.buffname == " ") then -- ne fait rien si bouton vide
return;
end
if IsShiftKeyDown() then -- Toggle ON ou OFF
if (aura.off) then
aura.off = false;
getglobal("PowaIcone"..iconeID):SetText("");
else
aura.off = true;
getglobal("PowaIcone"..iconeID):SetText("OFF");
end
elseif IsControlKeyDown() then
local show, reason = self:TestThisEffect(auraId, true);
if (show) then
self:Message("Should show because ", reason); --OK
else
self:Message("Won't show because ", reason); --OK
end
elseif (self.CurrentAuraId == auraId) then -- on appuie sur le meme bouton, show ou hide
if (button == "RightButton") then
self:EditorShow();
return;
elseif (aura.Showing) then -- deja visible, on la cache
aura.HideRequest = true;
getglobal("PowaIcone"..iconeID):SetAlpha(0.33);
else -- pas visible alors on affiche
self:DisplayAura(auraId);
getglobal("PowaIcone"..iconeID):SetAlpha(1.0);
end
elseif (self.CurrentAuraId ~= auraId) then -- on appuie un bouton different...
self.CurrentAuraId = auraId;
self.CurrentAuraPage = self.MainOptionPage;
getglobal("PowaSelected"):SetPoint("CENTER", owner, "CENTER");
getglobal("PowaSelected"):Show();
self:InitPage(); -- change de page dans l'editeur d'effet
end
end
 
function PowaAuras:IconeEntered(owner)
local iconeID = owner:GetID();
local k = ((self.MainOptionPage-1)*24) + iconeID;
local ID_COLOR_OPEN, ID_COLOR_CLOSE = "|cffFFFFFF[", "] |r";
 
if (self.MoveEffect > 0) then -- mode move, annule
return;
elseif (self.Auras[k] == nil) then
-- rien si pas actif
elseif (self.Auras[k].buffname == "" or self.Auras[k].buffname == " ") then
-- rien si pas de nom
else
GameTooltip:SetOwner(owner, "ANCHOR_RIGHT");
if (self.Auras[k].bufftype == self.BuffTypes.Debuff) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckDebuff, 1.0, 0.8, 0.8, 1); ---
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
GameTooltip:AddLine(self.Text.nomStacks..self.Auras[k].stacksOperator..self.Auras[k].stacks, 1.0, 0.7, 0.7, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.TypeDebuff) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckDebuffType, 0.8, 1.0, 0.8, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.AoE) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckAoeDebuff, 0.6, 0.4, 1.0, 1);
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Enchant) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckEnchant, 1.0, 0.8, 1.0, 1);
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Combo) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckCombo, 1.0, 1.0, 0.0, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.ActionReady) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckSkill, 0.8, 0.8, 1.0, 1);
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Health) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckHealth, 0.2, 1.0, 0.2, 1);
GameTooltip:AddLine(self.Auras[k].threshold, 0.2, 1.0, 0.2, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Mana) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckMana, 0.2, 0.2, 1.0, 1);
GameTooltip:AddLine(self.Auras[k].threshold, 0.2, 0.2, 1.0, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.EnergyRagePower) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckRageEnergy, 1.0, 0.4, 0.0, 1);
GameTooltip:AddLine(self.Auras[k].threshold, 1.0, 0.4, 0.0, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Aggro) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckAggro, 1.0, 0.4, 0.2, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.PvP) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckPvP, 1.0, 1.0, 0.8, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.SpellAlert) then --- Spell Alert
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckSpells, 0.4, 0.4, 1.0, 1);
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Stance) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckStance, 1.0, 0.6, 0.2, 1);
GameTooltip:AddLine(self.PowaStance[self.Auras[k].stance], 1.0, 0.6, 0.2, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.OwnSpell) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckOwnSpell, 1.0, 0.6, 0.2, 1);
GameTooltip:AddLine(self.PowaStance[self.Auras[k].buffname], 1.0, 0.6, 0.2, 1);
 
elseif (self.Auras[k].bufftype == self.BuffTypes.Buff) then
GameTooltip:SetText(ID_COLOR_OPEN..k..ID_COLOR_CLOSE..self.Text.nomCheckBuff, 0.0, 1.0, 1.0, 1);
if not (self.Auras[k].buffname == "???") then
GameTooltip:AddLine(self.Auras[k].buffname, nil, nil, nil, nil, 1);
end
GameTooltip:AddLine(self.Text.nomStacks..self.Auras[k].stacksOperator..self.Auras[k].stacks, 0.7, 1.0, 0.7, 1);
end
 
if (self.Auras[k].party) then
GameTooltip:AddLine("("..self.Text.nomCheckParty..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].exact) then
GameTooltip:AddLine("("..self.Text.nomExact..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].gcd) then
GameTooltip:AddLine("("..self.Text.nomGCD..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].mine) then
GameTooltip:AddLine("("..self.Text.nomMine..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].focus) then
GameTooltip:AddLine("("..self.Text.nomCheckFocus..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].raid) then
GameTooltip:AddLine("("..self.Text.nomCheckRaid..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].groupOrSelf) then
GameTooltip:AddLine("("..self.Text.nomCheckGroupOrSelf..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].optunitn) then
GameTooltip:AddLine("("..self.Text.nomCheckOptunitn..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].target) then
GameTooltip:AddLine("("..self.Text.nomCheckTarget..")", 1.0, 0.2, 0.2, 1);
end
if (self.Auras[k].targetfriend) then
GameTooltip:AddLine("("..self.Text.nomCheckFriend..")", 0.2, 1.0, 0.2, 1);
end
GameTooltip:AddLine(self.Text.aideEffectTooltip,1.0,1.0,1.0,1);
 
GameTooltip:Show();
end
end
 
function PowaAuras:MainListClick(owner)
local listeID = owner:GetID();
 
if (self.MoveEffect == 1) then
-- deplace l'effet
self:BeginCopyEffect( self.CurrentAuraId, listeID)
return;
elseif (self.MoveEffect == 2) then
-- deplace l'effet
self:BeginMoveEffect( self.CurrentAuraId, listeID)
return;
end
 
getglobal("PowaOptionsList"..self.MainOptionPage):SetHighlightTexture("");
getglobal("PowaOptionsList"..self.MainOptionPage):UnlockHighlight();
getglobal("PowaSelected"):Hide();
self.MainOptionPage = listeID;
 
-- selectionne le premier effet de la page
self.CurrentAuraId = ((self.MainOptionPage-1)*24)+1;
self.CurrentAuraPage = self.MainOptionPage;
-- change de page dans l'editeur d'effet ou cache l'editeur
if (self.Auras[auraId] ~= nil and self.Auras[ self.CurrentAuraId].buffname ~= "" and self.Auras[ self.CurrentAuraId].buffname ~= " ") then
self:InitPage();
else
self:EditorClose();
end
 
-- en cas d'edition de renommage :)
getglobal("PowaOptionsRenameEditBox"):SetText( getglobal("PowaOptionsList"..self.MainOptionPage):GetText() );
 
self:UpdateMainOption();
end
 
function PowaAuras:MainListEntered(owner)
local listeID = owner:GetID();
 
if (self.MainOptionPage ~= listeID) then
if (self.MoveEffect > 0) then
getglobal("PowaOptionsList"..listeID):SetHighlightTexture("Interface\\Buttons\\UI-Panel-Button-Highlight");
else
getglobal("PowaOptionsList"..listeID):SetHighlightTexture("");
getglobal("PowaOptionsList"..listeID):UnlockHighlight();
end
end
if (self.MoveEffect == 1) then
GameTooltip:SetOwner(owner, "ANCHOR_RIGHT");
GameTooltip:SetText(self.Text.aideCopy, nil, nil, nil, nil, 1);
GameTooltip:Show();
elseif (self.MoveEffect == 2) then
GameTooltip:SetOwner(owner, "ANCHOR_RIGHT");
GameTooltip:SetText(self.Text.aideMove, nil, nil, nil, nil, 1);
GameTooltip:Show();
end
end
-- ---------------------------------------------------------------------------------------------------------------------
function PowaAuras:OptionRename()
getglobal("PowaOptionsRename"):Hide();
getglobal("PowaOptionsRenameEditBox"):Show();
 
getglobal("PowaOptionsRenameEditBox"):SetText( getglobal("PowaOptionsList"..self.MainOptionPage):GetText() );
end
 
function PowaAuras:OptionRenameEdited()
getglobal("PowaOptionsRename"):Show();
getglobal("PowaOptionsRenameEditBox"):Hide();
 
getglobal("PowaOptionsList"..self.MainOptionPage):SetText( getglobal("PowaOptionsRenameEditBox"):GetText() );
if (self.MainOptionPage > 5) then
PowaGlobalListe[self.MainOptionPage-5] = getglobal("PowaOptionsRenameEditBox"):GetText();
else
PowaPlayerListe[self.MainOptionPage] = getglobal("PowaOptionsRenameEditBox"):GetText();
end
end
-- ---------------------------------------------------------------------------------------------------------------------
function PowaAuras:TriageIcones(nPage)
local min = ((nPage-1)*24) + 1;
local max = ((nPage-1)*24) + 24;
 
local a = min;
 
-- masque les effets de la page
for i = min, max do
local aura = self.Auras[i];
if (aura) then
aura:Hide();
end
self.SecondaryAuras[i] = nil;
end
 
for i = min, max do
if (self.Auras[i]) then
self.Auras[a] = self.Auras[i];
self.Auras[a].id = a;
if (self.Auras[a].Timer) then
self.Auras[a].Timer.id = a;
end
if (i>a) then
self.Auras[i] = nil;
end
a = a+1;
end
end
-- gere les liens vers les effets globaux
for i = 121, 360 do
if (self.Auras[i]) then
PowaGlobalSet[i] = self.Auras[i];
else
PowaGlobalSet[i] = nil;
end
end
end
 
function PowaAuras:OptionDeleteEffect(auraId)
local min = ((self.MainOptionPage-1)*24) + 1;
local max = ((self.MainOptionPage-1)*24) + 24;
 
if (not IsControlKeyDown()) then return; end
 
self.Auras[auraId]:Hide();
 
self.Auras[auraId] = nil;
if (auraId > 120) then
PowaGlobalSet[auraId] = nil;
end
self:DeleteTimerFrames(auraId);
self.Frames[auraId] = nil;
self.Textures[auraId] = nil;
self.SecondaryAuras[auraId] = nil;
self.SecondaryFrames[auraId] = nil;
self.SecondaryTextures[auraId] = nil;
 
getglobal("PowaSelected"):Hide();
 
if (getglobal("PowaBarConfigFrame"):IsVisible()) then
getglobal("PowaBarConfigFrame"):Hide();
end
 
self:TriageIcones(self.MainOptionPage); -- trie les trous
self:UpdateMainOption();
end
 
function PowaAuras:GetNextFreeSlot()
local min = ((self.MainOptionPage-1)*24) + 1;
local max = ((self.MainOptionPage-1)*24) + 24;
 
for i = min, max do
if (self.Auras[i] == nil or self.Auras[i].buffname == "" or self.Auras[i].buffname == " ") then -- Found a free slot
return i;
end
end
return nil;
end
 
function PowaAuras:OptionNewEffect()
 
local i = self:GetNextFreeSlot();
if (not i) then
self:Message("All aura slots filled"); --OK
return;
end
 
--self:Message("New Effect slot=", i)
self.CurrentAuraId = i;
self.CurrentAuraPage = self.MainOptionPage;
local aura = self:AuraFactory(PowaAuras.BuffTypes.Buff, i, {buffname = "???", off = false});
--self:Message("Timer.enabled=", aura.Timer.enabled)
self.Auras[i] = aura;
self.Showing = true;
-- effet global ?
if (i > 120) then
PowaGlobalSet[i] = aura;
end
self:DisplayAura(i);
self:UpdateMainOption();
self:InitPage();
self:UpdateTimerOptions();
if (not getglobal("PowaBarConfigFrame"):IsVisible()) then
getglobal("PowaBarConfigFrame"):Show();
PlaySound("TalentScreenOpen");
end
self:Debug("New aura ", i);
--aura:Display();
 
end
 
function PowaAuras:OptionImportEffect()
 
local i = self:GetNextFreeSlot();
if (not i) then
self:Message("All aura slots filled"); -- OK
return;
end
 
self.ImportAuraId = i;
self.CurrentAuraPage = self.MainOptionPage;
 
StaticPopup_Show("POWERAURAS_IMPORT_AURA");
 
end
 
function PowaAuras:OptionExportEffect()
if self.Auras[self.CurrentAuraId] then
StaticPopup_Show("POWERAURAS_EXPORT_AURA");
end
end
 
function PowaAuras:DisableMoveMode()
getglobal("PowaOptionsMove"):UnlockHighlight();
getglobal("PowaOptionsCopy"):UnlockHighlight();
self.MoveEffect = 0;
for i = 1, 15 do
getglobal("PowaOptionsList"..i.."Glow"):Hide();
end
-- reactive les boutons
getglobal("PowaOptionsMove"):Enable();
getglobal("PowaOptionsCopy"):Enable();
getglobal("PowaOptionsRename"):Enable();
getglobal("PowaEditButton"):Enable();
getglobal("PowaMainTestButton"):Enable();
getglobal("PowaMainHideAllButton"):Enable();
getglobal("PowaOptionsSelectorNew"):Enable();
getglobal("PowaOptionsSelectorDelete"):Enable();
end
 
function PowaAuras:OptionMoveEffect(isMove)
 
if (self.Auras[self.CurrentAuraId] == nil or self.Auras[self.CurrentAuraId].buffname == "" or self.Auras[self.CurrentAuraId].buffname == " ") then
return; -- on essaye de deplacer un effet vide !!
end
 
-- illumine le bouton pour dire que c'est actif
if (self.MoveEffect == 0) then
if (isMove) then
self.MoveEffect = 2;
getglobal("PowaOptionsMove"):LockHighlight();
getglobal("PowaOptionsCopy"):Disable();
else
self.MoveEffect = 1;
getglobal("PowaOptionsCopy"):LockHighlight();
getglobal("PowaOptionsMove"):Disable();
end
for i = 1, 15 do
getglobal("PowaOptionsList"..i.."Glow"):SetVertexColor(0.5,0.5,0.5);
getglobal("PowaOptionsList"..i.."Glow"):Show();
end
-- annule tous les boutons
getglobal("PowaOptionsRename"):Disable();
getglobal("PowaEditButton"):Disable();
getglobal("PowaMainTestButton"):Disable();
getglobal("PowaMainHideAllButton"):Disable();
getglobal("PowaOptionsSelectorNew"):Disable();
getglobal("PowaOptionsSelectorDelete"):Disable();
else
self:DisableMoveMode();
end
end
 
function PowaAuras:BeginMoveEffect(Pfrom, ToPage)
local min = ((ToPage-1)*24) + 1;
local max = ((ToPage-1)*24) + 24;
-- trouve un endroit dispo dans la page choisie
for i = min, max do
if (self.Auras[i] == nil or self.Auras[i].buffname == "" or self.Auras[i].buffname == " ") then -- on a trouve une place dispo
self:DoCopyEffect(Pfrom, i, true); -- copie et efface effet actuel
self:TriageIcones(self.CurrentAuraPage); -- trie les pages pour eviter les trous
self.CurrentAuraId = ((self.MainOptionPage-1)*24)+1; -- nouvelle aura en cours sera le premier effet de cette page
-- gere les visus
self:DisableMoveMode();
-- met a jour la page
self:UpdateMainOption();
return;
end
end
end
 
function PowaAuras:BeginCopyEffect(Pfrom, ToPage)
local min = ((ToPage-1)*24) + 1;
local max = ((ToPage-1)*24) + 24;
-- trouve un endroit dispo dans la page choisie
for i = min, max do
if (self.Auras[i] == nil or self.Auras[i].buffname == "" or self.Auras[i].buffname == " ") then -- on a trouve une place dispo
self:DoCopyEffect(Pfrom, i, false); -- copie et efface effet actuel
self.CurrentAuraId = i; -- nouvelle aura en cours sera l'effet cree
-- gere les visus
self:DisableMoveMode();
-- met a jour la page
self:UpdateMainOption();
return;
end
end
end
 
function PowaAuras:DoCopyEffect(idFrom, idTo, isMove)
self.Auras[idTo] = self:AuraFactory(self.Auras[idFrom].bufftype, idTo, self.Auras[idFrom]);
 
if (self.Auras[idFrom].Timer) then
--self:CreateTimerFrameIfMissing(idTo)
self.Auras[idTo].Timer = cPowaTimer(idTo, self.Auras[idFrom].Timer);
end
 
if (idTo > 120) then -- on entre dans la zone des effets globaux
PowaGlobalSet[idTo] = self.Auras[idTo];
end
 
if (isMove == true) then
if (self.Auras[idFrom].Timer) then
self.TimerFrame[idFrom] = nil;
end
self.Auras[idFrom] = nil;
if (idFrom > 120) then
PowaGlobalSet[idFrom] = nil;
end
end
end
-- ---------------------------------------------------------------------------------------------------------------------
function PowaAuras:MainOptionShow()
if (PowaOptionsFrame:IsVisible()) then
self:MainOptionClose();
else
self:OptionHideAll();
self.ModTest = true;
self:UpdateMainOption();
getglobal("PowaOptionsFrame"):Show();
PlaySound("TalentScreenOpen");
end
end
 
function PowaAuras:MainOptionClose() --- ferme la fenetre d'option
self:DisableMoveMode();
self.ModTest = false;
if ColorPickerFrame:IsVisible() then
self.CancelColor();
ColorPickerFrame:Hide();
end
getglobal("FontSelectorFrame"):Hide();
getglobal("PowaBarConfigFrame"):Hide();
getglobal("PowaOptionsFrame"):Hide();
PlaySound("TalentScreenClose");
 
-- cache tous les effets en test
for _, aura in pairs(self.Auras) do
aura.HideRequest = true;
end
 
self:CreateEffectLists();
self.DoCheck.All = true;
self:NewCheckBuffs();
self:MemorizeActions();
end
 
function PowaAuras:EnableChecked()
if (getglobal("PowaEnableButton"):GetChecked()) then
self:Toggle(true);
else
self:MainOptionClose();
self:Toggle(false);
end
end
 
function PowaAuras:DebugChecked()
if (getglobal("PowaDebugButton"):GetChecked()) then
self.Misc.debug = true;
else
self.Misc.debug = false;
end
end
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< MAIN OPTIONS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
function PowaAuras:UpdateTimerOptions()
 
local timer = self.Auras[self.CurrentAuraId].Timer;
if (timer) then
 
getglobal("PowaShowTimerButton"):SetChecked(timer.enabled);
 
getglobal("PowaTimerAlphaSlider"):SetValue(timer.a);
getglobal("PowaTimerSizeSlider"):SetValue(timer.h);
-- ajuste slider Y
getglobal("PowaTimerCoordSlider"):SetMinMaxValues(timer.y-5000,timer.y+5000);
getglobal("PowaTimerCoordSliderLow"):SetText(timer.y-100);
getglobal("PowaTimerCoordSliderHigh"):SetText(timer.y+100);
getglobal("PowaTimerCoordSlider"):SetValue(timer.y);
getglobal("PowaTimerCoordSlider"):SetMinMaxValues(timer.y-100,timer.y+100);
-- ajuste slider X
getglobal("PowaTimerCoordXSlider"):SetMinMaxValues(timer.x-5000,timer.x+5000);
getglobal("PowaTimerCoordXSliderLow"):SetText(timer.x-100);
getglobal("PowaTimerCoordXSliderHigh"):SetText(timer.x+100);
getglobal("PowaTimerCoordXSlider"):SetValue(timer.x);
getglobal("PowaTimerCoordXSlider"):SetMinMaxValues(timer.x-100,timer.x+100);
 
getglobal("PowaBuffTimerCentsButton"):SetChecked(timer.cents);
getglobal("PowaBuffTimerDualButton"):SetChecked(timer.dual);
getglobal("PowaBuffTimerLeadingZerosButton"):SetChecked(timer.HideLeadingZeros);
getglobal("PowaBuffTimerTransparentButton"):SetChecked(timer.Transparent);
end
end
 
function PowaAuras:InitPage()
 
--self:Message("InitPage ", self.CurrentAuraId);
 
local CheckTexture = 0;
local aura = self.Auras[self.CurrentAuraId];
--self:Message("aura ", aura);
self:UpdateTimerOptions();
 
getglobal("PowaDropDownAnim1Text"):SetText(self.Anim[aura.anim1]);
getglobal("PowaDropDownAnim2Text"):SetText(self.Anim[aura.anim2]);
getglobal("PowaDropDownAnimBeginText"):SetText(self.BeginAnimDisplay[aura.begin]);
getglobal("PowaDropDownAnimEndText"):SetText(self.EndAnimDisplay[aura.finish]);
getglobal("PowaDropDownSoundText"):SetText(self.Sound[aura.sound]);
getglobal("PowaDropDownStanceText"):SetText(self.PowaStance[aura.stance]);
getglobal("PowaBarCustomSound").aide = self.Text.aideCustomSound;
getglobal("PowaBarBuffStacks").aide = self.Text.aideStacks;
-- ---------------
getglobal("PowaOwntexButton"):SetChecked(aura.owntex);
getglobal("PowaWowTextureButton"):SetChecked(aura.wowtex);
getglobal("PowaCustomTextureButton"):SetChecked(aura.customtex);
getglobal("PowaTextAuraButton"):SetChecked(aura.textaura); -- added
getglobal("PowaRandomColorButton"):SetChecked(aura.randomcolor);
getglobal("PowaIgnoreMajButton"):SetChecked(aura.ignoremaj);
getglobal("PowaInverseButton"):SetChecked(aura.inverse);
getglobal("PowaTargetButton"):SetChecked(aura.target);
getglobal("PowaTargetFriendButton"):SetChecked(aura.targetfriend);
getglobal("PowaPartyButton"):SetChecked(aura.party);
getglobal("PowaFocusButton"):SetChecked(aura.focus);
getglobal("PowaRaidButton"):SetChecked(aura.raid);
getglobal("PowaGroupOrSelfButton"):SetChecked(aura.groupOrSelf);
getglobal("PowaGroupAnyButton"):SetChecked(aura.groupany);
getglobal("PowaOptunitnButton"):SetChecked(aura.optunitn);
getglobal("PowaExactButton"):SetChecked(aura.exact);
getglobal("PowaGCDButton"):SetChecked(aura.gcd);
getglobal("PowaMineButton"):SetChecked(aura.mine);
getglobal("PowaIsInRaidButton"):SetChecked(aura.isinraid);
getglobal("PowaRestingButton"):SetChecked(aura.ignoreResting);
getglobal("PowaIsMountedButton"):SetChecked(aura.ismounted);
getglobal("PowaInVehicleButton"):SetChecked(aura.inVehicle);
getglobal("PowaThresholdInvertButton"):SetChecked(aura.thresholdinvert);
-- ----------------
getglobal("PowaTexModeButton"):SetChecked(aura.texmode == 1);
 
getglobal("PowaTimerDurationSlider"):SetValue(aura.timerduration);
getglobal("PowaBarThresholdSlider"):SetValue(aura.threshold);
----------------
-- dual specs
self:EnableCheckBox("PowaTalentGroup1Button");
self:EnableCheckBox("PowaTalentGroup2Button");
getglobal("PowaTalentGroup1Button"):SetChecked(aura.spec1);
getglobal("PowaTalentGroup2Button"):SetChecked(aura.spec2);
 
-- modes combats
self:EnableCheckBox("PowaInCombatButton");
self:EnableCheckBox("PowaNotInCombatButton");
if (aura.bufftype == self.BuffTypes.AoE or aura.bufftype == 6) then
getglobal("PowaNotInCombatButton"):SetChecked(false);
getglobal("PowaInCombatButton"):SetChecked(false);
self:DisableCheckBox("PowaInCombatButton");
self:DisableCheckBox("PowaNotInCombatButton");
elseif (aura.combat == 1) then
getglobal("PowaInCombatButton"):SetChecked(true);
getglobal("PowaNotInCombatButton"):SetChecked(false);
elseif (aura.combat == 2) then
getglobal("PowaNotInCombatButton"):SetChecked(true);
getglobal("PowaInCombatButton"):SetChecked(false);
else
getglobal("PowaNotInCombatButton"):SetChecked(false);
getglobal("PowaInCombatButton"):SetChecked(false);
end
 
-- inverse, target and timer
if ((aura.inverse) and not (aura.bufftype == self.BuffTypes.ActionReady or aura.bufftype == self.BuffTypes.OwnSpell)) then
aura.Timer.enabled = false;
PowaEditorTab3:Hide();
else
PowaEditorTab3:Show();
end
 
--self:Message("bufftype ", aura.bufftype);
 
-- Dropdown selection alias buffs type. variable self.Auras[int].bufftype
if (aura.bufftype == self.BuffTypes.Buff) then -- BUFF
getglobal("PowaBarBuffName").aide = self.Text.aideBuff;
getglobal("PowaExactButton").aide = self.Text.aideExact;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckBuff);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarBuffStacks"):Show();
getglobal("PowaGroupAnyButton"):Show();
getglobal("PowaBarTooltipCheck"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaGroupAnyButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaOwntexButton");
self:EnableCheckBox("PowaMineButton");
getglobal("PowaMineButtonText"):SetText(self.Text.nomMine);
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
self:DisableCheckBox("PowaGCDButton");
-- --------
if (aura.target
or aura.targetfriend
or aura.party
or aura.focus
or aura.raid
or aura.optunitn) then
getglobal("PowaTimerDurationSlider"):Show();
else
getglobal("PowaTimerDurationSlider"):Hide();
end
 
if (aura.inverse == false) then
PowaEditorTab3:Show();
end
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
 
elseif (aura.bufftype == self.BuffTypes.Debuff) then -- DEBUFF
getglobal("PowaBarBuffName").aide = self.Text.aideBuff2;
getglobal("PowaExactButton").aide = self.Text.aideExact2;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckDebuff);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarBuffStacks"):Show();
getglobal("PowaBarTooltipCheck"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaOwntexButton");
self:EnableCheckBox("PowaMineButton");
getglobal("PowaMineButtonText"):SetText(self.Text.nomMine);
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
self:DisableCheckBox("PowaGCDButton");
-- --------
if (aura.target
or aura.targetfriend
or aura.party
or aura.focus
or aura.raid
or aura.optunitn) then
getglobal("PowaTimerDurationSlider"):Show();
else
getglobal("PowaTimerDurationSlider"):Hide();
end
if (aura.inverse == false) then PowaEditorTab3:Show(); end
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
 
elseif (aura.bufftype == self.BuffTypes.TypeDebuff) then -- DEBUFF-TYPE
getglobal("PowaBarBuffName").aide = self.Text.aideBuff3;
getglobal("PowaExactButton").aide = self.Text.aideExact3;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckDebuffType);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarTooltipCheck"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaMineButton");
getglobal("PowaMineButtonText"):SetText(self.Text.nomDispellable);
 
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
if (aura.target or aura.targetfriend or aura.party or aura.focus or aura.raid or aura.optunitn) then
getglobal("PowaTimerDurationSlider"):Show();
else
getglobal("PowaTimerDurationSlider"):Hide();
end
if (aura.inverse == false) then PowaEditorTab3:Show(); end
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
 
elseif (aura.bufftype == self.BuffTypes.AoE) then -- AOE
getglobal("PowaBarBuffName").aide = self.Text.aideBuff4;
getglobal("PowaExactButton").aide = self.Text.aideExact4;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckAoeDebuff);
aura.target = false;
getglobal("PowaTargetButton"):SetChecked(false);
getglobal("PowaTargetFriendButton"):SetChecked(false);
getglobal("PowaPartyButton"):SetChecked(false);
getglobal("PowaGroupOrSelfButton"):SetChecked(false);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarTooltipCheck"):Show();
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
PowaEditorTab3:Hide();
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
self:DisableCheckBox("PowaOptunitnButton");
self:DisableCheckBox("PowaInverseButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- -------
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.Enchant) then -- ENCHANT
getglobal("PowaBarBuffName").aide = self.Text.aideBuff5;
getglobal("PowaExactButton").aide = self.Text.aideExact5;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckEnchant);
aura.target = false;
getglobal("PowaTargetButton"):SetChecked(false);
getglobal("PowaTargetFriendButton"):SetChecked(false);
getglobal("PowaPartyButton"):SetChecked(false);
getglobal("PowaGroupOrSelfButton"):SetChecked(false);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarBuffStacks"):Show();
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaTimerDurationSlider"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
self:DisableCheckBox("PowaOptunitnButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
 
if (aura.inverse == false) then PowaEditorTab3:Show(); end
 
elseif (aura.bufftype == self.BuffTypes.Combo) then -- COMBOS
getglobal("PowaBarBuffName").aide = self.Text.aideBuff6;
getglobal("PowaExactButton").aide = self.Text.aideExact6;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckCombo);
aura.target = false;
getglobal("PowaTargetButton"):SetChecked(true);
getglobal("PowaTargetFriendButton"):SetChecked(false);
getglobal("PowaPartyButton"):SetChecked(false);
getglobal("PowaGroupOrSelfButton"):SetChecked(false);
-- enabled
getglobal("PowaBarBuffName"):Show();
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
self:DisableCheckBox("PowaOptunitnButton");
self:DisableCheckBox("PowaInverseButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.ActionReady) then -- ACTION READY
getglobal("PowaBarBuffName").aide = self.Text.aideBuff7;
getglobal("PowaExactButton").aide = self.Text.aideExact7;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckSkill);
aura.target = false;
getglobal("PowaTargetButton"):SetChecked(false);
getglobal("PowaTargetFriendButton"):SetChecked(false);
getglobal("PowaPartyButton"):SetChecked(false);
getglobal("PowaGroupOrSelfButton"):SetChecked(false);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaTimerDurationSlider"):Show();
self:EnableCheckBox("PowaGCDButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaOwntexButton");
 
if (aura.inverse == true) then
PowaEditorTab3:Show();
end
 
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarBuffStacks"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaOptunitnButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- -------
 
elseif (aura.bufftype == self.BuffTypes.Health) then -- HEALTH
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckHealth);
-- enabled
getglobal("PowaBarThresholdSlider"):Show();
getglobal("PowaThresholdInvertButton"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaExactButton");
self:DisableCheckBox("PowaIgnoreMajButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- -------
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
 
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.Mana) then -- Mana
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckMana);
-- enabled
getglobal("PowaBarThresholdSlider"):Show();
getglobal("PowaThresholdInvertButton"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaExactButton");
self:DisableCheckBox("PowaIgnoreMajButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.EnergyRagePower) then -- Rage/Energy/RunicPower
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckRageEnergy);
-- enabled
getglobal("PowaBarThresholdSlider"):Show();
getglobal("PowaThresholdInvertButton"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaOptunitnButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaExactButton");
self:DisableCheckBox("PowaIgnoreMajButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,1.0,0.2);
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.Aggro) then -- Aggro
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckAggro);
 
-- enabled
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaInverseButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaExactButton");
self:DisableCheckBox("PowaIgnoreMajButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaOptunitnButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.PvP) then -- PvP Flag
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckPvP);
 
-- enabled
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaTargetFriendButton");
self:EnableCheckBox("PowaPartyButton");
self:EnableCheckBox("PowaGroupOrSelfButton");
self:EnableCheckBox("PowaRaidButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaExactButton");
self:DisableCheckBox("PowaIgnoreMajButton");
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaOwntexButton");
self:DisableCheckBox("PowaInverseButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaOptunitnButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.SpellAlert) then -- SPELL ALERT
getglobal("PowaBarBuffName").aide = self.Text.aideSpells;
getglobal("PowaExactButton").aide = self.Text.aideExact;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckSpells);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaTimerDurationSlider"):Show();
self:EnableCheckBox("PowaTargetButton");
self:EnableCheckBox("PowaFocusButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaOwntexButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarBuffStacks"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
self:DisableCheckBox("PowaGCDButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaOptunitnButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
if (aura.inverse == false) then
PowaEditorTab3:Show();
end
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
 
elseif (aura.bufftype == self.BuffTypes.Stance) then -- Stance
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckStance);
getglobal("PowaTargetButtonText"):SetTextColor(1.0,0.2,0.2);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaPartyButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaFocusButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaRaidButtonText"):SetTextColor(0.2,1.0,0.2);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.2,0.2,1.0);
getglobal("PowaInverseButtonText"):SetTextColor(0.3,0.3,0.3);
-- enabled
getglobal("PowaDropDownStance"):Show();
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaBarTooltipCheck"):Hide();
PowaEditorTab3:Hide();
self:DisableTextfield("PowaBarBuffName");
getglobal("PowaBarBuffStacks"):Hide();
self:DisableCheckBox("PowaTargetButton");
aura.target = false;
self:DisableCheckBox("PowaTargetFriendButton");
aura.targetfriend = false;
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
aura.party = false;
self:DisableCheckBox("PowaFocusButton");
aura.focus = false;
self:DisableCheckBox("PowaRaidButton");
aura.raid = false;
self:DisableCheckBox("PowaOptunitnButton");
aura.optunitn = false;
self:DisableCheckBox("PowaExactButton");
aura.exact = false;
self:DisableCheckBox("PowaIgnoreMajButton");
aura.ignoremaj = false;
self:DisableCheckBox("PowaGCDButton");
aura.gcd = false;
self:DisableCheckBox("PowaOwntexButton");
getglobal("PowaMineButton"):SetChecked(false);
self:DisableCheckBox("PowaMineButton");
getglobal("PowaGroupAnyButton"):SetChecked(false);
self:DisableCheckBox("PowaGroupAnyButton");
-- --------
aura.Timer.enabled = false;
 
elseif (aura.bufftype == self.BuffTypes.OwnSpell) then -- One of my spells
getglobal("PowaBarBuffName").aide = self.Text.aideBuff8;
getglobal("PowaDropDownBuffTypeText"):SetText(self.Text.nomCheckOwnSpell);
-- enabled
getglobal("PowaBarBuffName"):Show();
getglobal("PowaBarTooltipCheck"):Show();
self:EnableCheckBox("PowaGCDButton");
self:EnableCheckBox("PowaInverseButton");
self:EnableCheckBox("PowaIgnoreMajButton");
self:EnableCheckBox("PowaExactButton");
self:EnableCheckBox("PowaIsInRaidButton");
self:EnableCheckBox("PowaRestingButton");
self:EnableCheckBox("PowaIsMountedButton");
self:EnableCheckBox("PowaOwntexButton");
getglobal("PowaMineButtonText"):SetText(self.Text.nomMine);
-- disabled
getglobal("PowaBarThresholdSlider"):Hide();
getglobal("PowaThresholdInvertButton"):Hide();
getglobal("PowaDropDownStance"):Hide();
getglobal("PowaBarBuffStacks"):Hide();
getglobal("PowaGroupAnyButton"):Hide();
self:DisableCheckBox("PowaTargetButton");
self:DisableCheckBox("PowaTargetFriendButton");
self:DisableCheckBox("PowaPartyButton");
self:DisableCheckBox("PowaFocusButton");
self:DisableCheckBox("PowaRaidButton");
self:DisableCheckBox("PowaGroupOrSelfButton");
self:DisableCheckBox("PowaGroupAnyButton");
self:DisableCheckBox("PowaOptunitnButton");
self:DisableCheckBox("PowaMineButton");
-- --------
getglobal("PowaTimerDurationSlider"):Show();
 
if (aura.inverse == true) then
PowaEditorTab3:Show();
end
getglobal("PowaTargetButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaTargetFriendButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaPartyButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaGroupOrSelfButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaFocusButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaRaidButtonText"):SetTextColor(0.3,0.3,0.3);
getglobal("PowaOptunitnButtonText"):SetTextColor(0.3,0.3,0.3);
end
 
-- changement de page
if (getglobal("PowaBarConfigFrameEditor4"):IsVisible() and not PowaEditorTab3:IsVisible() ) then
PanelTemplates_SelectTab(PowaEditorTab2);
PanelTemplates_DeselectTab(PowaEditorTab1);
PanelTemplates_DeselectTab(PowaEditorTab3);
getglobal("PowaBarConfigFrameEditor2"):Show();
getglobal("PowaBarConfigFrameEditor3"):Hide();
getglobal("PowaBarConfigFrameEditor4"):Hide();
end
-- Visuels auras
getglobal("PowaBarAuraAlphaSlider"):SetValue(aura.alpha);
getglobal("PowaBarAuraSizeSlider"):SetValue(aura.size);
-- ajuste slider Y
getglobal("PowaBarAuraCoordSlider"):SetMinMaxValues(aura.y-5000,aura.y+5000);
getglobal("PowaBarAuraCoordSliderLow"):SetText(aura.y-200);
getglobal("PowaBarAuraCoordSliderHigh"):SetText(aura.y+200);
getglobal("PowaBarAuraCoordSlider"):SetValue(aura.y);
getglobal("PowaBarAuraCoordSlider"):SetMinMaxValues(aura.y-200,aura.y+200);
getglobal("PowaBarAuraCoordYEdit"):SetText(aura.y);
-- ajuste slider X
getglobal("PowaBarAuraCoordXSlider"):SetMinMaxValues(aura.x-5000,aura.x+5000);
getglobal("PowaBarAuraCoordXSliderLow"):SetText(aura.x-200);
getglobal("PowaBarAuraCoordXSliderHigh"):SetText(aura.x+200);
getglobal("PowaBarAuraCoordXSlider"):SetValue(aura.x);
getglobal("PowaBarAuraCoordXSlider"):SetMinMaxValues(aura.x-200,aura.x+200);
getglobal("PowaBarAuraCoordXEdit"):SetText(aura.x);
 
getglobal("PowaBarAuraAnimSpeedSlider"):SetValue(aura.speed);
getglobal("PowaBarAuraDurationSlider"):SetValue(aura.duration);
getglobal("PowaBarAuraSymSlider"):SetValue(aura.symetrie);
getglobal("PowaBarAuraDeformSlider"):SetValue(aura.torsion);
getglobal("PowaBarBuffName"):SetText(aura.buffname);
getglobal("PowaBarMultiID"):SetText(aura.multiids);
getglobal("PowaBarTooltipCheck"):SetText(aura.tooltipCheck);
 
getglobal("PowaBarCustomSound"):SetText(aura.customsound);
getglobal("PowaBarUnitn"):SetText(aura.unitn);
 
local numbertotext = tostring(aura.stacks);
local stackstext = aura.stacksOperator..numbertotext;
getglobal("PowaBarBuffStacks"):SetText(stackstext);
 
if (aura.icon == "") then
getglobal("PowaIconTexture"):SetTexture("Interface\\Icons\\Inv_Misc_QuestionMark");
else
getglobal("PowaIconTexture"):SetTexture(aura.icon);
end
 
if (aura.optunitn == true) then
self:EnableTextfield("PowaBarUnitn");
elseif (aura.optunitn == false) then
self:DisableTextfield("PowaBarUnitn");
end
 
if (aura.owntex == true) then
CheckTexture = getglobal("AuraTexture"):SetTexture(aura.icon);
getglobal("PowaBarAuraTextureSlider"):Hide();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
 
elseif (aura.wowtex == true) then
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
if (#self.WowTextures > self.maxtextures) then
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,#self.WowTextures);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(#self.WowTextures);
getglobal("PowaBarAuraTextureSlider"):SetValue(aura.texture);
else
getglobal("PowaBarAuraTextureSlider"):SetValue(aura.texture);
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,#self.WowTextures);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(#self.WowTextures);
end
CheckTexture = getglobal("AuraTexture"):SetTexture(self.WowTextures[aura.texture]);
 
elseif (aura.customtex == true) then
getglobal("PowaBarAuraTextureSlider"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
getglobal("PowaBarCustomTexName"):Show();
getglobal("PowaBarCustomTexName"):SetText(aura.customname);
CheckTexture = getglobal("AuraTexture"):SetTexture(self:CustomTexPath(aura.customname));
elseif (aura.textaura == true) then
getglobal("PowaBarAuraTextureSlider"):Hide();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Show();
getglobal("PowaFontsButton"):Show();
getglobal("PowaBarAurasText"):SetText(aura.aurastext);
CheckTexture = getglobal("AuraTexture"):SetTexture("Interface\\Icons\\INV_Scroll_02"); --- Driizt: check if need to test as well
else
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
if (#self.WowTextures < self.maxtextures) then
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,self.maxtextures);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(self.maxtextures);
getglobal("PowaBarAuraTextureSlider"):SetValue(aura.texture);
else
getglobal("PowaBarAuraTextureSlider"):SetValue(aura.texture);
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,self.maxtextures);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(self.maxtextures);
end
CheckTexture = getglobal("AuraTexture"):SetTexture("Interface\\Addons\\PowerAuras\\Auras\\Aura"..aura.texture..".tga");
end
if (CheckTexture ~= 1) then
getglobal("AuraTexture"):SetTexture("Interface\\CharacterFrame\\TempPortrait.tga");
end
 
getglobal("PowaColorNormalTexture"):SetVertexColor(aura.r,aura.g,aura.b);
getglobal("AuraTexture"):SetVertexColor(aura.r,aura.g,aura.b);
 
-- affiche la symetrie
if (aura.symetrie == 1) then
getglobal("AuraTexture"):SetTexCoord(1, 0, 0, 1); -- inverse X
elseif (aura.symetrie == 2) then
getglobal("AuraTexture"):SetTexCoord(0, 1, 1, 0); -- inverse Y
elseif (aura.symetrie == 3) then
getglobal("AuraTexture"):SetTexCoord(1, 0, 1, 0); -- inverse XY
else
getglobal("AuraTexture"):SetTexCoord(0, 1, 0, 1);
end
 
getglobal("PowaColor_SwatchBg").r = aura.r;
getglobal("PowaColor_SwatchBg").g = aura.g;
getglobal("PowaColor_SwatchBg").b = aura.b;
 
getglobal("PowaHeader"):SetText(self.Text.nomEffectEditor);
end
-----------------------------------------------------------------------------------------------------------------------
-- Sliders Changed
-----------------------------------------------------------------------------------------------------------------------
 
function PowaAuras:BarAuraTextureSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraTextureSlider"):GetValue();
local CheckTexture = 0;
local auraId = self.CurrentAuraId;
 
if (self.Auras[auraId].owntex == true) then
CheckTexture = getglobal("AuraTexture"):SetTexture(self.Auras[auraId].icon);
 
elseif (self.Auras[auraId].wowtex == true) then
CheckTexture = getglobal("AuraTexture"):SetTexture(self.WowTextures[SliderValue]);
 
elseif (self.Auras[auraId].customtex == true) then
CheckTexture = getglobal("AuraTexture"):SetTexture(self:CustomTexPath(self.Auras[auraId].customname));
 
elseif (self.Auras[auraId].textaura == true) then
CheckTexture = getglobal("AuraTexture"):SetTexture("Interface\\Icons\\INV_Scroll_02");
 
else
CheckTexture = getglobal("AuraTexture"):SetTexture("Interface\\Addons\\PowerAuras\\Auras\\Aura"..SliderValue..".tga");
end
 
if (CheckTexture ~= 1) then
getglobal("AuraTexture"):SetTexture("Interface\\CharacterFrame\\TempPortrait.tga");
end
 
getglobal("PowaBarAuraTextureSliderText"):SetText(self.Text.nomTexture.." : "..SliderValue);
getglobal("AuraTexture"):SetVertexColor(self.Auras[auraId].r,self.Auras[auraId].g,self.Auras[auraId].b);
 
self.Auras[auraId].texture = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraAlphaSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraAlphaSlider"):GetValue();
 
getglobal("PowaBarAuraAlphaSliderText"):SetText(self.Text.nomAlpha.." : "..format("%.0f",SliderValue*100).."%");
 
self.Auras[self.CurrentAuraId].alpha = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraSizeSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraSizeSlider"):GetValue();
local auraId = self.CurrentAuraId;
 
getglobal("PowaBarAuraSizeSliderText"):SetText(self.Text.nomTaille.." : "..format("%.0f",SliderValue*100).."%");
 
self.Auras[auraId].size = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraCoordSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraCoordSlider"):GetValue();
local auraId = self.CurrentAuraId;
 
getglobal("PowaBarAuraCoordSliderText"):SetText(self.Text.nomPos.." Y : "..SliderValue);
if (getglobal("PowaBarAuraCoordYEdit")) then
getglobal("PowaBarAuraCoordYEdit"):SetText(SliderValue);
end
 
self.Auras[auraId].y = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraCoordXSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraCoordXSlider"):GetValue();
local auraId = self.CurrentAuraId;
 
getglobal("PowaBarAuraCoordXSliderText"):SetText(self.Text.nomPos.." X : "..SliderValue);
if (getglobal("PowaBarAuraCoordXEdit")) then
getglobal("PowaBarAuraCoordXEdit"):SetText(SliderValue);
end
 
self.Auras[auraId].x = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraAnimSpeedSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraAnimSpeedSlider"):GetValue();
local auraId = self.CurrentAuraId;
 
getglobal("PowaBarAuraAnimSpeedSliderText"):SetText(self.Text.nomSpeed.." : "..format("%.0f",SliderValue*100).."%");
 
self.Auras[auraId].speed = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraAnimDurationSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraDurationSlider"):GetValue();
 
getglobal("PowaBarAuraDurationSliderText"):SetText(self.Text.nomDuration.." : "..SliderValue.." sec");
 
self.Auras[self.CurrentAuraId].duration = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraSymSliderChanged()
if (self.Initialising) then return; end
 
local SliderValue = getglobal("PowaBarAuraSymSlider"):GetValue();
 
if (SliderValue == 0) then
getglobal("PowaBarAuraSymSliderText"):SetText(self.Text.nomSymetrie.." : "..self.Text.aucune);
getglobal("AuraTexture"):SetTexCoord(0, 1, 0, 1);
elseif (SliderValue == 1) then
getglobal("PowaBarAuraSymSliderText"):SetText(self.Text.nomSymetrie.." : X");
getglobal("AuraTexture"):SetTexCoord(1, 0, 0, 1);
elseif (SliderValue == 2) then
getglobal("PowaBarAuraSymSliderText"):SetText(self.Text.nomSymetrie.." : Y");
getglobal("AuraTexture"):SetTexCoord(0, 1, 1, 0);
elseif (SliderValue == 3) then
getglobal("PowaBarAuraSymSliderText"):SetText(self.Text.nomSymetrie.." : XY");
getglobal("AuraTexture"):SetTexCoord(1, 0, 1, 0);
end
 
self.Auras[self.CurrentAuraId].symetrie = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarAuraDeformSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarAuraDeformSlider"):GetValue();
 
getglobal("PowaBarAuraDeformSliderText"):SetText(self.Text.nomDeform.." : "..format("%.2f", SliderValue));
 
self.Auras[self.CurrentAuraId].torsion = SliderValue;
self:RedisplayAura();
end
 
function PowaAuras:BarThresholdSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaBarThresholdSlider"):GetValue();
local auraId = self.CurrentAuraId;
 
getglobal("PowaBarThresholdSliderText"):SetText(self.Text.nomThreshold.." : "..SliderValue.."%");
 
self.Auras[auraId].threshold = SliderValue;
end
 
------------------------------------------------------------------
-- Text Changed
------------------------------------------------------------------
 
function PowaAuras:TextCoordXChanged()
local thisText = getglobal("PowaBarAuraCoordXEdit"):GetText();
local thisNumber = tonumber(thisText);
local auraId = self.CurrentAuraId;
 
if (thisNumber == nil) then
getglobal("PowaBarAuraCoordXSliderText"):SetText(self.Text.nomPos.." X : "..0);
getglobal("PowaBarAuraCoordXSlider"):SetValue(0);
getglobal("PowaBarAuraCoordXEdit"):SetText(0);
self.Auras[auraId].x = 0;
else
if (thisNumber > 300 or thisNumber < -300) then
getglobal("PowaBarAuraCoordXEdit"):SetText(thisNumber);
self:DisableSlider("PowaBarAuraCoordXSlider");
else
self:EnableSlider("PowaBarAuraCoordXSlider");
getglobal("PowaBarAuraCoordXSliderText"):SetText(self.Text.nomPos.." X : "..thisNumber);
getglobal("PowaBarAuraCoordXSlider"):SetValue(thisNumber);
end
self.Auras[auraId].x = thisNumber;
end
self:RedisplayAura();
end
 
function PowaAuras:TextCoordYChanged()
local thisText = getglobal("PowaBarAuraCoordYEdit"):GetText();
local thisNumber = tonumber(thisText);
local auraId = self.CurrentAuraId;
 
if (thisNumber == nil) then
getglobal("PowaBarAuraCoordSliderText"):SetText(self.Text.nomPos.." Y : "..0);
getglobal("PowaBarAuraCoordSlider"):SetValue(0);
getglobal("PowaBarAuraCoordYEdit"):SetText(0);
self.Auras[auraId].y = 0;
else
if (thisNumber > 300 or thisNumber < -300) then
getglobal("PowaBarAuraCoordYEdit"):SetText(thisNumber);
self:DisableSlider("PowaBarAuraCoordSlider");
else
self:EnableSlider("PowaBarAuraCoordSlider");
getglobal("PowaBarAuraCoordSliderText"):SetText(self.Text.nomPos.." Y : "..thisNumber);
getglobal("PowaBarAuraCoordSlider"):SetValue(thisNumber);
end
self.Auras[auraId].y = thisNumber;
end
self:RedisplayAura();
end
 
function PowaAuras:TextChanged()
local oldText = getglobal("PowaBarBuffName"):GetText();
local auraId = self.CurrentAuraId;
 
if (oldText ~= self.Auras[auraId].buffname) then
self.Auras[auraId].buffname = getglobal("PowaBarBuffName"):GetText();
self.Auras[auraId].icon = "";
getglobal("PowaIconTexture"):SetTexture("Interface\\Icons\\Inv_Misc_QuestionMark");
end
end
 
function PowaAuras:MultiIDChanged()
local oldText = getglobal("PowaBarMultiID"):GetText();
local auraId = self.CurrentAuraId;
if (oldText == self.Auras[auraId].multiids) then -- no Change
else
self.Auras[auraId].multiids = getglobal("PowaBarMultiID"):GetText();
end
end
 
function PowaAuras:TooltipCheckChanged()
local oldText = getglobal("PowaBarTooltipCheck"):GetText();
local auraId = self.CurrentAuraId;
if (oldText == self.Auras[auraId].tooltipCheck) then -- no Change
else
self.Auras[auraId].tooltipCheck = getglobal("PowaBarTooltipCheck"):GetText();
end
end
 
function PowaAuras:StacksTextChanged()
local aura = self.Auras[self.CurrentAuraId];
aura:SetStacks(getglobal("PowaBarBuffStacks"):GetText());
end
 
function PowaAuras:UnitnTextChanged()
local oldUnitnText = getglobal("PowaBarUnitn"):GetText();
local auraId = self.CurrentAuraId;
 
if (oldUnitnText == self.Auras[auraId].unitn) then -- same text
else
self.Auras[auraId].unitn = getglobal("PowaBarUnitn"):GetText();
end
end
 
function PowaAuras:CustomTextChanged()
local auraId = self.CurrentAuraId;
self.Auras[auraId].customname = getglobal("PowaBarCustomTexName"):GetText();
self:RedisplayAura();
end
 
function PowaAuras:AurasTextCancel()
local auraId = self.CurrentAuraId;
getglobal("PowaBarAurasText"):SetText(self.Auras[auraId].aurastext);
end
 
function PowaAuras:AurasTextChanged()
local auraId = self.CurrentAuraId;
self.Auras[auraId].aurastext = getglobal("PowaBarAurasText"):GetText();
--self:Message("aura text changed to ", self.Auras[auraId].aurastext);
self:RedisplayAura();
end
 
function PowaAuras:CustomSoundTextChanged()
local oldCustomSound = getglobal("PowaBarCustomSound"):GetText();
local auraId = self.CurrentAuraId;
 
if (oldCustomSound ~= self.Auras[auraId].customsound) then -- meme texte
self.Auras[auraId].customsound = getglobal("PowaBarCustomSound"):GetText();
if not (self.Auras[auraId].customsound == "") then
PlaySoundFile("Interface\\AddOns\\PowerAuras\\Sounds\\"..self.Auras[auraId].customsound);
end
end
end
 
---------------------------------
-- Checkboxes changed
---------------------------------
 
function PowaAuras:InverseChecked()
local aura = self.Auras[self.CurrentAuraId];
if (getglobal("PowaInverseButton"):GetChecked()) then
aura.inverse = true;
if (aura.bufftype == self.BuffTypes.OwnSpell or aura.bufftype == self.BuffTypes.ActionReady) then
PowaEditorTab3:Show();
end
else
aura.inverse = false;
if (aura.bufftype == self.BuffTypes.OwnSpell or aura.bufftype == self.BuffTypes.ActionReady) then
PowaEditorTab3:Hide();
aura.Timer.enabled = false;
self:DeleteTimerFrames(aura.id);
end
end
end
 
function PowaAuras:IgnoreMajChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaIgnoreMajButton"):GetChecked()) then
self.Auras[auraId].ignoremaj = true;
else
self.Auras[auraId].ignoremaj = false;
end
end
 
function PowaAuras:ExactChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaExactButton"):GetChecked()) then
self.Auras[auraId].exact = true;
else
self.Auras[auraId].exact = false;
end
end
 
function PowaAuras:GCDChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaGCDButton"):GetChecked()) then
self.Auras[auraId].gcd = true;
else
self.Auras[auraId].gcd = false;
end
end
 
function PowaAuras:TalentGroup1Checked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTalentGroup1Button"):GetChecked()) then
self.Auras[auraId].spec1 = true;
else
self.Auras[auraId].spec1 = false;
end
end
 
function PowaAuras:TalentGroup2Checked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTalentGroup2Button"):GetChecked()) then
self.Auras[auraId].spec2 = true;
else
self.Auras[auraId].spec2 = false;
end
end
 
function PowaAuras:MineChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaMineButton"):GetChecked()) then
self.Auras[auraId].mine = true;
else
self.Auras[auraId].mine = false;
end
end
 
function PowaAuras:CombatChecked(xnum)
local auraId = self.CurrentAuraId;
if (xnum == 1) then -- case InCombat cochee
if (getglobal("PowaInCombatButton"):GetChecked()) then
self.Auras[auraId].combat = 1;
getglobal("PowaNotInCombatButton"):SetChecked(false);
else
self.Auras[auraId].combat = 0;
end
elseif (xnum == 2) then -- case NotInCombat cochee
if (getglobal("PowaNotInCombatButton"):GetChecked()) then
self.Auras[auraId].combat = 2;
getglobal("PowaInCombatButton"):SetChecked(false);
else
self.Auras[auraId].combat = 1;
end
end
end
 
 
function PowaAuras:CheckedButtonOnClick(button, key)
self.Auras[self.CurrentAuraId][key] = (button:GetChecked()~=nil);
end
 
function PowaAuras:RandomColorChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaRandomColorButton"):GetChecked()) then
self.Auras[auraId].randomcolor = true;
else
self.Auras[auraId].randomcolor = false;
end
end
 
function PowaAuras:TexModeChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTexModeButton"):GetChecked()) then
self.Auras[auraId].texmode = 1;
else
self.Auras[auraId].texmode = 2;
end
self:RedisplayAura();
end
 
function PowaAuras:ThresholdInvertChecked(owner)
local auraId = self.CurrentAuraId;
if (getglobal("PowaThresholdInvertButton"):GetChecked()) then
self.Auras[auraId].thresholdinvert = true;
else
self.Auras[auraId].thresholdinvert = false;
end
end
 
------------------------------------
 
function PowaAuras:OwntexChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaOwntexButton"):GetChecked()) then
self.Auras[auraId].owntex = true;
self.Auras[auraId].wowtex = false;
self.Auras[auraId].customtex = false;
self.Auras[auraId].textaura = false;
getglobal("PowaWowTextureButton"):SetChecked(false);
getglobal("PowaCustomTextureButton"):SetChecked(false);
getglobal("PowaTextAuraButton"):SetChecked(false);
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
else
self.Auras[auraId].owntex = false;
end
self:RedisplayAura();
end
 
function PowaAuras:WowTexturesChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaWowTextureButton"):GetChecked()) then
self.Auras[auraId].wowtex = true;
self.Auras[auraId].owntex = false;
self.Auras[auraId].customtex = false;
self.Auras[auraId].textaura = false;
 
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,#self.WowTextures);
getglobal("PowaBarAuraTextureSlider"):SetValue(1);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(#self.WowTextures);
getglobal("PowaOwntexButton"):SetChecked(false);
getglobal("PowaCustomTextureButton"):SetChecked(false);
getglobal("PowaTextAuraButton"):SetChecked(false);
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarCustomTexName"):Hide();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
else
self.Auras[auraId].wowtex = false;
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,self.maxtextures);
getglobal("PowaBarAuraTextureSlider"):SetValue(1);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(self.maxtextures);
end
PowaAuras:BarAuraTextureSliderChanged();
self:RedisplayAura();
end
 
function PowaAuras:CustomTexturesChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaCustomTextureButton"):GetChecked()) then
self.Auras[auraId].customtex = true;
self.Auras[auraId].owntex = false;
self.Auras[auraId].wowtex = false;
self.Auras[auraId].textaura = false;
getglobal("PowaBarAuraTextureSlider"):Hide();
getglobal("PowaBarCustomTexName"):Show();
getglobal("PowaBarCustomTexName"):SetText(self.Auras[auraId].customname);
getglobal("PowaOwntexButton"):SetChecked(false);
getglobal("PowaWowTextureButton"):SetChecked(false);
getglobal("PowaTextAuraButton"):SetChecked(false);
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
else
self.Auras[auraId].customtex = false;
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarCustomTexName"):Hide();
end
PowaAuras:BarAuraTextureSliderChanged();
self:RedisplayAura();
end
 
function PowaAuras:TextAuraChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTextAuraButton"):GetChecked()) then
self.Auras[auraId].textaura = true;
self.Auras[auraId].owntex = false;
self.Auras[auraId].wowtex = false;
self.Auras[auraId].customtex = false;
getglobal("PowaBarAuraTextureSlider"):Hide();
getglobal("PowaBarAurasText"):Show();
getglobal("PowaFontsButton"):Show();
getglobal("PowaBarAurasText"):SetText(self.Auras[auraId].aurastext);
getglobal("PowaOwntexButton"):SetChecked(false);
getglobal("PowaWowTextureButton"):SetChecked(false);
getglobal("PowaCustomTextureButton"):SetChecked(false);
getglobal("PowaBarCustomTexName"):Hide();
else
self.Auras[auraId].textaura = false;
getglobal("PowaBarAuraTextureSlider"):Show();
getglobal("PowaBarAurasText"):Hide();
getglobal("PowaFontsButton"):Hide();
end
self:BarAuraTextureSliderChanged();
self:RedisplayAura();
end
 
-----------------------------------------------
-- Targets, Party, Raid, ... Checkboxes
-----------------------------------------------
 
function PowaAuras:TargetChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTargetButton"):GetChecked()) then
self.Auras[auraId].target = true;
else
self.Auras[auraId].target = false;
end
self:InitPage();
end
 
function PowaAuras:TargetFriendChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaTargetFriendButton"):GetChecked()) then
self.Auras[auraId].targetfriend = true;
else
self.Auras[auraId].targetfriend = false;
end
self:InitPage();
end
 
function PowaAuras:PartyChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaPartyButton"):GetChecked()) then
self.Auras[auraId].party = true;
else
self.Auras[auraId].party = false;
end
self:InitPage();
end
 
function PowaAuras:GroupOrSelfChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaGroupOrSelfButton"):GetChecked()) then
self.Auras[auraId].groupOrSelf = true;
else
self.Auras[auraId].groupOrSelf = false;
end
self:InitPage();
end
 
function PowaAuras:FocusChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaFocusButton"):GetChecked()) then
self.Auras[auraId].focus = true;
else
self.Auras[auraId].focus = false;
end
self:InitPage();
end
 
function PowaAuras:RaidChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaRaidButton"):GetChecked()) then
self.Auras[auraId].raid = true;
else
self.Auras[auraId].raid = false;
end
self:InitPage();
end
 
function PowaAuras:GroupAnyChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaGroupAnyButton"):GetChecked()) then
self.Auras[auraId].groupany = true;
else
self.Auras[auraId].groupany = false;
end
self:InitPage();
end
 
function PowaAuras:OptunitnChecked()
local auraId = self.CurrentAuraId;
if (getglobal("PowaOptunitnButton"):GetChecked()) then
self.Auras[auraId].optunitn = true;
getglobal("PowaBarUnitn"):Show();
getglobal("PowaBarUnitn"):SetText(self.Auras[auraId].unitn);
else
self.Auras[auraId].optunitn = false;
getglobal("PowaBarUnitn"):Hide();
end
end
 
------------------------------------------
-- Dropdownmenus
------------------------------------------
 
function PowaAuras.DropDownMenu_Initialize(owner)
local info;
local aura = PowaAuras.Auras[PowaAuras.CurrentAuraId];
if (aura == nil) then
aura = PowaAuras:AuraFactory(PowaAuras.BuffTypes.Buff, 0);
end
 
if (owner:GetName() == "PowaDropDownAnim1Button" or owner:GetName() == "PowaDropDownAnim1") then
for i = 1, 10 do
info = {};
info.text = PowaAuras.Anim[i];
info.func = PowaAuras.DropDownMenu_OnClickAnim1;
UIDropDownMenu_AddButton(info);
end
UIDropDownMenu_SetSelectedValue(PowaDropDownAnim1, PowaAuras.Anim[aura.anim1]);
elseif (owner:GetName() == "PowaDropDownAnim2Button" or owner:GetName() == "PowaDropDownAnim2") then
for i = 0, 10 do
info = {};
info.text = PowaAuras.Anim[i];
info.func = PowaAuras.DropDownMenu_OnClickAnim2;
UIDropDownMenu_AddButton(info);
end
UIDropDownMenu_SetSelectedValue(PowaDropDownAnim2, PowaAuras.Anim[aura.anim2]);
elseif (owner:GetName() == "PowaDropDownStanceButton" or owner:GetName() == "PowaDropDownStance") then
if #(PowaAuras.PowaStance) > 0 then
info = {func = PowaAuras.DropDownMenu_OnClickStance, owner = owner};
for i = 1, #(PowaAuras.PowaStance) do
info.text = PowaAuras.PowaStance[i];
info.value = i;
UIDropDownMenu_AddButton(info);
end
end
UIDropDownMenu_SetSelectedValue(PowaDropDownStance, PowaAuras.PowaStance[aura.stance]);
UIDropDownMenu_SetWidth(PowaDropDownStance, 210, 1);
elseif (owner:GetName() == "PowaDropDownSoundButton" or owner:GetName() == "PowaDropDownSound") then
for i = 0, 15 do
info = {};
info.text = PowaAuras.Sound[i];
info.func = PowaAuras.DropDownMenu_OnClickSound;
info.value = i;
UIDropDownMenu_AddButton(info);
end
UIDropDownMenu_SetSelectedValue(PowaDropDownSound, PowaAuras.Sound[aura.sound]);
UIDropDownMenu_SetWidth(PowaDropDownSound, 220, 1);
elseif (owner:GetName() == "PowaDropDownAnimBeginButton" or owner:GetName() == "PowaDropDownAnimBegin") then
info = {func = PowaAuras.DropDownMenu_OnClickBegin, owner = owner};
for i = 0, #PowaAuras.BeginAnimDisplay do
info.text = PowaAuras.BeginAnimDisplay[i];
info.value = i;
UIDropDownMenu_AddButton(info);
end
UIDropDownMenu_SetSelectedValue(PowaDropDownAnimBegin, PowaAuras.BeginAnimDisplay[aura.begin]);
elseif (owner:GetName() == "PowaDropDownAnimEndButton" or owner:GetName() == "PowaDropDownAnimEnd") then
info = {func = PowaAuras.DropDownMenu_OnClickEnd, owner = owner};
for i = 0, #PowaAuras.EndAnimDisplay do
info.text = PowaAuras.EndAnimDisplay[i];
info.value = i;
UIDropDownMenu_AddButton(info);
end
UIDropDownMenu_SetSelectedValue(PowaDropDownAnimEnd, PowaAuras.EndAnimDisplay[aura.finish]);
elseif (owner:GetName() == "PowaDropDownBuffTypeButton" or owner:GetName() == "PowaDropDownBuffType") then
--PowaAuras:Message("DropDownMenu_Initialize for buff type");
 
info = {func = PowaAuras.DropDownMenu_OnClickBuffType, owner = owner};
info.text = PowaAuras.Text.nomCheckBuff;
info.value = PowaAuras.BuffTypes.Buff;
UIDropDownMenu_AddButton(info); --- BUFF #1
info.text = PowaAuras.Text.nomCheckDebuff;
info.value = PowaAuras.BuffTypes.Debuff;
UIDropDownMenu_AddButton(info); --- DEBUFF #2
info.text = PowaAuras.Text.nomCheckDebuffType;
info.value = PowaAuras.BuffTypes.TypeDebuff;
UIDropDownMenu_AddButton(info); --- DEBUFF TYPE #3
info.text = PowaAuras.Text.nomCheckAoeDebuff;
info.value = PowaAuras.BuffTypes.AoE;
UIDropDownMenu_AddButton(info); --- AOE DEBUFF #4
info.text = PowaAuras.Text.nomCheckEnchant;
info.value = PowaAuras.BuffTypes.Enchant;
UIDropDownMenu_AddButton(info); --- ENCHANT #5
info.text = PowaAuras.Text.nomCheckCombo;
info.value = PowaAuras.BuffTypes.Combo;
UIDropDownMenu_AddButton(info); --- COMBO #6
info.text = PowaAuras.Text.nomCheckSkill;
info.value = PowaAuras.BuffTypes.ActionReady;
UIDropDownMenu_AddButton(info); --- ACTION USABLE #7
info.text = PowaAuras.Text.nomCheckHealth;
info.value = PowaAuras.BuffTypes.Health;
UIDropDownMenu_AddButton(info); --- HEALTH #8
info.text = PowaAuras.Text.nomCheckMana;
info.value = PowaAuras.BuffTypes.Mana;
UIDropDownMenu_AddButton(info); --- MANA #9
info.text = PowaAuras.Text.nomCheckRageEnergy;
info.value = PowaAuras.BuffTypes.EnergyRagePower;
UIDropDownMenu_AddButton(info); --- RAGE/ENERGY/RUNICPOWER #10
info.text = PowaAuras.Text.nomCheckAggro;
info.value = PowaAuras.BuffTypes.Aggro;
UIDropDownMenu_AddButton(info); --- AGGRO #11
info.text = PowaAuras.Text.nomCheckPvP;
info.value = PowaAuras.BuffTypes.PvP;
UIDropDownMenu_AddButton(info); --- PVP FLAG #12
info.text = PowaAuras.Text.nomCheckSpells;
info.value = PowaAuras.BuffTypes.SpellAlert;
UIDropDownMenu_AddButton(info); --- SPELLALERT #13
info.text = PowaAuras.Text.nomCheckStance;
info.value = PowaAuras.BuffTypes.Stance;
UIDropDownMenu_AddButton(info); --- STANCE #14
info.text = PowaAuras.Text.nomCheckOwnSpell;
info.value = PowaAuras.BuffTypes.OwnSpell;
UIDropDownMenu_AddButton(info); --- ownSpell #15
 
UIDropDownMenu_SetSelectedValue(PowaDropDownBuffType, aura.bufftype);
end
end
 
function PowaAuras.DropDownMenu_OnClickBuffType()
--PowaAuras:Message("DropDownMenu_OnClickBuffType bufftype ", this.value, " for aura ", PowaAuras.CurrentAuraId, " ", this.owner);
 
UIDropDownMenu_SetSelectedValue(this.owner, this.value);
 
aura = PowaAuras:AuraFactory(this.value, PowaAuras.CurrentAuraId, PowaAuras.Auras[PowaAuras.CurrentAuraId]);
aura.icon= "";
PowaAuras.Auras[PowaAuras.CurrentAuraId] = aura
if (PowaAuras.CurrentAuraId > 120) then
PowaGlobalSet[PowaAuras.CurrentAuraId] = aura;
end
 
if (aura.bufftype == PowaAuras.BuffTypes.AoE or aura.bufftype == PowaAuras.BuffTypes.Combo) then
aura.combat = 0;
end
 
if (aura.bufftype == PowaAuras.BuffTypes.TypeDebuff
or aura.bufftype == PowaAuras.BuffTypes.AoE
or aura.bufftype == PowaAuras.BuffTypes.Enchant
or aura.bufftype == PowaAuras.BuffTypes.Combo
or aura.bufftype == PowaAuras.BuffTypes.Health
or aura.bufftype == PowaAuras.BuffTypes.Mana
or aura.bufftype == PowaAuras.BuffTypes.EnergyRagePower
or aura.bufftype == PowaAuras.BuffTypes.Aggro
or aura.bufftype == PowaAuras.BuffTypes.PvP
or aura.bufftype == PowaAuras.BuffTypes.Stance) then
aura.owntex = false;
end
 
PowaAuras:InitPage();
end
 
function PowaAuras.DropDownMenu_OnClickAnim1(owner)
local optionID = owner:GetID();
local auraId = PowaAuras.CurrentAuraId;
 
UIDropDownMenu_SetSelectedID(PowaDropDownAnim1, optionID);
local optionName = UIDropDownMenu_GetText(PowaDropDownAnim1);
UIDropDownMenu_SetSelectedValue(PowaDropDownAnim1, optionName);
 
PowaAuras.Auras[auraId].anim1 = optionID;
PowaAuras:RedisplayAura();
end
 
function PowaAuras.DropDownMenu_OnClickAnim2(owner)
local optionID = owner:GetID();
local auraId = PowaAuras.CurrentAuraId;
 
UIDropDownMenu_SetSelectedID(PowaDropDownAnim2, optionID);
local optionName = UIDropDownMenu_GetText(PowaDropDownAnim2);
UIDropDownMenu_SetSelectedValue(PowaDropDownAnim2, optionName);
 
PowaAuras.Auras[auraId].anim2 = optionID -1;
PowaAuras:RedisplayAura();
end
 
function PowaAuras.DropDownMenu_OnClickSound(owner)
local optionID = owner:GetID();
local aura = PowaAuras.Auras[PowaAuras.CurrentAuraId];
 
UIDropDownMenu_SetSelectedID(PowaDropDownSound, optionID);
local optionName = UIDropDownMenu_GetText(PowaDropDownSound);
UIDropDownMenu_SetSelectedValue(PowaDropDownSound, optionName);
 
aura.sound = optionID -1;
if (aura.sound == 1) then
aura.soundfile = "LEVELUP";
elseif (aura.sound == 2) then
aura.soundfile = "LOOTWINDOWCOINSOUND";
elseif (aura.sound == 3) then
aura.soundfile = "MapPing";
elseif (aura.sound == 4) then
aura.soundfile = "UndeadExploration";
elseif (aura.sound == 5) then
aura.soundfile = "QUESTADDED";
elseif (aura.sound == 6) then
aura.soundfile = "QUESTCOMPLETED";
elseif (aura.sound == 7) then
aura.soundfile = "WriteQuest";
elseif (aura.sound == 8) then
aura.soundfile = "Fishing Reel in";
elseif (aura.sound == 9) then
aura.soundfile = "igPVPUpdate";
elseif (aura.sound == 10) then
aura.soundfile = "ReadyCheck";
elseif (aura.sound == 11) then
aura.soundfile = "RaidWarning";
elseif (aura.sound == 12) then
aura.soundfile = "AuctionWindowOpen";
elseif (aura.sound == 13) then
aura.soundfile = "AuctionWindowClose";
elseif (aura.sound == 14) then
aura.soundfile = "TellMessage";
elseif (aura.sound == 15) then
aura.soundfile = "igBackPackOpen";
elseif (aura.sound == 0) then
aura.soundfile = "";
end
if not(aura.soundfile == "") or not (aura.soundfile == nil)then
PlaySound(aura.soundfile);
end
end
 
function PowaAuras.DropDownMenu_OnClickStance()
UIDropDownMenu_SetSelectedValue(this.owner, this.value);
local auraId = PowaAuras.CurrentAuraId;
 
if (PowaAuras.Auras[auraId].stance ~= this.value) then
PowaAuras.Auras[auraId].stance = this.value;
PowaAuras.Auras[auraId].icon = "";
end
PowaAuras:InitPage();
end
 
function PowaAuras.DropDownMenu_OnClickBegin(owner)
UIDropDownMenu_SetSelectedID(this.owner, this.value + 1);
local optionName = UIDropDownMenu_GetText(PowaDropDownAnimBegin);
UIDropDownMenu_SetSelectedValue(PowaDropDownAnimBegin, optionName);
 
PowaAuras.Auras[PowaAuras.CurrentAuraId].begin = this.value;
PowaAuras:RedisplayAura();
end
 
function PowaAuras.DropDownMenu_OnClickEnd(owner)
local optionID = owner:GetID();
local auraId = PowaAuras.CurrentAuraId;
 
UIDropDownMenu_SetSelectedID(PowaDropDownAnimEnd, optionID);
local optionName = UIDropDownMenu_GetText(PowaDropDownAnimEnd);
UIDropDownMenu_SetSelectedValue(PowaDropDownAnimEnd, optionName);
 
PowaAuras.Auras[auraId].finish = optionID - 1;
PowaAuras:RedisplayAura();
end
 
----------------------------------------------------------
-- OPTIONS DEPLACEMENT
 
function PowaAuras:Bar_MouseDown(owner, button, frmFrame)
if( button == "LeftButton") then
getglobal( frmFrame ):StartMoving( );
end
end
 
function PowaAuras:Bar_MouseUp(owner, button, frmFrame)
getglobal( frmFrame ):StopMovingOrSizing( );
end
 
----------------------------------------------------------
-- COLOR PICKER
 
function PowaAuras.SetColor()
PowaAuras:SetAuraColor(ColorPickerFrame:GetColorRGB());
end
 
function PowaAuras.CancelColor()
PowaAuras:SetAuraColor(ColorPickerFrame.previousValues.r, ColorPickerFrame.previousValues.g, ColorPickerFrame.previousValues.b);
end
 
function PowaAuras:SetAuraColor(r, g, b)
--self:Message("SetColor r=", r, " g=",g, " b=", b);
local swatch = getglobal("PowaColorNormalTexture"); -- juste le visuel
local frame = getglobal("PowaColor_SwatchBg"); -- enregistre la couleur
swatch:SetVertexColor(r,g,b);
frame.r = r;
frame.g = g;
frame.b = b;
 
self.Auras[self.CurrentAuraId].r = r;
self.Auras[self.CurrentAuraId].g = g;
self.Auras[self.CurrentAuraId].b = b;
 
getglobal("AuraTexture"):SetVertexColor(r,g,b);
self:RedisplayAura();
end
 
function PowaAuras:OpenColorPicker()
CloseMenus();
if ColorPickerFrame:IsVisible() then
PowaAuras.CancelColor();
ColorPickerFrame:Hide();
else
button = getglobal("PowaColor_SwatchBg");
 
ColorPickerFrame.func = self.SetColor -- button.swatchFunc;
ColorPickerFrame:SetColorRGB(button.r, button.g, button.b);
ColorPickerFrame.previousValues = {r = button.r, g = button.g, b = button.b, opacity = button.opacity};
ColorPickerFrame.cancelFunc = self.CancelColor
 
ColorPickerFrame:SetPoint("TOPLEFT", "PowaBarConfigFrame", "TOPRIGHT", 0, 0)
 
ColorPickerFrame:Show();
end
end
 
----------------------------------------------------------
-- FONT SELECTOR
 
function PowaAuras:FontSelectorOnShow(owner)
owner:SetBackdropBorderColor(0.9, 1.0, 0.95);
owner:SetBackdropColor(0.6, 0.6, 0.6);
end
 
function PowaAuras:OpenFontSelector(owner)
CloseMenus();
 
if (FontSelectorFrame:IsVisible()) then
getglobal("FontSelectorFrame"):Hide();
else
FontSelectorFrame.selectedFont = self.Auras[self.CurrentAuraId].aurastextfont;
getglobal("FontSelectorFrame"):Show();
end
 
end
 
function PowaAuras:FontSelectorOkay(owner)
if FontSelectorFrame.selectedFont then
self.Auras[self.CurrentAuraId].aurastextfont = FontSelectorFrame.selectedFont;
else
self.Auras[self.CurrentAuraId].aurastextfont = 1;
end
self:RedisplayAura();
self:FontSelectorClose(owner);
end
 
function PowaAuras:FontSelectorCancel(owner)
self:FontSelectorClose(owner);
end
 
function PowaAuras:FontSelectorClose(owner)
if (FontSelectorFrame:IsVisible()) then
getglobal("FontSelectorFrame"):Hide();
end
end
 
function PowaAuras:FontButton_OnClick(owner)
FontSelectorFrame.selectedFont = getglobal("FontSelectorEditorScrollButton"..owner:GetID()).font;
self:FontScrollBar_Update(owner);
end
 
function PowaAuras.FontScrollBar_Update(owner)
local fontOffset = FauxScrollFrame_GetOffset(FontSelectorEditorScrollFrame);
local fontIndex;
local fontName, namestart, nameend;
 
for i=1, 10, 1 do
fontIndex = fontOffset + i;
fontName = PowaAuras.Fonts[fontIndex];
fontText = getglobal("FontSelectorEditorScrollButton"..i.."Text");
fontButton = getglobal("FontSelectorEditorScrollButton"..i);
fontButton.font = fontIndex;
 
namestart = string.find(fontName, "\\", 1, true);
nameend = string.find(fontName, ".", 1, true);
if namestart and nameend and (nameend > namestart) then
fontName = string.sub(fontName, namestart+1, nameend-1);
while string.find(fontName, "\\", 1, true) do
namestart = string.find(fontName, "\\", 1, true)
fontName = string.sub(fontName, namestart+1);
end
end
fontText:SetFont(PowaAuras.Fonts[fontIndex], 14, "OUTLINE, MONOCHROME");
fontText:SetText(fontName);
if FontSelectorFrame.selectedFont == fontIndex then
fontButton:LockHighlight();
else
fontButton:UnlockHighlight();
end
end
 
FauxScrollFrame_Update(FontSelectorEditorScrollFrame, #PowaAuras.Fonts, 10, 16 );
 
end
 
----------------------------------------------------------------------
function PowaAuras:EditorShow()
if (PowaBarConfigFrame:IsVisible()) then
self:EditorClose();
return;
end
local aura = self.Auras[self.CurrentAuraId];
if (aura) then --- ouvre seulement si l'effet existe
if (aura.Timer.enabled) then
self:CreateTimerFrameIfMissing(aura.id);
end
self:InitPage();
getglobal("PowaBarConfigFrame"):Show();
PlaySound("TalentScreenOpen");
end
end
 
function PowaAuras:EditorClose() --- ferme la fenetre d'option
if (PowaBarConfigFrame:IsVisible()) then
if (FontSelectorFrame:IsVisible()) then
getglobal("FontSelectorFrame"):Hide();
end
if (ColorPickerFrame:IsVisible()) then
self.CancelColor();
ColorPickerFrame:Hide();
end
getglobal("PowaBarConfigFrame"):Hide();
PlaySound("TalentScreenClose");
end
end
 
-- <<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<< ADV. OPTIONS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
-- <<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
function PowaAuras:UpdateOptionsTimer(auraId)
 
if (self.Initialising) then return; end
 
local timerOpts = self.Auras[auraId].Timer;
 
local frame1 = self.TimerFrame[auraId][1];
frame1:SetAlpha(timerOpts.a);
frame1:SetWidth(20 * timerOpts.h);
frame1:SetHeight(20 * timerOpts.h);
frame1:SetPoint("Center", timerOpts.x, timerOpts.y);
 
local frame2 = self.TimerFrame[auraId][2];
frame2:SetAlpha(timerOpts.a * 0.75);
frame2:SetWidth(14 * timerOpts.h);
frame2:SetHeight(14 * timerOpts.h);
frame2:SetPoint("LEFT", frame1, "RIGHT", 1, -1.5);
 
end
 
 
function PowaAuras:UpdateOptionsStacks(auraId)
if (self.Initialising) then return; end
 
local stackOpts = self.Auras[auraId].Stacks;
 
local frame1 = self.StacksFrame[auraId];
frame:SetAlpha(stackOpts.a);
frame:SetWidth(20 * stackOpts.h);
frame:SetHeight(20 * stackOpts.h);
frame:SetPoint("Center", stackOpts.x, stackOpts.y);
end
 
function PowaAuras:ShowTimerChecked(control)
if (self.Initialising) then return; end
if (control:GetChecked()) then
self.Auras[self.CurrentAuraId].Timer.enabled = true;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
else
self.Auras[self.CurrentAuraId].Timer.enabled = false;
self:HideTimerFrames(self.CurrentAuraId);
self.TimerFrame[self.CurrentAuraId] = nil;
end
end
 
function PowaAuras:TimerAlphaSliderChanged()
local SliderValue = getglobal("PowaTimerAlphaSlider"):GetValue();
 
if (self.Initialising) then return; end -- desactived
 
getglobal("PowaTimerAlphaSliderText"):SetText(self.Text.nomAlpha.." : "..format("%.2f", SliderValue) );
 
self.Auras[self.CurrentAuraId].Timer.a = SliderValue;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerSizeSliderChanged()
local SliderValue = getglobal("PowaTimerSizeSlider"):GetValue();
 
if (self.Initialising) then return; end -- desactived
 
getglobal("PowaTimerSizeSliderText"):SetText(self.Text.nomTaille.." : "..format("%.2f", SliderValue) );
 
self.Auras[self.CurrentAuraId].Timer.h = SliderValue;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerCoordSliderChanged()
local SliderValue = getglobal("PowaTimerCoordSlider"):GetValue();
 
if (self.Initialising) then return; end -- desactived
 
getglobal("PowaTimerCoordSliderText"):SetText(self.Text.nomPos.." Y : "..SliderValue);
 
self.Auras[self.CurrentAuraId].Timer.y = SliderValue;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerCoordXSliderChanged()
local SliderValue = getglobal("PowaTimerCoordXSlider"):GetValue();
 
if (self.Initialising) then return; end -- desactived
 
getglobal("PowaTimerCoordXSliderText"):SetText(self.Text.nomPos.." X : "..SliderValue);
 
self.Auras[self.CurrentAuraId].Timer.x = SliderValue;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerDurationSliderChanged()
if (self.Initialising) then return; end
local SliderValue = getglobal("PowaTimerDurationSlider"):GetValue();
 
getglobal("PowaTimerDurationSliderText"):SetText(self.Text.nomTimerDuration.." : "..SliderValue.." sec");
 
self.Auras[self.CurrentAuraId].timerduration = SliderValue;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerChecked(control, setting)
if (self.Initialising) then return; end
if (control:GetChecked()) then
self.Auras[self.CurrentAuraId].Timer[setting] = true;
else
self.Auras[self.CurrentAuraId].Timer[setting] = false;
end
self:HideTimerFrames(self.CurrentAuraId);
self.TimerFrame[self.CurrentAuraId] = nil;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
function PowaAuras:TimerTransparentChecked(control)
if (self.Initialising) then return; end
if (control:GetChecked()) then
self.Auras[self.CurrentAuraId].Timer.Transparent = true;
else
self.Auras[self.CurrentAuraId].Timer.Transparent = false;
end
self:HideTimerFrames(self.CurrentAuraId);
self.TimerFrame[self.CurrentAuraId] = nil;
self:CreateTimerFrameIfMissing(self.CurrentAuraId);
end
 
-- ----------------------------------------------------------- LIGNE DE COMMANDE
 
function PowaAuras_CommanLine(msg)
if (msg=="dump") then
PowaAuras:Dump();
PowaAuras:Message("State dumped to"); -- OK
PowaAuras:Message("WTF \\ Account \\ <ACCOUNT> \\ "..GetRealmName().." \\ "..UnitName("player").." \\ SavedVariables \\ PowerAuras.lua"); -- OK
PowaAuras:Message("You must log-out to save the values to disk (at end of fight/raid is fine)"); -- OK
else
PowaAuras:MainOptionShow();
end
end
 
------------------------------------
-- Enable/Disable Options Functions
------------------------------------
 
function PowaAuras:DisableSlider(slider)
getglobal(slider):EnableMouse(false);
getglobal(slider.."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
getglobal(slider.."Low"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
getglobal(slider.."High"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
end
 
function PowaAuras:EnableSlider(slider)
getglobal(slider):EnableMouse(true);
getglobal(slider.."Text"):SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
getglobal(slider.."Low"):SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
getglobal(slider.."High"):SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
end
 
function PowaAuras:DisableTextfield(textfield)
getglobal(textfield):Hide();
getglobal(textfield.."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
end
 
function PowaAuras:EnableTextfield(textfield)
getglobal(textfield):Show();
getglobal(textfield.."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
end
 
function PowaAuras:DisableCheckBox(checkBox)
getglobal(checkBox):Disable();
getglobal(checkBox.."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
end
 
function PowaAuras:EnableCheckBox(checkBox, checked)
getglobal(checkBox):Enable();
getglobal(checkBox.."Text"):SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
end
trunk/PowerAuras/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml New file
0,0 → 1,4
<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/
..\FrameXML\UI.xsd">
<Script file="CallbackHandler-1.0.lua"/>
</Ui>
\ No newline at end of file
trunk/PowerAuras/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua New file
0,0 → 1,239
--[[ $Id: CallbackHandler-1.0.lua 60697 2008-02-09 16:51:20Z nevcairiel $ ]]
local MAJOR, MINOR = "CallbackHandler-1.0", 3
local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
 
if not CallbackHandler then return end -- No upgrade needed
 
local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
 
local type = type
local pcall = pcall
local pairs = pairs
local assert = assert
local concat = table.concat
local loadstring = loadstring
local next = next
local select = select
local type = type
local xpcall = xpcall
 
local function errorhandler(err)
return geterrorhandler()(err)
end
 
local function CreateDispatcher(argCount)
local code = [[
local next, xpcall, eh = ...
 
local method, ARGS
local function call() method(ARGS) end
 
local function dispatch(handlers, ...)
local index
index, method = next(handlers)
if not method then return end
local OLD_ARGS = ARGS
ARGS = ...
repeat
xpcall(call, eh)
index, method = next(handlers, index)
until not method
ARGS = OLD_ARGS
end
 
return dispatch
]]
 
local ARGS, OLD_ARGS = {}, {}
for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
end
 
local Dispatchers = setmetatable({}, {__index=function(self, argCount)
local dispatcher = CreateDispatcher(argCount)
rawset(self, argCount, dispatcher)
return dispatcher
end})
 
--------------------------------------------------------------------------
-- CallbackHandler:New
--
-- target - target object to embed public APIs in
-- RegisterName - name of the callback registration API, default "RegisterCallback"
-- UnregisterName - name of the callback unregistration API, default "UnregisterCallback"
-- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
 
function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
-- TODO: Remove this after beta has gone out
assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
 
RegisterName = RegisterName or "RegisterCallback"
UnregisterName = UnregisterName or "UnregisterCallback"
if UnregisterAllName==nil then -- false is used to indicate "don't want this method"
UnregisterAllName = "UnregisterAllCallbacks"
end
 
-- we declare all objects and exported APIs inside this closure to quickly gain access
-- to e.g. function names, the "target" parameter, etc
 
 
-- Create the registry object
local events = setmetatable({}, meta)
local registry = { recurse=0, events=events }
 
-- registry:Fire() - fires the given event/message into the registry
function registry:Fire(eventname, ...)
if not rawget(events, eventname) or not next(events[eventname]) then return end
local oldrecurse = registry.recurse
registry.recurse = oldrecurse + 1
 
Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
 
registry.recurse = oldrecurse
 
if registry.insertQueue and oldrecurse==0 then
-- Something in one of our callbacks wanted to register more callbacks; they got queued
for eventname,callbacks in pairs(registry.insertQueue) do
local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
for self,func in pairs(callbacks) do
events[eventname][self] = func
-- fire OnUsed callback?
if first and registry.OnUsed then
registry.OnUsed(registry, target, eventname)
first = nil
end
end
end
registry.insertQueue = nil
end
end
 
-- Registration of a callback, handles:
-- self["method"], leads to self["method"](self, ...)
-- self with function ref, leads to functionref(...)
-- "addonId" (instead of self) with function ref, leads to functionref(...)
-- all with an optional arg, which, if present, gets passed as first argument (after self if present)
target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
if type(eventname) ~= "string" then
error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
end
 
method = method or eventname
 
local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
 
if type(method) ~= "string" and type(method) ~= "function" then
error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
end
 
local regfunc
 
if type(method) == "string" then
-- self["method"] calling style
if type(self) ~= "table" then
error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
elseif self==target then
error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
elseif type(self[method]) ~= "function" then
error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
end
 
if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
local arg=select(1,...)
regfunc = function(...) self[method](self,arg,...) end
else
regfunc = function(...) self[method](self,...) end
end
else
-- function ref with self=object or self="addonId"
if type(self)~="table" and type(self)~="string" then
error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
end
 
if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
local arg=select(1,...)
regfunc = function(...) method(arg,...) end
else
regfunc = method
end
end
 
 
if events[eventname][self] or registry.recurse<1 then
-- if registry.recurse<1 then
-- we're overwriting an existing entry, or not currently recursing. just set it.
events[eventname][self] = regfunc
-- fire OnUsed callback?
if registry.OnUsed and first then
registry.OnUsed(registry, target, eventname)
end
else
-- we're currently processing a callback in this registry, so delay the registration of this new entry!
-- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
registry.insertQueue = registry.insertQueue or setmetatable({},meta)
registry.insertQueue[eventname][self] = regfunc
end
end
 
-- Unregister a callback
target[UnregisterName] = function(self, eventname)
if not self or self==target then
error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
end
if type(eventname) ~= "string" then
error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
end
if rawget(events, eventname) and events[eventname][self] then
events[eventname][self] = nil
-- Fire OnUnused callback?
if registry.OnUnused and not next(events[eventname]) then
registry.OnUnused(registry, target, eventname)
end
end
if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
registry.insertQueue[eventname][self] = nil
end
end
 
-- OPTIONAL: Unregister all callbacks for given selfs/addonIds
if UnregisterAllName then
target[UnregisterAllName] = function(...)
if select("#",...)<1 then
error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
end
if select("#",...)==1 and ...==target then
error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
end
 
 
for i=1,select("#",...) do
local self = select(i,...)
if registry.insertQueue then
for eventname, callbacks in pairs(registry.insertQueue) do
if callbacks[self] then
callbacks[self] = nil
end
end
end
for eventname, callbacks in pairs(events) do
if callbacks[self] then
callbacks[self] = nil
-- Fire OnUnused callback?
if registry.OnUnused and not next(callbacks) then
registry.OnUnused(registry, target, eventname)
end
end
end
end
end
end
 
return registry
end
 
 
-- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
-- try to upgrade old implicit embeds since the system is selfcontained and
-- relies on closures to work.
 
trunk/PowerAuras/Libs/LibBanzai-2.0/LibStub/LibStub.lua New file
0,0 → 1,30
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
local LibStub = _G[LIBSTUB_MAJOR]
 
if not LibStub or LibStub.minor < LIBSTUB_MINOR then
LibStub = LibStub or {libs = {}, minors = {} }
_G[LIBSTUB_MAJOR] = LibStub
LibStub.minor = LIBSTUB_MINOR
 
function LibStub:NewLibrary(major, minor)
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
 
local oldminor = self.minors[major]
if oldminor and oldminor >= minor then return nil end
self.minors[major], self.libs[major] = minor, self.libs[major] or {}
return self.libs[major], oldminor
end
 
function LibStub:GetLibrary(major, silent)
if not self.libs[major] and not silent then
error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
end
return self.libs[major], self.minors[major]
end
 
function LibStub:IterateLibraries() return pairs(self.libs) end
setmetatable(LibStub, { __call = LibStub.GetLibrary })
end
trunk/PowerAuras/Libs/LibBanzai-2.0/lib.xml New file
0,0 → 1,5
<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/
..\FrameXML\UI.xsd">
<Script file="LibStub\LibStub.lua" />
<Script file="LibBanzai-2.0.lua" />
</Ui>
trunk/PowerAuras/Libs/LibBanzai-2.0/LibBanzai-2.0.lua New file
0,0 → 1,247
--[[
Name: LibBanzai-2.0
Revision: $Revision: 72249 $
Author(s): Rabbit (rabbit.magtheridon@gmail.com), maia
Documentation: http://www.wowace.com/index.php/Banzai-2.0_API_Documentation
SVN: http://svn.wowace.com/wowace/trunk/BanzaiLib/Banzai-2.0
Description: Aggro notification library.
Dependencies: LibStub
]]
 
-------------------------------------------------------------------------------
-- Locals
-------------------------------------------------------------------------------
 
local MAJOR_VERSION = "LibBanzai-2.0"
local MINOR_VERSION = "$Revision: 72249 $"
 
if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end
local lib = LibStub:NewLibrary(MAJOR_VERSION, MINOR_VERSION)
if not lib then return end
 
lib.callbacks = lib.callbacks or {}
local callbacks = lib.callbacks
lib.frame = lib.frame or CreateFrame("Frame")
local frame = lib.frame
 
local _G = _G
local table_insert = table.insert
local UnitExists = _G.UnitExists
local UnitName = _G.UnitName
local UnitCanAttack = _G.UnitCanAttack
local GetNumRaidMembers = _G.GetNumRaidMembers
local GetNumPartyMembers = _G.GetNumPartyMembers
local unpack = _G.unpack
local type = _G.type
local assert = _G.assert
 
-------------------------------------------------------------------------------
-- Local heap
-------------------------------------------------------------------------------
 
local new, del
do
local cache = setmetatable({},{__mode='k'})
function new()
local t = next(cache)
if t then
cache[t] = nil
return t
else
return {}
end
end
function del(t)
for k in pairs(t) do
t[k] = nil
end
cache[t] = true
return nil
end
end
 
-------------------------------------------------------------------------------
-- Roster
-------------------------------------------------------------------------------
 
local raidUnits = setmetatable({}, {__index =
function(self, key)
self[key] = ("raid%d"):format(key)
return self[key]
end
})
local raidPetUnits = setmetatable({}, {__index =
function(self, key)
self[key] = ("raidpet%d"):format(key)
return self[key]
end
})
local partyUnits = {"party1","party2","party3","party4"}
local partyPetUnits = {"partypet1","partypet2","partypet3","partypet4"}
local roster = {}
local needsUpdate = nil
 
-- If some pet has the same name as a person in the raid, they'll end up being
-- the same unit for the purposes of banzai, but we won't care right now.
local function addUnit(unit)
if not UnitExists(unit) then return end
local name = UnitName(unit)
if not roster[name] then roster[name] = new() end
table_insert(roster[name], unit)
end
 
local function actuallyUpdateRoster()
for k in pairs(roster) do roster[k] = del(roster[k]) end
addUnit("player")
addUnit("pet")
addUnit("focus")
for i = 1, GetNumRaidMembers() do
addUnit(raidUnits[i])
addUnit(raidPetUnits[i])
end
for i = 1, GetNumPartyMembers() do
addUnit(partyUnits[i])
addUnit(partyPetUnits[i])
end
needsUpdate = nil
end
 
local function updateRoster()
needsUpdate = true
end
 
-------------------------------------------------------------------------------
-- Banzai
-------------------------------------------------------------------------------
 
local targets = setmetatable({}, {__index =
function(self, key)
self[key] = key .. "target"
return self[key]
end
})
 
local aggro = {}
local banzai = {}
 
local total = 0
local function updateBanzai(_, elapsed)
total = total + elapsed
if total > 0.2 then
if needsUpdate then actuallyUpdateRoster() end
for name, units in pairs(roster) do
local unit = units[1]
local targetId = targets[unit]
if UnitExists(targetId) then
local ttId = targets[targetId]
if unit == "focus" and UnitIsEnemy("focus", "player") then
ttId = "focustarget"
targetId = "focus"
end
if UnitExists(ttId) and UnitCanAttack(ttId, targetId) then
for n, u in pairs(roster) do
if UnitIsUnit(u[1], ttId) then
banzai[n] = (banzai[n] or 0) + 10
break
end
end
end
end
if banzai[name] then
if banzai[name] >= 5 then banzai[name] = banzai[name] - 5 end
if banzai[name] > 25 then banzai[name] = 25 end
end
end
for name, units in pairs(roster) do
if banzai[name] and banzai[name] > 15 then
if not aggro[name] then
aggro[name] = true
for i, v in ipairs(callbacks) do
v(1, name, unpack(units))
end
end
elseif aggro[name] then
aggro[name] = nil
for i, v in ipairs(callbacks) do
v(0, name, unpack(units))
end
end
end
total = 0
end
end
 
-------------------------------------------------------------------------------
-- Starting and stopping
-------------------------------------------------------------------------------
 
local running = nil
local function start()
if running then return end
updateRoster()
frame:SetScript("OnUpdate", updateBanzai)
frame:SetScript("OnEvent", updateRoster)
frame:RegisterEvent("RAID_ROSTER_UPDATE")
frame:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame:RegisterEvent("UNIT_PET")
frame:RegisterEvent("PLAYER_FOCUS_CHANGED")
running = true
end
 
local function stop()
if not running then return end
frame:SetScript("OnUpdate", nil)
frame:SetScript("OnEvent", nil)
frame:UnregisterAllEvents()
running = nil
end
 
-------------------------------------------------------------------------------
-- API
-------------------------------------------------------------------------------
 
function lib:IsRunning() return running end
function lib:GetUnitAggroByUnitName(name) return aggro[name] end
function lib:GetUnitAggroByUnitId(unit)
if not UnitExists(unit) then return end
return aggro[UnitName(unit)]
end
 
function lib:RegisterCallback(func)
if type(func) ~= "function" then
error(("Bad argument to :RegisterCallback, function expected, got %q."):format(type(func)), 2)
end
 
table_insert(callbacks, func)
start()
end
 
function lib:UnregisterCallback(func)
if type(func) ~= "function" then
error(("Bad argument to :UnregisterCallback, function expected, got %q."):format(type(func)), 2)
end
 
local found = nil
for i, v in ipairs(callbacks) do
if v == func then
table.remove(callbacks, i)
found = true
break
end
end
if #callbacks == 0 then stop() end
 
if not found then
error("Bad argument to :UnregisterCallback, the provided function was not registered.", 2)
end
end
 
-------------------------------------------------------------------------------
-- Initialization
-------------------------------------------------------------------------------
 
frame:SetScript("OnUpdate", nil)
frame:SetScript("OnEvent", nil)
frame:UnregisterAllEvents()
if #callbacks > 0 then start() end
 
trunk/PowerAuras/Libs/LibBanzai-2.0/LibBanzai-2.0.toc New file
0,0 → 1,14
## Interface: 30200
## LoadOnDemand: 1
## Title: Lib: Banzai-2.0
## Notes: Aggro notification library.
## Author: Rabbit
## X-Website: http://www.wowace.com/wiki/BanzaiLib
## X-Email: rabbit.magtheridon@gmail.com
## X-Category: Library
## X-Credits: maia
## Version: 2.0
## X-AceLibrary-Banzai-2.0: true
 
lib.xml
 
trunk/PowerAuras/English_Manual.html New file
0,0 → 1,118
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>English Manual</title>
</head>
<body>
Manual:<br>
<br>
Copy the addon in your "yourWoWInstallFolder/Interface/AddOns/" Directory. <br>
Now it looks like this: "yourWoWInstallFolder/Interface/AddOns/PowerAuras".
<br>
Type "/powa" ingame to open the options window.<br>
<br>
<table border=1>
<tr>
<td>
<img src="Manual_Pics/Config1.jpg" />
</td>
<td>
1 = Turn the AddOn on or off.<br>
<br>
2 = Auras only for this char.<br>
<br>
3 = Auras for all your chars.<br>
<br>
4 = Auras on this page.<br>
<br>
5 = Create a new aura.<br>
<br>
6 = Move an aura to other page<br>
<br>
7 = Copy an aura to a page of your choice. Can be the same page.<br>
<br>
8 = Deletes the marked aura. This only works when you press the CTRL-Key and click on the button.<br>
<br>
9 = Opens the Effect Editor for the marked aura.
</td>
</tr>
<tr>
<td colspan="2">
Ok, let's create a new aura. Click on the "New" Button.<br>
The Effect Editor opens.
</td>
</tr>
<tr>
<td>
<img src="Manual_Pics/Editor1.jpg"/>
</td>
<td>
1 = Display of the texture you choosed.<br>
<br>
2 = Color options<br>
<br>
3 = The texture selector. "Glow" dark sections of the texture will become more transparent. <br>
When you want an aura with dark color deactivate "Glow". <br>
With "WoW Textures" u can choose from a selection of game graphics.<br>
With "Custom Auras" u can enter a filename for your own textures.<br>
These must be in "/AddOns/PowerAuras/Custom/" BEFORE u start the game. Example: "Flamme.tga"<br>
<br>
4 = The display options for the selected texture.<br>
<br>
5 = Position for the texture.<br>
You can enter exact positions in the textfield right.<br>
<br>
6 = The selection of the ingame event, that u want to trigger your aura.<br>
<br>
7 = The icon of the buff/debuff/action. This is saved when the aura has worked once.<br>
<br>
8 = The name of the buff/debuff/action. You can enter only a single word of the name or enter more names. See picture.<br>
<br>
9 = The "object", which u want to check for the event. When u check nothing, the player is the "object".<br>
<br>
10 = Displayoptions for the aura activation.
</td>
</tr>
<tr>
<td colspan="2">
Ok, you created a new aura. Have choosed a texture, color, display und position.<br>
Now u can selected an event that u want to check everytime. <br>
For Example we take the HoT(HealthoverTime) "Renew" from a priest that heals you.<br>
A HoT is a buff. We select "Buff" from the DropDown menu.<br>
Now type in the textfield below "Renew".<br>
Ok below that you have to check the "objects" that u want to ckeck for the event. <br>
We check nothing, because we have the buff not anybody else.<br>
And you can check that the aura is displayed then the event is on or off.<br>
Or only when you are infight or outfight.<br>
<br>
Now click on the "Animation" Tab. You see this:
</td>
<tr>
<td>
<img src="Manual_Pics/Editor3.jpg" />
</td>
<td>
<br>
1 = Beginning animation<br>
<br>
2 = End animation<br>
<br>
3 = Main animation<br>
<br>
4 = Second animation. This stack with the main animation.<br>
<br>
5 = Animation speed. You want a disco? Or some psychadelic lights?^^<br>
<br>
6 = Animation duration. Is it "None", the aura is shown all the time that the event is on.<br>
</td>
</tr>
<tr>
<td colspan="2">
So enough of these. Go, get some auras on! :).
</td>
</tr>
</table>
</body>
</html>
trunk/PowerAuras/PowerAurasAnimations.lua New file
0,0 → 1,544
cPowaAnimationBase = PowaClass(function(animation, aura, frame, base)
animation.State = 0;
animation.Aura = aura;
animation.Frame = frame;
animation.TargetWidth = frame.baseL;
animation.TargetHeight = frame.baseH;
animation.TargetAlpha = aura.alpha;
animation.Width = animation.TargetWidth;
animation.Height = animation.TargetHeight;
animation.Alpha = animation.TargetAlpha;
 
if (base) then
for k, v in pairs (base) do
local varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
animation[k] = base[k];
end
end
end
end);
 
 
function cPowaAnimationBase:InitialiseBase()
--PowaAuras:Message("Base:InitialiseBase aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.StartWidth = self.TargetWidth;
self.StartHeight = self.TargetHeight;
self.StartAlpha = self.TargetAlpha;
self:Reset();
end
function cPowaAnimationBase:Initialise()
--PowaAuras:Message("Base:Initialise aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self:InitialiseBase();
end
 
function cPowaAnimationBase:ResetBase()
--PowaAuras:Message("Base:ResetBase aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.State = 0;
self.Width = self.StartWidth;
self.Height = self.StartHeight;
self.Alpha = self.StartAlpha;
self:UpdateFrame();
end
 
function cPowaAnimationBase:Reset()
--PowaAuras:Message("Base:Reset aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self:ResetBase();
end
 
function cPowaAnimationBase:UpdateFrameBase()
--PowaAuras:Message("Base:UpdateFrameBase aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.Frame:SetWidth(self.Width);
self.Frame:SetHeight(self.Height);
self.Frame:SetAlpha(self.Alpha);
end
 
function cPowaAnimationBase:UpdateFrame()
--PowaAuras:Message("Base:UpdateFrame aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self:UpdateFrameBase();
end
 
function cPowaAnimationBase:Update(elapsed)
PowaAuras:UnitTestInfo("Base Update ", elapsed);
return true;
end
 
cPowaAnimationBaseTranslate = PowaClass(cPowaAnimationBase);
function cPowaAnimationBaseTranslate:UpdateFrame()
--PowaAuras:Message("BaseTranslate:UpdateFrame aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.Frame:SetPoint("Center", self.X, self.Y);
self:UpdateFrameBase();
end
function cPowaAnimationBaseTranslate:InitialiseBase()
--PowaAuras:Message("BaseTranslate:Initialise aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.StartWidth = self.TargetWidth;
self.StartHeight = self.TargetHeight;
self.TargetX = self.Aura.x;
self.TargetY = self.Aura.y;
self.X = self.TargetX + self.OffsetX;
self.Y = self.TargetY + self.OffsetY;
self.StartAlpha = 0.0;
--PowaAuras:Message("BaseTranslate:Initialise X="..tostring(self.X).." Y="..tostring(self.Y));
self:ResetBase();
end
function cPowaAnimationBaseTranslate:Initialise()
self:InitialiseBase();
end
 
--- Begin Animations ---
cPowaAnimationBeginZoomIn = PowaClass(cPowaAnimationBase);
function cPowaAnimationBeginZoomIn:Initialise()
self.StartWidth = self.TargetWidth * 1.5;
self.StartHeight = self.TargetHeight * 1.5;
self.StartAlpha = 0.0;
self:ResetBase();
end
function cPowaAnimationBeginZoomIn:Update(elapsed)
PowaAuras:UnitTestInfo("BeginZoomIn Update ", elapsed);
 
local step = elapsed * 150 * self.Aura.speed;
 
self.Width = self.Width - (step * self.Aura.torsion);
self.Height = self.Height - (step * (2-self.Aura.torsion));
self.Alpha = self.TargetAlpha * (self.StartWidth - self.Width) / (self.StartWidth - self.TargetWidth);
 
local result = false;
if (self.Width <= self.TargetWidth) then
self.Width = self.TargetWidth;
self.Height = self.TargetHeight;
self.Alpha = self.TargetAlpha;
result = true;
end
self:UpdateFrame();
return result;
end
 
cPowaAnimationBeginZoomOut = PowaClass(cPowaAnimationBase);
function cPowaAnimationBeginZoomOut:Initialise()
--PowaAuras:Message("BeginZoomOut:Reset aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.StartWidth = self.TargetWidth * 0.5;
self.StartHeight = self.TargetHeight * 0.5;
self.StartAlpha = 0.0;
self:Reset();
end
function cPowaAnimationBeginZoomOut:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationBeginZoomOut Update ", elapsed);
 
local step = elapsed * 150 * self.Aura.speed;
 
self.Width = self.Width + (step * self.Aura.torsion);
self.Height = self.Height + (step * (2-self.Aura.torsion));
self.Alpha = self.TargetAlpha * (self.StartWidth - self.Width) / (self.StartWidth - self.TargetWidth);
 
local result = false;
if (self.Width >= self.TargetWidth) then
self.Width = self.TargetWidth;
self.Height = self.TargetHeight;
self.Alpha = self.TargetAlpha;
result = true;
end
self:UpdateFrame();
return result;
end
 
cPowaAnimationBeginFadeIn = PowaClass(cPowaAnimationBase);
function cPowaAnimationBeginFadeIn:Initialise()
--PowaAuras:Message("BeginFadeIn:Initialise aura="..tostring(self.Aura).." frame="..tostring(self.Frame));
self.StartWidth = self.TargetWidth;
self.StartHeight = self.TargetHeight;
self.StartAlpha = 0.0;
self:Reset();
end
function cPowaAnimationBeginFadeIn:Update(elapsed)
--PowaAuras:Message("BeginFadeIn Update ", elapsed);
 
self.Alpha = self.Alpha + elapsed * 2 * self.Aura.speed * self.TargetAlpha;
local result = false;
if (self.Alpha >= self.TargetAlpha) then
self.Alpha = self.TargetAlpha;
result = true;
end
self:UpdateFrame();
return result;
end
 
cPowaAnimationBeginTranslate = PowaClass(cPowaAnimationBaseTranslate);
function cPowaAnimationBeginTranslate:Update(elapsed)
--PowaAuras:Message("BeginTranslate Update ", elapsed);
 
self.Alpha = math.max(self.TargetAlpha + elapsed * self.TranslationSpeed * self.Aura.speed * self.TargetAlpha, self.TargetAlpha);
 
local step = elapsed * self.TranslationSpeed * 100 * self.Aura.speed;
 
--PowaAuras:Message("step ", step);
--PowaAuras:Message("X=", self.X, " Y=", self.Y);
 
self.X = self.X + self.DirectionX * step;
self.Y = self.Y + self.DirectionY * step;
--PowaAuras:Message("X=", self.X, " Y=", self.Y);
--PowaAuras:Message("TargetX=", self.TargetX, " TargetY=", self.TargetY);
--PowaAuras:Message("dX=", self.DirectionX * (self.X - self.TargetX), " dY=", self.DirectionY * (self.Y - self.TargetY));
 
local result = false;
if (((self.DirectionX * (self.X - self.TargetX)) >= 0) and (self.DirectionY * (self.Y - self.TargetY) >= 0)) then
--PowaAuras:Message("Finished");
self.X = self.TargetX;
self.Y = self.TargetY;
self.Alpha = self.TargetAlpha;
result = true;
end
 
self:UpdateFrame();
return result;
end
 
cPowaAnimationBeginTranslateLeft = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=-100, OffsetY=0, DirectionX=1, DirectionY=0, TranslationSpeed = 2.0});
cPowaAnimationBeginTranslateTopLeft = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=-75 , OffsetY=75, DirectionX=1, DirectionY=-1, TranslationSpeed = 1.5});
cPowaAnimationBeginTranslateTop = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=0, OffsetY=100, DirectionX=0, DirectionY=-1, TranslationSpeed = 2.0});
cPowaAnimationBeginTranslateTopRight = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=75, OffsetY=75, DirectionX=-1, DirectionY=-1, TranslationSpeed = 1.5});
cPowaAnimationBeginTranslateRight = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=100, OffsetY=0, DirectionX=-1, DirectionY=0, TranslationSpeed = 2.0});
cPowaAnimationBeginTranslateBottomRight = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=75, OffsetY=-75, DirectionX=-1, DirectionY=1, TranslationSpeed = 1.5});
cPowaAnimationBeginTranslateBottom = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=0, OffsetY=-100, DirectionX=0, DirectionY=1, TranslationSpeed = 2.0});
cPowaAnimationBeginTranslateBottomLeft = PowaClass(cPowaAnimationBeginTranslate, {OffsetX=-75, OffsetY=-75, DirectionX=1, DirectionY=1, TranslationSpeed = 1.5});
 
 
cPowaAnimationBeginBounce = PowaClass(cPowaAnimationBaseTranslate, {OffsetX=0, OffsetY=100, MinVelocity=100, Acceleration=1000});
function cPowaAnimationBeginBounce:Initialise()
self.Velocity = 0;
self.Acceleration = self.Acceleration * self.Aura.speed;
self:InitialiseBase();
end
function cPowaAnimationBeginBounce:Update(elapsed)
PowaAuras:UnitTestInfo("BeginBounce Update ", elapsed);
 
self.Alpha = math.max(self.TargetAlpha + elapsed * 2 * self.Aura.speed * self.TargetAlpha , self.TargetAlpha);
 
self.Velocity = self.Velocity + self.Acceleration * elapsed;
 
self.Y = self.Y - elapsed * (self.Velocity + self.Acceleration * elapsed / 2);
 
local result = false;
if (self.Y <= self.TargetY and self.Velocity>0) then
self.Y = self.TargetY;
self.Alpha = self.TargetAlpha;
if (self.Velocity <= self.MinVelocity) then
result = true;
else
self.Velocity = -self.Velocity * 0.9;
end
end
 
self:UpdateFrame();
return result;
end
 
--- End Animations ---
cPowaAnimationEnd = PowaClass(cPowaAnimationBase);
function cPowaAnimationEnd:Initialise()
self.StartWidth = self.Frame:GetWidth();
self.StartHeight = self.Frame:GetHeight();
self.StartAlpha = self.Frame:GetAlpha();
self:Reset();
end
 
cPowaAnimationEndResizeAndFade = PowaClass(cPowaAnimationEnd);
function cPowaAnimationEndResizeAndFade:Update(elapsed)
self.Alpha = self.Alpha - (elapsed * 2);
 
if (self.Alpha <= 0) then
return true;
end
 
local sizeStep = self.Direction * elapsed * 200;
self.Width = math.max(0, self.Width + sizeStep);
self.Height = math.max(0, self.Height + sizeStep);
self:UpdateFrame();
return false;
end
 
cPowaAnimationEndGrowAndFade = PowaClass(cPowaAnimationEndResizeAndFade, {Direction = -1});
cPowaAnimationEndShrinkAndFade = PowaClass(cPowaAnimationEndResizeAndFade, {Direction = 1});
 
cPowaAnimationEndFade = PowaClass(cPowaAnimationEnd);
function cPowaAnimationEndFade:Update(elapsed)
self.Alpha = self.Alpha - (elapsed * 2);
 
if (self.Alpha <= 0) then
return true;
end
 
self:UpdateFrame();
return false;
end
 
--- Main Animations ---
cPowaAnimationFlashing = PowaClass(cPowaAnimationBase);
function cPowaAnimationFlashing:Initialise()
self.Direction = -1;
self.MinAlpha = self.TargetAlpha * 0.5 * self.Aura.speed;
self.Alpha = self.Frame:GetAlpha();
end
function cPowaAnimationFlashing:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationFlashing Update ", elapsed);
 
self.Alpha = self.Alpha + self.Direction * elapsed / 2;
if (self.Alpha<=self.MinAlpha) then
self.Alpha = self.MinAlpha;
self.Direction = 1;
elseif (self.Alpha>=self.TargetAlpha) then
self.Alpha = self.TargetAlpha;
self.Direction = -1;
end
self:UpdateFrame();
end
 
cPowaAnimationGrowing = PowaClass(cPowaAnimationBase);
function cPowaAnimationGrowing:Initialise()
self.MinWidth = self.TargetWidth * 0.9;
self.MinHeight = self.TargetHeight * 0.9;
self.MaxWidth = self.TargetWidth * 1.2;
self.MaxHeight = self.TargetHeight * 1.2;
self.Width = self.Frame:GetWidth();
self.Height = self.Frame:GetHeight();
self.Alpha = self.Frame:GetAlpha();
end
function cPowaAnimationGrowing:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationGrowing Update ", elapsed);
 
local step = elapsed * 25 * self.Aura.speed * self.Aura.size;
self.Width = self.Width + step;
self.Height = self.Height + step;
if (self.Width >= self.MaxWidth) then
self.Width = self.MinWidth;
self.Height = self.MinHeight;
end
self.Alpha = self.TargetAlpha * (self.MaxWidth - self.Width) / (self.MaxWidth - self.MinWidth);
self:UpdateFrame();
end
 
cPowaAnimationPulse = PowaClass(cPowaAnimationBase);
function cPowaAnimationPulse:Initialise()
self.Direction = 1;
self.MinWidth = self.TargetWidth * 0.95;
self.MinHeight = self.TargetHeight * 0.95;
self.MaxWidth = self.TargetWidth * 1.05;
self.MaxHeight = self.TargetHeight * 1.05;
self.Width = self.Frame:GetWidth();
self.Height = self.Frame:GetHeight();
end
function cPowaAnimationPulse:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationPulse Update ", elapsed);
 
local step = self.Direction * elapsed * 50 * self.Aura.speed * self.Aura.size;
self.Width = self.Width + step * self.Aura.torsion;
self.Height = self.Height + step * (2-self.Aura.torsion);
if (self.Width >= self.MaxWidth) then
self.Width = self.MaxWidth;
self.Height = self.MaxHeight;
self.Direction = -1;
elseif (self.Width <= self.MinWidth) then
self.Width = self.MinWidth;
self.Height = self.MinHeight;
self.Direction = 1;
end
self:UpdateFrame();
end
 
cPowaAnimationBubble = PowaClass(cPowaAnimationBase);
function cPowaAnimationBubble:Initialise()
self.Direction = 1;
self.MinWidth = self.TargetWidth * 0.95;
self.MinHeight = self.TargetHeight * 0.95;
self.MaxWidth = self.TargetWidth * 1.05;
self.MaxHeight = self.TargetHeight * 1.05;
self.Width = self.Frame:GetWidth();
self.Height = self.Frame:GetHeight();
end
function cPowaAnimationBubble:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationBubble Update ", elapsed);
 
local step = self.Direction * elapsed * 50 * self.Aura.speed * self.Aura.size;
self.Width = self.Width + step * self.Aura.torsion;
self.Height = self.Height - step * (2-self.Aura.torsion);
if (self.Width >= self.MaxWidth) then
self.Width = self.MaxWidth;
self.Height = self.MinHeight;
self.Direction = -1;
elseif (self.Width <= self.MinWidth) then
self.Width = self.MinWidth;
self.Height = self.MaxHeight;
self.Direction = 1;
end
self:UpdateFrame();
end
 
--[[
cPowaAnimationWaterDrop = PowaClass(cPowaAnimationBase);
function cPowaAnimationWaterDrop:Initialise()
self.Width = self.Frame:GetWidth();
self.Height = self.Frame:GetHeight();
self.Alpha = self.Frame:GetAlpha();
end
function cPowaAnimationWaterDrop:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationWaterDrop Update ", elapsed);
 
if (self.Alpha>0) then
self.Alpha = math.max(self.Alpha - self.TargetAlpha * elapsed * 0.5 * self.Aura.speed, 0);
local newWidth = self.Width + self.Aura.size * elapsed * 100 * self.Aura.speed;
if (newWidth * 1.5 > self.Width) then
self.Width = newWidth;
self.Height = self.Height + self.Aura.size * elapsed * 100 * self.Aura.speed;
end
else
self.Alpha = self.TargetAlpha;
self.Width = self.TargetWidth * 0.85;
self.Height = self.TargetHeight * 0.85;
local deltaX = (random(0,20) - 10) * self.Aura.speed;;
local deltaY = (random(0,20) - 10) * self.Aura.speed;;
frame:SetPoint("Center",self.Aura.x + deltaX, self.Aura.y + deltaY);
end
self:UpdateFrame();
 
 
if (frame:GetAlpha() > 0) then
self.curScale.a = frame:GetAlpha() - (elapsed * aura.alpha * 0.5 * aura.speed);
if (self.curScale.a < 0) then frame:SetAlpha(0.0);
else frame:SetAlpha(self.curScale.a); end
self.maxScale.w = frame:GetWidth() + (elapsed * 100 * aura.speed * aura.size);
self.maxScale.h = frame:GetHeight() + (elapsed * 100 * aura.speed * aura.size);
if ( (self.maxScale.w * 1.5) > frame:GetWidth()) then --- evite les lags
frame:SetWidth(self.maxScale.w)
frame:SetHeight(self.maxScale.h)
end
else
self.maxScale.w = (random(0,20) - 10) * aura.speed;
self.maxScale.h = (random(0,20) - 10) * aura.speed;
frame:SetAlpha(aura.alpha);
frame:SetWidth(self.curScale.w * 0.85);
frame:SetHeight(self.curScale.h * 0.85);
frame:SetPoint("Center",aura.x + self.maxScale.w, aura.y + self.maxScale.h);
end
]]
 
cPowaAnimationElectric = PowaClass(cPowaAnimationBaseTranslate, {OffsetX=0, OffsetY=0});
function cPowaAnimationElectric:Initialise()
self.Alpha = self.Frame:GetAlpha();
self.Width = self.Frame:GetWidth();
self.Height = self.Frame:GetHeight();
self.X = self.TargetX;
self.Y = self.TargetY;
end
function cPowaAnimationElectric:Update(elapsed)
PowaAuras:UnitTestInfo("cPowaAnimationElectric Update ", elapsed);
 
if (self.Status ~=1) then
if (random( 210-(self.Aura.speed*100) ) == 1) then
self.X = self.TargetX + random(0,10) - 5;
self.Y = self.TargetY + random(0,10) - 5;
self.Alpha = self.TargetAlpha;
self.Status = 1;
else
self.Alpha = self.TargetAlpha / 2;
end
else
self.X = self.TargetX;
self.Y = self.TargetY;
self.Status = 0;
end
 
self:UpdateFrame();
end
 
-- Concrete Animation Classes
PowaAuras.AnimationMainClasses = {
[PowaAuras.AnimationTypes.Static] = cPowaAnimationBase,
[PowaAuras.AnimationTypes.Flashing] = cPowaAnimationFlashing,
[PowaAuras.AnimationTypes.Growing] = cPowaAnimationGrowing,
[PowaAuras.AnimationTypes.Pulse] = cPowaAnimationPulse,
[PowaAuras.AnimationTypes.Bubble] = cPowaAnimationBubble,
[PowaAuras.AnimationTypes.WaterDrop] = cPowaAnimationWaterDrop,
[PowaAuras.AnimationTypes.Electric] = cPowaAnimationElectric,
[PowaAuras.AnimationTypes.Shrinking] = cPowaAnimationShrinking,
[PowaAuras.AnimationTypes.Flame] = cPowaAnimationFlame,
[PowaAuras.AnimationTypes.Orbit] = cPowaAnimationOrbit,
}
 
 
-- Concrete Animation Begin Classes
PowaAuras.AnimationBeginClasses = {
[PowaAuras.AnimationBeginTypes.None] = cPowaAnimationBase,
[PowaAuras.AnimationBeginTypes.ZoomIn] = cPowaAnimationBeginZoomIn,
[PowaAuras.AnimationBeginTypes.ZoomOut] = cPowaAnimationBeginZoomOut,
[PowaAuras.AnimationBeginTypes.FadeIn] = cPowaAnimationBeginFadeIn,
[PowaAuras.AnimationBeginTypes.TranslateLeft] = cPowaAnimationBeginTranslateLeft,
[PowaAuras.AnimationBeginTypes.TranslateTopLeft] = cPowaAnimationBeginTranslateTopLeft,
[PowaAuras.AnimationBeginTypes.TranslateTop] = cPowaAnimationBeginTranslateTop,
[PowaAuras.AnimationBeginTypes.TranslateTopRight] = cPowaAnimationBeginTranslateTopRight,
[PowaAuras.AnimationBeginTypes.TranslateRight] = cPowaAnimationBeginTranslateRight,
[PowaAuras.AnimationBeginTypes.TranslateBottomRight] = cPowaAnimationBeginTranslateBottomRight,
[PowaAuras.AnimationBeginTypes.TranslateBottom] = cPowaAnimationBeginTranslateBottom,
[PowaAuras.AnimationBeginTypes.TranslateBottomLeft] = cPowaAnimationBeginTranslateBottomLeft,
[PowaAuras.AnimationBeginTypes.Bounce] = cPowaAnimationBeginBounce,
}
 
function PowaAuras:AnimationBeginFactory(animationType, aura, frame, base)
--self:Message("AnimationBeginFactory "..tostring(animationType).." aura.id="..tostring(aura.id).." frame="..tostring(frame));
if (not base) then
base = {};
end
base.IsBegin = true;
return self:AnimationFactory(animationType, self.AnimationBeginClasses, aura, frame, base)
end
 
-- Concrete Animation End Classes
PowaAuras.AnimationEndClasses = {
[PowaAuras.AnimationEndTypes.None]=cPowaAnimationEnd,
[PowaAuras.AnimationEndTypes.GrowAndFade]=cPowaAnimationEndGrowAndFade,
[PowaAuras.AnimationEndTypes.ShrinkAndFade]=cPowaAnimationEndShrinkAndFade,
[PowaAuras.AnimationEndTypes.Fade]=cPowaAnimationEndFade,
}
 
function PowaAuras:AnimationEndFactory(animationType, aura, frame, base)
--self:Message("AnimationEndFactory type="..tostring(animationType).." aura.id="..tostring(aura.id).." frame="..tostring(frame));
if (aura.isSecondary) then
return nil;
end
if (not base) then
base = {};
end
base.IsEnd = true;
return self:AnimationFactory(animationType, self.AnimationEndClasses, aura, frame, base)
end
 
function PowaAuras:AnimationMainFactory(animationType, aura, frame, base)
--self:Message("AnimationMainFactory type="..tostring(animationType).." aura.id="..tostring(aura.id).." frame="..tostring(frame));
if (animationType==PowaAuras.AnimationTypes.Invisible) then
return nil;
end
return self:AnimationFactory(animationType, self.AnimationMainClasses, aura, frame, base)
end
 
-- Instance concrete class based on type
function PowaAuras:AnimationFactory(animationType, classList, aura, frame, base)
if (not frame) then
return nil;
end
local class = classList[animationType];
if (class==nil) then
--class = cPowaAnimationBase;
end
if (class) then
--self:Message("AnimationFactory type="..tostring(animationType).." aura.id="..tostring(aura.id).." class="..tostring(class).." frame="..tostring(frame));
if (base == nil) then
base = {};
end
base.AnimationType = animationType;
local animation = class(aura, frame, base);
if (animation) then
animation:Initialise();
end
return animation;
end
--self:Message("AnimationFactory Unknown "..tostring(animationType).." auraId="..tostring(aura.id)); --OK
return nil;
end
trunk/PowerAuras/Timers2.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/PowerAurasBase.lua New file
0,0 → 1,637
PowaAuras = {
Version = "v2.6.2Q";
 
CurrentAuraId = 1;
MaxAuras = 360;
ChecksTimer = 0;
NextCheck = 0.2;
Tstep = 0.09765625;
DebugTimer = 0;
NextDebugCheck = 0;
 
Initialising = true;
ModTest = false; --- on test les effets
 
minScale = {a=0, w=0, h=0};
maxScale = {a=0, w=0, h=0};
curScale = {a=0, w=0, h=0};
 
DoResetAoe = false;
ResetTargetTimers = false;
 
ActiveTalentGroup = GetActiveTalentGroup();
 
WeAreInCombat = false;
WeAreInRaid = false;
WeAreMounted = false;
WeAreInVehicle = false;
WeAreAlive = true;
 
AoeAuraAdded = "";
AoeAuraFaded = "";
 
UsablePending = {}; --- Driizt workaround for 'silent' cooldown end (no event fired)
 
PowaStance = {[0] = "Humanoid"};
 
allowedOperators = {
["="] = true,
[">"] = true,
["<"] = true,
["!"] = true,
[">="] = true,
["<="] = true,
["-"] = true,
};
 
DefaultOperator = ">=";
 
MainOptionPage = 1;
CurrentAuraPage = 1;
 
maxtextures = 50;
 
MoveEffect = 0; -- 1 = copie / 2 = move
 
Auras = {};
SecondaryAuras = {};
Frames = {};
SecondaryFrames = {};
Textures = {};
SecondaryTextures = {};
TimerFrame = {};
StacksFrame = {};
 
Sound = {};
BeginAnimDisplay = {};
EndAnimDisplay = {};
Text = {};
Anim = {};
 
DebuffCatSpells = {};
 
--- These will be saved out to SavedVariables
Misc =
{
disabled = false,
debug = false,
};
 
playerclass = "unknown",
 
Events =
{
"PLAYER_ENTERING_WORLD",
"PLAYER_TARGET_CHANGED",
"PLAYER_FOCUS_CHANGED",
"PLAYER_REGEN_DISABLED",
"PLAYER_REGEN_ENABLED",
"PLAYER_DEAD",
"PLAYER_ALIVE",
"PLAYER_UNGHOST",
"PLAYER_UPDATE_RESTING",
"UNIT_HEALTH",
"UNIT_MAXHEALTH",
"UNIT_MANA",
"UNIT_MAXMANA",
"UNIT_RAGE",
"UNIT_ENERGY",
"UNIT_MAXENERGY",
"UNIT_COMBO_POINTS",
"UNIT_RUNIC_POWER",
"UNIT_MAXRUNIC_POWER",
"UNIT_AURA",
"UNIT_AURASTATE",
"UNIT_FACTION",
"UNIT_ENTERED_VEHICLE",
"UNIT_EXITED_VEHICLE",
"UNIT_SPELLCAST_START",
"UNIT_SPELLCAST_STOP",
"UNIT_SPELLCAST_FAILED",
"UNIT_SPELLCAST_INTERRUPTED",
"UNIT_SPELLCAST_DELAYED",
"UNIT_SPELLCAST_CHANNEL_START",
"UNIT_SPELLCAST_CHANNEL_UPDATE",
"UNIT_SPELLCAST_CHANNEL_STOP",
"UNIT_SPELLCAST_SUCCEEDED",
"PARTY_MEMBERS_CHANGED",
"RAID_ROSTER_UPDATE",
"COMBAT_LOG_EVENT_UNFILTERED",
"UPDATE_SHAPESHIFT_FORM",
"ACTIONBAR_UPDATE_USABLE",
"ACTIONBAR_UPDATE_COOLDOWN",
"ACTIONBAR_SLOT_CHANGED",
"UPDATE_SHAPESHIFT_FORMS";
"VARIABLES_LOADED",
"PLAYER_TALENT_UPDATE",
"PLAYER_UPDATE_RESTING",
"SPELL_UPDATE_COOLDOWN",
"SPELL_UPDATE_USABLE",
};
 
DoCheck =
{
Buffs = false,
TargetBuffs = false,
PartyBuffs = false,
RaidBuffs = false,
GroupOrSelfBuffs = false,
UnitBuffs = false,
FocusBuffs = false,
 
Health = false,
TargetHealth = false,
PartyHealth = false,
RaidHealth = false,
FocusHealth = false,
NamedUnitHealth = false,
 
Mana = false,
TargetMana = false,
PartyMana = false,
RaidMana = false,
FocusMana = false,
NamedUnitMana = false,
 
RageEnergy = false,
TargetRageEnergy = false,
PartyRageEnergy = false,
RaidRageEnergy = false,
FocusRageEnergy = false,
UnitRageEnergy = false,
 
Others = false,
Combo = false,
Aoe = false,
 
Stance = false,
Actions = false,
Enchants = false,
 
All = false,
 
PvP = false,
PartyPvP = false,
RaidPvP = false,
TargetPvP = false,
 
Aggro = false,
PartyAggro = false,
RaidAggro = false,
 
Spells = false,
TargetSpells = false,
FocusSpells = false,
 
OwnSpell = false,
};
 
BuffTypes =
{
Buff=1,
Debuff=2,
TypeDebuff=3,
AoE=4,
Enchant=5,
Combo=6,
ActionReady=7,
Health=8,
Mana=9,
EnergyRagePower=10,
Aggro=11,
PvP=12,
SpellAlert=13,
Stance=14,
OwnSpell=15,
};
 
AnimationBeginTypes =
{
None=0,
ZoomIn=1,
ZoomOut=2,
FadeIn=3,
TranslateLeft=4,
TranslateTopLeft=5,
TranslateTop=6,
TranslateTopRight=7,
TranslateRight=8,
TranslateBottomRight=9,
TranslateBottom=10,
TranslateBottomLeft=11,
Bounce=12,
};
 
AnimationEndTypes =
{
None=0,
GrowAndFade=1,
ShrinkAndFade=2,
Fade=3,
};
 
AnimationTypes =
{
Invisible=0,
Static=1,
Flashing=2,
Growing=3,
Pulse=4,
Bubble=5,
WaterDrop=6,
Electric=7,
Shrinking=8,
Flame=9,
Orbit=10,
};
 
 
AurasByType =
{
Buffs = {},
TargetBuffs = {},
PartyBuffs = {},
RaidBuffs = {},
GroupOrSelfBuffs = {},
UnitBuffs = {},
FocusBuffs = {},
 
Health = {},
TargetHealth = {},
FocusHealth = {},
PartyHealth = {},
RaidHealth = {},
NamedUnitHealth = {},
 
Mana = {},
TargetMana = {},
FocusMana = {},
PartyMana = {},
RaidMana = {},
NamedUnitMana = {},
 
RageEnergy = {},
TargetRageEnergy = {},
PartyRageEnergy = {},
RaidRageEnergy = {},
FocusRageEnergy = {},
UnitRageEnergy = {},
 
Combo = {},
Aoe = {},
 
Stance = {},
Actions = {},
Enchants = {},
 
PvP = {},
PartyPvP = {},
RaidPvP = {},
TargetPvP = {},
 
Aggro = {},
PartyAggro = {},
RaidAggro = {},
 
Spells = {},
TargetSpells = {},
FocusSpells = {},
 
OwnSpell = {},
};
 
DebuffCatType =
{
CC = 1,
Silence = 2,
Snare = 3,
Root = 4,
Disarm = 5,
Stun = 6,
PvE = 10,
},
 
WowTextures = {
 
-- auras types
[1] = "Spells\\AuraRune_B",
[2] = "Spells\\AuraRune256b",
[3] = "Spells\\Circle",
[4] = "Spells\\GENERICGLOW2B",
[5] = "Spells\\GenericGlow2b1",
[6] = "Spells\\ShockRingCrescent256",
[7] = "SPELLS\\AuraRune1",
[8] = "SPELLS\\AuraRune5Green",
[9] = "SPELLS\\AuraRune7",
[10] = "SPELLS\\AuraRune8",
[11] = "SPELLS\\AuraRune9",
[12] = "SPELLS\\AuraRune11",
[13] = "SPELLS\\AuraRune_A",
[14] = "SPELLS\\AuraRune_C",
[15] = "SPELLS\\AuraRune_D",
[16] = "SPELLS\\Holy_Rune1",
[17] = "SPELLS\\Rune1d_GLOWless",
[18] = "SPELLS\\Rune4blue",
[19] = "SPELLS\\RuneBC1",
[20] = "SPELLS\\RuneBC2",
[21] = "SPELLS\\RUNEFROST",
[22] = "Spells\\Holy_Rune_128",
[23] = "Spells\\Nature_Rune_128",
[24] = "SPELLS\\Death_Rune",
[25] = "SPELLS\\DemonRune6",
[26] = "SPELLS\\DemonRune7",
[27] = "Spells\\DemonRune5backup",
-- icones types
[28] = "Particles\\Intellect128_outline",
[29] = "Spells\\Intellect_128",
[30] = "SPELLS\\GHOST1",
[31] = "Spells\\Aspect_Beast",
[32] = "Spells\\Aspect_Hawk",
[33] = "Spells\\Aspect_Wolf",
[34] = "Spells\\Aspect_Snake",
[35] = "Spells\\Aspect_Cheetah",
[36] = "Spells\\Aspect_Monkey",
[37] = "Spells\\Blobs",
[38] = "Spells\\Blobs2",
[39] = "Spells\\GradientCrescent2",
[40] = "Spells\\InnerFire_Rune_128",
[41] = "Spells\\RapidFire_Rune_128",
[42] = "Spells\\Protect_128",
[43] = "Spells\\Reticle_128",
[44] = "Spells\\Star2A",
[45] = "Spells\\Star4",
[46] = "Spells\\Strength_128",
[47] = "Particles\\STUNWHIRL",
[48] = "SPELLS\\BloodSplash1",
[49] = "SPELLS\\DarkSummon",
[50] = "SPELLS\\EndlessRage",
[51] = "SPELLS\\Rampage",
[52] = "SPELLS\\Eye",
[53] = "SPELLS\\Eyes",
[54] = "SPELLS\\Zap1b",
};
 
Fonts = {
--- wow fonts
[1] = STANDARD_TEXT_FONT, --- "Fonts\\FRIZQT__.TTF"
[2] = "Fonts\\ARIALN.TTF",
[3] = "Fonts\\skurri.ttf",
[4] = "Fonts\\MORPHEUS.ttf",
--- external fonts (free use or gpl'd, author in font file)
[5] = "Interface\\Addons\\PowerAuras\\Fonts\\All_Star_Resort.ttf",
[6] = "Interface\\Addons\\PowerAuras\\Fonts\\Army.ttf",
[7] = "Interface\\Addons\\PowerAuras\\Fonts\\Army_Condensed.ttf",
[8] = "Interface\\Addons\\PowerAuras\\Fonts\\Army_Expanded.ttf",
[9] = "Interface\\Addons\\PowerAuras\\Fonts\\Blazed.ttf",
[10] = "Interface\\Addons\\PowerAuras\\Fonts\\Blox2.ttf",
[11] = "Interface\\Addons\\PowerAuras\\Fonts\\CloisterBlack.ttf",
[12] = "Interface\\Addons\\PowerAuras\\Fonts\\Moonstar.ttf",
[13] = "Interface\\Addons\\PowerAuras\\Fonts\\Neon.ttf",
[14] = "Interface\\Addons\\PowerAuras\\Fonts\\Pulse_virgin.ttf",
[15] = "Interface\\Addons\\PowerAuras\\Fonts\\Punk_s_not_dead.ttf",
[16] = "Interface\\Addons\\PowerAuras\\Fonts\\whoa!.ttf",
[17] = "Interface\\Addons\\PowerAuras\\Fonts\\Hexagon.ttf",
[18] = "Interface\\Addons\\PowerAuras\\Fonts\\Starcraft_Normal.ttf",
};
 
-- Colors used in messages
--------------------------
Colors = {
["Blue"] = "|cff6666ff",
["Grey"] = "|cff999999",
["Green"] = "|cff66cc33",
["Red"] = "|cffff2020",
["Yellow"] = "|cffffff40",
["BGrey"] = "|c00D0D0D0",
["White"] = "|c00FFFFFF",
["Orange"] = "|cffff9930",
};
}
 
PowaAuras.DebuffTypeSpellIds={
-- Death Knight
[47481] = PowaAuras.DebuffCatType.Stun, -- Gnaw (Ghoul)
[51209] = PowaAuras.DebuffCatType.CC, -- Hungering Cold
[47476] = PowaAuras.DebuffCatType.Silence, -- Strangulate
[45524] = PowaAuras.DebuffCatType.Snare, -- Chains of Ice
[55666] = PowaAuras.DebuffCatType.Snare, -- Desecration (no duration, lasts as long as you stand in it)
[58617] = PowaAuras.DebuffCatType.Snare, -- Glyph of Heart Strike
[50436] = PowaAuras.DebuffCatType.Snare, -- Icy Clutch (Chilblains)
-- Druid
[5211] = PowaAuras.DebuffCatType.Stun, -- Bash (also Shaman Spirit Wolf ability)
[33786] = PowaAuras.DebuffCatType.CC, -- Cyclone
[2637] = PowaAuras.DebuffCatType.CC, -- Hibernate (works against Druids in most forms and Shamans using Ghost Wolf)
[22570] = PowaAuras.DebuffCatType.Stun, -- Maim
[9005] = PowaAuras.DebuffCatType.Stun, -- Pounce
[339] = PowaAuras.DebuffCatType.Root, -- Entangling Roots
[19675] = PowaAuras.DebuffCatType.Root, -- Feral Charge Effect (immobilize with interrupt [spell lockout, not silence])
[58179] = PowaAuras.DebuffCatType.Snare, -- Infected Wounds
[61391] = PowaAuras.DebuffCatType.Snare, -- Typhoon
-- Hunter
[3355] = PowaAuras.DebuffCatType.CC, -- Freezing Trap Effect
[24394] = PowaAuras.DebuffCatType.Stun, -- Intimidation
[1513] = PowaAuras.DebuffCatType.CC, -- Scare Beast (works against Druids in most forms and Shamans using Ghost Wolf)
[19503] = PowaAuras.DebuffCatType.CC, -- Scatter Shot
[19386] = PowaAuras.DebuffCatType.CC, -- Wyvern Sting
[34490] = PowaAuras.DebuffCatType.Silence, -- Silencing Shot
[53359] = PowaAuras.DebuffCatType.Disarm, -- Chimera Shot - Scorpid
[19306] = PowaAuras.DebuffCatType.Root, -- Counterattack
[19185] = PowaAuras.DebuffCatType.Root, -- Entrapment
[35101] = PowaAuras.DebuffCatType.Snare, -- Concussive Barrage
[5116] = PowaAuras.DebuffCatType.Snare, -- Concussive Shot
[13810] = PowaAuras.DebuffCatType.Snare, -- Frost Trap Aura (no duration, lasts as long as you stand in it)
[61394] = PowaAuras.DebuffCatType.Snare, -- Glyph of Freezing Trap
[2974] = PowaAuras.DebuffCatType.Snare, -- Wing Clip
-- Hunter Pets
[50519] = PowaAuras.DebuffCatType.Stun, -- Sonic Blast (Bat)
[50541] = PowaAuras.DebuffCatType.Disarm, -- Snatch (Bird of Prey)
[54644] = PowaAuras.DebuffCatType.Snare, -- Froststorm Breath (Chimera)
[50245] = PowaAuras.DebuffCatType.Root, -- Pin (Crab)
[50271] = PowaAuras.DebuffCatType.Snare, -- Tendon Rip (Hyena)
[50518] = PowaAuras.DebuffCatType.Stun, -- Ravage (Ravager)
[54706] = PowaAuras.DebuffCatType.Root, -- Venom Web Spray (Silithid)
[4167] = PowaAuras.DebuffCatType.Root, -- Web (Spider)
-- Mage
[44572] = PowaAuras.DebuffCatType.Stun, -- Deep Freeze
[31661] = PowaAuras.DebuffCatType.CC, -- Dragon's Breath
[12355] = PowaAuras.DebuffCatType.Stun, -- Impact
[118] = PowaAuras.DebuffCatType.CC, -- Polymorph
[18469] = PowaAuras.DebuffCatType.Silence, -- Silenced - Improved Counterspell
[64346] = PowaAuras.DebuffCatType.Disarm, -- Fiery Payback
[33395] = PowaAuras.DebuffCatType.Root, -- Freeze (Water Elemental)
[122] = PowaAuras.DebuffCatType.Root, -- Frost Nova
[11071] = PowaAuras.DebuffCatType.Root, -- Frostbite
[55080] = PowaAuras.DebuffCatType.Root, -- Shattered Barrier
[11113] = PowaAuras.DebuffCatType.Snare, -- Blast Wave
[6136] = PowaAuras.DebuffCatType.Snare, -- Chilled (generic effect, used by lots of spells [looks weird on Improved Blizzard, might want to comment out])
[120] = PowaAuras.DebuffCatType.Snare, -- Cone of Cold
[116] = PowaAuras.DebuffCatType.Snare, -- Frostbolt
[47610] = PowaAuras.DebuffCatType.Snare, -- Frostfire Bolt
[31589] = PowaAuras.DebuffCatType.Snare, -- Slow
-- Paladin
[853] = PowaAuras.DebuffCatType.Stun, -- Hammer of Justice
[2812] = PowaAuras.DebuffCatType.Stun, -- Holy Wrath (works against Warlocks using Metamorphasis and Death Knights using Lichborne)
[20066] = PowaAuras.DebuffCatType.CC, -- Repentance
[20170] = PowaAuras.DebuffCatType.Stun, -- Stun (Seal of Justice proc)
[10326] = PowaAuras.DebuffCatType.CC, -- Turn Evil (works against Warlocks using Metamorphasis and Death Knights using Lichborne)
[63529] = PowaAuras.DebuffCatType.Silence, -- Shield of the Templar
[20184] = PowaAuras.DebuffCatType.Snare, -- Judgement of Justice (not really a snare, druids might want this though)
-- Priest
[605] = PowaAuras.DebuffCatType.CC, -- Mind Control
[64044] = PowaAuras.DebuffCatType.CC, -- Psychic Horror
[8122] = PowaAuras.DebuffCatType.CC, -- Psychic Scream
[9484] = PowaAuras.DebuffCatType.CC, -- Shackle Undead (works against Death Knights using Lichborne)
[15487] = PowaAuras.DebuffCatType.Silence, -- Silence
--[64058] = Disarm, -- Psychic Horror (duplicate debuff names not allowed atm, need to figure out how to support this later)
[15407] = PowaAuras.DebuffCatType.Snare, -- Mind Flay
-- Rogue
[2094] = PowaAuras.DebuffCatType.CC, -- Blind
[1833] = PowaAuras.DebuffCatType.Stun, -- Cheap Shot
[1776] = PowaAuras.DebuffCatType.CC, -- Gouge
[408] = PowaAuras.DebuffCatType.Stun, -- Kidney Shot
[6770] = PowaAuras.DebuffCatType.CC, -- Sap
[1330] = PowaAuras.DebuffCatType.Silence, -- Garrote - Silence
[18425] = PowaAuras.DebuffCatType.Silence, -- Silenced - Improved Kick
[51722] = PowaAuras.DebuffCatType.Disarm, -- Dismantle
[31125] = PowaAuras.DebuffCatType.Snare, -- Blade Twisting
[3409] = PowaAuras.DebuffCatType.Snare, -- Crippling Poison
[26679] = PowaAuras.DebuffCatType.Snare, -- Deadly Throw
-- Shaman
[51880] = PowaAuras.DebuffCatType.Stun, -- Improved Fire Nova Totem
[39796] = PowaAuras.DebuffCatType.Stun, -- Stoneclaw Stun
[51514] = PowaAuras.DebuffCatType.CC, -- Hex (although effectively a silence+disarm effect, it is conventionally thought of as a CC, plus you can trinket out of it)
[64695] = PowaAuras.DebuffCatType.Root, -- Earthgrab (Storm, Earth and Fire)
[63685] = PowaAuras.DebuffCatType.Root, -- Freeze (Frozen Power)
[3600] = PowaAuras.DebuffCatType.Snare, -- Earthbind (5 second duration per pulse, but will keep re-applying the debuff as long as you stand within the pulse radius)
[8056] = PowaAuras.DebuffCatType.Snare, -- Frost Shock
[8034] = PowaAuras.DebuffCatType.Snare, -- Frostbrand Attack
-- Warlock
[710] = PowaAuras.DebuffCatType.CC, -- Banish (works against Warlocks using Metamorphasis and Druids using Tree Form)
[6789] = PowaAuras.DebuffCatType.CC, -- Death Coil
[5782] = PowaAuras.DebuffCatType.CC, -- Fear
[5484] = PowaAuras.DebuffCatType.CC, -- Howl of Terror
[6358] = PowaAuras.DebuffCatType.CC, -- Seduction (Succubus)
[30283] = PowaAuras.DebuffCatType.Stun, -- Shadowfury
[24259] = PowaAuras.DebuffCatType.Silence, -- Spell Lock (Felhunter)
[18118] = PowaAuras.DebuffCatType.Snare, -- Aftermath
[18223] = PowaAuras.DebuffCatType.Snare, -- Curse of Exhaustion
-- Warrior
[7922] = PowaAuras.DebuffCatType.Stun, -- Charge Stun
[12809] = PowaAuras.DebuffCatType.Stun, -- Concussion Blow
[20253] = PowaAuras.DebuffCatType.Stun, -- Intercept (also Warlock Felguard ability)
[5246] = PowaAuras.DebuffCatType.CC, -- Intimidating Shout
[12798] = PowaAuras.DebuffCatType.Stun, -- Revenge Stun
[46968] = PowaAuras.DebuffCatType.Stun, -- Shockwave
[18498] = PowaAuras.DebuffCatType.Silence, -- Silenced - Gag Order
[676] = PowaAuras.DebuffCatType.Disarm, -- Disarm
[58373] = PowaAuras.DebuffCatType.Root, -- Glyph of Hamstring
[23694] = PowaAuras.DebuffCatType.Root, -- Improved Hamstring
[1715] = PowaAuras.DebuffCatType.Snare, -- Hamstring
[12323] = PowaAuras.DebuffCatType.Snare, -- Piercing Howl
-- Other
[30217] = PowaAuras.DebuffCatType.Stun, -- Adamantite Grenade
[30216] = PowaAuras.DebuffCatType.Stun, -- Fel Iron Bomb
[20549] = PowaAuras.DebuffCatType.Stun, -- War Stomp
[25046] = PowaAuras.DebuffCatType.Silence, -- Arcane Torrent
[39965] = PowaAuras.DebuffCatType.Root, -- Frost Grenade
[55536] = PowaAuras.DebuffCatType.Root, -- Frostweave Net
[13099] = PowaAuras.DebuffCatType.Root, -- Net-o-Matic
[29703] = PowaAuras.DebuffCatType.Snare, -- Dazed
-- PvE
[28169] = PowaAuras.DebuffCatType.PvE, -- Mutating Injection (Grobbulus)
[28059] = PowaAuras.DebuffCatType.PvE, -- Positive Charge (Thaddius)
[28084] = PowaAuras.DebuffCatType.PvE, -- Negative Charge (Thaddius)
[27819] = PowaAuras.DebuffCatType.PvE, -- Detonate Mana (Kel'Thuzad)
[63024] = PowaAuras.DebuffCatType.PvE, -- Gravity Bomb (XT-002 Deconstructor)
[63018] = PowaAuras.DebuffCatType.PvE, -- Light Bomb (XT-002 Deconstructor)
[62589] = PowaAuras.DebuffCatType.PvE, -- Nature's Fury (Freya, via Ancient Conservator)
[63276] = PowaAuras.DebuffCatType.PvE, -- Mark of the Faceless (General Vezax)
}
 
function PowaAuras:UnitTestDebug(...)
end
 
function PowaAuras:UnitTestInfo(...)
end
 
function PowaAuras:Debug(...)
if (self.Misc.debug == true) then
self:Message(...) --OK
end
self:UnitTestDebug(...);
end
 
function PowaAuras:Message(...)
args={...};
if (args==nil or #args==0) then
return;
end
local Message = "";
for i=1, #args do
Message = Message..tostring(args[i]);
end
DEFAULT_CHAT_FRAME:AddMessage(Message);
end
 
-- Use this for temp debug messages
function PowaAuras:ShowText(...)
self:Message(...); -- OK
end
 
-- Use this for real messages instead of ShowText
function PowaAuras:DisplayText(...)
self:ShowText(...);
end
 
----------------------------------------------------------------------------------------
-- This function will print a Message to the GUI screen (not the chat window) then fade.
----------------------------------------------------------------------------------------
function PowaAuras:Error( msg, holdtime )
if (holdtime==nil) then
holdtime = UIERRORS_HOLD_TIME;
end
UIErrorsFrame:AddMessage(msg, 0.75, 0.75, 1.0, 1.0, holdtime);
end
 
 
function PowaAuras:ReverseTable(t)
if (type(t)~="table") then return nil; end
local newTable = {};
for k,v in pairs(t) do
newTable[v] = k;
end
return newTable;
end
 
function PowaAuras:CopyTable(t, lookup_table, original)
if (type(t)=="table") then
local copy;
if (original==nil) then
copy = {};
else
copy = original;
end
for i,v in pairs(t) do
if (type(v)~="function") then
if (type(v)~="table") then
copy[i] = v;
else
lookup_table = lookup_table or {};
lookup_table[t] = copy;
if lookup_table[v] then
copy[i] = lookup_table[v]; -- we already copied this table. reuse the copy.
else
copy[i] = self:CopyTable(v, lookup_table); -- not yet copied. copy it.
end
end
end
end
return copy
else
return t;
end
end
 
 
 
 
trunk/PowerAuras/debug.txt New file
0,0 → 1,9
- Pet health/mana trigger
- Action Usable with pet actions
- Action Usable with reactive buttons (ex. overpower)
- Action Usable with macro buttons
 
PowerAuras-2.5.9a\PowerAuras.lua:4177: Usage: UnitBuff("unit", [index] or ["name", "rank"][, "filter"])
PowerAuras-2.5.9a\PowerAuras.lua:4177: in function `Powa_UpdateTimer'
PowerAuras-2.5.9a\PowerAuras.lua:3589: in function `Powa_OnUpdate'
<string>:"*:OnUpdate":1: in function <[string "*:OnUpdate"]:1>
trunk/PowerAuras/Notes.txt New file
0,0 → 1,230
-------- ---------------------------------------------------------------------------------------------------------------------------------------
FRANCAIS
--------
 
Cet AddOn a été créé afin d'avoir une meilleure visibilité lorsque l'on acquière des buffs, debuffs, points de combos, enchantement d'arme... Très util principalement pour les buffs ou debuffs court, il permet d'avoir au centre de l'écran, ou autour de son personnages, des effets visuels extrèmement paramétrables, plutôt que tout le temps avoir à regarder si on a l'icone du buff ou debuff sur les bords de l'écran.
 
Initialement créé pour avoir un aperçu des buffs d'amélioration courts comme "idées claires" ou un quelconque bijou qui boosterait notre attaque, il fonctionne désormais aussi bien avec des débuffs (quel que soient leur nom), les type de débuffs (magie, malédiction, etc), les points de combos, les effets de zone ainsi que les enchantements d'armes
 
 
Utilisation :
 
Tapez /powa
pour avoir accès au menu d'édition des effets, il ne vous reste plus qu'à choisir la texture à appliquer à l'effet, la position, taille, symétrie, etc...
Entrez ensuite le nom ou une partie du nom du buff/debuff (ex: si vous cherchez à activer l'effet visuel sur "Idées claires", vous pouvez n'entrer que "claires" dans le nom du buff).
 
L'addon se chargera donc d'afficher l'effet là où vous le désirez et à le faire disparaitre une fois le buff fini.
 
 
Vous pouvez aussi facilement ajouter de nouvelles textures en les mettant dans le dossier "custom" de l'addon.
 
 
 
-= Mises à jour : =-
 
Version 2.34 :
--------------
+ Ajout d'une activation d'effet suivant les actions utilisable de vos barres d'actions
- Finalement, correction d'un bug qui empechait certaines personne d'utiliser les effets d'enchantements d'arme
 
Version 2.32 :
--------------
+ Compatibilité avec la version 2.0.3 de WoW
+ Désormais Power Auras est livré avec 50 textures (plus besoin de télécharger les packs 1 et 2)
+ Ajout de 3 timers supplémentaires
+ Ajout d'un décompte de durée des buffs / debuffs sur la cible
+ Ajout de la possibilité de créer ses propres textures et de les inclure facilement (dans le dossier "Custom")
+ Ajout des tests sur les cibles amies ou ennemies
+ Possibilité de déplacer les effets ou timers sur l'écran plus facilement
+ Possibilité d'afficher les textures avec une transparence normale
- Les effets de zones ne devraient plus persister à la mort ou au changement de zone
- Corrections de quelques bugs mineurs
 
 
Version 2.17 :
--------------
+ Compatibilité avec la version 2.0.0 de WoW
 
Version 2.16 :
--------------
- Correction d'un problème d'allocation de mémoire trop important
- Correction d'un message d'erreur qui parfois pouvait survenir
+ Ajout de 2 paramètres : "Afficher si en combat" et "Afficher si hors combat"
 
Version 2.15 :
--------------
+ Ajout d'une nouvelle interface pour facilement naviguer entre les effets. Elle dispose de 120 effets par personnage et de 240 effets communs à tous les personnages.
+ Tous les effets pourront être copiés ou déplacés entre les diverses pages disponibles, et les pages pourront être renommées pour une meilleur visibilité
+ Ajout d'une fonction pour activer ou désactiver les effets
+ Ajout de l'activation des effets par debuff de zone (marche avec les pluies de feu, blizzard, etc...)
+ Ajout de l'activation des effets par enchantement des armes (droite, gauche ou les deux)
+ Ajout de l'activation des effets par points de combo, pour les druides-chat et voleurs
+ Ajout du paramètre "Sur la cible" pour activer les effets suivant les buffs/debuffs qu'aura la cible
+ Ajout du paramètre "Couleurs aléatoire", afin que la couleur d'un effet change à chaque activation
+ Ajout du paramètre "Texture WoW", permettant d'utiliser 25 textures internes du jeu à la place des textures de l'Addon
+ Les modifications de taille des textures seront désormais plus précises
- Suppression de la fonction "Liste" qui n'est plus utilisée pour sauvegarder des effets, tous vos effets sauvegardés seront placés dans les pages d'effets communs à tous les personnages et mis sur "OFF".
- Corrections de quelques bugs mineurs
 
 
Version 2.10 :
--------------
+ Ajout d'un bouton "+" permettant d'ajouter facilement un effet supplémentaire
+ Ajout d'un bouton "-" qui efface toutes les pages d'effets inutilisées et trie les autres par type
+ Désormais vous pouvez déplacer les effets plus précisément sur l'écran, et n'importe où
+ Ajout d'une commande qui définie si les Majuscules/minuscules des noms des buffs/débuff doivent être prises en compte (corrige certains soucis avec les versions non latines du jeu)
+ Ajout de deux options d'animation supplémentaires : "animation de départ" et "animation de fin", permettant des combinaisons d'effets plus sympas
+ Changement des numéros d'animation par des noms
+ Finallement, ajout de la 10ème animation
+ Ajout d'un paramètre qui remplace les centièmes de secondes du compteur de durée par la durée du second buff/débuff le plus court
+ Amélioration visuelle de l'interface d'option
- Suppression du paramètre de "disparition rapide" qui est devenu obsolète
- Suppression des lignes de commandes avancées qui ne sont plus utiles
- Enfin, correction du bug qui faisait que certains effets apparaissaient ou disparaissaient aléatoirement
- Corrections mineures de certains bugs d'animation
 
 
Version 2.01 :
--------------
+ Ajout du timer pour les débuffs et type de débuffs (et d'autres fonctions)
+ Ajout du paramètre "vitesse d'animation" pour tous les effets
+ Ajout du paramètre "durée de l'animation", si vous voulez que l'effet soit masqué après un certain temps
+ Ajout d'un paramètre permettant d'afficher les effets si les buffs/débuff ne sont pas actifs
+ Ajout d'une option qui vous permet de choisir plus facilement le nombre maximum de textures disponible pour l'AddOn
- Correction d'un bug qui empêchait les types de débuff de fonctionner correctement sur les versions non anglaises du jeu
- Correction d'un bug qui empêchait la sauvegarde du nombre max de textures
 
 
Version 1.12b :
---------------
- Ajout de 5 textures et de 3 animations (penser à ne pas écraser vos textures si vous en avez modifiées ou créés de nouvelles)
- Ajout d'un timer déplaçable pour les buffs (gestion des debuffs dans une future version). Le timer affichera toujours le temps restant du buff le plus court actif.
- Vous pouvez augmenter le nombre d'effet maximum jusqu'à 100 (via la commande /powa maxeffect)
- Vous pouvez entrer plusieurs noms de buffs/débuffs dans une seule page d'effet, si vous les séparez par un "/" (ex : Robustesse/Don du fauve)
- Vous pouvez activer un type de debuff qui n'est pas une magie, maladie, etc... via le nom "aucun" (l'effet s'activera si un débuff n'a aucun type particulier). De plus, vous pouvez entrer plusieurs type de débuffs dans la partie "nom du débuff" (pour pister les poisons en même temps que les maladies par exemple).
 
 
Version 1.12a :
---------------
- Correction d'un problème d'allocation de mémoire, tout devrait fonctionner normalement désormais
 
 
Version 1.12 :
--------------
- Ajout de la possibilité de sauvegarder ses effets dans une liste commune à tous les personnages, cliquez sur le bouton "Liste"
- Ajout de fonctions avancées, disponibles en tapant : /powa help
 
 
------- ----------------------------------------------------------------------------------------------------------------------------------------
ENGLISH
-------
 
This Mod was created to have a better visibility when you gain buffs, debuffs and many more. Very util for shorts buffs or debuffs, it allows you to have in the center of the screen, or around your character, very customizable visual effects, rather than all the time have to look on the other side of the screen to see if you have a buff or a debuff on you.
 
Initially created to have an better visibility on the short buffs like "clear cast" or some boost trinket you activate, it works now with debuffs (whatever their name), debuff types like Magic or Curse, combo points, Aoe debuffs and weapon enchants.
 
How to use :
 
Type /powa
to open the effect editor, then you can choose the texture to apply to the effect, the position, the size, the symmetry, etc...
Then, enter the name or a part of the name of the buff / debuff (ex: if you try to activate the visual effect on "Clear cast", you can enter only "Clear" in the name of the buff).
 
The Mod will take care to show the effect where you wish and to remove it when the buff is finished.
 
 
You can so easily change the 20 available textures or add new ones.
 
 
 
- = Updates: =-
 
Version 2.34 :
--------------
+ Added an effect activation when a specific action is ready or not in your action bars.
- Finally, corrected the bug that cause some weapon enchant effect don't appear normally.
 
Version 2.32 :
--------------
+ Compatibility with version 2.0.3 of Wow
+ Power Auras come now with 50 textures (you don't need anymore to download the 2 texture packs)
+ Added 3 timers
+ Added a timer duration for buffs/debuffs on the target
+ You can now add easily your own textures (in the "Custom" Directory)
+ Added tests on friendly or ennemy target
+ Added a easy way to move the effects or timer anywhere on the screen
+ You can now display the textures with the normal transparency mode
- The Aoe debuffs should no longer persist after death or zone change
- Corrections of some minor bugs
 
Version 2.17 :
--------------
+ Compatibility to version 2.0.0 of Wow
 
Version 2.16 :
--------------
- Fixed the problem of high memory usage
- Fixed some error message that sometimes can be displayed
+ Added 2 options : "Only if in combat" and "Only if not in combat" for every effects
 
Version 2.15 :
--------------
+ Added a new interface to easily navigate through all the effects. You can now create/edit 120 effects per character and 240 effects shared by all your characters.
+ All the effects can be copied and moved in the differents pages available, and the pages can be renamed for better visibility
+ Added a function to put the effects ON or OFF
+ Added the effect activation by AOE debuffs (like rain of fire, blizzard, etc...)
+ Added the effect activation by weapon enchants (main hand, off hand or both hands)
+ Added the effect activation by combo points, for cats-druids and rogues
+ Added the option "On target" to display effects when the target has a buff/debuff
+ Added the option "Random color" to randomly change the color of an effect after each activation
+ Added the option "WoW Textures", which can be used to browse through 25 internal textures of the game instead of the mod's textures
+ Texture size modifications will now be more precise.
- Removed the panel "List" which is not any more used to save effects, all your saved effects will be placed in the global effects' pages and put on "OFF".
- Corrections of some minor bugs
 
 
Version 2.10 :
--------------
+ Added a button "+" to easily add more effects
+ Added a button "-" to clear all unused effects and sort the other by type
+ You can now move the effects with more precision and anywhere one the screen (or outside ;)
+ Added a way to ignore or not the upper/lowercase of buffs/debuffs names (fixing some bugs in non-latin versions of the game)
+ Added two new animation's options : "Begin animation" and "End animation", allowing more cool effects combinations
+ Changed numbers of animations by names
+ Finally, added the 10th animation
+ Added a option to show the 2 shortest timers for both buffs and debuffs
+ Visual upgrade of the option interface
- Useless option "Quick Hide" as been removed
- Advanced command line parameters removed (no more used)
- Finally, fixed the bug which cause some effects beeing randomly activated or deactivated
- Some minor animation bugs fixes
 
 
Version 2.01 :
--------------
+ Added a timer for debuffs and debuff types (and more functions)
+ Added the option "animation speed" for all effects
+ Added the option "animation duration", if you want an effect to be hidden after some time
+ Added the option to show the effects only when buff/debuff are not active
+ Added an option to easily change the number of textures available to the Mod
- Fixed a bug causing incorrect display of debuff types on non-english versions of the game
- Fixed a bug not allowing to save the maximum number of texture correctly
 
 
Version 1.12b :
---------------
- Added 5 textures and 3 animations (don't overwrite your textures if you modified or created new ones)
- Added a movable timer for buffs (debuffs in a future version). This timer will always show the remaining time of the shortest buff.
- You can now increase the maximum number of effects to 100 (with the command /powa maxeffect)
- You can enter several names of buffs/debuffs on a single page of effect, if you separate them by "/" (ex: Fortitude/Mark of the wild)
- You can activate a type of debuff which isn't a Magic, Disease... with the word "None" (the effect will show if the debuff has no particular type). Furthermore, you can enter multiple type of debuffs to the "Name of the debuff" (to track Poison and Disease for example).
 
 
Version 1.12a :
---------------
- Fixed a problem with memory usage, it should work great now
 
 
Version 1.12:
-------------
- Added the possibility to save yours effects in a list common to all the characters, juste click the button "List"
- Added advanced options, available by typing : / powa help
\ No newline at end of file
trunk/PowerAuras/PowerOptions.xml New file
0,0 → 1,987
<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/
..\..\FrameXML\UI.xsd">
 
<Button name="PowaIconeTemplate" virtual="true">
<Size>
<AbsDimension x="38" y="38"/>
</Size>
<Scripts>
<OnLoad>
self:RegisterForClicks("LeftButtonUp", "RightButtonDown");
</OnLoad>
<OnClick>
PowaAuras:IconeClick(self, button)
</OnClick>
<OnEnter>
PowaAuras:IconeEntered(self)
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
<NormalFont style="GameFontHighlight"/>
<NormalTexture file="Interface\PaperDoll\UI-Backpack-EmptySlot"/>
<HighlightTexture alphaMode="ADD" file="Interface\Buttons\ButtonHilight-Square"/>
</Button>
 
<Button name="PowaListTemplate" inherits="OptionsButtonTemplate" virtual="true">
<Size>
<AbsDimension x="90" y="25"/>
</Size>
<Scripts>
<OnClick>
PowaAuras:MainListClick(self);
</OnClick>
<OnEnter>
PowaAuras:MainListEntered(self);
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
<ButtonText name="$parentText"/>
<NormalFont style="GameFontNormalSmall"/>
<HighlightFont style="GameFontHighlightSmall"/>
<NormalTexture file=""/>
<PushedTexture file=""/>
<Layers>
<Layer>
<Texture name="$parentGlow" file="Interface\PaperDollInfoFrame\UI-Character-Tab-Highlight" alphaMode="ADD" hidden="true">
<Size>
<AbsDimension x="90" y="25" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
</Button>
 
-- ------------------------------------------------------------------------------------------------
<Frame name="PowaOptionsFrame" toplevel="true" movable="true" parent="UIParent" frameStrata="MEDIUM" hidden="true" enableMouse="true" enableKeyboard="true">
<Size>
<AbsDimension x="328" y="470" />
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="UIParent">
<Offset>
<AbsDimension x="0" y="50" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_LAVAROCK01" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11" />
</BackgroundInsets>
<TileSize>
<AbsValue val="200" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop>
<Scripts>
<OnLoad>
self:SetBackdropBorderColor(0.9, 1.0, 0.9);
self:SetBackdropColor(0.6, 0.6, 0.6);
tinsert(UISpecialFrames, self:GetName());
</OnLoad>
<OnShow>
PlaySound("TalentScreenOpen");
</OnShow>
<OnHide>
PowaAuras:MainOptionClose();
</OnHide>
<OnMouseDown>
PowaAuras:Bar_MouseDown( self, button, "PowaOptionsFrame" );
</OnMouseDown>
<OnMouseUp>
PowaAuras:Bar_MouseUp( self, button, "PowaOptionsFrame" );
</OnMouseUp>
</Scripts>
 
-- BLOCK DE TITRE
<Layers>
<Layer>
<Texture file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="180" y="32" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="8" />
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.2" right="0.8" top="0" bottom="0.6" />
</Texture>
-- TITRE
<FontString name="PowaOptionsHeader" inherits="GameFontNormalSmall" text="POWER AURAS">
<Size>
<AbsDimension x="140" y="0" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="-4" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="14" />
</FontHeight>
</FontString>
<FontString name="PowaAuthorText" inherits="GameFontDisable" text="Created by -Sinsthar- [Ziya / Tiven, on Kirin Tor (FR)]">
<Size>
<AbsDimension x="180" y="30" />
</Size>
<Anchors>
<Anchor point="BOTTOM">
<Offset>
<AbsDimension x="0" y="120" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="15" />
</FontHeight>
</FontString>
</Layer>
</Layers>
-- ----------------------------------------------------------------------------------- boutons
<Frames>
-- bouton fermer
<Button name="$parentCloseButton" inherits="UIPanelCloseButton">
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="-5" y="-5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
 
-- case desactiver
<CheckButton name="PowaEnableButton" inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25" y="25"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="PowaOptionsFrame" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="20" y="-20"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideEnable;
getglobal("PowaEnableButtonText"):SetText(PowaAuras.Text.nomEnable);
</OnLoad>
<OnClick>
PowaAuras:EnableChecked();
</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="PowaDebugButton" inherits="PowaCheckTemplate">
<Size>
<AbsDimension x="25" y="25"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="PowaOptionsFrame" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="20" y="-45"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
self.tooltipText = PowaAuras.Text.aideDebug;
getglobal("PowaDebugButtonText"):SetText(PowaAuras.Text.nomDebug);
</OnLoad>
<OnClick>
PowaAuras:DebugChecked();
</OnClick>
</Scripts>
</CheckButton>
-- bouton Editer
<Button name="PowaEditButton" inherits="OptionsButtonTemplate" text="Editer">
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="PowaOptionsFrame" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-20" y="17"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaEditButtonText"):SetText(PowaAuras.Text.nomEdit);
</OnLoad>
<OnClick>
PowaAuras:EditorShow();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton tester
<Button name="PowaMainTestButton" inherits="OptionsButtonTemplate" text="Tester">
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="PowaOptionsFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="20" y="17"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaMainTestButtonText"):SetText(PowaAuras.Text.nomTest);
</OnLoad>
<OnClick>
PowaAuras:OptionTest();
PowaAuras:UpdateMainOption();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton tout masquer
<Button name="PowaMainHideAllButton" inherits="OptionsButtonTemplate" text="Tout Cacher">
<Anchors>
<Anchor point="BOTTOM" relativeTo="PowaOptionsFrame" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="17"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaMainHideAllButtonText"):SetText(PowaAuras.Text.nomHide);
</OnLoad>
<OnClick>
PowaAuras:OptionHideAll();
PowaAuras:UpdateMainOption();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- --------------------------------------------------------------------- Fenetre icones effets
<Frame name="PowaOptionsSelectorFrame">
<Size>
<AbsDimension x="194" y="355"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="-20" y="-70"/>
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="12"/>
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2" right="2" top="2" bottom="2"/>
</BackgroundInsets>
</Backdrop>
<Scripts>
<OnLoad>
self:SetBackdropBorderColor(0.0, 0.0, 0.0);
self:SetBackdropColor(0.1, 0.1, 0.1);
</OnLoad>
</Scripts>
<Frames>
<Button name="PowaIcone1" inherits="PowaIconeTemplate" id="1">
<Anchors>
<Anchor point="TOPLEFT" relativeTo="PowaOptionsSelectorFrame" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="8" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone2" inherits="PowaIconeTemplate" id="2">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone1" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone3" inherits="PowaIconeTemplate" id="3">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone2" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone4" inherits="PowaIconeTemplate" id="4">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone3" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone5" inherits="PowaIconeTemplate" id="5">
<Anchors>
<Anchor point="TOP" relativeTo="PowaIcone1" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone6" inherits="PowaIconeTemplate" id="6">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone5" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone7" inherits="PowaIconeTemplate" id="7">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone6" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone8" inherits="PowaIconeTemplate" id="8">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone7" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone9" inherits="PowaIconeTemplate" id="9">
<Anchors>
<Anchor point="TOP" relativeTo="PowaIcone5" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone10" inherits="PowaIconeTemplate" id="10">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone9" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone11" inherits="PowaIconeTemplate" id="11">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone10" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone12" inherits="PowaIconeTemplate" id="12">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone11" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone13" inherits="PowaIconeTemplate" id="13">
<Anchors>
<Anchor point="TOP" relativeTo="PowaIcone9" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone14" inherits="PowaIconeTemplate" id="14">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone13" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone15" inherits="PowaIconeTemplate" id="15">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone14" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone16" inherits="PowaIconeTemplate" id="16">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone15" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone17" inherits="PowaIconeTemplate" id="17">
<Anchors>
<Anchor point="TOP" relativeTo="PowaIcone13" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone18" inherits="PowaIconeTemplate" id="18">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone17" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone19" inherits="PowaIconeTemplate" id="19">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone18" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone20" inherits="PowaIconeTemplate" id="20">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone19" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone21" inherits="PowaIconeTemplate" id="21">
<Anchors>
<Anchor point="TOP" relativeTo="PowaIcone17" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="-8" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone22" inherits="PowaIconeTemplate" id="22">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone21" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone23" inherits="PowaIconeTemplate" id="23">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone22" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaIcone24" inherits="PowaIconeTemplate" id="24">
<Anchors>
<Anchor point="LEFT" relativeTo="PowaIcone23" relativePoint="RIGHT">
<Offset>
<AbsDimension x="8" y="0" />
</Offset>
</Anchor>
</Anchors>
</Button>
-- Texture selected
<Frame name="PowaSelected" frameStrata="HIGH">
<Size>
<AbsDimension x="38" y="38" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer>
<Texture file="Interface\Buttons\CheckButtonHilight" alphaMode="ADD">
<Size>
<AbsDimension x="38" y="38" />
</Size>
<Anchors>
<Anchor point="CENTER">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
</Texture>
</Layer>
</Layers>
</Frame>
-- bouton Nouveau
<Button name="PowaOptionsSelectorNew" inherits="OptionsButtonTemplate" text="Nouveau">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="5" y="55"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsSelectorNewText"):SetText(PowaAuras.Text.nomNew);
</OnLoad>
<OnClick>
PowaAuras:OptionNewEffect();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton Delete
<Button name="PowaOptionsSelectorDelete" inherits="OptionsButtonTemplate" text="Suppr.">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-5" y="55"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsSelectorDeleteText"):SetText(PowaAuras.Text.nomDel);
</OnLoad>
<OnClick>
PowaAuras:OptionDeleteEffect(PowaAuras.CurrentAuraId);
PlaySound("igCharacterInfoTab");
</OnClick>
<OnEnter>
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(PowaAuras.Text.aideDel, nil, nil, nil, nil, 1);
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
</Button>
-- bouton Import
<Button name="PowaOptionsSelectorImport" inherits="OptionsButtonTemplate" text="Import">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="5" y="5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsSelectorImportText"):SetText(PowaAuras.Text.nomImport);
</OnLoad>
<OnClick>
PowaAuras:OptionImportEffect();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton Export
<Button name="PowaOptionsSelectorExport" inherits="OptionsButtonTemplate" text="Export">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-5" y="5"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsSelectorExportText"):SetText(PowaAuras.Text.nomExport);
</OnLoad>
<OnClick>
PowaAuras:OptionExportEffect();
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton Deplacer
<Button name="PowaOptionsMove" inherits="OptionsButtonTemplate" text="Deplacer">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="5" y="30"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsMoveText"):SetText(PowaAuras.Text.nomMove);
</OnLoad>
<OnClick>
PowaAuras:OptionMoveEffect(true);
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
-- bouton Copier
<Button name="PowaOptionsCopy" inherits="OptionsButtonTemplate" text="Copier">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="PowaOptionsSelectorFrame" relativePoint="BOTTOMRIGHT">
<Offset>
<AbsDimension x="-5" y="30"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
getglobal("PowaOptionsCopyText"):SetText(PowaAuras.Text.nomCopy);
</OnLoad>
<OnClick>
PowaAuras:OptionMoveEffect(false);
PlaySound("igCharacterInfoTab");
</OnClick>
</Scripts>
</Button>
</Frames>
</Frame>
-- --------------------------------------------------------------------- Fenetre player liste
<Frame name="PowaOptionsPlayerListFrame">
<Size>
<AbsDimension x="90" y="110"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT" relativeTo="PowaOptionsSelectorFrame" relativePoint="TOPLEFT">
<Offset>
<AbsDimension x="-3" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="12"/>
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2" right="2" top="2" bottom="2"/>
</BackgroundInsets>
</Backdrop>
<Layers>
<Layer>
<FontString name="PowaOptionsPlayerTitre" inherits="GameFontHighlight" text="Character Effects">
<Size>
<AbsDimension x="90" y="30" />
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsPlayerListFrame" relativePoint="TOP">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="13" />
</FontHeight>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
self:SetBackdropBorderColor(0.0, 0.0, 0.0);
self:SetBackdropColor(0.1, 0.1, 0.1);
getglobal("PowaOptionsPlayerTitre"):SetText(PowaAuras.Text.nomPlayerEffects);
</OnLoad>
</Scripts>
<Frames>
-- listes
<Button name="PowaOptionsList1" inherits="PowaListTemplate" text="Page 1" id="1">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsPlayerTitre" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList2" inherits="PowaListTemplate" text="Page 2" id="2">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList1" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList3" inherits="PowaListTemplate" text="Page 3" id="3">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList2" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList4" inherits="PowaListTemplate" text="Page 4" id="4">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList3" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList5" inherits="PowaListTemplate" text="Page 5" id="5">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList4" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
 
</Frames>
</Frame>
-- --------------------------------------------------------------------- Fenetre global liste
<Frame name="PowaOptionsGlobalListFrame">
<Size>
<AbsDimension x="90" y="187"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="PowaOptionsPlayerListFrame" relativePoint="BOTTOMLEFT">
<Offset>
<AbsDimension x="0" y="-7"/>
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Dungeons\Textures\rock\BM_BRSPIRE_CUBEROCK01" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize>
<AbsValue val="12"/>
</EdgeSize>
<TileSize>
<AbsValue val="128" />
</TileSize>
<BackgroundInsets>
<AbsInset left="2" right="2" top="2" bottom="2"/>
</BackgroundInsets>
</Backdrop>
<Layers>
<Layer>
<FontString name="PowaOptionsGlobalTitre" inherits="GameFontHighlight" text="Global Effects">
<Size>
<AbsDimension x="90" y="30" />
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsGlobalListFrame" relativePoint="TOP">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="13" />
</FontHeight>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
self:SetBackdropBorderColor(0.0, 0.0, 0.0);
self:SetBackdropColor(0.1, 0.1, 0.1);
getglobal("PowaOptionsGlobalTitre"):SetText(PowaAuras.Text.nomGlobalEffects);
</OnLoad>
</Scripts>
<Frames>
-- listes
<Button name="PowaOptionsList6" inherits="PowaListTemplate" text="Page 1" id="6">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsGlobalTitre" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="5"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList7" inherits="PowaListTemplate" text="Page 2" id="7">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList6" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList8" inherits="PowaListTemplate" text="Page 3" id="8">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList7" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList9" inherits="PowaListTemplate" text="Page 4" id="9">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList8" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList10" inherits="PowaListTemplate" text="Page 5" id="10">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList9" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList11" inherits="PowaListTemplate" text="Page 6" id="11">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList10" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList12" inherits="PowaListTemplate" text="Page 7" id="12">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList11" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList13" inherits="PowaListTemplate" text="Page 8" id="13">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList12" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList14" inherits="PowaListTemplate" text="Page 9" id="14">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList13" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
<Button name="PowaOptionsList15" inherits="PowaListTemplate" text="Page 10" id="15">
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsList14" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="10"/>
</Offset>
</Anchor>
</Anchors>
</Button>
-- bouton Renommer
<Button name="PowaOptionsRename" inherits="OptionsButtonTemplate" text="Renommer">
<Size>
<AbsDimension x="90" y="22"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsGlobalListFrame" relativePoint="BOTTOM">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
PowaAuras:OptionRename();
PlaySound("igCharacterInfoTab");
</OnClick>
<OnEnter>
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(PowaAuras.Text.aideRename, nil, nil, nil, nil, 1);
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
</Button>
<EditBox name="PowaOptionsRenameEditBox" autoFocus="true" inherits="InputBoxTemplate" hidden="true">
<Size>
<AbsDimension x="85" y="22"/>
</Size>
<Anchors>
<Anchor point="TOP" relativeTo="PowaOptionsRename" relativePoint="TOP">
<Offset>
<AbsDimension x="3" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString inherits="GameFontNormalSmall" bytes="15"/>
</Layer>
</Layers>
<Scripts>
<OnLoad>
self:SetMaxLetters(15)
</OnLoad>
<OnEnterPressed>
PowaAuras:OptionRenameEdited();
self:ClearFocus();
</OnEnterPressed>
</Scripts>
</EditBox>
</Frames>
</Frame>
</Frames>
</Frame>
 
</Ui>
trunk/PowerAuras/Custom/Poison.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/runea.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/Disease.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/runeng.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/runef.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/Magic.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/Curse.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Custom/Flamme.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/PowerAurasForm.xml New file
0,0 → 1,66
<Ui xmlns="http://www.blizzard.com/wow/ui" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!--Autogenerated by wowuides, Version=1.0.300.0, Culture=neutral, PublicKeyToken=null-->
<Frame name="PowerAurasForm">
<!--<FrameSkin skinid="dcb143e1-a4ab-4e7c-b934-1efa40101d21" frameid="2d508883-59c2-4f83-ae10-27aaad48391b" />-->
<Size>
<AbsDimension x="400" y="400" />
</Size>
<Anchors>
<Anchor point="CENTER" relativeTo="UIParent">
<Offset>
<AbsDimension x="0" y="0" />
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11" />
</BackgroundInsets>
<TileSize>
<AbsValue val="32" />
</TileSize>
<EdgeSize>
<AbsValue val="32" />
</EdgeSize>
</Backdrop>
<Layers>
<Layer>
<Texture name="$parentTitleBorder" hidden="true" file="Interface\DialogFrame\UI-DialogBox-Header">
<Size>
<AbsDimension x="160" y="32" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="5" />
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.2" right="0.8" top="0" bottom="0.6" />
</Texture>
<FontString name="$parentTitleString" hidden="true" font="Fonts\FRIZQT__.TTF">
<Size>
<AbsDimension x="140" y="0" />
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="-4" />
</Offset>
</Anchor>
</Anchors>
<FontHeight>
<AbsValue val="12" />
</FontHeight>
<Color r="1" g="0.8196079" b="0" />
<Shadow>
<Color r="0" g="0" b="0" />
<Offset>
<AbsDimension x="1" y="-1" />
</Offset>
</Shadow>
</FontString>
</Layer>
</Layers>
</Frame>
</Ui>
\ No newline at end of file
trunk/PowerAuras/localisation_zhTW.lua New file
0,0 → 1,271
if (GetLocale() == "zhTW") then
PowaAuras.Anim[0] = "[無]";
PowaAuras.Anim[1] = "靜止";
PowaAuras.Anim[2] = "閃光效果";
PowaAuras.Anim[3] = "生長效果";
PowaAuras.Anim[4] = "脈沖效果";
PowaAuras.Anim[5] = "氣泡效果";
PowaAuras.Anim[6] = "水滴效果";
PowaAuras.Anim[7] = "漏電效果";
PowaAuras.Anim[8] = "收縮效果";
PowaAuras.Anim[9] = "火焰效果";
PowaAuras.Anim[10] = "盤旋效果";
 
PowaAuras.BeginAnimDisplay[0] = "[無]";
PowaAuras.BeginAnimDisplay[1] = "放大進入";
PowaAuras.BeginAnimDisplay[2] = "縮小進入";
PowaAuras.BeginAnimDisplay[3] = "改變透明度";
PowaAuras.BeginAnimDisplay[4] = "左邊進入";
PowaAuras.BeginAnimDisplay[5] = "左上進入";
PowaAuras.BeginAnimDisplay[6] = "上部進入";
PowaAuras.BeginAnimDisplay[7] = "右上進入";
PowaAuras.BeginAnimDisplay[8] = "右邊進入";
PowaAuras.BeginAnimDisplay[9] = "右下進入";
PowaAuras.BeginAnimDisplay[10] = "下部進入";
PowaAuras.BeginAnimDisplay[11] = "左下進入";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[無]";
PowaAuras.EndAnimDisplay[1] = "放大進入";
PowaAuras.EndAnimDisplay[2] = "縮小進入";
PowaAuras.EndAnimDisplay[3] = "改變透明度";
 
PowaAuras.Sound[0] = "[無]";
PowaAuras.Sound[1] = "升級音效";
PowaAuras.Sound[2] = "擡取金幣";
PowaAuras.Sound[3] = "飛過";
PowaAuras.Sound[4] = "探索新地圖";
PowaAuras.Sound[5] = "接到任務";
PowaAuras.Sound[6] = "任務完成";
PowaAuras.Sound[7] = "寫任務";
PowaAuras.Sound[8] = "釣魚";
PowaAuras.Sound[9] = "PVP事件";
PowaAuras.Sound[10] = "團隊檢查";
PowaAuras.Sound[11] = "團隊警告";
PowaAuras.Sound[12] = "打開拍賣行";
PowaAuras.Sound[13] = "關閉拍賣行";
PowaAuras.Sound[14] = "消消話";
PowaAuras.Sound[15] = "打開背包";
 
PowaAuras.Text = {
 
nomDebug = "啟用Debug模式",
aideDebug = "選項此項後,插件如果遇到錯誤將顯示提示信息",
 
nomStance = "姿態",
aideStance = "選擇用於觸發特效的姿態",
nomCheckOwnSpell = "Spell from my Spellbook",
 
nomCheckStance = "姿態",
nomCheckSpells = "Spell Alert", --- untranslated
 
nomCustomSound = "自定義聲音文件:",
 
nomTabSound = "聲音",
nomTabTimer = "計時器",
 
nomExact = "精確匹配名稱",
aideExact = "選中此項將精確匹配buff/debff名稱",
 
nomMine = "Cast by me", --- untranslated
nomDispellable = "I can dispell",
aideMine = "Check this to test only buffs/debuffs cast by the player", --- untranslated
 
 
nomGCD = "公共冷卻",
aideGCD = "選中此項後'動作冷卻'功能將檢測公共冷卻.需要註意的是,如果一個技能只有公共冷卻則會引起光環特效閃爍",
 
nomSound = "播放聲音",
aideSound = "特效觸發時播放聲音",
aideCustomSound = "輸入聲音文件名稱,如cookie.mp3 註意:你需要在遊戲啟動前把聲音文件放入Sounds文件夾下,目前僅支持mp3和wav格式.",
 
 
nomThreshold = "觸發極限",
aideThreshInv = "Check this to invert the threshold logic. Health/Mana: default = Low Warning / checked = High Warning. Energy/Rage/Power: default = High Warning / checked = Low Warning", --- untranslated
nomThreshInv = "</>",
 
nomSound = "播放聲音",
aideSound = "特效觸發時播放聲音",
aideCustomSound = "輸入聲音文件名稱,如cookie.mp3 註意:你需要在遊戲啟動前把聲音文件放入Sounds文件夾下,目前僅支持mp3和wav格式.",
 
nomCheckHealth = "生命值",
nomCheckMana = "魔法值",
nomCheckRageEnergy = "Rage/Energy/Runic", -- untranslated
 
welcome = "輸入 /powa 打開特效編輯器.",
 
aucune = "無",
aucun = "無",
largeur = "寬度",
hauteur = "高度",
mainHand = "主手",
offHand = "副手",
bothHands = "雙手",
 
DebuffType =
{
Magic = "魔法",
Disease = "疾病",
Curse = "詛咒",
Poison = "中毒",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "CC",
[PowaAuras.DebuffCatType.Silence] = "Silence",
[PowaAuras.DebuffCatType.Snare] = "Snare",
[PowaAuras.DebuffCatType.Stun] = "Stun",
[PowaAuras.DebuffCatType.Root] = "Root",
[PowaAuras.DebuffCatType.Disarm] = "Disarm",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
-- main
nomEnable = "啓用",
aideEnable = "啓用所有PowerAuras特效",
ListePlayer = "分類",
ListeGlobal = "全局",
aideMove = "移動特效",
aideCopy = "複制特效",
nomRename = "重命名",
aideRename = "重命名我的特效分類名",
nomTest = "測試",
nomHide = "全部隱藏",
nomEdit = "編輯",
nomNew = "新建",
nomDel = "刪除",
nomImport = "Import", --- untranslated
nomExport = "Export", --- untranslated
aideImport = "Paste the Aura String to the editbox and press \'Accept\'", --- untranslated
aideExport = "Copy the Aura String from the editbox to share with others.", --- untranslated
aideDel = "刪除所選特效(必須按住Ctrl鍵才能使用此功能)",
nomMove = "移動",
nomCopy = "複制",
nomPlayerEffects = "我的特效",
nomGlobalEffects = "通用特效",
aideEffectTooltip = "按住Shift鍵點擊圖標以啓用/禁用該特效",
 
-- editor
nomTexture = "當前材質",
aideTexture = "顯示特效使用的材質.你可以修改相應文件夾內的.tga 文件來增加特效",
nomAnim1 = "動畫效果",
nomAnim2 = "輔助效果",
aideAnim1 = "是否爲所選材質使用動畫效果",
aideAnim2 = "此動畫效果以較低不透明度顯示,爲了不過多占用屏幕同一時間隻顯示一個輔助效果",
nomDeform = "變形",
aideDeform = "在高度或寬度方向拉伸材質",
aideColor = "點擊此處修改材質顔色",
aideFont = "Click here to pick Font. Press OK to apply the selection.", --- untranslated
aideMultiID = "Enter here other Aura IDs to combine checks. Multiple IDs must be separated with '/'. Aura ID can be found as [#] on first line of Aura tooltip.", --- untranslated
aideTooltipCheck = "Also check the tooltip starts with this text", --- untranslated
aideBuff = "此處輸入用于激活特效的buff的名字,或名字中的幾個連續文字.如果使用分隔符,也可以輸入多個buff的名字.例如輸入: 能量灌注/奧術能量",
aideBuff2 = "此處輸入用于激活特效的debuff的名字,或名字中的幾個連續文字.如果使用分隔符,也可以輸入多個debuff的名字.例如輸入: 墮落治療/燃燒刺激",
aideBuff3 = "此處輸入用于激活特效的debuff的類型名稱,或名稱中的幾個連續文字.如果使用分隔符,也可以輸入多個debuff類型的名稱.例如輸入: 魔法/詛咒/中毒/疾病",
aideBuff4 = "此處輸入用于激活特效的AOE法術的名字,AOE法術名字可以在戰鬥記錄中找到.例如輸入:邪惡光環/火焰之雨/暴風雪",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)", --- untranslated
aideBuff6 = "此處輸入用于激活特效的連擊點數.例如輸入: 1或者1/2/3或者0/4/5等等自由組合",
aideBuff7 = "此處輸入激活特效的動作條上的動作名,或名字中的幾個連續文字,當此動作完全冷卻時此效果觸發.例如輸入:贊達拉英雄護符/法力之潮圖騰/心靈專注",
aideSpells = "Enter here the Spell Name that will trigger a spell alert Aura.", --- untranslated
aideStacks = "Enter here the operator and the amount of stacks, which must activate/deactivate the effect. It works only with an operator! ex: '<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'", -- untranslated
aideUnitn = "此處輸入用于激活特效的特定成員名稱,必須處于同一團隊",
aideUnitn2 = "僅用于團隊/隊伍模式",
aideMaxTex = "定義特效編輯器使用的材質數量,如果你增加了自定義材質請修改此值.",
aideAddEffect = "新增加一個特效",
aideWowTextures = "使用遊戲內置材質",
aideRealaura = "清晰光環",
aideTextAura = "Check this to type text instead of texture.", --- untranslated
aideCustomTextures = "使用custom文件夾下的自定義材質,例如: Flamme.tga",--- untraslated (needs update to match enGB string)
aideRandomColor = "每次激活時使用隨機顔色",
aideTexMode = "材質透明度反向顯示",
 
nomActivationBy = "激活條件",
nomOwnTex = "Use own Texture", -- untranslated
aideOwnTex = "Use the De/Buff or Ability Texture instead.", -- untranslated
nomStacks = "Stacks", -- untranslated
nomSpeed = "運動速度",
nomBegin = "進場效果",
nomEnd = "結束效果",
nomSymetrie = "對稱性",
nomAlpha = "不透明度",
nomPos = "位置",
nomTaille = "大小",
 
nomCheckBuff = "Buff",
nomCheckDebuff = "Debuff",
nomCheckAoeDebuff = "AOE法術",
nomCheckDebuffType = "Debuff類型",
nomCheckEnchant = "武器強化",
nomCheckCombo = "連擊點數",
nomCheckSkill = "動作冷卻",
nomCheckAggro = "Aggro", -- untranslated
nomCheckPvP = "PvP", -- untranslated
 
nomCheckTarget = "敵方目標",
nomCheckFriend = "友方目標",
nomCheckParty = "團隊目標",
nomCheckFocus = "焦點目標",
nomCheckRaid = "團隊成員",
nomCheckGroupOrSelf = "Raid/Party or self",
nomCheckGroupAny = "Any", --- untranslated
nomCheckOptunitn = "特定成員",
 
aideTarget = "此buff/debuff僅存在于敵方目標上",
aideTargetFriend = "此buff/debuff僅存在于友方目標上",
aideParty = "此buff/debuff僅存在于小隊中",
aideGroupOrSelf = "Check this to test a party or raid member or self.",
aideFocus = "此buff/debuff僅存在焦點目標上",
aideRaid = "此buff/debuff僅存在于團隊中",
aideGroupAny = "Check to test if any party/raid member is buffed. Default (unchecked), all must be buffed.", --- untranslated
aideOptunitn = "此buff/debuff僅存在于團隊/小隊中的特定成員身上",
 
nomCheckShowTimer = "顯示",
nomTimerDuration = "延遲消失",
aideTimerDuration = "目標上的buff/debuff計時器延遲到此時間結束後再消失(0爲禁用)",
aideShowTimer = "爲此效果顯示計時器",
aideSelectTimer = "選擇使用何種計時器來顯示持續時間",
aideSelectTimerBuff = "選擇使用何種計時器來顯示持續時間(僅用于玩家buff)",
aideSelectTimerDebuff = "選擇使用何種計時器來顯示持續時間(僅用于玩家debuff)",
nomCheckInverse = "不存在時激活",
aideInverse = "選中此項後,僅當buff/debuff不存在時顯示此特效",
nomCheckIgnoreMaj = "忽略大小寫",
aideIgnoreMaj = "選中此項將忽略buff/debuff名字的大小寫字母(供英文玩家使用,中國玩家不需要修改此項)",
nomDuration = "延遲消失",
aideDuration = "特效延遲到此時間結束後再消失(0爲禁用)",
nomCentiemes = "顯示百分位",
nomDual = "顯示兩個計時器",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "關閉",
nomEffectEditor = "特效編輯器",
nomAdvOptions = "選項",
nomMaxTex = "最大可用材質",
nomTabAnim = "動畫效果",
nomTabActiv = "激活條件",
nomWowTextures = "使用內置材質",
nomCustomTextures = "使用自定義材質",
nomRealaura = "清晰光環",
nomTextAura = "Text Aura", --- untranslated
nomRandomColor = "隨機顔色",
nomTexMode = "光暈效果",
nomInCombat = "戰鬥狀態",
aideInCombat = "僅當你處于戰鬥狀態時才激活此特效",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomNotInCombat = "非戰鬥狀態",
aideNotInCombat = "僅在非戰鬥狀態時才激活此特效",
 
nomIsMounted = "Only if Mounted", -- untranslated
aideIsMounted = "Checked: Only when on mount. Uncheked: Only when dismounted.", -- untranslated
nomInVehicle = "Only if in Vehicle", -- untranslated
aideInVehicle = "Checked: Only when in vehicle. Uncheked: Only when not in vehicle.", -- untranslated
nomIsInRaid = "Only if in raid", -- untranslated
aideIsInRaid = "Show this effect only when you are in a raid.", -- untranslated
nomResting = "Only if Resting",
aideResting = "Checked: Only when Resting. Uncheked: Only when not Resting.",
};
 
end
 
trunk/PowerAuras/Timers.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/localisation_ruRU.lua New file
0,0 → 1,273
if (GetLocale() == "ruRU") then
 
PowaAuras.Anim[0] = "[Cкрытый]";
PowaAuras.Anim[1] = "Статический";
PowaAuras.Anim[2] = "Мигание";
PowaAuras.Anim[3] = "Увеличение";
PowaAuras.Anim[4] = "Пульсация";
PowaAuras.Anim[5] = "Пузыриться";
PowaAuras.Anim[6] = "Капанье воды";
PowaAuras.Anim[7] = "Электрический";
PowaAuras.Anim[8] = "Стягивание";
PowaAuras.Anim[9] = "Огонь";
PowaAuras.Anim[10] = "Вращаться";
 
 
PowaAuras.BeginAnimDisplay[0] = "[Нету]";
PowaAuras.BeginAnimDisplay[1] = "Увеличить масштаб";
PowaAuras.BeginAnimDisplay[2] = "Уменьшить масштаб";
PowaAuras.BeginAnimDisplay[3] = "Только матовость";
PowaAuras.BeginAnimDisplay[4] = "Слева";
PowaAuras.BeginAnimDisplay[5] = "Вверху-слева";
PowaAuras.BeginAnimDisplay[6] = "Вверху";
PowaAuras.BeginAnimDisplay[7] = "Вверху-справа";
PowaAuras.BeginAnimDisplay[8] = "Справа";
PowaAuras.BeginAnimDisplay[9] = "Внизу-справа";
PowaAuras.BeginAnimDisplay[10] = "Внизу";
PowaAuras.BeginAnimDisplay[11] = "Внизу-слева";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[Нету]";
PowaAuras.EndAnimDisplay[1] = "Увеличить масштаб";
PowaAuras.EndAnimDisplay[2] = "Уменьшить масштаб";
PowaAuras.EndAnimDisplay[3] = "Только матовость";
 
 
PowaAuras.Sound[0] = "Нету";
PowaAuras.Sound[1] = "LEVELUP";
PowaAuras.Sound[2] = "LOOTWINDOWCOINSOUND";
PowaAuras.Sound[3] = "MapPing";
PowaAuras.Sound[4] = "Exploration";
PowaAuras.Sound[5] = "QUESTADDED";
PowaAuras.Sound[6] = "QUESTCOMPLETED";
PowaAuras.Sound[7] = "WriteQuest";
PowaAuras.Sound[8] = "Fishing Reel in";
PowaAuras.Sound[9] = "igPVPUpdate";
PowaAuras.Sound[10] = "ReadyCheck";
PowaAuras.Sound[11] = "RaidWarning";
PowaAuras.Sound[12] = "AuctionWindowOpen";
PowaAuras.Sound[13] = "AuctionWindowClose";
PowaAuras.Sound[14] = "TellMessage";
PowaAuras.Sound[15] = "igBackPackOpen";
 
 
PowaAuras.Text = {
welcome = "Для просмотра настроек введите /powa.",
 
aucune = "Нету",
aucun = "Нету",
largeur = "Ширина",
hauteur = "Высота",
mainHand = "правая",
offHand = "левая",
bothHands = "Обе",
 
DebuffType =
{
Magic = "Магия",
Disease = "Болезнь",
Curse = "Проклятие",
Poison = "Яд",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "Контроль",
[PowaAuras.DebuffCatType.Silence] = "Молчание",
[PowaAuras.DebuffCatType.Snare] = "Ловушка",
[PowaAuras.DebuffCatType.Stun] = "Оглушение",
[PowaAuras.DebuffCatType.Root] = "Корни",
[PowaAuras.DebuffCatType.Disarm] = "Разоружение",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
-- main
nomEnable = "Активировать Power Auras",
aideEnable = "Включить все эффекты Power Auras",
nomDebug = "Активировать сообщения отладки",
aideDebug = "Включить сообщения отладки",
ListePlayer = "Страница",
ListeGlobal = "Глобальное",
aideMove = "Переместить эффект сюда.",
aideCopy = "Копировать эффект сюда.",
nomRename = "Переименовать",
aideRename = "Переименовать выбранную страницу эффектов.",
nomTest = "Тест",
nomHide = "Скрыть все",
nomEdit = "Править",
nomNew = "Новое",
nomDel = "Удалить",
nomImport = "Импорт",
nomExport = "Экспорт",
aideImport = "Нажмите Ctrl-V чтобы вставить строку-ауры и нажмите \'Принять\'",
aideExport = "Нажмите Ctrl-C чтобы скопировать строку-ауры.",
aideDel = "Удалить выбранный эффект (Чтобы кнопка заработала, удерживайте CTRL)",
nomMove = "Переместить",
nomCopy = "Копировать",
nomPlayerEffects = "Эффекты персонажа",
nomGlobalEffects = "Глобальные\nэффекты",
aideEffectTooltip = "([Shift-клик] - вкл/выкл эффект)",
 
-- editor
nomSound = "Проигрываемый звук",
aideSound = "Проиграть звук при начале.",
nomCustomSound = "или звуковой файл:",
aideCustomSound = "Введите название звукового файла, который поместили в папку Sounds, ПРЕЖДЕ чем запустили игру. Поддерживаются mp3 и WAV. Например: 'cookie.mp3' ;)",
 
nomTexture = "Текстура",
aideTexture = "Выбор отображаемой текстуры. Вы можете легко заменить текстуры путем изменения файлов Aura#.tga в директории модификации.",
 
nomAnim1 = "Главная анимация",
nomAnim2 = "Вторичная анимация",
aideAnim1 = "Оживить текстуры или нет, с различными эффектами.",
aideAnim2 = "Эта анимация будет показана с меньшей прозрачностью, чем основная анимация. Внимание, чтобы не перегружать экран, в одно и то же время будет показана только одна вторичная анимация.",
 
nomDeform = "Деформация",
aideDeform = "Вытягивание текстуры по ширине или по высоте.",
 
aideColor = "Кликните тут, чтобы изменить цвет текстуры.",
aideFont = "Нажмите сюда, чтобы выбрать шрифт. Нажмите OK, чтобы применить выбранное.",
aideMultiID = "Здесь введите идентификаторы (ID) других аур для объединения проверки. Несколько ID должны разделяться с помощью '/'. ID аура можно найти в виде [#], в первой строке подсказки ауры. А лучше на http://ru.wowhead.com",
aideTooltipCheck = "Also check the tooltip starts with this text",
 
aideBuff = "Здесь введите название баффа, или часть названия, который должен активировать/дезактивировать эффект. Вы можете ввести несколько названий, если они порядочно разделены (К примеру: Супер бафф/Сила)",
aideBuff2 = "Здесь введите название дебаффа, или часть названия, который должен активировать/дезактивировать эффект. Вы можете ввести несколько названий, если они порядочно разделены (К примеру: Тёмная болезнь/Чума)",
aideBuff3 = "Здесь введите тип дебаффа, который должен активировать/дезактивировать эффект (Яд, Болезнь, Проклятие, Магия или отсутствует). Вы также можете ввести несколько типов дебаффов.",
aideBuff4 = "Enter here the name of area of effect that must trigger this effect (like a rain of fire for example, the name of this AOE can be found in the combat log)",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)",
aideBuff6 = "Вы можете ввести количество приёмов в серии, которое активирует данный эффект (пример : 1 или 1/2/3 или 0/4/5 и т.д...) ",
aideBuff7 = "Здесь введите название или часть названия, какого-либо действия с ваших понелей команд. Эффект активируется при использовании этого действия.",
 
aideSpells = "Здесь введите название способности, которое вызовет оповещение.",
aideStacks = "Здесь введите оператор и значение стопки, которые должны активировать/дезактивировать эффект. Это работает только с оператором! К примеру: '<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'",
 
aideUnitn = "Здесь введите название существа/игрока, который должен активировать/дезактивировать эффект. Можно ввести только имена, если они находятся в вашей группе или рейде.",
aideUnitn2 = "Только в группе/рейде.",
 
aideMaxTex = "Define the maximum number of textures available on the Effect Editor. If you add textures on the Mod directory (with the names AURA1.tga to AURA50.tga), you must indicate the correct number here.",
aideAddEffect = "Add an effect for edition.",
aideWowTextures = "Check this to use the texture of WoW instead of textures in the Power Auras directory for this effect.",
aideCustomTextures = "Check this to use textures in the 'Custom' subdirectory. Put the name of the texture below (ex: myTexture.tga). You can also use a Spell Name (ex: Feign Death) or SpellID (ex: 5384).",
aideTextAura = "Отметив тут, вы можете ввести используемый текст вместо текстуры.",
aideRealaura = "Реальная аура",
aideRandomColor = "Отметив это, вы устанавливаете использование случайного цвета каждый раз при активации эффекта.",
aideTexMode = "Uncheck this to use the texture opacity. By default, the darkest colors will be more transparent.",
 
 
nomActivationBy = "Активация :",
nomOwnTex = "Своя текстуру",
aideOwnTex = "Используйте Де/Бафф или способность вместо текстур.",
nomStacks = "Сумма",
nomSpeed = "Скорость анимации",
nomBegin = "Начало анимации",
nomEnd = "Конец анимации",
nomSymetrie = "Симметрия",
nomAlpha = "Прозрачность",
nomPos = "Позиция",
nomTaille = "Размер",
nomExact = "Точное название",
nomGCD = "Глоб. Восстанов.",
nomThreshold = "Порог",
nomStance = "Стойка",
aideThreshInv = "Инверсия логики порога значений. Здоровье/Мана: по умолчанию = сообщать при малом количестве / отмечено = сообщать при большем количестве. Энергия/Ярость/Сила: по умолчанию = сообщать при большем количестве / отмечено = сообщать при малом количестве",
nomThreshInv = "</>",
nomMine = "Применяемое мною",
nomDispellable = "Могу рассеять",
 
nomCheckBuff = "Бафф",
nomCheckDebuff = "Дебафф",
nomCheckAoeDebuff = "Масс дебафф",
nomCheckDebuffType = "Тип дебаффов",
nomCheckEnchant = "Усиление оружия",
nomCheckCombo = "Приёмы в серии",
nomCheckSkill = "Применимое действие",
nomCheckHealth = "Здоровье",
nomCheckMana = "Мана",
nomCheckRageEnergy = "Ярость/Энергия/Руны",
nomCheckAggro = "Угроза",
nomCheckPvP = "PvP",
nomCheckStance = "Стойка",
nomCheckSpells = "Оповещение о заклинаниях",
nomCheckOwnSpell = "Spell from my Spellbook",
 
nomCheckTarget = "Враждебная цель",
nomCheckFriend = "Дружелюбная цель",
nomCheckParty = "Участник группы",
nomCheckFocus = "Фокус",
nomCheckRaid = "Участник рейда",
nomCheckGroupOrSelf = "Рейд/Группу или себя",
nomCheckGroupAny = "Любой",
nomCheckOptunitn = "Название юнита",
 
aideTarget = "Отметив это, будет происходить проверка только враждебной цели.",
aideTargetFriend = "Отметив это, будет происходить проверка только дружеской цели.",
aideParty = "Отметив это, будет происходить проверка только участников группы.",
aideGroupOrSelf = "Отметив это, будет происходить проверка группы или рейда или вас.",
aideFocus = "Отметив это, будет происходить проверка только фокуса.",
aideRaid = "Отметив это, будет происходить проверка только участника рейда.",
aideGroupAny = "Отметив это, будет происходить проверка баффов у 'любого' участника группы/рейда. Без отметки: Будет подразумеваться что 'Все' об баффаны.",
aideOptunitn = "Отметив это, будет происходить проверка только определённого персонажа у группе/рейде.",
aideExact = "Отметив это, будет происходить проверка точного названия баффа/дебаффа/действия.",
aideGCD = "Check this and the Global Cooldown triggers with aura. May cause blinking the aura, when an action only has a Global Cooldown.",
aideStance = "Выберите в какая стойка, форма или аура вызовет событие.",
aideMine = "Отметив это, будет происходить проверка только баффов/дебаффав применяемых игроком.",
 
nomCheckShowTimer = "Показать",
nomTimerDuration = "Длительность",
aideTimerDuration = "Отображать таймер симулирующий длительность баффа/дебаффа на цели (0 - дезактивировать)",
aideShowTimer = "Отображение таймера для этого эффекта.",
aideSelectTimer = "Select which timer will show the duration",
aideSelectTimerBuff = "Select which timer will show the duration (this one is reserved for player's buffs)",
aideSelectTimerDebuff = "Select which timer will show the duration (this one is reserved for player's debuffs)",
 
nomCheckInverse = "Показать когда неактивен",
aideInverse = "Отображение этого эффекта только когда бафф/дебафф неактивен.",
 
nomCheckIgnoreMaj = "Игнор регистра строчных букв",
aideIgnoreMaj = "Если отметите это, будет игнорироваться верхний/нижний регистр строчных букв в названиях баффов/дебаффов.",
 
nomDuration = "Длина анимации:",
aideDuration = "После истечения этого времени, данный эффект исчезнет (0 - дезактивировать)",
 
nomCentiemes = "Показ сотую часть",
nomDual = "Показ 2 таймера",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "Закрыть",
nomEffectEditor = "Редактор эффектов",
nomAdvOptions = "Опции",
nomMaxTex = "Доступно максимум текстур",
nomTabAnim = "Анимация",
nomTabActiv = "Активация",
nomTabSound = "Звук",
nomTabTimer = "Таймер",
nomWowTextures = "Текстуры WoW",
nomCustomTextures = "Свои текстуры",
nomTextAura = "Текст ауры",
nomRealaura = "Реальные ауры",
nomRandomColor = "Случайные цвета",
nomTexMode = "Сияние",
nomInCombat = "Только в бою",
aideInCombat = "Отображать данный эффект только когда вы в бою.",
nomTalentGroup1 = "Спек 1",
aideTalentGroup1 = "Отображать данный эффект только когда у вас активирован основной набор талантов.",
nomTalentGroup2 = "Спек 2",
aideTalentGroup2 = "Отображать данный эффект только когда у вас активирован второстепенный набор талантов.",
nomTalentGroup1 = "Спек 1",
aideTalentGroup1 = "Отображать данный эффект только когда у вас активирован основной набор талантов.",
nomTalentGroup2 = "Спек 2",
aideTalentGroup2 = "Отображать данный эффект только когда у вас активирован второстепенный набор талантов.",
nomNotInCombat = "Только вне боя",
aideNotInCombat = "Отображать данный эффект только когда вы НЕ в бою.",
nomIsMounted = "Транспорт",
aideIsMounted = "Отмечено: Только когда на ездовом транспорте. Не отмечено: Только когда НЕ на ездавом транспорте.",
nomInVehicle = "Только в транспорте",
aideInVehicle = "Отмечено: Только когда в/на транспорте.\nНе отмечено: Только когда НЕ в/на транспорте.",
nomIsInRaid = "Только в рейде",
aideIsInRaid = "Отображать данный эффект только когда вы в рейде.",
nomResting = "Только отдыхая",
aideResting = "Отмечено: Только когда вы отдыхаете. Не отмечено: Только когда вы НЕ отдыхаете.",
};
 
end
 
trunk/PowerAuras/localisation_deDE.lua New file
0,0 → 1,266
if (GetLocale() == "deDE") then
 
PowaAuras.Anim[0] = "[Nichts]";
PowaAuras.Anim[1] = "Statisch";
PowaAuras.Anim[2] = "Blitzend";
PowaAuras.Anim[3] = "Wachsend";
PowaAuras.Anim[4] = "Pulsierend";
PowaAuras.Anim[5] = "Blase";
PowaAuras.Anim[6] = "Wassertropfen";
PowaAuras.Anim[7] = "Electrisch";
PowaAuras.Anim[8] = "Schrumpfend";
PowaAuras.Anim[9] = "Flamme";
PowaAuras.Anim[10] = "Orbit";
 
PowaAuras.BeginAnimDisplay[0] = "[None]";
PowaAuras.BeginAnimDisplay[1] = "Reinzoomend";
PowaAuras.BeginAnimDisplay[2] = "Rauszoomend";
PowaAuras.BeginAnimDisplay[3] = "Nur Alpha";
PowaAuras.BeginAnimDisplay[4] = "Links";
PowaAuras.BeginAnimDisplay[5] = "Obenlinks";
PowaAuras.BeginAnimDisplay[6] = "Oben";
PowaAuras.BeginAnimDisplay[7] = "Obenrechts";
PowaAuras.BeginAnimDisplay[8] = "Rechts";
PowaAuras.BeginAnimDisplay[9] = "Untenrechts";
PowaAuras.BeginAnimDisplay[10] = "Unten";
PowaAuras.BeginAnimDisplay[11] = "Untenlinks";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[None]";
PowaAuras.EndAnimDisplay[1] = "Reinzoomend";
PowaAuras.EndAnimDisplay[2] = "Rauszoomend";
PowaAuras.EndAnimDisplay[3] = "Nur Alpha";
 
PowaAuras.Sound[0] = "Kein";
PowaAuras.Sound[1] = "LEVELUP";
PowaAuras.Sound[2] = "LOOTWINDOWCOINSOUND";
PowaAuras.Sound[3] = "MapPing";
PowaAuras.Sound[4] = "Exploration";
PowaAuras.Sound[5] = "QUESTADDED";
PowaAuras.Sound[6] = "QUESTCOMPLETED";
PowaAuras.Sound[7] = "WriteQuest";
PowaAuras.Sound[8] = "Fishing Reel in";
PowaAuras.Sound[9] = "igPVPUpdate";
PowaAuras.Sound[10] = "ReadyCheck";
PowaAuras.Sound[11] = "RaidWarning";
PowaAuras.Sound[12] = "AuctionWindowOpen";
PowaAuras.Sound[13] = "AuctionWindowClose";
PowaAuras.Sound[14] = "TellMessage";
PowaAuras.Sound[15] = "igBackPackOpen";
 
PowaAuras.Text = {
welcome = "Gib /powa ein, um die Optionen zu öffnen.",
 
aucune = "Nichts",
aucun = "Nichts",
largeur = "Breite",
hauteur = "Höhe",
mainHand = "Waffenhand",
offHand = "Schildhand",
bothHands = "beide",
 
DebuffType =
{
Magic = "Magie",
Disease = "Disease",
Curse = "Fluch",
Poison = "Gift",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "CC",
[PowaAuras.DebuffCatType.Silence] = "Silence",
[PowaAuras.DebuffCatType.Snare] = "Snare",
[PowaAuras.DebuffCatType.Stun] = "Stun",
[PowaAuras.DebuffCatType.Root] = "Root",
[PowaAuras.DebuffCatType.Disarm] = "Disarm",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
 
-- main
nomEnable = "Aktiviere Power Auras",
aideEnable = "Alle Power Auras Effekte einschalten",
nomDebug = "Aktiviere Debug Meldungen",
aideDebug = "Zeigt Debug Meldungen im Chatfenster",
ListePlayer = "Char",
ListeGlobal = "Global",
aideMove = "Effekt hierher verschieben.",
aideCopy = "Effekt hierher kopieren.",
nomRename = "Umbenennen",
aideRename = "Seitentitel umbenennen.",
nomTest = "Test",
nomHide = "Alle ausblenden",
nomEdit = "Editieren",
nomNew = "Neu",
nomDel = "Löschen",
nomImport = "Import", --- untranslated
nomExport = "Export", --- untranslated
aideImport = "Paste the Aura String to the editbox and press \'Accept\'", --- untranslated
aideExport = "Copy the Aura String from the editbox to share with others.", --- untranslated
aideDel = "Löscht den ausgewählten Effekt.(Halte CTRL gedrückt, um zu löschen)",
nomMove = "Verschieben",
nomCopy = "Kopieren",
nomPlayerEffects = "Charakter Effekte",
nomGlobalEffects = "Globale\nEffekte",
aideEffectTooltip = "(Shift-Klick um Effekt ein oder auszuschalten.)",
 
-- editor
nomSound = "Sound abspielen:",
aideSound = "Spielt einen Sound am Anfang ab.",
nomCustomSound = "ODER Sounddatei:",
aideCustomSound = "Dateiname eingeben der Sounddatei, die VOR dem WoW Starten im Sounds Verzeichniss war. mp3 und wav werden unterstützt. Bsp.: 'cookie.mp3' ;)",
 
nomTexture = "Grafik",
aideTexture = "Die Aura die angezeigt werden soll.",
nomAnim1 = "Hauptanimation",
nomAnim2 = "Zweitanimation",
aideAnim1 = "Animiere die Aura oder nicht.",
aideAnim2 = "Diese Animation wird mit weniger Staerke angezeigt als die Hauptanimation. Wegen möglicher Überladung der Grafik.",
nomDeform = "Deformation",
aideDeform = "Strecke die Animation in Höhe und Breite.",
aideColor = "Klicken, um die Farbe zu ändern.",
aideFont = "Click here to pick Font. Press OK to apply the selection.", --- untranslated
aideMultiID = "Enter here other Aura IDs to combine checks. Multiple IDs must be separated with '/'. Aura ID can be found as [#] on first line of Aura tooltip.", --- untranslated
aideTooltipCheck = "Also check the tooltip starts with this text", --- untranslated
aideBuff = "Gib hier den Namen oder einen Teil vom Namen des Buff ein, der die Aura ein und ausschalten soll. Mit einem Slash können mehrere Namen getrennt werden. (Bsp.: Super Buff/Power)",
aideBuff2 = "Gib hier den Namen oder einen Teil vom Namen des Debuff ein, der die Aura ein und ausschalten soll. Mit einem Slash können mehrere Namen getrennt werden. (Bsp: Dark Disease/Plague)",
aideBuff3 = "Gib hier den Typ(Gift, Disease, Fluch, Magie or Nichts) des Debuff ein, der die Aura ein und ausschalten soll. Mit einem Slash können mehrere Typen getrennt werden.",
aideBuff4 = "Gib hier den Namen der Area of Effect(AoE) ein, der die Aura ein oder ausschalten soll. Der Name einer AoE steht im Kampflog.",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)", --- untranslated
aideBuff6 = "Gib hier die Anzahl Kombopunkte ein, um die Aura ein oder auszuschalten (Bsp.: 1 oder 1/2/3 oder 0/4/5 usw...) ",
aideBuff7 = "Gib hier einen Namen oder einen Teil davon einer Aktion auf deiner Aktionsleiste ein, um diese auf Benutzbarkeit zu überprüfen. (Bsp.: Hinrichten, Fass, Rache, Überwältigen,...",
 
aideSpells = "Enter here the Spell Name that will trigger a spell alert Aura.", --- untranslated
aideStacks = "Gib hier den Vergleicher und die Anzahl Stapel ein des De/Buffs. Oder einfach freilassen, wenn nicht stapelbar. Es geht nur MIT einem Vergleicher! Bsp: '<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'",
 
aideUnitn = "Gib hier den Namen des Spielers ein, welcher überwacht werden soll. Funktioniert nur mit Spieler innerhalb des Raids oder der Gruppe.",
aideUnitn2 = "Only for raid/group.",
aideMaxTex = "Definiert die Texturanzahl die im Editor zur Verfügung stehen. Wenn Texturen im PowerAuras Verzeichniss hinzugefügt wurden (mit den Namen AURA1.tga bis AURA50.tga), muss hier die letzte Zahl eingetragen werden.",
aideAddEffect = "Fügt ein Effekt zum bearbeiten hinzu.",
aideWowTextures = "Aktivieren um die WoW-Grafiken anstatt die Grafiken im PowerAuras Verzeichniss zu verwenden.",
aideRealaura = "Reale Aura",
aideTextAura = "Check this to type text instead of texture.", -- untranslated
aideCustomTextures = "Aktivieren um die Grafiken im 'Custom' Verzeichniss zu verwenden. Du musst den Dateinamen der Grafik eintragen (Bsp.: myTexture.tga)",--- untraslated (needs update to match enGB string)
aideRandomColor = "Aktivieren um jedesmal wenn die Aura aktiviert wird eine zufällige Farbe zu erhalten.",
aideTexMode = "Uncheck this to use the texture opacity. By default, the darkest colors will be more transparent.",
 
nomActivationBy = "Aktiv wenn:",
 
nomStacks = "Stacks",
 
nomSpeed = "Animations Tempo",
nomBegin = "Animations Start",
nomEnd = "Animations Ende",
nomSymetrie = "Symetrie",
nomAlpha = "Alpha",
nomPos = "Position",
nomTaille = "Grösse",
 
nomExact = "Exakter Name",
nomThreshold = "Schwellwert",
nomGCD = "Global Cooldown",
aideThreshInv = "Check this to invert the threshold logic. Health/Mana: default = Low Warning / checked = High Warning. Energy/Rage/Power: default = High Warning / checked = Low Warning", --- untranslated
nomThreshInv = "</>",
 
nomMine = "Cast by me", --- untranslated
nomDispellable = "I can dispell",
 
nomStance = "Haltung",
aideStance = "Kampfhaltung auswählen, die die Aura aktiviert.",
 
nomOwnTex = "Use own Texture", -- untranslated
aideOwnTex = "Use the De/Buff or Ability Texture instead.", -- untranslated
nomCheckBuff = "Buff",
nomCheckDebuff = "Debuff",
nomCheckAoeDebuff = "AOE Debuff",
nomCheckDebuffType = "Debuff Typ",
nomCheckEnchant = "Waffenbuffs",
nomCheckCombo = "Kombo Punkte",
nomCheckSkill = "Aktion benutzbar",
nomCheckHealth = "Leben",
nomCheckMana = "Mana",
nomCheckRageEnergy = "Rage/Energy/Runic", -- untranslated
nomCheckAggro = "Aggro", -- untranslated
nomCheckPvP = "PvP", -- untranslated
nomCheckStance = "Haltung",
nomCheckSpells = "Spell Alert", --- untranslated
nomCheckOwnSpell = "Spell from my Spellbook",
 
nomCheckTarget = "Feindliches Ziel",
nomCheckFriend = "Freundliches Ziel",
nomCheckParty = "Gruppenmitglied",
nomCheckFocus = "Focus",
nomCheckRaid = "Raidmitglied",
nomCheckGroupOrSelf = "Raid/Party or self",
nomCheckGroupAny = "Any", --- untranslated
nomCheckOptunitn = "Charname",
 
aideTarget = "Aktivieren um feindliches Ziel zu überwachen.",
aideTargetFriend = "Aktivieren um freundliches Ziel zu überwachen.",
aideParty = "Aktivieren um Gruppenmitglieder zu überwachen.",
aideGroupOrSelf = "Check this to test a party or raid member or self.",
aideFocus = "Aktivieren um das Focusziel zu überwachen.",
aideRaid = "Aktivieren um Raidmitglieder zu überwachen.",
aideGroupAny = "Checked: Test if 'Any' party/raid member is buffed. Default (unchecked): 'All' must be buffed.", --- untranslated
aideExact = "Aktivieren um den EXAKTEN Namen des Buffes zu überwachen.",
aideOptunitn = "Aktivieren um einen bestimmten Char in der Raid/Gruppe zu überwachen.",
aideGCD = "Aktivieren um den Globalen Cooldown mit einzubeziehen, wenn 'Aktion benutzbar' gewählt ist. Kann zu einem blinken der Aura führen, wenn die Aktion nur einen Globalen Cooldown hat.",
aideMine = "Check this to test only buffs/debuffs cast by the player", --- untranslated
 
nomCheckShowTimer = "Zeigen",
nomTimerDuration = "Dauer",
aideTimerDuration = "Zeigt eine Buff/Debuff Dauer. (0 um zu daktivieren)",
aideShowTimer = "Aktivieren um den Timer zu zeigen.",
aideSelectTimer = "Auswählen welcher Timer die Dauer anzeigen soll.",
aideSelectTimerBuff = "Auswählen welcher Timer die Dauer anzeigen soll (this one is reserved for player's buffs)",
aideSelectTimerDebuff = "Auswählen welcher Timer die Dauer anzeigen soll (this one is reserved for player's debuffs)",
 
nomCheckInverse = "Zeige wenn NICHT aktiv",
aideInverse = "Aktivieren um die Aura nur zu zeigen wenn der Buff/Debuff NICHT aktiv ist.",
 
nomCheckIgnoreMaj = "Ignoriere Gross/Kleinschreibung",
aideIgnoreMaj = "Aktivieren um die Gross/Kleinschreibung bei Buff/Debuff-Namen zu ignorieren.",
 
nomDuration = "Animationsdauer",
aideDuration = "Nach dieser Zeit wird die Aura verschwinden (0 um zu daktivieren)",
 
nomCentiemes = "Zeige hundertstel",
nomDual = "Zeige 2 Timer",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "Schliessen",
nomEffectEditor = "Effekt Editor",
nomAdvOptions = "Optionen",
nomMaxTex = "Maximum Texturen verfügbar",
nomTabAnim = "Animation",
nomTabActiv = "Aktivierung",
nomTabSound = "Sound",
nomTabTimer = "Timer",
nomWowTextures = "WoW Texturen",
nomCustomTextures = "Custom Texturen",
nomTextAura = "Text Aura", --- untranslated
nomRealaura = "Reale Aura",
nomRandomColor = "Zufällige Farben",
nomTexMode = "Glühen",
nomInCombat = "Nur wenn im Kampf.",
aideInCombat = "Zeigt diese Aura nur im Kampf.",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomNotInCombat = "Nur wenn nicht im Kampf",
aideNotInCombat = "Zeigt diese Aura nur wenn nicht im Kampf.",
nomIsMounted = "Nur wenn auf Reittier.",
aideIsMounted = "Zeigt diese Aura nur wenn man auf einem Reittier sitzt.",
nomInVehicle = "Only if in Vehicle", -- untranslated
aideInVehicle = "Checked: Only when in vehicle. Uncheked: Only when not in vehicle.", -- untranslated
nomIsInRaid = "Nur wenn im Raid.",
aideIsInRaid = "Zeigt diese Aura nur wenn im Raid.",
nomResting = "Only if Resting",
aideResting = "Checked: Only when Resting. Uncheked: Only when not Resting.",
};
 
end
 
trunk/PowerAuras/localisation_zhCN.lua New file
0,0 → 1,267
if (GetLocale() == "zhCN") then
PowaAuras.Anim[0] = "[无]";
PowaAuras.Anim[1] = "静止";
PowaAuras.Anim[2] = "闪光效果";
PowaAuras.Anim[3] = "生长效果";
PowaAuras.Anim[4] = "脉冲效果";
PowaAuras.Anim[5] = "气泡效果";
PowaAuras.Anim[6] = "水滴效果";
PowaAuras.Anim[7] = "漏电效果";
PowaAuras.Anim[8] = "收缩效果";
PowaAuras.Anim[9] = "火焰效果";
PowaAuras.Anim[10] = "盘旋效果";
 
PowaAuras.BeginAnimDisplay[0] = "[无]";
PowaAuras.BeginAnimDisplay[1] = "放大进入";
PowaAuras.BeginAnimDisplay[2] = "缩小进入";
PowaAuras.BeginAnimDisplay[3] = "改变透明度";
PowaAuras.BeginAnimDisplay[4] = "左边进入";
PowaAuras.BeginAnimDisplay[5] = "左上进入";
PowaAuras.BeginAnimDisplay[6] = "上部进入";
PowaAuras.BeginAnimDisplay[7] = "右上进入";
PowaAuras.BeginAnimDisplay[8] = "右边进入";
PowaAuras.BeginAnimDisplay[9] = "右下进入";
PowaAuras.BeginAnimDisplay[10] = "下部进入";
PowaAuras.BeginAnimDisplay[11] = "左下进入";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[无]";
PowaAuras.EndAnimDisplay[1] = "放大进入";
PowaAuras.EndAnimDisplay[2] = "缩小进入";
PowaAuras.EndAnimDisplay[3] = "改变透明度";
 
PowaAuras.Sound[0] = "[无]";
PowaAuras.Sound[1] = "升级音效";
PowaAuras.Sound[2] = "抬取金币";
PowaAuras.Sound[3] = "飞过";
PowaAuras.Sound[4] = "探索新地图";
PowaAuras.Sound[5] = "接到任务";
PowaAuras.Sound[6] = "任务完成";
PowaAuras.Sound[7] = "写任务";
PowaAuras.Sound[8] = "钓鱼";
PowaAuras.Sound[9] = "PVP事件";
PowaAuras.Sound[10] = "团队检查";
PowaAuras.Sound[11] = "团队警告";
PowaAuras.Sound[12] = "打开拍卖行";
PowaAuras.Sound[13] = "关闭拍卖行";
PowaAuras.Sound[14] = "消消话";
PowaAuras.Sound[15] = "打开背包";
 
PowaAuras.Text = {
 
nomDebug = "调试模式",
aideDebug = "打开调试模式后,将在聊天窗口显示特效的触发条件等信息",
 
nomStance = "姿态",
aideStance = "选择用于触发特效的姿态",
 
nomCustomSound = "自定义声音文件:",
 
nomTabSound = "声音",
nomTabTimer = "计时器",
 
welcome = "输入 /powa 打开特效编辑器.",
 
aucune = "无",
aucun = "无",
largeur = "宽度",
hauteur = "高度",
mainHand = "主手",
offHand = "副手",
bothHands = "双手",
 
DebuffType =
{
Magic = "魔法",
Disease = "疾病",
Curse = "诅咒",
Poison = "中毒",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "CC",
[PowaAuras.DebuffCatType.Silence] = "Silence",
[PowaAuras.DebuffCatType.Snare] = "Snare",
[PowaAuras.DebuffCatType.Stun] = "Stun",
[PowaAuras.DebuffCatType.Root] = "Root",
[PowaAuras.DebuffCatType.Disarm] = "Disarm",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
-- main
nomEnable = "启用",
aideEnable = "启用/禁用所有PowerAuras特效",
 
ListePlayer = "分类",
ListeGlobal = "全局",
aideMove = "移动特效",
aideCopy = "复制特效",
nomRename = "重命名",
aideRename = "重命名我的特效分类名",
nomTest = "测试",
nomHide = "全部隐藏",
nomEdit = "编辑",
nomNew = "新建",
nomDel = "删除",
nomImport = "Import", --- untranslated
nomExport = "Export", --- untranslated
aideImport = "Paste the Aura String to the editbox and press \'Accept\'", --- untranslated
aideExport = "Copy the Aura String from the editbox to share with others.", --- untranslated
aideDel = "删除所选特效(必须按住Ctrl键才能使用此功能)",
nomMove = "移动",
nomCopy = "复制",
nomPlayerEffects = "我的特效",
nomGlobalEffects = "通用特效",
aideEffectTooltip = "按住Shift键点击图标以启用/禁用该特效",
 
-- editor
nomTexture = "当前材质",
aideTexture = "显示特效使用的材质.你可以修改相应文件夹内的.tga 文件来增加特效",
nomAnim1 = "动画效果",
nomAnim2 = "辅助效果",
aideAnim1 = "是否为所选材质使用动画效果",
aideAnim2 = "此动画效果以较低不透明度显示,为了不过多占用屏幕同一时间只显示一个辅助效果",
nomDeform = "变形",
aideDeform = "在高度或宽度方向拉伸材质",
aideColor = "点击此处修改材质颜色",
aideFont = "Click here to pick Font. Press OK to apply the selection.", --- untranslated
aideMultiID = "Enter here other Aura IDs to combine checks. Multiple IDs must be separated with '/'. Aura ID can be found as [#] on first line of Aura tooltip.", --- untranslated
aideTooltipCheck = "Also check the tooltip starts with this text", --- untranslated
aideBuff = "此处输入用于激活特效的buff的名字,或名字中的几个连续文字.如果使用分隔符,也可以输入多个buff的名字.例如输入: 能量灌注/奥术能量",
aideBuff2 = "此处输入用于激活特效的debuff的名字,或名字中的几个连续文字.如果使用分隔符,也可以输入多个debuff的名字.例如输入: 堕落治疗/燃烧刺激",
aideBuff3 = "此处输入用于激活特效的debuff的类型名称,或名称中的几个连续文字.如果使用分隔符,也可以输入多个debuff类型的名称.例如输入: 魔法/诅咒/中毒/疾病",
aideBuff4 = "此处输入用于激活特效的AOE法术的名字,AOE法术名字可以在战斗记录中找到.例如输入:邪恶光环/火焰之雨/暴风雪",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)", --- untranslated
aideBuff6 = "此处输入用于激活特效的连击点数.例如输入: 1或者1/2/3或者0/4/5等等自由组合",
aideBuff7 = "此处输入激活特效的动作条上的动作名,或名字中的几个连续文字,当此动作完全冷却时此效果触发.例如输入:赞达拉英雄护符/法力之潮图腾/心灵专注",
 
aideSpells = "Enter here the Spell Name that will trigger a spell alert Aura.", --- untranslated
aideStacks = "输入用于激活特效的操作符及叠加数量,只能输入一个操作符,例如:'<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'",
 
aideUnitn = "此处输入用于激活特效的特定成员名称,必须处于同一团队",
aideUnitn2 = "仅用于团队/队伍模式",
aideMaxTex = "定义特效编辑器使用的材质数量,如果你增加了自定义材质请修改此值.",
aideAddEffect = "新增加一个特效",
aideWowTextures = "使用游戏内置材质",
aideTextAura = "Check this to type text instead of texture.", --- untranslated
aideRealaura = "清晰光环",
aideCustomTextures = "使用custom文件夹下的自定义材质,例如: Flamme.tga",--- untraslated (needs update to match enGB string)
aideRandomColor = "每次激活时使用随机颜色",
aideTexMode = "材质透明度反向显示",
 
nomActivationBy = "激活条件",
nomOwnTex = "使用技能图标",
aideOwnTex = "使用buff/debuff或技能的默认图标做为材质",
nomStacks = "叠加",
 
nomSpeed = "运动速度",
nomBegin = "进场效果",
nomEnd = "结束效果",
nomSymetrie = "对称性",
nomAlpha = "不透明度",
nomPos = "位置",
nomTaille = "大小",
nomExact = "精确匹配名称",
nomThreshold = "触发极限",
aideThreshInv = "Check this to invert the threshold logic. Health/Mana: default = Low Warning / checked = High Warning. Energy/Rage/Power: default = High Warning / checked = Low Warning", --- untranslated
nomThreshInv = "</>",
 
nomGCD = "公共冷却",
aideGCD = "选中此项后'动作冷却'功能将检测公共冷却.需要注意的是,如果一个技能只有公共冷却则会引起光环特效闪烁",
 
nomMine = "Cast by me", --- untranslated
nomDispellable = "I can dispell",
 
nomSound = "播放声音",
aideSound = "特效触发时播放声音",
aideCustomSound = "输入声音文件名称,如cookie.mp3 注意:你需要在游戏启动前把声音文件放入Sounds文件夹下,目前仅支持mp3和wav格式.",
 
nomCheckBuff = "Buff",
nomCheckDebuff = "Debuff",
nomCheckAoeDebuff = "AOE法术",
nomCheckDebuffType = "Debuff类型",
nomCheckEnchant = "武器强化",
nomCheckCombo = "连击点数",
nomCheckSkill = "动作冷却",
nomCheckHealth = "生命值",
nomCheckMana = "魔法值",
nomCheckRageEnergy = "Rage/Energy/Runic", -- untranslated
nomCheckAggro = "获得仇恨",
nomCheckPvP = "PvP标志",
nomCheckStance = "姿态",
nomCheckSpells = "Spell Alert", --- untranslated
nomCheckOwnSpell = "Spell from my Spellbook",
 
nomCheckTarget = "敌方目标",
nomCheckFriend = "友方目标",
nomCheckParty = "团队目标",
nomCheckFocus = "焦点目标",
nomCheckRaid = "团队成员",
nomCheckGroupOrSelf = "Raid/Party or self",
nomCheckGroupAny = "Any", --- untranslated
nomCheckOptunitn = "特定成员",
 
aideTarget = "此buff/debuff仅存在于敌方目标上",
aideTargetFriend = "此buff/debuff仅存在于友方目标上",
aideParty = "此buff/debuff仅存在于小队中",
aideGroupOrSelf = "Check this to test a party or raid member or self.",
aideFocus = "此buff/debuff仅存在焦点目标上",
aideRaid = "此buff/debuff仅存在于团队中",
aideGroupAny = "Check to test if any party/raid member is buffed. Default (unchecked), all must be buffed.", --- untranslated
aideOptunitn = "此buff/debuff仅存在于团队/小队中的特定成员身上",
aideExact = "选中此项将精确匹配buff/debff名称",
aideMine = "Check this to test only buffs/debuffs cast by the player", --- untranslated
 
nomCheckShowTimer = "显示",
nomTimerDuration = "延迟消失",
aideTimerDuration = "目标上的buff/debuff计时器延迟到此时间结束后再消失(0为禁用)",
aideShowTimer = "为此效果显示计时器",
aideSelectTimer = "选择使用何种计时器来显示持续时间",
aideSelectTimerBuff = "选择使用何种计时器来显示持续时间(仅用于玩家buff)",
aideSelectTimerDebuff = "选择使用何种计时器来显示持续时间(仅用于玩家debuff)",
nomCheckInverse = "不存在时激活",
aideInverse = "选中此项后,仅当buff/debuff不存在时显示此特效",
nomCheckIgnoreMaj = "忽略大小写",
aideIgnoreMaj = "选中此项将忽略buff/debuff名字的大小写字母(供英文玩家使用,中国玩家不需要修改此项)",
nomDuration = "延迟消失",
aideDuration = "特效延迟到此时间结束后再消失(0为禁用)",
nomCentiemes = "显示百分位",
nomDual = "显示两个计时器",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "关闭",
nomEffectEditor = "特效编辑器",
nomAdvOptions = "选项",
nomMaxTex = "最大可用材质",
nomTabAnim = "动画",
nomTabActiv = "条件",
 
nomWowTextures = "使用内置材质",
nomCustomTextures = "使用自定义材质",
nomRealaura = "清晰光环",
nomTextAura = "Text Aura", --- untranslated
nomRandomColor = "随机颜色",
nomTexMode = "光晕效果",
nomInCombat = "战斗状态",
aideInCombat = "仅当你处于战斗状态时才激活此特效",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomNotInCombat = "非战斗状态",
aideNotInCombat = "仅在非战斗状态时才激活此特效",
 
nomIsMounted = "骑乘状态",
aideIsMounted = "仅在玩家处于骑乘状态时激活特效.",
nomInVehicle = "Only if in Vehicle", -- untranslated
aideInVehicle = "Checked: Only when in vehicle. Uncheked: Only when not in vehicle.", -- untranslated
nomIsInRaid = "团队模式",
aideIsInRaid = "仅在团队模式里才激活此特效.",
nomResting = "Only if Resting",
aideResting = "Checked: Only when Resting. Uncheked: Only when not Resting.",
 
};
 
end
 
trunk/PowerAuras/PowerAurasClasses.lua New file
0,0 → 1,1629
-- PowaAura Classes
-- class.lua
-- Compatible with Lua 5.1 (not 5.0).
function PowaClass(base,ctor)
local c = {} -- a new class instance
if not ctor and type(base) == 'function' then
ctor = base;
base = nil;
elseif type(base) == 'table' then
-- our new class is a shallow copy of the base class!
for i,v in pairs(base) do
c[i] = v;
end
if (type(ctor)=="table") then
for i,v in pairs(ctor) do
c[i] = v;
end
ctor = nil;
end
c._base = base;
end
-- the class will be the metatable for all its objects,
-- and they will look up their methods in it.
c.__index = c
 
-- expose a ctor which can be called by <classname>(<args>)
local mt = {}
mt.__call = function(class_tbl,...)
local obj = {}
setmetatable(obj,c)
if ctor then
--PowaAuras:Message("Call constructor "..tostring(ctor));
ctor(obj,...)
end
return obj
end
 
if ctor then
c.init = ctor;
else
if base and base.init then
c.init = base.init;
ctor = base.init;
end
end
 
c.is_a = function(self,klass)
local m = getmetatable(self)
while m do
if m == klass then return true end
m = m._base
end
return false
end
setmetatable(c,mt)
return c
end
 
cPowaStacks = PowaClass(function(stacker, id, base)
stacker.enabled = false;
stacker.x = 0;
stacker.y = 0;
stacker.a = 1.0;
stacker.h = 1.0;
stacker.Transparent = false;
stacker.HideLeadingZeros = false;
--PowaAuras:Message("cPowaTimer");
if (base) then
for k, v in pairs (stacker) do
--PowaAuras:Message(" base."..tostring(k).."="..tostring(base[k]));
local varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
if (base[k] ~= nil) then
stacker[k] = base[k];
end
end
end
end
stacker.id = id;
end);
 
cPowaTimer = PowaClass(function(timer, id, base)
timer.enabled = false;
timer.x = 0;
timer.y = 0;
timer.a = 1.0;
timer.h = 1.0;
timer.cents = true;
timer.dual = false;
timer.Transparent = false;
timer.HideLeadingZeros = false;
--PowaAuras:Message("cPowaTimer");
if (base) then
for k, v in pairs (timer) do
--PowaAuras:Message(" base."..tostring(k).."="..tostring(base[k]));
local varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
if (base[k] ~= nil) then
timer[k] = base[k];
end
end
end
end
timer.id = id;
--for k,v in pairs (timer) do
-- PowaAuras:Message(" "..tostring(k).."="..tostring(v));
--end
end);
 
 
--- ------------------------------------------------------------------------------------------------- TIMERS
function cPowaTimer:Update(elapsed)
PowaAuras:UnitTestInfo("Timer.Update ",self.id);
local aura = PowaAuras.Auras[self.id];
if (aura == nil) then --- cet effet n'affiche pas de timer
PowaAuras:UnitTestInfo("Timer aura missing");
return;
end
if (self.enabled==false) then --- cet effet n'affiche pas de timer
PowaAuras:UnitTestInfo("Timer disabled");
return;
end
 
local debugCycle;
if (PowaAuras.NextDebugCheck>0 and PowaAuras.DebugTimer > PowaAuras.NextDebugCheck) then
PowaAuras.DebugTimer = 0;
PowaAuras:Message("Update Timer #",self.id); --OK
debugCycle = true;
end
 
local newvalue;
--- Determine the value to display in the timer
if (PowaAuras.ModTest) then
newvalue = random(0,99) + (random(0, 99) / 100);
 
elseif (aura.timerduration > 0) then--- if a user defined timer is active for the aura override the rest
if (aura.target or aura.targetfriend) and (PowaAuras.ResetTargetTimers == true) then
self.CustomDuration = aura.timerduration;
else
self.CustomDuration = math.max(self.CustomDuration - elapsed, 0);
end
newvalue = self.CustomDuration;
else
newvalue = aura:GetDuration(self.DurationInfo);
end
 
if (debugCycle) then
PowaAuras:Message("newvalue=",newvalue); --OK
end
 
PowaAuras:UnitTestInfo("Timer newvalue", newvalue);
 
if (newvalue and newvalue > 0) then --- Time has value to display
 
PowaAuras:CreateTimerFrameIfMissing(self.id);
 
local large = newvalue;
if (newvalue > 60.00) then
large = newvalue / 60;
end
large = math.min (99.00, large);
 
if (debugCycle) then
PowaAuras:Message("large=",large); --OK
end
self:ShowValue(aura, 1, large);
 
if (debugCycle) then
PowaAuras:Message("cents=",self.cents); --OK
end
if (self.cents) then
local small;
if (newvalue > 60.00) then
small = math.fmod(newvalue,60);
else
small = (newvalue - math.floor(newvalue)) * 100;
end
 
if (debugCycle) then
PowaAuras:Message("small=",small); --OK
end
self:ShowValue(aura, 2, small);
end
 
else
if (debugCycle) then
PowaAuras:Message("HideTimerFrames"); --OK
end
PowaAuras:HideTimerFrames(self.id);
PowaAuras:TestThisEffect(self.id);
end
 
end
 
function cPowaTimer:ShowValue(aura, frameIndex, newvalue)
local timerFrame = PowaAuras.TimerFrame[self.id][frameIndex];
if (aura.texmode == 1) then
timerFrame.texture:SetBlendMode("ADD");
else
timerFrame.texture:SetBlendMode("DISABLE");
end
local auraTexture = PowaAuras.Textures[self.id];
if auraTexture:GetObjectType() == "Texture" then
timerFrame.texture:SetVertexColor(auraTexture:GetVertexColor());
elseif auraTexture:GetObjectType() == "FontString" then
timerFrame.texture:SetVertexColor(auraTexture:GetTextColor());
end
 
--PowaAuras:Message("newvalue=", newvalue);
 
local deci = math.floor(newvalue / 10);
local uni = math.floor(newvalue - (deci*10));
--PowaAuras:Message("Show timer: ",deci, " ", uni, " ", PowaAuras.Auras[k].Timer.HideLeadingZeros);
local tStep = PowaAuras.Tstep;
if (deci==0 and self.HideLeadingZeros) then
timerFrame.texture:SetTexCoord(tStep , tStep * 1.5, tStep * uni, tStep * (uni+1));
else
timerFrame.texture:SetTexCoord(tStep * uni, tStep * (uni+1), tStep * deci, tStep * (deci+1));
end
if (not timerFrame:IsVisible()) then
timerFrame:Show(); -- Timer Frame
end
--PowaAuras:Message("Show #3 ", k, " ", i, " ", j, " ", seconds);
 
--PowaAuras:Message("deci=", deci, " uni=", uni);
end
 
 
 
------------cPowaAura----------------
-- cPowaAura is the base class and is not instanced directly, the other classes inherit properties and methods from it
--===========================
 
cPowaAura = PowaClass(function(aura, id, base)
--PowaAuras:Message("cPowaAura constructor " .. tostring(id));
aura.off = false;
 
aura.bufftype = PowaAuras.BuffTypes.Buff;
aura.buffname = "";
 
aura.texmode = 1;
aura.wowtex = false;
aura.customtex = false;
aura.textaura = false;
aura.owntex = false;
aura.realaura = 1;
aura.texture = 1;
aura.customname = "";
aura.aurastext = "";
aura.aurastextfont = 1;
aura.icon = "";
 
aura.timerduration = 0;
 
-- Sound Settings
aura.sound = 0;
aura.soundfile = "";
aura.customsound = "";
 
-- Animation Settings
aura.begin = 0;
aura.anim1 = 1;
aura.anim2 = 0;
aura.speed = 1.00;
aura.finish = 1;
aura.duration = 0;
aura.isSecondary = false;
 
-- Appearance Settings
aura.alpha = 0.75;
aura.size = 0.75;
aura.torsion = 1;
aura.symetrie = 0;
aura.x = 0;
aura.y = -30;
aura.randomcolor = false;
aura.r = 1.0;
aura.g = 1.0;
aura.b = 1.0;
 
aura.inverse = false;
aura.ignoremaj = true;
aura.exact = false;
 
aura.stacks = 0;
aura.stacksLower = 0;
aura.stacksOperator = PowaAuras.DefaultOperator;
 
aura.threshold = 50;
aura.thresholdinvert = false;
 
aura.mine = false;
 
aura.focus = false;
aura.target = false;
aura.targetfriend = false;
aura.raid = false;
aura.groupOrSelf = false;
aura.party = false;
 
aura.groupany = true;
aura.optunitn = false;
aura.unitn = "";
 
aura.isinraid = false;
aura.ismounted = false;
aura.ignoreResting = true;
aura.inVehicle = false;
 
aura.combat = 0;
aura.spec1 = true;
aura.spec2 = true;
aura.gcd = false;
aura.stance = 10;
aura.multiids = "";
aura.tooltipCheck = "";
 
if (base) then
for k, v in pairs (aura) do
local varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
if (base[k] ~= nil) then
aura[k] = base[k];
end
end
end
 
if (base.Timer) then
aura.Timer = cPowaTimer(id, base.Timer);
end
 
if (base.Stacks) then
aura.Stacks = cPowaStacks(id, base.Stacks);
end
end
 
if (not aura.Timer) then
aura.Timer = cPowaTimer(id);
end
 
if (not aura.Stacks) then
aura.Stacks = cPowaStacks(id);
end
 
aura.Showing = false;
aura.HideRequest = false;
aura.id = id;
 
end);
 
function cPowaAura:GetDuration(durationInfo)
if (durationInfo and durationInfo > 0) then
return math.max(durationInfo - GetTime(), 0);
end
return 0;
end
 
function cPowaAura:CreateFrames()
local frame = self:GetFrame();
if (frame==nil) then
PowaAuras:UnitTestInfo("New Frames", self.id);
PowaAuras:UnitTestDebug("Creating frame for aura ", self.id);
--- Frame ---
frame = CreateFrame("Frame","Frame"..self.id, UIParent);
self:SetFrame(frame);
 
frame:SetFrameStrata("LOW");
frame:Hide();
 
frame.baseL = 256;
frame.baseH = 256;
end
 
local texture = self:GetTexture();
if (texture==nil) then
PowaAuras:UnitTestInfo("New Texture", self.id);
if self.textaura then
PowaAuras:UnitTestDebug("Creating new textstring texture for aura ", self.id);
texture = frame:CreateFontString(nil, "OVERLAY");
texture:ClearAllPoints();
texture:SetPoint("CENTER",frame);
texture:SetFont(STANDARD_TEXT_FONT, 20);
texture:SetTextColor(self.r,self.g,self.b);
texture:SetJustifyH("CENTER");
else
texture = frame:CreateTexture(nil,"BACKGROUND");
texture:SetBlendMode("ADD");
texture:SetAllPoints(frame); --- attache la texture a la frame
frame.texture = texture;
end
self:SetTexture(texture);
else
if self.textaura then
PowaAuras:UnitTestDebug("textaura ", texture:GetObjectType());
if texture:GetObjectType() == "Texture" then
PowaAuras:UnitTestInfo("Converting to textstring texture for aura ", self.id);
PowaAuras:UnitTestDebug("Converting to textstring texture for aura ", self.id);
texture:SetTexture(nil);
texture = frame:CreateFontString(nil, "OVERLAY");
texture:ClearAllPoints();
texture:SetPoint("CENTER",frame);
texture:SetFont(STANDARD_TEXT_FONT, 20);
texture:SetTextColor(self.r,self.g,self.b);
texture:SetJustifyH("CENTER");
self:SetTexture(texture);
end
else
if texture:GetObjectType() == "FontString" then
PowaAuras:UnitTestInfo("Converting from textstring texture for aura ", self.id);
texture:SetText("");
texture = frame:CreateTexture(nil,"BACKGROUND");
texture:SetBlendMode("ADD");
texture:SetAllPoints(frame); --- attache la texture a la frame
frame.texture = texture;
self:SetTexture(texture);
end
end
end
return frame, texture;
end
 
 
function cPowaAura:Hide()
 
PowaAuras:UnitTestInfo("Aura.Hide ", self.id);
 
local frame = self:GetFrame();
if (frame) then
frame:Hide();
end
 
if (not self.isSecondary) then
PowaAuras:HideTimerFrames(self.id);
local frame = PowaAuras.Frames[self.id];
if (frame) then
frame:Hide();
end
local secondaryAura = PowaAuras.SecondaryAuras[self.id];
if (secondaryAura) then
secondaryAura:Hide();
end
end
 
self.Showing = false;
end
 
function cPowaAura:AddEffect(i)
table.insert(PowaAuras.AurasByType[self.AuraType], i);
end
 
function cPowaAura:IsPlayerAura()
return (not self.target)
and (not self.targetfriend)
and (not self.party)
and (not self.raid)
and (not (self.groupOrSelf and (GetNumPartyMembers()>0 or GetNumRaidMembers()>0)))
and (not self.focus)
and (not self.optunitn);
end
 
function cPowaAura:CheckState(giveReason)
 
--- player aura but player is dead
if (self:IsPlayerAura() and self.WeAreAlive == false) then
if (not giveReason) then return false; end
return false, "Player is DEAD";
end
 
--- n'affiche pas si la cible est inexistante ou morte
if ((self.target or self.targetfriend) and (UnitName("target") == nil or UnitIsDead("target") or UnitName("target") == UnitName("player")) ) then
if (not giveReason) then return false; end
if (UnitName("target") == nil) then
return false, "no Target";
end
if (UnitName("target") == UnitName("player")) then
return false, "Target is you";
end
return false, "Target DEAD";
end
 
--- regarde si la cible est ennemie
if (self.target and self.targetfriend == false and UnitIsFriend("player","target")) then --- cible amie alors que faut pas
if (not giveReason) then return false; end
return false, "Target is fiendly";
end
 
--- party
if (self.party and not ((GetNumPartyMembers() > 0) or (GetNumRaidMembers() > 0))) then --- partycheck yes, but not in party
if (not giveReason) then return false; end
return false, "Not in Party";
end
 
--- focus
if (self.focus and (UnitName("focus") == nil or UnitIsDead("focus") or UnitName("focus") == UnitName("player"))) then --- focuscheck
if (not giveReason) then return false; end
return false, "No focus";
end
 
--- unit
if (self.optunitn and not ((GetNumPartyMembers() > 0) or (GetNumRaidMembers() > 0) or UnitExists("pet"))) then --- Unitn yes, but not in party/raid or with pet
if (not giveReason) then return false; end
return false, "Can't find custom unit not in party, raid or with pet unit="..tostring(self.unitn);
end
 
--- raid
if (self.raid and numrm == 0) then --- raidcheck yes, but not in raid
if (not giveReason) then return false; end
return false, "Not in raid";
end
 
--- regarde si la cible est amie
if (self.target == false and self.targetfriend and not UnitIsFriend("player","target")) then --- cible ennemie
if (not giveReason) then return false; end
return false, "Target not friend";
end
 
--- dual spec check
if ((not self.spec2 and PowaAuras.ActiveTalentGroup == 2) or (not self.spec1 and PowaAuras.ActiveTalentGroup == 1)) then
if (not giveReason) then return false; end
return false, "Aura not active for this talent spec";
end
 
--- mode combat, cache si besoin
if ((PowaAuras.WeAreInCombat == true and self.combat == 2) or (PowaAuras.WeAreInCombat == false and self.combat == 1)) then
if (not giveReason) then return false; end
return false, "Not in combat";
end
 
if (PowaAuras.WeAreInRaid == false and self.isinraid == true) then
if (not giveReason) then return false; end
return false, "Not in raid";
end
 
if (PowaAuras.WeAreMounted ~= self.ismounted) then
if (not giveReason) then return false; end
if (PowaAuras.WeAreMounted) then
return false, "Mounted";
else
return false, "Not Mounted";
end
end
 
if (PowaAuras.WeAreInVehicle ~= self.inVehicle) then
if (not giveReason) then return false; end
return false, "Not In Vehicle";
end
 
-- It's not dead it's restin'
if (self.ignoreResting and (IsResting()==1) and (not PowaAuras.WeAreInCombat)) then
if (not giveReason) then return false; end
return false, "Resting";
end
 
if (not giveReason) then return true; end
return true, "State OK";
end
 
function cPowaAura:ShouldShow(giveReason, reverse)
PowaAuras:UnitTestInfo("ShouldShow", self.id);
local result, reason = self:CheckState(giveReason);
if (result) then
result, reason = self:CheckIfShouldShow(giveReason);
if (result~=nil and (self.inverse or reverse) and not (self.inverse and reverse)) then
result = not result;
if (giveReason) then
reason = reason .." (inverted)";
end
end
end
if (result) then
PowaAuras:Debug("Aura Should Show ", self.id, " because ", reason);
else
PowaAuras:Debug("Aura won't Show ", self.id, " because ", reason);
end
return result, reason;
end
 
function cPowaAura:Display()
PowaAuras:Message("Aura Display id=", self.id); --OK
for k,v in pairs (self) do
PowaAuras:Message(" "..tostring(k).." = "..tostring(v)); --OK
end
end
 
function cPowaAura:GetFrame()
if (self.isSecondary) then
return PowaAuras.SecondaryFrames[self.id];
end
return PowaAuras.Frames[self.id];
end
 
function cPowaAura:GetTexture()
if (self.isSecondary) then
return PowaAuras.SecondaryTextures[self.id];
end
return PowaAuras.Textures[self.id];
end
 
function cPowaAura:SetFrame(frame)
if (self.isSecondary) then
PowaAuras.SecondaryFrames[self.id] = frame;
return;
end
PowaAuras.Frames[self.id] = frame;
end
 
function cPowaAura:SetTexture(texture)
if (self.isSecondary) then
PowaAuras.SecondaryTextures[self.id] = texture;
return;
end
PowaAuras.Textures[self.id] = texture;
end
 
function cPowaAura:GetSpellNameFromMatch(spellMatch)
local _, _,spellId = string.find(spellMatch, "%[(%d+)%]")
if (spellId) then
local spellName, rank, spellIcon = GetSpellInfo(tonumber(spellId));
return spellName, spellIcon;
end
return spellMatch;
end
 
function cPowaAura:SetStacks(text)
local _, _,curStacksLower, curOperator, curStacks = string.find(text, "(%d*)(%D+)(%d*)")
 
if (curStacks == nil or curStacks == "") then curStacks = "0"; end
local stacks = tonumber(curStacks);
PowaAuras:Debug(stacks);
 
if (stacks ~= self.stacks) then
if (stacks > 100) or (stacks < 0) then stacks = 0; end
self.stacks = stacks or 0;
end
 
if (curStacksLower == nil or curStacksLower == "") then curStacksLower = "0"; end
local stacksLower = tonumber(curStacksLower);
PowaAuras:Debug(stacksLower);
 
if (stacksLower ~= self.stacksLower) then
if (stacksLower > 100) or (stacksLower < 0) or (stacksLower > stacks) then stacksLower = 0; end
self.stacksLower = stacksLower or 0;
end
 
if (curOperator ~= self.stacksOperator) then
if (not PowaAuras.allowedOperators[curOperator]) then
curOperator = PowaAuras.DefaultOperator;
end
self.stacksOperator = curOperator;
end
end
 
function cPowaAura:Trim(s)
return (string.gsub(s, "^%s*(.-)%s*$", "%1"));
end
 
function cPowaAura:MatchSpell(spellName, spellTexture, textToFind)
if (spellName==nil or textToFind==nil) then
return false;
end
if (textToFind=="*") then
return true;
end
PowaAuras:Debug(" MatchSpell spellName =",spellName);
PowaAuras:Debug(" spellTexture=",spellTexture);
PowaAuras:Debug(" textToFind =",textToFind);
for pword in string.gmatch(textToFind, "[^/]+") do
pword = self:Trim(pword);
if (string.len(pword)>0) then
local textToSearch;
if string.find(pword, "_") then
_, _,textToSearch = string.find(spellTexture, "([%w_]*)$")
else
textToSearch = spellName;
pword = self:GetSpellNameFromMatch(pword);
end
if (textToSearch) then
if (self.ignoremaj) then
textToSearch = string.upper(textToSearch)
pword = string.upper(pword);
end
PowaAuras:Debug("pword=", pword);
PowaAuras:Debug("search=", textToSearch);
if (self.exact) then
PowaAuras:Debug("exact=", (textToSearch == pword));
if (textToSearch == pword) then
return true;
end
else
PowaAuras:Debug("find=", string.find(textToSearch, pword, 1, true));
if (string.find(textToSearch, pword, 1, true)) then
return true;
end
end
end
end
end
 
return nil;
end
 
function cPowaAura:MatchText(textToSearch, textToFind)
if (textToSearch==nil or textToFind==nil) then
return false;
end
if (textToFind=="*") then
return true;
end
PowaAuras:Debug("MatchText textToSearch=",textToSearch," textToFind=",textToFind);
if (self.ignoremaj) then
textToFind = string.upper(textToFind);
textToSearch = string.upper(textToSearch);
end
PowaAuras:Debug("MatchText textToSearch=",textToSearch," textToFind=",textToFind, " ignoremaj=", self.ignoremaj, " exact=", self.exact);
if (self.exact) then
return (textToSearch == textToFind);
end
for pword in string.gmatch(textToFind, "[^/]+") do
PowaAuras:Debug("pword=", pword," find=",string.find(textToSearch, pword, 1, true));
if (string.find(textToSearch, pword, 1, true)) then
return true;
end
end
return nil;
end
 
function cPowaAura:CreateAuraString()
local tempstr, varpref= "", "";
for k, v in pairs (self) do
--- multi condition checks not supported for export.
if k == "multiids" then
v = "";
end
varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
tempstr = tempstr..k..":"..string.sub(varType,1,2)..tostring(v).."; ";
end
end
if (self.Timer) then
for k, v in pairs (self.Timer) do
varType = type(v);
if (varType == "string" or varType == "boolean" or varType == "number") then
tempstr = tempstr.."timer."..k..":"..string.sub(varType,1,2)..tostring(v).."; ";
end
end
end
 
if tempstr and tempstr ~= "" then
tempstr = strtrim(tempstr);
tempstr = string.sub(tempstr, 1, string.len(tempstr)-1);
end
PowaAuras:Debug("Aura-string length: "..tostring(string.len(tempstr)));
return tempstr;
end
 
function cPowaAura:GetUnit()
if (self.target or self.targetfriend) then
return "target";
elseif (self.focus) then
return "focus";
elseif (self.party) then
return "party";
elseif (self.raid) then
return "raid";
elseif (self.groupOrSelf) then
return "groupOrSelf";
elseif (self.optunitn) then
return self.unitn;
else
return "player";
end
return nil;
end
 
function cPowaAura:CheckAllUnits(giveReason)
local unit = self:GetUnit();
PowaAuras:Debug("on unit "..unit);
local numpm = GetNumPartyMembers();
local numrm = GetNumRaidMembers();
 
if unit == "party" then
for pm = 1, numpm do
unit = "party"..pm;
if self:CheckUnit(unit) then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
elseif unit == "raid" then
for rm = 1, numrm do
unit = "raid"..rm;
if self:CheckUnit(unit) then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
elseif unit == "groupOrSelf" then
if (numrm>0) then
for rm = 1, numrm do
unit = "raid"..rm;
if self:CheckUnit(unit) then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
elseif (numpm>0) then
for pm = 1, numpm do
unit = "party"..pm;
if self:CheckUnit(unit) then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
if self:CheckUnit("player") then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
else
if self:CheckUnit(unit) then
if (not giveReason) then return true; end
return true, unit.." "..self.MatchReason;
end
end
if (not giveReason) then return false; end
return false,self.NoMatchReason;
end
 
function cPowaAura:CheckStacks(count)
local operator = self.stacksOperator or PowaAuras.DefaultOperator;
local stacks = self.stacks or 0;
local stacksLower = self.stacksLower or 0;
PowaAuras:Debug("Stack op=",operator," stacks=",stacks,"Stack Count=",count);
return ((operator == "=" and stacks == 0)
or (operator == ">=" and count >= stacks)
or (operator == "<=" and count <= stacks)
or (operator == ">" and count > stacks)
or (operator == "<" and count < stacks)
or (operator == "=" and count == stacks)
or (operator == "-" and count >= stacksLower and count <= stacks)
or (operator == "!" and count ~= stacks));
end
 
cPowaBuffBase = PowaClass(cPowaAura);
 
function cPowaBuffBase:AddEffect(i)
 
if not self.target
and not self.targetfriend
and not self.party
and not self.raid
and not self.groupOrSelf
and not self.focus
and not self.optunitn then --- self-buff
table.insert(PowaAuras.AurasByType.Buffs, i);
end
if self.party then --- partybuff cible
table.insert(PowaAuras.AurasByType.PartyBuffs, i);
end
if self.focus then --- focus buffs
table.insert(PowaAuras.AurasByType.FocusBuffs, i);
end
if self.raid then --- raid buffs
table.insert(PowaAuras.AurasByType.RaidBuffs, i);
end
if self.groupOrSelf then --- groupOrSelf buffs
table.insert(PowaAuras.AurasByType.GroupOrSelfBuffs, i);
end
if self.optunitn then --- unit buffs
table.insert(PowaAuras.AurasByType.UnitBuffs, i);
end
if (self.target or self.targetfriend) then --- target buff
table.insert(PowaAuras.AurasByType.TargetBuffs, i);
end
end
 
function cPowaBuffBase:IsPresent(unittarget, s)
 
PowaAuras:Debug("IsPresent on ",unittarget," buffid ",s," type", self.buffAuraType);
 
local auraName, _, auraTexture, count, _, _, expirationTime, caster = UnitAura(unittarget, s, self.buffAuraType);
 
if (auraName == nil) then return nil; end
 
PowaAuras:Debug("Aura=",auraName," count=",count," expirationTime=", expirationTime," caster=",caster);
 
if (not self:CompareAura(unittarget, s, auraName, auraTexture)) then
--PowaAuras:Debug("CompareAura not found");
return false;
end
 
local isMine = (caster~=nil) and UnitExists(caster) and UnitIsUnit("player", caster);
local bemine = self.mine;
--PowaAuras:Message("Bemine=",bemine," isMine=",isMine);
if (bemine and isMine) or (not bemine) then
if (self:CheckStacks(count)) then
--PowaAuras:Message("Present!");
if (self.Timer) then
self.Timer.DurationInfo = expirationTime;
end
return true;
end
end
 
return false;
end
 
function cPowaBuffBase:CheckTooltip(text, target, index)
if (text==nil or string.len(text) == 0) then
return true;
end
 
PowaAuras:Debug("Search in tooltip for ",text);
 
PowaAuras_Tooltip:SetOwner(UIParent, "ANCHOR_NONE");
PowaAuras_Tooltip:SetUnitAura(target, index, self.buffAuraType);
 
for z = 1, PowaAuras_Tooltip:NumLines() do
PowaAuras:UnitTestDebug("Check tooltip line ",z);
local textlinel = getglobal("PowaAuras_TooltipTextLeft"..z);
local textl = textlinel:GetText();
local tooltipText = "";
if textl then
tooltipText = tooltipText..textl;
end
local textliner = getglobal("PowaAuras_TooltipTextRight"..z);
local textr = textliner:GetText();
if textr then
tooltipText = tooltipText..textr;
end
if (tooltipText ~= "") then
PowaAuras:UnitTestDebug("| "..text.." |");
if (string.find(tooltipText, text, 1, true)) then
PowaAuras_Tooltip:Hide();
return true;
end
end
end
PowaAuras_Tooltip:Hide();
return false;
end
 
function cPowaBuffBase:CompareAura(target, z, auraName, auraTexture, giveReason)
 
--PowaAuras:Debug("CompareAura",z," ",auraName, auraTexture);
 
if self:MatchSpell(auraName, auraTexture, self.buffname) then
PowaAuras:UnitTestDebug("Aura match found! ", self.id);
if (not self:CheckTooltip(self.tooltipCheck, target, z)) then
PowaAuras:UnitTestDebug("Tooltip no match found!");
if (not giveReason) then return false; end
return false, target.." has "..self.auraType.." "..auraName.." but tooltip does not match";
end
local tempicon;
if (self.owntex == true) then
getglobal("PowaIconTexture"):SetTexture(auraTexture);
tempicon = getglobal("PowaIconTexture"):GetTexture();
if (self.icon ~= tempicon) then
self.icon = tempicon;
end
end
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture(auraTexture);
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
if (not giveReason) then return true; end
return true, target.." has "..self.auraType.." "..auraName;
end
if (not giveReason) then return false; end
return false, target.." does not have "..self.auraType.." "..self.buffname;
end
 
function cPowaBuffBase:CheckAllAuraSlots(target, giveReason)
PowaAuras:UnitTestDebug("-------------");
PowaAuras:UnitTestDebug("CheckAllAuraSlots for ", target);
for i = 1, 40 do
local present = self:IsPresent(target, i);
if (present==nil) then
if (not giveReason) then return false; end
return false, target.." doesn't have "..self.auraType.." "..self.buffname;
end
if (present) then
PowaAuras:UnitTestDebug("CheckAllAuraSlots Present!");
if (not giveReason) then return true; end
return true, target .." has "..self.auraType.." "..self.buffname;
end
end
if (not giveReason) then return false; end
return false, target.." doesn't have "..self.auraType.." "..self.buffname;
end
 
function cPowaBuffBase:CheckGroup(group, count, giveReason)
for groupId = 1, count do
local present = self:CheckAllAuraSlots(group..groupId, false);
if (present) then
if (self.groupany == true) then
PowaAuras:UnitTestDebug("CheckGroup("..group..") Present!");
if (not giveReason) then return true; end
return true, group..groupId .." has "..self.auraType.." "..self.buffname;
end
elseif (self.groupany==false) then
if (not giveReason) then return false; end
return false, "Not all in "..group.." has "..self.auraType.." "..self.buffname;
end
end
if (self.groupany==false) then
PowaAuras:UnitTestDebug("CheckGroup("..group..") All Present!");
if (not giveReason) then return true; end
return true, "All in "..group.." has "..self.auraType.." "..self.buffname;
end
if (not giveReason) then return false; end
return false, "No one in "..group.." has "..self.auraType.." "..self.buffname;
end
 
function cPowaBuffBase:CheckIfShouldShow(giveReason)
PowaAuras:UnitTestInfo("CheckIfShouldShow ",self.buffAuraType," aura");
PowaAuras:Debug("Check " .. self.buffAuraType .. " aura");
local numpm = GetNumPartyMembers();
local numrm = GetNumRaidMembers();
--- targets
if (self.target or self.targetfriend) then
PowaAuras:UnitTestDebug("on target or friendlytarget");
return self:CheckAllAuraSlots("target", giveReason);
end
--- focus buff
if self.focus then
PowaAuras:UnitTestDebug("on focus");
return self:CheckAllAuraSlots("focus", giveReason);
end
--- unit buff
if self.optunitn then
PowaAuras:UnitTestDebug("on unit "..self.unitn);
return self:CheckAllAuraSlots(self.unitn, giveReason);
end
--- raid buff
if self.raid then
PowaAuras:UnitTestDebug("on raid size=", numrm);
return self:CheckGroup("raid", numrm, giveReason);
end
--- partybuff
if self.party then
PowaAuras:UnitTestDebug("on party size=", numpm);
return self:CheckGroup("party", numpm, giveReason);
end
 
if (self.groupOrSelf) then --- Group or Self Buff
PowaAuras:UnitTestDebug("on Group or Self");
if (numrm>0) then
PowaAuras:UnitTestDebug("GoS on raidunit");
return self:CheckGroup("raid", numrm, giveReason); -- includes player
end
if (numpm>0) then
PowaAuras:UnitTestDebug("GoS on partyunit or self");
local presentOnSelf, reason = self:CheckAllAuraSlots("player", giveReason);
if (presentOnSelf and self.groupany) then
if (not giveReason) then return true; end
return true, reason;
end
if (not presentOnSelf and not self.groupany) then
if (not giveReason) then return false; end
return false, reason;
end
return self:CheckGroup("party", numpm, giveReason);
end
PowaAuras:UnitTestDebug("GoS on player");
return self:CheckAllAuraSlots("player", giveReason);
end
 
--- player buff
 
PowaAuras:Debug("on player");
return self:CheckAllAuraSlots("player", giveReason);
end
 
cPowaBuff = PowaClass(cPowaBuffBase, {buffAuraType = "HELPFUL", auraType="buff"});
cPowaDebuff = PowaClass(cPowaBuffBase, {buffAuraType = "HARMFUL", auraType="debuff"});
cPowaTypeDebuff = PowaClass(cPowaBuffBase, {buffAuraType = "HARMFUL", auraType="debuff type"});
 
function cPowaTypeDebuff:IsPresent(target, z)
local removeable;
if (self.mine) then
removeable = 1;
end
local name, _, texture, _, typeDebuff, _, expirationTime = UnitDebuff(target, z, removeable);
if (not name) then
return false;
end
PowaAuras:Debug("TypeDebuff IsPresent on ",target," buffid ",z," removeable ",removeable);
if (self.mine and typeDebuff==nil) then
return false;
end
 
PowaAuras:UnitTestDebug("Debuff ",name," type ",typeDebuff);
 
local typeDebuffName;
if (typeDebuff ~= nil) then
typeDebuffName = PowaAuras.Text.DebuffType[typeDebuff];
end
local typeDebuffCatName = PowaAuras.Text.DebuffCatType[PowaAuras.DebuffCatSpells[name]];
if (typeDebuffName == nil and typeDebuffCatName==nil) then
typeDebuffName = PowaAuras.Text.aucun;
end
 
PowaAuras:UnitTestDebug("typeDebuffName ",typeDebuffName);
PowaAuras:UnitTestDebug("typeDebuffCatName ",typeDebuffCatName);
PowaAuras:UnitTestDebug("self.buffname ",self.buffname);
 
if self:MatchText(typeDebuffName, self.buffname)
or self:MatchText(typeDebuffCatName, self.buffname) then
if (self.Timer) then
self.Timer.DurationInfo = expirationTime;
end
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture(texture);
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
return true;
end
 
return false;
end
 
 
-- This is not really AoE it is periodic damage, could be a DoT or a ground effect damage
cPowaAoE = PowaClass(cPowaAura, {AuraType = "Aoe"});
function cPowaAoE:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check AoE");
 
if (PowaAuras.DoResetAoe == true) then --- probablement mort, on reset l'effet
if (not giveReason) then return false; end
return false, "AoE reset";
elseif (PowaAuras.AoeAuraAdded ~= "") then --- debuff ajoute
if self:MatchSpell(PowaAuras.AoeAuraAdded, PowaAuras.AoeAuraTexture, self.buffname) then
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture("Interface\\icons\\Spell_fire_meteorstorm");
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
if (not giveReason) then return true; end
return true, "AoE Added "..self.buffname;
end
elseif (PowaAuras.AoeAuraFaded ~= "") then
if self:MatchSpell(PowaAuras.AoeAuraFaded, PowaAuras.AoeAuraTexture, self.buffname) then
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture("Interface\\icons\\Spell_fire_meteorstorm");
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
if (not giveReason) then return true; end
return true, "AoE Faded "..self.buffname;
end
end
 
if (not self.Showing or self.HideRequest) then
if (not giveReason) then return false; end
return false, "AoE expired";
else
if (not giveReason) then return true; end
return true, "AoE active";
end
end
 
cPowaEnchant = PowaClass(cPowaAura, {AuraType = "Enchants"});
function cPowaEnchant:CheckforEnchant(slot, enchantText)
PowaAuras:Debug("Check enchant ("..enchantText..") active in slot",slot);
PowaAuras_Tooltip:SetOwner(UIParent, "ANCHOR_NONE");
PowaAuras_Tooltip:SetInventoryItem("player", slot);
PowaAuras:UnitTestDebug("search in tooltip for ", self.buffname);
for z = 1, PowaAuras_Tooltip:NumLines() do
PowaAuras:UnitTestDebug("Check tooltip line ",z);
local textlinel = getglobal("PowaAuras_TooltipTextLeft"..z);
local textl = textlinel:GetText();
local text = "";
if textl then
text = text..textl;
end
local textliner = getglobal("PowaAuras_TooltipTextRight"..z);
local textr = textliner:GetText();
if textr then
text = text..textr;
end
if (text ~= "") then
PowaAuras:UnitTestDebug("| "..text.." |");
if (self:MatchText(text, self.buffname)) then
PowaAuras_Tooltip:Hide();
return true;
end
end
end
PowaAuras_Tooltip:Hide();
return false;
end
 
function cPowaEnchant:SetForEnchant(loc, slot, charges, index)
PowaAuras:Debug(loc,":found ",self.buffname," in the tooltip!");
if (self:CheckStacks(charges)) then
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture( GetInventoryItemTexture("player", slot) );
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
return true;
end
return false;
end
 
function cPowaEnchant:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check weapon enchant");
local hasMainHandEnchant, mainHandExpiration, mainHandCharges, hasOffHandEnchant, offHandExpiration, offHandCharges = GetWeaponEnchantInfo();
 
if (hasMainHandEnchant) then
if (self:CheckforEnchant(16, PowaAuras.Text.mainHand)) then
if (self:SetForEnchant("MH", 16, mainHandCharges, 1)) then
if (self.Timer) then
self.Timer.DurationInfo = mainHandExpiration;
end
if (not giveReason) then return true; end
return true, "Main Hand "..self.buffname.." enchant found";
end
end
end
if (hasOffHandEnchant) then
if (self:CheckforEnchant(17, PowaAuras.Text.offHand)) then
if (self:SetForEnchant("OH", 17, offHandCharges, 2)) then
if (self.Timer) then
self.Timer.DurationInfo = offHandExpiration;
end
if (not giveReason) then return true; end
return true, "Off Hand "..self.buffname.." enchant found";
end
end
end
if (not giveReason) then return false; end
return false, "No enchant found on weapons";
end
 
cPowaCombo = PowaClass(cPowaAura, {AuraType = "Combo"});
function cPowaCombo:CheckIfShouldShow(giveReason)
if (not(PowaAuras.playerclass == "ROGUE" or (PowaAuras.playerclass=="DRUID" and GetShapeshiftForm()==3))) then
return nil, "You do not use combo points";
end
PowaAuras:Debug("Check Combos");
local nCombo = tostring(GetComboPoints("player"));
PowaAuras:UnitTestDebug("nCombo=", nCombo, " self.buffname=", self.buffname);
if self:MatchText(nCombo, self.buffname) then
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture("Interface\\icons\\inv_sword_48");
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
if (not giveReason) then return true; end
return true, "Combo points "..nCombo.." match "..self.buffname;
end
if (not giveReason) then return false; end
return false, "Combo points "..nCombo.." no match with "..self.buffname;
end
 
cPowaActionReady = PowaClass(cPowaAura, {AuraType = "Actions"});
function cPowaActionReady:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check Action / Button:", self.slot);
if (not self.slot or self.slot == 0) then
if (not giveReason) then return false; end
return false, "Action not set";
end
 
local isUsable = IsUsableAction(self.slot);
local cdstart, cdduration, enable = GetActionCooldown(self.slot);
PowaAuras:UnitTestDebug("cdstart= ",cdstart," duration= ",cdduration);
if (cdduration > 0.2 and cdduration < 1.7 and self.gcd == false) then
if (isUsable == 1) then --- utilisable, pas de cooldown
if (not giveReason) then return true; end
return true, "Action Ready";
end
else
if (isUsable == 1 and cdstart == 0) then
if (not giveReason) then return true; end
return true, "Action Ready";
end
end
if (self.Timer) then
if (enable>0) then
self.Timer.DurationInfo = cdstart + cdduration;
else
self.Timer.DurationInfo = 0;
end
end
if (not giveReason) then return false; end
return false, "Action Not Ready, on cooldown";
end
 
cPowaOwnSpell = PowaClass(cPowaAura, {AuraType = "OwnSpell"});
function cPowaOwnSpell:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check Spell:", self.buffname);
 
for pword in string.gmatch(self.buffname, "[^/]+") do
local spellName, spellIcon = self:GetSpellNameFromMatch(pword);
if (self.icon == "") then
if (not spellIcon) then
_, _, spellIcon = GetSpellInfo(spellName);
end
if (spellIcon) then
getglobal("PowaIconTexture"):SetTexture(spellIcon);
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
end
local show = false;
local cdstart, cdduration, enabled = GetSpellCooldown(spellName);
PowaAuras:UnitTestDebug("cdstart= ",cdstart," duration= ",cdduration," enabled= ",enabled);
if (enabled) then
local isUsable = IsUsableSpell(spellName);
if (cdduration > 0.2 and cdduration < 1.7 and self.gcd == false) then
show = (isUsable == 1);
else
show = (isUsable == 1 and cdstart == 0);
end
if (show) then
if (self.Timer) then
self.Timer.DurationInfo = spellName;
end
if (not giveReason) then return true; end
return true, "Spell "..spellName.." usable";
end
end
end
if (not giveReason) then return false; end
return false, "Spell "..self.buffname.." not found";
end
 
cPowaAuraStats = PowaClass(cPowaAura);
function cPowaAuraStats:AddEffect(i)
if not self.target
and not self.targetfriend
and not self.party
and not self.raid
and not self.focus
and not self.optunitn then
table.insert(PowaAuras.AurasByType[self.ValueName], i);
end
if self.optunitn then
table.insert(PowaAuras.AurasByType["NamedUnit"..self.ValueName], i);
end
if self.focus then
table.insert(PowaAuras.AurasByType["Focus"..self.ValueName], i);
end
if (self.target or self.targetfriend) then --- TargetHealth
table.insert(PowaAuras.AurasByType["Target"..self.ValueName], i);
end
if self.party then
table.insert(PowaAuras.AurasByType["Party"..self.ValueName], i);
end
if self.raid then
table.insert(PowaAuras.AurasByType["Raid"..self.ValueName], i);
end
end
function cPowaAuraStats:CheckUnit(unit)
PowaAuras:Debug("CheckUnit " .. unit);
if (not self:IsCorrectPowerType(unit)) then
PowaAuras:UnitTestDebug("Correct powertype " ,self:IsCorrectPowerType(unit));
return nil;
end
if (UnitIsDeadOrGhost(unit)) then
PowaAuras:UnitTestDebug("Correct powertype dead ", UnitIsDeadOrGhost(unit));
return false;
end
 
local curValue = self:UnitValue(unit);
local maxValue = self:UnitValueMax(unit);
PowaAuras:UnitTestDebug("curValue=", curValue, " maxValue=", maxValue);
if (curValue==nil or maxValue==nil) then return false; end
 
local curpercenthp = (curValue / maxValue) * 100;
if self.thresholdinvert then
thresholdvalidate = (curpercenthp > self.threshold);
else
thresholdvalidate = (curpercenthp < self.threshold)
end
if (thresholdvalidate) then
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture("Interface\\icons\\Spell_fire_meteorstorm");
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
return true;
end
return false;
end
 
function cPowaAuraStats:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check Stat "..self.ValueName);
return self:CheckAllUnits(giveReason);
end
 
 
cPowaHealth = PowaClass(cPowaAuraStats, {ValueName = "Health", MatchReason="Health low", NoMatchReason="Health not low enough"});
function cPowaHealth:IsCorrectPowerType(unit)
return true;
end
function cPowaHealth:UnitValue(unit)
return UnitHealth(unit);
end
function cPowaHealth:UnitValueMax(unit)
return UnitHealthMax(unit);
end
 
 
cPowaMana = PowaClass(cPowaAuraStats, {ValueName = "Mana", MatchReason="Mana low", NoMatchReason="Mana not low enough"});
function cPowaMana:IsCorrectPowerType(unit)
local powerType = UnitPowerType(unit);
return (powerType and powerType == 0);
end
function cPowaMana:UnitValue(unit)
PowaAuras:Debug("Mana UnitValue for ", unit);
return UnitPower(unit);
end
function cPowaMana:UnitValueMax(unit)
PowaAuras:Debug("Mana UnitValueMax for ", unit);
return UnitPowerMax(unit);
end
 
cPowaEnergyRagePower = PowaClass(cPowaMana, {ValueName = "RageEnergy", MatchReason="EnergyRagePower low", NoMatchReason="EnergyRagePower not low enough"});
function cPowaEnergyRagePower:IsCorrectPowerType(unit)
local powerType = UnitPowerType(unit);
return (powerType and powerType > 0);
end
 
cPowaAggro = PowaClass(cPowaAura, {ValueName = "Aggro", MatchReason="has aggro", NoMatchReason="does not have aggro"});
function cPowaAggro:AddEffect(i)
 
if not self.target
and not self.targetfriend
and not self.party
and not self.raid
and not self.focus
and not self.optunitn then --- self Aggro
table.insert(PowaAuras.AurasByType.Aggro, i);
end
if self.party then --- party Aggro
table.insert(PowaAuras.AurasByType.PartyAggro, i);
end
if self.raid then --- raid Aggro
table.insert(PowaAuras.AurasByType.RaidAggro, i);
end
end
 
function cPowaAggro:CheckUnit(unit)
return (UnitThreatSituation(unit) or -1)> 0;
end
function cPowaAggro:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check Aggro status");
return self:CheckAllUnits(giveReason);
end
 
cPowaPvP = PowaClass(cPowaAura, {MatchReason="PvP flag set", NoMatchReason="PvP flag not set"});
 
function cPowaPvP:AddEffect(i)
if not self.target
and not self.targetfriend
and not self.party
and not self.raid
and not self.focus
and not self.optunitn then --- self pvp flag
table.insert(PowaAuras.AurasByType.PvP, i);
end
if (self.target or self.targetfriend) then --- target flag
table.insert(PowaAuras.AurasByType.TargetPvP, i);
end
if self.party then --- party pvp flagged
table.insert(PowaAuras.AurasByType.PartyPvP, i);
end
if self.raid then --- raid pvp flagged
table.insert(PowaAuras.AurasByType.RaidPvP, i);
end
end
function cPowaPvP:CheckUnit(unit)
return UnitIsPVP(unit);
end
function cPowaPvP:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check PvP Flag");
return self:CheckAllUnits(giveReason);
end
 
 
cPowaSpellAlert = PowaClass(cPowaAura);
 
function cPowaSpellAlert:AddEffect(i)
if not self.target and not self.focus then --- any enemy casts
table.insert(PowaAuras.AurasByType.Spells, i);
end
if self.target then --- target casts
table.insert(PowaAuras.AurasByType.TargetSpells, i);
end
if self.focus then --- focus casts
table.insert(PowaAuras.AurasByType.FocusSpells, i);
end
end
 
function cPowaSpellAlert:CreateSpellFrame(endtime, spellicon)
local tempicon;
if (self.owntex == true) then
getglobal("PowaIconTexture"):SetTexture(spellicon);
tempicon = getglobal("PowaIconTexture"):GetTexture();
if (self.icon ~= tempicon) then
self.icon = tempicon;
end
end
if (self.icon == "") then
getglobal("PowaIconTexture"):SetTexture(spellicon);
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
end
 
function cPowaSpellAlert:GetDuration(durationInfo)
if (durationInfo and durationInfo > 0) then
return durationInfo / 1000;
end
return 0;
end
 
function cPowaSpellAlert:CheckUnit(unit)
if not UnitExists(unit) or UnitIsDead(unit) or not UnitCanAttack(unit, "player") then
PowaAuras:UnitTestDebug(unit, " exists=", UnitExists(unit), " dead=", UnitIsDeadOrGhost(unit), " hostile=", UnitCanAttack(unit, "player"));
return false;
end
local spellname, _, _, spellicon, _, endtime = UnitCastingInfo(unit);
if not spellname then
spellname, _, _, spellicon, _, endtime = UnitChannelInfo(unit);
end
if not spellname then -- not casting
PowaAuras:UnitTestDebug(unit, " is not casting");
return false;
end
 
if self:MatchSpell(spellname, spellicon, self.buffname, true) then
if (self.Timer) then
self.Timer.DurationInfo = endtime;
end
self:CreateSpellFrame(endtime, spellicon);
return true;
end
 
PowaAuras:UnitTestDebug(unit, " is casting ", spellname, " no match");
return false;
end
 
function cPowaSpellAlert:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check if target/focus is casting ", self.buffname);
 
-- Check self target/focus first
if (self:CheckUnit("target")) then
if (not giveReason) then return true; end
return true, "Target casting "..self.buffname;
end
if (self:CheckUnit("focus")) then
if (not giveReason) then return true; end
return true, "Focus casting "..self.buffname;
end
 
--- Scan raid targets
local numrm = GetNumRaidMembers();
if numrm > 0 then
for i=1, numrm do
if (self:CheckUnit("raid"..i.."target")) then
if (not giveReason) then return true; end
return true, "Raid"..i.."Target casting "..self.buffname;
end
end
else
-- Scan party targets
local numpm = GetNumPartyMembers();
if numpm > 0 then
for i=1, numpm do
if (self:CheckUnit("party"..i.."target")) then
if (not giveReason) then return true; end
return true, "Party"..i.."Target casting "..self.buffname;
end
end
end
end
if (not giveReason) then return false; end
return false, "Nobody's target casting "..self.buffname;
end
 
cPowaStance = PowaClass(cPowaAura, {AuraType = "Stance"});
function cPowaStance:CheckIfShouldShow(giveReason)
PowaAuras:Debug("Check Stance");
local nStance = GetShapeshiftForm(false);
PowaAuras:UnitTestDebug("nStance = "..tostring(nStance).." / self.stance = "..tostring(self.stance));
if (nStance == self.stance and self.icon == "") then
local icon = GetShapeshiftFormInfo(nStance);
getglobal("PowaIconTexture"):SetTexture(icon);
self.icon = getglobal("PowaIconTexture"):GetTexture();
end
if (nStance == self.stance)then
if (not giveReason) then return true; end
return true, "Stances match";
end
if (not giveReason) then return false; end
return false, "Stances don't match";
end
 
 
-- Concrete Classes
PowaAuras.AuraClasses = {
[PowaAuras.BuffTypes.Buff]=cPowaBuff,
[PowaAuras.BuffTypes.Debuff]=cPowaDebuff,
[PowaAuras.BuffTypes.TypeDebuff]=cPowaTypeDebuff,
[PowaAuras.BuffTypes.AoE]=cPowaAoE,
[PowaAuras.BuffTypes.Enchant]=cPowaEnchant,
[PowaAuras.BuffTypes.Combo]=cPowaCombo,
[PowaAuras.BuffTypes.ActionReady]=cPowaActionReady,
[PowaAuras.BuffTypes.Health]=cPowaHealth,
[PowaAuras.BuffTypes.Mana]=cPowaMana,
[PowaAuras.BuffTypes.EnergyRagePower]=cPowaEnergyRagePower,
[PowaAuras.BuffTypes.Aggro]=cPowaAggro,
[PowaAuras.BuffTypes.PvP]=cPowaPvP,
[PowaAuras.BuffTypes.SpellAlert]=cPowaSpellAlert,
[PowaAuras.BuffTypes.Stance]=cPowaStance,
[PowaAuras.BuffTypes.OwnSpell]=cPowaOwnSpell,
}
 
-- Instance concrete class based on type
function PowaAuras:AuraFactory(auraType, id, base)
local class = self.AuraClasses[auraType];
if (class) then
--self:Message("AuraFactory "..tostring(auraType).." id="..tostring(id).." class="..tostring(class));
if (base == nil) then
base = {};
end
base.bufftype = auraType;
return class(id, base);
end
self:Message("AuraFactory unknown "..tostring(auraType).." id="..tostring(id)); --OK
return nil;
end
trunk/PowerAuras/Fonts/Blox2.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Pulse_virgin.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Army.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Hexagon.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Army_Condensed.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Punk_s_not_dead.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/All_Star_Resort.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Neon.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/whoa!.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Army_Expanded.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Blazed.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/CloisterBlack.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Starcraft_Normal.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/MORPHEUS.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Fonts/Moonstar.ttf Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Manual_Pics/Config1.jpg Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Manual_Pics/Editor1.jpg Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Manual_Pics/Thumbs.db Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Manual_Pics/Editor2.jpg Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Manual_Pics/Editor3.jpg Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/PowerAurasDump.lua New file
0,0 → 1,488
--[[
 
powa_dump.lua
Power Auras debug dump function
 
--]]
 
----------------------------------------------
-- Dump eveything we can think of into PowaState
----------------------------------------------
function PowaAuras:Dump()
 
--self:Dump_Safe();
 
local Status, Err = pcall(PowaAuras.Dump_Safe, self);
 
if (not Status) then
self:Message(Err); -- OK
self:DisplayText(self.Colors.Red, "Error in dump protected call: ", Err);
else
self:DisplayText(self.Colors.Green, "Dump OK");
end
end
 
function PowaAuras:Dump_Safe()
PowaState = {};
-- Build
if (GetBuildInfo~=nil) then
local version, buildnum, builddate = GetBuildInfo();
PowaState["BuildInfo"] = {Version=version, BuildNum=buildnum, BuildDate=builddate};
end
-- Time
PowaState["Time"] = GetTime();
-- Locale
PowaState["Locale"] = GetLocale();
-- Zone
PowaState["Zone"] = GetRealZoneText();
-- Realm
PowaState["Realm"] = GetRealmName();
-- CurrentMapZone
PowaState["CurrentMapZone"] = GetCurrentMapZone();
-- CurrentMapContinent
PowaState["CurrentMapContinent"] = GetCurrentMapContinent();
--ActiveTalentGroup
PowaState["ActiveTalentGroup"] = GetActiveTalentGroup()
-- IsInInstance
PowaState["IsInInstance"] = IsInInstance();
-- IsMounted
PowaState["IsMounted"] = IsMounted();
-- IsFlying
PowaState["IsFlying"] = IsFlying();
-- IsResting
PowaState["IsResting"] = IsResting();
-- Player
PowaState["player"] = self:GetUnitInfo("player");
-- PlayerPet
PowaState["playerpet"] = self:GetUnitInfo("playerpet");
-- Target
PowaState["target"] = self:GetUnitInfo("target");
-- TargetPet
PowaState["targetpet"] = self:GetUnitInfo("targetpet");
-- TargetTarget
PowaState["targettarget"] = self:GetUnitInfo("targettarget");
--ComboPoints
PowaState["ComboPoints"] = {player=GetComboPoints("player"), vehicle=GetComboPoints("vehicle")};
-- Weapon Enchant
local hasMainHandEnchant, mainHandExpiration, mainHandCharges, hasOffHandEnchant, offHandExpiration, offHandCharges = GetWeaponEnchantInfo();
PowaState.WeaponEnchant = {hasMainHandEnchant=hasMainHandEnchant, mainHandExpiration=mainHandExpiration, mainHandCharges=mainHandCharges, hasOffHandEnchant=hasOffHandEnchant, offHandExpiration=offHandExpiration, offHandCharges=offHandCharges};
-- Stances
local numforms = GetNumShapeshiftForms();
PowaState["NumShapeshiftForms"] = numforms;
if (numforms>0) then
PowaState["ShapeshiftFormInfo"] = {};
for iForm=1, numforms do
local icon, name, active, castable = GetShapeshiftFormInfo(iForm);
PowaState["ShapeshiftFormInfo"][iForm] = {Icon=icon, Name=name, Active=active, Castable=castable};
end
end
PowaState["ShapeshiftForm"] = GetShapeshiftForm(false);
 
 
-- CTRA MainTanks
if (CT_RA_MainTanks~=nil) then
PowaState.CT_RA_MainTanks = {};
for Index, MTName in pairs(CT_RA_MainTanks) do
PowaState.CT_RA_MainTanks[Index] = MTName;
end
end
-- RDX MainTanks
if (RDX~=nil and RDXM.Assists~=nil and RDXM.Assists.cfg~=nil and RDXM.Assists.cfg.mtarray~=nil) then
PowaState.RDX_MainTanks = {};
for Index, MTName in pairs(RDXM.Assists.cfg.mtarray) do
PowaState.RDX_MainTanks[Index] = MTName;
end
end
-- oRA MainTanks
if (oRA_MainTank~=nil and oRA_MainTank.MainTankTable~=nil) then
PowaState.oRA_MainTanks = {};
for Index, MTName in pairs(oRA_MainTank.MainTankTable) do
PowaState.oRA_MainTanks[Index] = MTName;
end
end
 
-- Slots
PowaState["Inventory"] = {};
PowaState.Inventory["Slot"] = {};
PowaState.Inventory["ItemLink"] = {};
PowaState.Inventory["ItemCooldown"] = {};
self:GetSlotInfo("HeadSlot");
self:GetSlotInfo("NeckSlot");
self:GetSlotInfo("ShoulderSlot");
self:GetSlotInfo("BackSlot");
self:GetSlotInfo("ChestSlot");
self:GetSlotInfo("ShirtSlot");
self:GetSlotInfo("TabardSlot");
self:GetSlotInfo("WristSlot");
self:GetSlotInfo("HandsSlot");
self:GetSlotInfo("WaistSlot");
self:GetSlotInfo("LegsSlot");
self:GetSlotInfo("FeetSlot");
self:GetSlotInfo("Finger0Slot");
self:GetSlotInfo("Finger1Slot");
self:GetSlotInfo("Trinket0Slot");
self:GetSlotInfo("Trinket1Slot");
self:GetSlotInfo("MainHandSlot");
self:GetSlotInfo("SecondaryHandSlot");
self:GetSlotInfo("RangedSlot");
self:GetSlotInfo("AmmoSlot");
self:GetSlotInfo("Bag0Slot");
self:GetSlotInfo("Bag1Slot");
self:GetSlotInfo("Bag2Slot");
self:GetSlotInfo("Bag3Slot");
 
-- SpellTabs
PowaState.SpellTabs = {};
for i = 1, MAX_SKILLLINE_TABS do
local Name, Texture, Offset, Count = GetSpellTabInfo(i);
PowaState.SpellTabs[i] = {Name=Name, Texture=Texture, Offset=Offset, Count=Count};
end
-- Spells
PowaState.SpellBook = {};
local i = 1;
while (true) do
local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL);
local Texture = GetSpellTexture(i, BOOKTYPE_SPELL);
if (spellName==nil or Texture==nil) then
do break end
end
PowaState.SpellBook[i] = {Name=spellName, Rank=spellRank, Texture=Texture};
local StartTime, Duration, Enabled = GetSpellCooldown(i, BOOKTYPE_SPELL);
PowaState.SpellBook[i]["Cooldown"] = {StartTime=StartTime, Duration=Duration, Enabled=Enabled};
PowaState.SpellBook[i]["UsableSpell"] = IsUsableSpell(spellName);
self:ResetTooltip();
PowaAuras_Tooltip:SetSpell(i, BOOKTYPE_SPELL);
self:CaptureTooltip(PowaState.SpellBook[i]);
PowaState.SpellBook[spellName] = PowaState.SpellBook[i];
i = i + 1;
end
-- Debuff Spells
PowaState.SpellInfo = {}
for k in pairs(PowaAuras.DebuffTypeSpellIds) do
local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo(k);
if spellName then
PowaState.SpellInfo[k] = {Name=name, Rank=rank, Icon=icon, Cost=cost, IsFunnel=isFunnel, PowerType=powerType, CastTime=castTime, MinRange=minRange, MaxRange=maxRange};
end
end
-- SpellIds used in auras
for _, aura in pairs(PowaAuras.Auras) do
for pword in string.gmatch(aura.buffname, "[^/]+") do
local _, _,spellId = string.find(aura.buffname, "%[(%d+)%]")
if (spellId) then
local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo(tonumber(spellId));
if spellName then
PowaState.SpellInfo[k] = {Name=name, Rank=rank, Icon=icon, Cost=cost, IsFunnel=isFunnel, PowerType=powerType, CastTime=castTime, MinRange=minRange, MaxRange=maxRange};
end
end
end
end
 
 
-- BonusScan
if (BonusScanner~=nil and
BonusScanner.active==1 and
BonusScanner.bonuses~=nil and
BonusScanner.bonuses.HEAL~=nil) then
PowaState.BonusScanner = {Active=BonusScanner.active, Heal=BonusScanner.bonuses.HEAL};
end
-- ActionSlots
PowaState.ActionSlots = {};
for Id = 1, 120 do
local Text = GetActionText(Id);
local cdStart, cdDuration, cdEnabled = GetActionCooldown(Id);
PowaState.ActionSlots[Id] = {HasAction=HasAction(Id),
ActionText=Text,
InRange=IsActionInRange(Id),
HasRange=ActionHasRange(Id),
CurrentAction=IsCurrentAction(Id),
AutoRepeatAction=IsAutoRepeatAction(Id),
UsableAction=IsUsableAction(Id),
AttackAction=IsAttackAction(Id),
Texture=GetActionTexture(Id),
Count=GetActionCount(Id),
Cooldown={Start=cdStart, Duration=cdDuration, Enabled=cdEnabled},
};
if (Text==nil and HasAction(Id)) then
self:ResetTooltip();
PowaAuras_Tooltip:SetAction(Id);
self:CaptureTooltip(PowaState.ActionSlots[Id]);
end
end
--Bags
PowaState.Bags = {};
for bag = 0, NUM_BAG_FRAMES do
PowaState.Bags[bag] = {Slots=GetContainerNumSlots(bag)};
for slot = 1, GetContainerNumSlots(bag) do
local itemName = GetContainerItemLink(bag, slot);
if itemName then
local texture, count = GetContainerItemInfo(bag, slot);
PowaState.Bags[bag][slot] = {Name=itemName, Texture=texture, Count=count};
end
end
end
--Macros
PowaState.Macros = {};
for Id = 1, 36 do
local Name, IconTexture, Body = GetMacroInfo(Id);
PowaState.Macros[Id] = {Name=Name, Texture=IconTexture, Body=self:Escape(Body)};
end
--Groups
PowaState["RaidLeader"] = IsRaidLeader();
PowaState["PartyLeader"] = IsPartyLeader();
PowaState["PartyLeaderIndex"] = GetPartyLeaderIndex();
 
local numpm = GetNumPartyMembers();
local numrm = GetNumRaidMembers();
--Raid
if (numrm>0) then
PowaState.Raid = {Count=numrm};
PowaState.Raid.Roster = {};
for Id = 1, 40 do
local unit = "raid"..Id;
if (UnitExists(unit)) then
PowaState.Raid[unit] = self:GetUnitInfo(unit);
PowaState.Raid["raidpet"..Id] = self:GetUnitInfo("raidpet"..Id);
PowaState.Raid[unit.."Target"] = self:GetUnitInfo(unit.."Target");
PowaState.Raid[unit.."TargetTarget"] = self:GetUnitInfo(unit.."TargetTarget");
end
local name, rank, subgroup, level, classloc, class, zone, online, isDead = GetRaidRosterInfo(Id);
PowaState.Raid.Roster[Id] = {Name=name, Rank=rank, Subgroup=subgroup, Level=level, ClassLoc=classloc, Class=class, Zone=zone, Online=online, IsDead=isDead};
end
end
--Party
if (numpm>0) then
PowaState.Party = {Count=numpm};
for Id = 1, 4 do
local unit = "party"..Id;
if (UnitExists(unit)) then
PowaState.Party[unit] = self:GetUnitInfo(unit);
PowaState.Party["partypet"..Id] = self:GetUnitInfo("partypet"..Id);
PowaState.Party[unit.."Target"] = self:GetUnitInfo(unit.."Target");
PowaState.Party[unit.."TargetTarget"] = self:GetUnitInfo(unit.."TargetTarget");
end
end
end
 
--Battlefields
PowaState.Battlefields = {};
for Id=1, MAX_BATTLEFIELD_QUEUES do
local bgstatus, BGName, instanceID = GetBattlefieldStatus(Id);
PowaState.Battlefields[Id] = {Status=bgstatus, Name=BGName, Id=instanceID};
end
 
-- Powa
PowaState.Powa = self:CopyTable(PowaAuras);
PowaState.PowaGlobalListe = self:CopyTable(PowaGlobalListe);
PowaState.PowaPlayerListe = self:CopyTable(PowaPlayerListe);
 
end
 
-- Extract details for specified unit
function PowaAuras:GetUnitInfo(unit)
if (not UnitExists(unit)) then
return nil;
end
 
--self:Message("GetUnitInfo for " .. tostring(unit));
 
local UnitInfo = {Unit=unit}
local Name, Realm = UnitName(unit)
UnitInfo["Name"] = Name;
UnitInfo["Realm"] = Realm;
UnitInfo["Level"] = UnitLevel(unit);
local LocClass, Class= UnitClass(unit);
UnitInfo["LocClass"] = LocClass;
UnitInfo["Class"] = Class;
UnitInfo["Sex"] = UnitSex(unit);
UnitInfo["Connected"] = UnitIsConnected(unit);
UnitInfo["Dead"] = UnitIsDead(unit);
UnitInfo["Ghost"] = UnitIsGhost(unit);
UnitInfo["DeadOrGhost"] = UnitIsDeadOrGhost(unit);
UnitInfo["Corpse"] = UnitIsCorpse(unit);
UnitInfo["Player"] = UnitIsUnit(unit, "player");
UnitInfo["Visible"] = UnitIsVisible(unit);
UnitInfo["Enemy"] = UnitIsEnemy(unit, "player");
UnitInfo["Friend"] = UnitIsFriend(unit, "player");
UnitInfo["PVP"] = UnitIsPVP(unit);
UnitInfo["ThreatSituation"] = UnitThreatSituation(unit);
UnitInfo["CanAttack"] = UnitCanAttack(unit, "player");
UnitInfo["CanBeAttacked"] = UnitCanAttack("player", unit);
UnitInfo["CanCooperate"] = UnitCanCooperate("player", unit);
local X, Y = GetPlayerMapPosition(unit);
UnitInfo["Pos"]= {X=X, Y=Y};
UnitInfo["InteractDistance"] = {[1]=CheckInteractDistance(unit, 1);
[2]=CheckInteractDistance(unit, 2),
[3]=CheckInteractDistance(unit, 3),
[4]=CheckInteractDistance(unit, 4)};
UnitInfo["InParty"] = UnitInParty(unit);
UnitInfo["UnitInRaid"] = UnitInRaid(unit);
UnitInfo["PlayerOrPetInParty"] = UnitPlayerOrPetInParty(unit);
UnitInfo["PlayerOrPetInRaid"] = UnitPlayerOrPetInRaid(unit);
 
self:ResetTooltip();
PowaAuras_Tooltip:SetUnit(unit);
self:CaptureTooltip(UnitInfo)
 
UnitInfo["InCombat"] = UnitAffectingCombat(unit);
UnitInfo["TargetInCombat"] = UnitAffectingCombat(unit, "target");
 
UnitInfo.Buffs = {};
local Index = 1;
local Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitBuff(unit, Index);
while (Name~=nil) do
UnitInfo.Buffs[Index] = {Name=Name, Applications=Applications, Type=Type, Rank=Rank, Icon=Icon, Duration=Duration, Expires=Expires, Source=Source, Stealable=Stealable};
self:ResetTooltip();
PowaAuras_Tooltip:SetUnitBuff(unit, Index);
self:CaptureTooltip(UnitInfo["Buffs"][Index])
Index = Index + 1;
Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitBuff(unit, Index);
end
 
UnitInfo.Debuffs = {};
Index = 1;
Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitDebuff(unit, Index);
while (Name~=nil) do
UnitInfo.Debuffs[Index] = {Name=Name, Applications=Applications, Type=Type, Rank=Rank, Icon=Icon, Duration=Duration, Expires=Expires, Source=Source, Stealable=Stealable};
self:ResetTooltip();
PowaAuras_Tooltip:SetUnitDebuff(unit, Index);
self:CaptureTooltip(UnitInfo["Debuffs"][Index]);
Index = Index + 1;
Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitDebuff(unit, Index);
end
 
UnitInfo.RemoveableDebuffs = {};
Index = 1;
Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitDebuff(unit, Index, 1);
while (Name~=nil) do
UnitInfo.RemoveableDebuffs[Index] = {Name=Name, Applications=Applications, Type=Type, Rank=Rank, Icon=Icon, Duration=Duration, Expires=Expires, Source=Source, Stealable=Stealable};
self:ResetTooltip();
PowaAuras_Tooltip:SetUnitDebuff(unit, Index);
self:CaptureTooltip(UnitInfo["RemoveableDebuffs"][Index]);
Index = Index + 1;
Name, Rank, Icon, Applications, Type, Duration, Expires, Source, Stealable = UnitDebuff(unit, Index, 1);
end
 
local StatIndex = {[1]="Strength", [2]="Agility", [3]="Stamina", [4]="Intellect", [5]="Spirit"};
UnitInfo["Stats"] = {};
for Index = 1, 5 do
local base, stat, posBuff, negBuff = UnitStat(unit, Index);
UnitInfo.Stats[Index] = {Type=StatIndex[Index], Base=base, Stat=stat, PosBuff=posBuff, NegBuff=negBuff};
end
 
local ResIndex = {[0]="Physical", [1]="Holy", [2]="Fire", [3]="Nature", [4]="Frost", [5]="Shadow", [6]="Arcane"};
UnitInfo.Resistances = {};
for Index = 0, 6 do
local base, total, bonus, malus = UnitResistance(unit, Index)
UnitInfo["Resistances"][Index] = {Type=ResIndex[Index], Base=base, Total=total, Bonus=bonus, Malus=malus};
end
 
UnitInfo["Armor"] = UnitArmor(unit);
UnitInfo["AttackBothHands"] = UnitAttackBothHands(unit);
UnitInfo["AttackPower"] = UnitAttackPower(unit);
UnitInfo["AttackSpeed"] = UnitAttackSpeed(unit);
UnitInfo["Classification"] = UnitClassification(unit);
UnitInfo["CreatureFamily"] = UnitCreatureFamily(unit);
UnitInfo["CreatureType"] = UnitCreatureType(unit) ;
UnitInfo["Damage"] = UnitDamage(unit);
UnitInfo["Defense"] = UnitDefense(unit);
UnitInfo["FactionGroup"] = UnitFactionGroup(unit);
UnitInfo["Health"] = UnitHealth(unit);
UnitInfo["HealthMax"] = UnitHealthMax(unit) ;
UnitInfo["IsCharmed"] = UnitIsCharmed(unit);
--UnitInfo["IsCivilian"] = UnitIsCivilian(unit);
UnitInfo["IsPartyLeader"] = UnitIsPartyLeader(unit);
UnitInfo["IsPlayer"] = UnitIsPlayer(unit);
-- UnitInfo["IsPlusMob"] = UnitIsPlusMob(unit);
UnitInfo["IsTapped"] = UnitIsTapped(unit);
UnitInfo["IsTappedByPlayer"] = UnitIsTappedByPlayer(unit);
UnitInfo["IsTrivial"] = UnitIsTrivial(unit);
 
UnitInfo["InVehicle"] = UnitInVehicle(unit);
 
UnitInfo["Mana"] = UnitMana(unit);
UnitInfo["ManaMax"] = UnitManaMax(unit);
UnitInfo["Power"] = {};
UnitInfo["PowerMax"] = {};
UnitInfo.Power.Default = UnitPower(unit);
UnitInfo.PowerMax.Default = UnitPowerMax(unit);
for powerType=0,6 do
UnitInfo.Power[powerType] = UnitPower(unit, powerType);
UnitInfo.PowerMax[powerType] = UnitPowerMax(unit, powerType);
end
local powerType, powerTypeString = UnitPowerType(unit);
UnitInfo["PowerType"] = powerType;
UnitInfo["PowerTypeString"] = powerTypeString;
UnitInfo.RuneCooldown = {};
UnitInfo.RuneType = {};
for runeId=1,6 do
local runeStart, runeDuration, runeReady = GetRuneCooldown(runeId)
UnitInfo.RuneCooldown[runeId] = {Start=runeStart, Duration=runeDuration, RuneReady=runeReady};
UnitInfo.RuneType[runeId] = GetRuneType(runeId);
end
UnitInfo["OnTaxi"] = UnitOnTaxi(unit);
UnitInfo["PVPName"] = UnitPVPName(unit) ;
UnitInfo["PVPRank"] = UnitPVPRank(unit);
UnitInfo["Race"] = UnitRace(unit);
UnitInfo["RangedAttack"] = UnitRangedAttack(unit);
UnitInfo["RangedAttackPower"] = UnitRangedAttackPower(unit);
UnitInfo["RangedDamage"] = UnitRangedDamage(unit);
Name, Realm = UnitName(unit.."Target")
UnitInfo["Target"] = Name;
UnitInfo["TargetRealm"] = Realm;
Name, Realm = UnitName(unit.."TargetTarget")
UnitInfo["TargetTarget"] = Name;
UnitInfo["TargetTargetRealm"] = Realm;
UnitInfo["XP"] = UnitXP(unit);
UnitInfo["XPMax"] = UnitXPMax(unit);
UnitInfo["UnitHasVehicleUI"] = UnitHasVehicleUI(unit);
local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(unit);
UnitInfo["CastingInfo"] = {Spell=spell, Rank=rank, DisplayName=displayName, Icon=icon, StartTime=startTime, EndTime=endTime, IsTradeSkill=isTradeSkill};
spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitChannelInfo(unit);
UnitInfo["ChannelInfo"] = {Spell=spell, Rank=rank, DisplayName=displayName, Icon=icon, StartTime=startTime, EndTime=endTime, IsTradeSkill=isTradeSkill};
 
return UnitInfo;
end
 
-- Extract details for specified slot
function PowaAuras:GetSlotInfo(slot)
local Id, Texture = GetInventorySlotInfo(slot);
if (Id~=nil) then
PowaState.Inventory.Slot[slot] = {Id=Id, Texture=Texture, Slot=slot};
PowaState.Inventory.ItemLink[Id] = GetInventoryItemLink("player", Id);
PowaState.Inventory.ItemCooldown[Id] = GetInventoryItemCooldown("player", Id);
PowaState.Inventory.Slot[Id] = PowaState.Inventory.Slot[slot]
self:ResetTooltip();
PowaAuras_Tooltip:SetInventoryItem("player", Id);
self:CaptureTooltip(PowaState.Inventory.Slot[Id]);
end
end
 
function PowaAuras:Escape(text)
if (text==nil) then
return nil;
end
return string.gsub(string.gsub(text, "\n", "<LF>"), "\r", "<CR>");
end
 
function PowaAuras:ResetTooltip()
for z = 1, 9 do
local line = getglobal("PowaAuras_TooltipTextLeft"..z);
if (line~=nil) then line:SetText(nil); end
line = getglobal("PowaAuras_TooltipTextRight"..z);
if (line~=nil) then line:SetText(nil); end
end
PowaAuras_Tooltip:ClearLines();
PowaAuras_Tooltip:SetOwner(UIParent, "ANCHOR_NONE");
end
 
function PowaAuras:CaptureTooltip(store)
store["Tooltip"] = {};
store.Tooltip.NumLines = PowaAuras_Tooltip:NumLines();
for z = 1, PowaAuras_Tooltip:NumLines() do
local line = getglobal("PowaAuras_TooltipTextLeft"..z);
store.Tooltip["Left"..z] = self:Escape(line:GetText());
line = getglobal("PowaAuras_TooltipTextRight"..z);
store.Tooltip["Right"..z] = self:Escape(line:GetText());
end
end
 
trunk/PowerAuras/TimersTransparent.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/localisation.lua New file
0,0 → 1,269
PowaAuras.Anim[0] = "[Invisible]";
PowaAuras.Anim[1] = "Static";
PowaAuras.Anim[2] = "Flashing";
PowaAuras.Anim[3] = "Growing";
PowaAuras.Anim[4] = "Pulse";
PowaAuras.Anim[5] = "Bubble";
PowaAuras.Anim[6] = "Water drop";
PowaAuras.Anim[7] = "Electric";
PowaAuras.Anim[8] = "Shrinking";
PowaAuras.Anim[9] = "Flame";
PowaAuras.Anim[10] = "Orbit";
 
PowaAuras.BeginAnimDisplay[0] = "[None]";
PowaAuras.BeginAnimDisplay[1] = "Zoom In";
PowaAuras.BeginAnimDisplay[2] = "Zoom Out";
PowaAuras.BeginAnimDisplay[3] = "Opacity only";
PowaAuras.BeginAnimDisplay[4] = "Left";
PowaAuras.BeginAnimDisplay[5] = "Top-Left";
PowaAuras.BeginAnimDisplay[6] = "Top";
PowaAuras.BeginAnimDisplay[7] = "Top-Right";
PowaAuras.BeginAnimDisplay[8] = "Right";
PowaAuras.BeginAnimDisplay[9] = "Bottom-Right";
PowaAuras.BeginAnimDisplay[10] = "Bottom";
PowaAuras.BeginAnimDisplay[11] = "Bottom-Left";
PowaAuras.BeginAnimDisplay[12] = "Bounce";
 
PowaAuras.EndAnimDisplay[0] = "[None]";
PowaAuras.EndAnimDisplay[1] = "Zoom In";
PowaAuras.EndAnimDisplay[2] = "Zoom Out";
PowaAuras.EndAnimDisplay[3] = "Opacity only";
 
 
PowaAuras.Sound[0] = NONE;
PowaAuras.Sound[1] = "LEVELUP";
PowaAuras.Sound[2] = "LOOTWINDOWCOINSOUND";
PowaAuras.Sound[3] = "MapPing";
PowaAuras.Sound[4] = "Exploration";
PowaAuras.Sound[5] = "QUESTADDED";
PowaAuras.Sound[6] = "QUESTCOMPLETED";
PowaAuras.Sound[7] = "WriteQuest";
PowaAuras.Sound[8] = "Fishing Reel in";
PowaAuras.Sound[9] = "igPVPUpdate";
PowaAuras.Sound[10] = "ReadyCheck";
PowaAuras.Sound[11] = "RaidWarning";
PowaAuras.Sound[12] = "AuctionWindowOpen";
PowaAuras.Sound[13] = "AuctionWindowClose";
PowaAuras.Sound[14] = "TellMessage";
PowaAuras.Sound[15] = "igBackPackOpen";
 
PowaAuras.Text = {
welcome = "Type /powa to view the options.",
 
aucune = "None",
aucun = "None",
largeur = "Width",
hauteur = "Height",
mainHand = "main",
offHand = "off",
bothHands = "both",
 
DebuffType =
{
Magic = "Magic",
Disease = "Disease",
Curse = "Curse",
Poison = "Poison",
},
 
DebuffCatType =
{
[PowaAuras.DebuffCatType.CC] = "CC",
[PowaAuras.DebuffCatType.Silence] = "Silence",
[PowaAuras.DebuffCatType.Snare] = "Snare",
[PowaAuras.DebuffCatType.Stun] = "Stun",
[PowaAuras.DebuffCatType.Root] = "Root",
[PowaAuras.DebuffCatType.Disarm] = "Disarm",
[PowaAuras.DebuffCatType.PvE] = "PvE",
},
 
-- main
nomEnable = "Activate Power Auras",
aideEnable = "Enable all Power Auras effects",
nomDebug = "Activate Debug Messages",
aideDebug = "Enable Debug Messages",
ListePlayer = "Page",
ListeGlobal = "Global",
aideMove = "Move the effect here.",
aideCopy = "Copy the effect here.",
nomRename = "Rename",
aideRename = "Rename the selected effect's page.",
nomTest = "Test",
nomHide = "Hide all",
nomEdit = "Edit",
nomNew = "New",
nomDel = "Delete",
nomImport = "Import",
nomExport = "Export",
aideImport = "Press Ctrl-V to paste the Aura-string and press \'Accept\'",
aideExport = "Press Ctrl-C to copy the Aura-string for sharing.",
aideDel = "Remove the selected effect (Hold CTRL to allow this button to work)",
nomMove = "Move",
nomCopy = "Copy",
nomPlayerEffects = "Character effects",
nomGlobalEffects = "Global\neffects",
aideEffectTooltip = "(Shift-click to toggle effect ON or OFF)",
 
-- editor
nomSound = "Sound to play",
aideSound = "Plays a sound at the beginning.",
nomCustomSound = "OR soundfile:",
aideCustomSound = "Enter a soundfile that is in the Sounds folder, BEFORE you started the game. mp3 and wav are supported. example: 'cookie.mp3' ;)",
 
nomTexture = "Texture",
aideTexture = "The texture to be shown. You can easily replace textures by changing the files Aura#.tga in the Addon's directory.",
 
nomAnim1 = "Main Animation",
nomAnim2 = "Secondary Animation",
aideAnim1 = "Animate the texture or not, with various effects.",
aideAnim2 = "This animation will be shown with less opacity than the main animaton. Attention, to not overload the screen.",
 
nomDeform = "Deformation",
aideDeform = "Stretch the texture in height or in width.",
 
aideColor = "Click here to change the color of the texture.",
aideFont = "Click here to pick Font. Press OK to apply the selection.",
aideMultiID = "Enter here other Aura IDs to combine checks. Multiple IDs must be separated with '/'. Aura ID can be found as [#] on first line of Aura tooltip.",
aideTooltipCheck = "Also check the tooltip contains this text",
 
aideBuff = "Enter here the name of the buff, or a part of the name, which must activate/deactivate the effect. You can enter several names (ex: Super Buff/Power)",
aideBuff2 = "Enter here the name of the debuff, or a part of the name, which must activate/deactivate the effect. You can enter several names (ex: Dark Disease/Plague)",
aideBuff3 = "Enter here the type of the debuff which must activate or deactivate the effect (Poison, Disease, Curse, Magic, CC, Silence, Stun, Snare, Root or None). You can enter several types (ex: Disease/Poison)",
aideBuff4 = "Enter here the name of area of effect that must trigger this effect (like a rain of fire for example, the name of this AOE can be found in the combat log)",
aideBuff5 = "Enter here the temporary enchant which must activate this effect : optionally prepend it with 'main/' or 'off/ to designate mainhand or offhand slot. (ex: main/crippling)",
aideBuff6 = "Enter here the number of combo points that must activate this effect (ex : 1 or 1/2/3 or 0/4/5 etc...) ",
aideBuff7 = "Enter here the name, or a part of the name, of an action in your action bars. The effect will be active when this action is usable.",
aideBuff8 = "Enter here the name, or a part of the name, of a spell from your spellbook. You can enter a spell id [12345].",
 
aideSpells = "Enter here the Spell Name that will trigger a spell alert Aura.",
aideStacks = "Enter here the operator and the amount of stacks, required activate/deactivate the effect. Operator is required ex: '<5' '>3' '=11' '!5' '>=0' '<=6' '2-8'",
 
aideUnitn = "Enter here the name of the unit, which must activate/deactivate the effect. You can enter only names, if they are in your raid or group.",
aideUnitn2 = "Only for raid/group.",
 
aideMaxTex = "Define the maximum number of textures available on the Effect Editor. If you add textures on the Mod directory (with the names AURA1.tga to AURA50.tga), you must indicate the correct number here.",
aideAddEffect = "Add an effect for edition.",
aideWowTextures = "Check this to use the texture of WoW instead of textures in the Power Auras directory for this effect.",
aideCustomTextures = "Check this to use textures in the 'Custom' subdirectory. Put the name of the texture below (ex: myTexture.tga). You can also use a Spell Name (ex: Feign Death) or SpellID (ex: 5384).",
aideTextAura = "Check this to type text instead of texture.",
aideRealaura = "Real Aura",
aideRandomColor = "Check this to tell this effect to use random color each time it will be activated.",
aideTexMode = "Uncheck this to use the texture opacity. By default, the darkest colors will be more transparent.",
 
 
nomActivationBy = "Activation by :",
nomOwnTex = "Use own Texture",
aideOwnTex = "Use the De/Buff or Ability Texture instead.",
nomStacks = "Stacks",
nomSpeed = "Animation speed",
nomBegin = "Begin Animation",
nomEnd = "End Animation",
nomSymetrie = "Symmetry",
nomAlpha = "Opacity",
nomPos = "Position",
nomTaille = "Size",
nomExact = "Exact Name",
nomGCD = "Global Cooldown",
nomThreshold = "Threshold",
nomStance = "Stance",
aideThreshInv = "Check this to invert the threshold logic. Health/Mana: default = Low Warning / checked = High Warning. Energy/Rage/Power: default = High Warning / checked = Low Warning",
nomThreshInv = "</>",
nomMine = "Cast by me",
nomDispellable = "I can dispell",
 
nomCheckBuff = "Buff",
nomCheckDebuff = "Debuff",
nomCheckAoeDebuff = "AOE Debuff",
nomCheckDebuffType = "Debuff's type",
nomCheckEnchant = "Weapon Enchant",
nomCheckCombo = "Combo Points",
nomCheckSkill = "Action Usable",
nomCheckHealth = "Health",
nomCheckMana = "Mana",
nomCheckRageEnergy = "Rage/Energy/Runic",
nomCheckAggro = "Aggro",
nomCheckPvP = "PvP",
nomCheckStance = "Stance",
nomCheckSpells = "Spell Alert",
nomCheckOwnSpell = "My Spell",
 
nomCheckTarget = "Enemy Target",
nomCheckFriend = "Friendly Target",
nomCheckParty = "Partymember",
nomCheckFocus = "Focus",
nomCheckRaid = "Raidmember",
nomCheckGroupOrSelf = "Raid/Party or self",
nomCheckGroupAny = "Any",
nomCheckOptunitn = "Unitname",
 
aideTarget = "Check this to test an enemy target only.",
aideTargetFriend = "Check this to test a friendly target only.",
aideParty = "Check this to test a party member only.",
aideGroupOrSelf = "Check this to test a party or raid member or self.",
aideFocus = "Check this to test the focus only.",
aideRaid = "Check this to test a raid member only.",
aideGroupAny = "Check this to test buff on 'Any' party/raid member. Unchecked: Test that 'All' are buffed.",
aideOptunitn = "Check this to test a spezial char in raid/group only.",
aideExact = "Check this to test the exact name of the buff/debuff/action.",
aideGCD = "Check this and the Global Cooldown triggers with aura. May cause blinking the aura, when an action only has a Global Cooldown.",
aideStance = "Select which Stance,Aura or Form trigger the event.",
aideMine = "Check this to test only buffs/debuffs cast by the player",
 
nomCheckShowTimer = "Show",
nomTimerDuration = "Duration",
aideTimerDuration = "Show a timer to simulate buff/debuff duration on the target (0 to deactivate)",
aideShowTimer = "Check this to show the timer of this effect.",
aideSelectTimer = "Select which timer will show the duration",
aideSelectTimerBuff = "Select which timer will show the duration (this one is reserved for player's buffs)",
aideSelectTimerDebuff = "Select which timer will show the duration (this one is reserved for player's debuffs)",
 
nomCheckInverse = "Invert",
aideInverse = "Invert the logic to show this effect only when buff/debuff is not active.",
 
nomCheckIgnoreMaj = "Ignore uppercase",
aideIgnoreMaj = "Check this to ignore upper/lowercase of buff/debuff names.",
 
nomDuration = "Anim. duration",
aideDuration = "After this time, this effect will disapear (0 to deactivate)",
 
nomCentiemes = "Show hundredth",
nomDual = "Show two timers",
nomHideLeadingZeros = "Hide Leading Zeros",
nomTransparent = "Use transparent textures",
nomClose = "Close",
nomEffectEditor = "Effect Editor",
nomAdvOptions = "Options",
nomMaxTex = "Maximum of textures available",
nomTabAnim = "Animation",
nomTabActiv = "Activation",
nomTabSound = "Sound",
nomTabTimer = "Timer",
nomWowTextures = "WoW Textures",
nomCustomTextures = "Custom Textures",
nomTextAura = "Text Aura",
nomRealaura = "Real Aura",
nomRandomColor = "Random Colors",
nomTexMode = "Glow",
nomInCombat = "Only if in Combat",
aideInCombat = "Show this effect only when you are in combat.",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomTalentGroup1 = "Spec 1",
aideTalentGroup1 = "Show this effect only when you are in your primary talent spec.",
nomTalentGroup2 = "Spec 2",
aideTalentGroup2 = "Show this effect only when you are in your secondary talent spec.",
nomNotInCombat = "Only if not in Combat",
aideNotInCombat = "Show this effect only when you are NOT in combat.",
nomIsMounted = "Only if Mounted",
aideIsMounted = "Checked: Only when on mount. Uncheked: Only when dismounted.",
nomInVehicle = "Only if in Vehicle",
aideInVehicle = "Checked: Only when in vehicle. Uncheked: Only when not in vehicle.",
nomIsInRaid = "Only if in Raid",
aideIsInRaid = "Show this effect only when you are in a raid.",
nomResting = "Hide if Resting",
aideResting = "Checked: Will hide when Resting unless in combat. Uncheked: Normal.",
};
 
 
trunk/PowerAuras/Notes-zhCN.txt New file
0,0 → 1,123
- =============== 更新日志: ===============-
Version 2.5.2
- 性能: 增加30多种内置材质供玩家选择使用
- 性能: 增加PvP标志检测选项
- 性能: 增加仇恨警报检测选项
- 性能: 增加了使用技能或法术默认图标做为特效材质的选项
- 修正了许多小bug(如标签颜色,提示丢失等问题)
 
Version 2.5.1a
- 性能: 现在当你按alt+z截屏时,光环可以自动隐藏了
 
Version 2.5.1
- 性能: 针对2.4 版本重新编写部分代码
- 性能: 现在可以方便的从下拉菜单中选择新增材质
新材质命名为AuraXX.tga (XX代表两位数字),保存在本插件文件夹中,需要重新启动游戏.
- 修正: 姿态/排列 检测
- 修正: buff/debebuff检测
- 修正: 骑乘检测(增加检测飞行状态)
- 修正: 技能可用检测现在可以正确工作了(填补了技能冷却结束事件处的触发代码)
现在对所有动作按钮有效
如果你要检测饰品或其它背包中物品的冷却,你必须把他们拖到一个动作条上(随便位置,只要可见)
 
v.2.421
-- 修正了一个光环在小队或团队中产生的bug
 
v.2.42
-- 为'动作冷却'增加了一个timer(计时器)
 
v.2.411
-- 增加了德语使用手册,请查看文件German_Manual.html
 
v.2.41
-- 为激活条件'动作冷却'增加检测公共冷却的选项
-- 重新排序了激活条件下属选项
-- 等待相应法文和中文语言文件
 
v.2.40
-- 增加新的特效激活条件:当生命值/法力值达到某一极限时触发
-- 添加精确匹配选项,此功能还在测试阶段
-- TOC版本更新到2.3
 
v.2.39
-- 增加了简体中文(修正)和繁体中文语言支持
 
v.2.38c
-- 修复了事件函数"function Powa_OnEvent()"
 
v.2.38b
-- 修正了检测到结束时光环不改变的bug
-- 当你关闭特效编辑器窗口时(需要时可以用ESC键 :P ),动作冷却检测现在可以使用了
 
v.2.38a
-- 增加了中文语言支持,感谢doomiris!
 
v.2.38
-- "动作冷却"功能在动作可用且只有一次公共冷却时被激活
 
v.2.37a
-- 修正了早期效果不能编辑的bug
-- 现在可以通过按Esc键来关闭特效编辑窗口了
 
* v.2.37
 
-- 增加了一个激活条件,当团队成员获得某个debuff时触发
-- 增加了一个激活条件,当团队成员全部获得某个buff时触发
-- 增加了焦点追踪
-- 增加了团队追踪,此功能还在测试中
-- 增加了小队追踪(你可以输入一个小队名来检测他们的buff/debuff,只能检测自己团队中的小队)
-- 增加了德语支持
 
v.2.36b
-- 修正了buff/debuff被刷新时,特效时间不改变的错误
 
v.2.36a
-- 取消了聊天窗口中的debug排错信息
-- 增加了三个北欧字体的自定义材质,见custom文件夹
-- 团队buff现在只在团队模式下有效
 
v.2.35
-- 增加了一个检查团队成员buff/debuff的选项
 
Version 2.34 :
--------------
+ 增加了一个激活条件:指定动作是否冷却(或指定动作是否在动作条上)
- 最终,修正了某些武器附魔不能正确显示的bug。
 
Version 2.32 :
--------------
+ 为2.03版本做了兼容性调整
+ PowerAuras安装包里现在包括50种材质(你不需要在额外下载另外两个材质包了)
+ 增加了3个计时器
+ 增加了一个计时器以显示目标身上buff/debuff的持续时间
+ 现在自定义材质变得容易了,你只需把做好的材质放在Custom文件夹下
+ 增加了一个在友好/敌对目标上进行测试的功能
+ 增加了一个方法使玩家更方便的移动特效和计时器在屏幕上的位置
+ 现在可以让材质显示为正常透明模式了
- AOE法术特效在你死亡或切换区域时能正确消失了
- 修正了一些其它较小的bug
 
Version 2.17 :
--------------
+ 为2.0.0版本做了兼容性调整
 
[11/07]Version 2.16 :
--------------
- 修正了导致内存占用过高的问题;
- 修正了某些情况会弹出错误提示的问题
+ 为每种特效增加了两个选项:"仅用于战斗状态"和"仅用于非战斗状态"
 
[11/03]Version 2.15 :
--------------
+ 增加了一个新界面方便管理所有特效.现在每个角色可以创建/编辑共120个特效,还可以保存240个所有角色可用的共用特效.
+ 所有的特效都可以在可用的分类中复制或者移动,这些分类你可以重命名,以便更好的管理和使用这些特效.
+ 增加了一个可以单独启用/禁用某个特效的功能
+ 增加了一个通过受到AOE类法术影响而激活特效的激活方式(比如 火焰之雨, 暴风雪, 等等...)
+ 增加了一个通过武器附魔激而激活特效的激活方式 (主手, 副手 或双武器)
+ 增加了一个通过获得连击点数而激活特效的激活方式,盗贼和猫形态的德鲁伊可用.
+ 增加了一个选项"在目标身上",作用是当目标身上有某种BUFF或者DEBUFF时,你可以看见定义好的特效.
+ 增加了一个选项"随机颜色",作用是当特效每次激活时都选择一种随机的颜色
+ 增加了一个选项"WOW内置材质",作用是可用浏览和使用游戏内置的25种材质而不使用插件自带的材质.
+ 材质尺寸修改功能将会更精确.
- 去除了[列表]面板,以后将不再使用[列表]功能来保存特效,所有特效将被保存在[公用特效分类]中,并被设置为"禁用"
- 修正了一些小bug
\ No newline at end of file
trunk/PowerAuras/PowerAuras.lua New file
0,0 → 1,1812
--- ------------------------------------------------
--- << Power Auras >>
--- Par -Sinsthar-
--- [Ziya/Tiven - serveur Fr - Kirin Tor]
---
--- Effets visuels autour du personnage
--- en cas de buff, debuff et autres...
--- ------------------------------------------------
 
--- Author: Smacker(v2.6.2),Gameldar (v2.6.1), Driizt (v2.5+), Garstiger (Powa Continued), Sinsthar (original author/concept)
--- Thanks: Kouri for debuff type detection code
--- Thanks: StingerSoft for Russian translations
--- Changes:
--- Version 2.6.2 (WotLK Raid or Self or Party)
--- Feature: Option to match buff/debuff on group (raid or party or self)
--- Feature: Option to match on buff/debuff tool-tip text
--- Feature: In Vehicle flag added
--- Feature: Resting flag added (except when in combat)
--- Feature: Stun/Silence/Root/CC/Snare detection added to DebuffType
--- Feature: Can flag to trigger only dispellable DebuffTypes
--- Feature: Added >= and <= stack comparisons
--- Feature: Copy/Import/Export now includes timer settings
--- Feature: Ability to look-up buffs/debuffs/spellalerts by icon name (ensure at least one underscore is in the buff name)
--- Feature: Ability to look-up spells by spellIds (use [12345])
--- Feature: Russian localisation added (thanks to StingerSoft)
--- Feature: Option to hide leading zeros on timers
--- Feature: Option to use transparent timer textures
--- Change: Use Blizzard threat values instead of Banzi
--- Bugfix: PvP Trigger now works
--- Bugfix: Timers on buffs/debuff on other players now show
--- Version 2.6.1a (WotLK Dual-Specs)
--- Bugfix: corrected typo in the index value for the dual spec conditional (j != k)
--- Version 2.6.1 (WotLK Dual-Specs)
--- Feature: WoW 3.1 verison match (no longer out of date)
--- Feature: Basic integration of dual specs support
--- Version 2.6.0 (WotLK)
--- Feature: WoW 3.1 compatibility update.
--- Feature: Deathknight Presences added to Stance Auras.
--- Feature: Whitespace added to export strings to facilitate forum posting.
--- Feature: Better granularity for Mana/Health/Rage/Energy/Power threshold (step 5 -> 2).
--- Feature: Mounted option changed to toggle (checked: only when mounted, unchecked: only when dismounted)
--- Feature: Texture glow option affects timer.
--- Bugfix: Mana/Rage/Energy/RunicPower Party & Raid triggers.
--- Bugfix: Mana/Rage/Energy/RunicPower Unit triggers.
--- Bugfix: PvP Trigger.
--- Bugfix: "Casted" -> "Cast" typo.
--- Version 2.5.9a (WotLK)
--- Bugfix: 'hundredth', 'dual' timers checkbox errors.
--- Version 2.5.9 (WotLK)
--- Feature: Option to monitor "my" buffs/debuffs.
--- Feature: Unlimited timers. (1 per aura instead of 5 total)
--- Feature: Dynamic Aura update when multiple matches and 'own texture' checked.
--- Feature: Import and export Auras as strings.
--- Feature: Any/All toggle for party, raid buff checks. (default = all)
--- Bugfix: Action Usable aura when action linked to stance.
--- Bugfix: Make "Activate Power Auras" checkbox actually do something and shutdown processing when unchecked. :P
--- Version 2.5.8b (WotLK)
--- Bugfix: gui bug threshold invert option.
--- Version 2.5.8a (WotLK)
--- Bugfix: combination triggers with "show when not active" checked.
--- Various internal logic optimizations.
--- Version 2.5.8 (WotLK)
--- Bugfix: Various label fonts (template breakage by Blizzard in builds 8982->9014)
--- Bugfix: Font Select button not visible on first editor open.
--- Feature: Text shadow option for textauras.
--- Feature: Ability to setup auras with combination of triggers.
--- Feature: Spell Casting activation trigger added (target and focus).
--- Version 2.5.7b (WotLK)
--- Bugfix: Begin animation "replaying" on aura refresh.
--- Version 2.5.7a (WotLK)
--- Bugfix: Offhand temporary enchant detection/stacks
--- Feature: Weapon buff auras can be defined separately per temporary enchant
--- and optionally filtered by slot (main or offhand)
--- Version 2.5.7 (WotLK)
--- Feature: Text Aura Option added (thanks to Garstiger for initial code)
--- Feature: Option to invert default threshold behavior added.
--- Feature: Pet health/mana activation enabled (enter "pet" in UnitName editbox)
--- Bugfix: Manual.html pictures (submitted by Garstiger)
--- Bugfix: Aura Type checkboxes
--- Bugfix: UnitName nil error
--- Bugfix: Threshold when Rage/Energy/Power is zero.
--- Version 2.5.6c (WotLK)
--- Bugfix: Not in Combat initial state.
--- Version 2.5.6b (WotLK)
--- Bugfix: .TimerFrame checkboxes nil error
--- Bugfix: Target buff/debuff timers
--- Version 2.5.6a (WotLK)
--- Bugfix: GetComboPoints() API change.
--- Version 2.5.6 (WotLK)
--- Feature: Runic Power threshold added.
--- Bugfix: GetPlayerBuff/UnitBuff/Debuff API changes.
--- Bugfix: UIDropMenu, PanelTemplates_TabResize, Font Widget, this->self changes.
--- Version 2.5.5b
--- Bugfix: Health/Mana threshold for party/raid units (line 1297 error)
--- Version 2.5.5a
--- Bugfix: Custom duration timer for target buffs/debuffs (wasn't reseting on target change)
--- Bugfix: Hide player auras when dead/ghost.
--- Version 2.5.5
--- Feature: Stance options for Druid and Rogue(stealth) added
--- Bugfix: Stance detection is now dynamic so lower levels that don't have all forms/stances yet are supported.
--- Feature: Custom timer enabled for action usable. It overrides the calculated timers if used.
--- Feature: Rage/Energy trigger implemented with upper thresholds.
--- Version 2.5.4a
--- Bugfix: Buff and Debuff timers for non-player units.
--- Version 2.5.4
--- Bugfix: Buff and Debuff timers.
--- Feature: Custom textures editbox now accepts spellname or spellid in addition to filename.tga
--- Version 2.5.3
--- Bugfix: Buff and Debuff stacks.
--- Bugfix: Mana-threshold auras when shifting to bear/cat.
--- Feature: New custom sounds.
--- Feature: Updated zh-CN localization by <Doomiris>.
--- Version 2.5.2
--- Feature: 30 more wow textures added to available choices
--- Feature: PvP flag added to triggers
--- Feature: Aggro status added to triggers
--- Feature: Option to use ability/spell texture instead of predetermined choice where available.
--- Version 2.5.1a
--- Feature: Hide Auras when hiding the interface (Alt+z)
--- Version 2.5.1
--- Feature: WoW 2.4 compatibility re-code (various changes related to the new combatlog)
--- Feature: New textures can now be added to defaults as long as they're named Auraxx.tga
--- The selection slider will accommodate automatically next time you start the game.
--- Bugfix: Stance detection
--- Bugfix: Mounted detection (flying included)
--- Bugfix: Aura change
--- Bugfix: Action Usable (workaround for the absense of cooldown complete events)
--- If you want to get notification when a trinket or bag item is usable you have
--- drag it to an actionbar (doesn't have to be a visible one)
 
-- Exposed for Saving
PowaMisc = {};
PowaSet = {};
PowaTimer = {};
 
PowaGlobalSet = {};
PowaGlobalListe = {};
PowaPlayerListe = {};
 
--Default page names
for i = 1, 5 do
PowaPlayerListe[i] = PowaAuras.Text.ListePlayer.." "..i;
end
for i = 1, 10 do
PowaGlobalListe[i] = PowaAuras.Text.ListeGlobal.." "..i;
end
 
--- ---------------------------------------------------------------------------------------------------------
 
function PowaAuras:Toggle(enabled)
if enabled then
if PowaAuras_Frame and not PowaAuras_Frame:IsShown() then
PowaAuras_Frame:Show(); -- Show Main Options Frame
self:RegisterEvents(PowaAuras_Frame);
end
self.Misc.disabled = false;
else
if PowaAuras_Frame and PowaAuras_Frame:IsShown() then
PowaAuras_Frame:UnregisterAllEvents();
PowaAuras_Frame:Hide();
end
self:OptionHideAll(true);
self.Misc.disabled = true;
end
end
 
function PowaAuras:OnLoad(frame)
 
--- Setting up the Import/Export static popups
self:SetupStaticPopups();
 
if (not self.Misc.disabled) then
self:RegisterEvents(frame);
end
 
--- options init
SlashCmdList["POWA"] = PowaAuras_CommanLine;
SLASH_POWA1 = "/powa"
end
 
function PowaAuras:RegisterEvents(frame)
--- TODO: conditionally Register/unregister events according to options for improved performance
for _, event in ipairs(self.Events) do
if (self[event]) then
frame:RegisterEvent(event);
else
self:Message("Event has no method ", event); --OK
end
end
end
 
function PowaAuras:LoadAuras()
--self:Message("Saved varaible convertion: PowaSet");
 
self.Auras = {};
 
for k, v in pairs(PowaGlobalSet) do
self:UnitTestDebug("PowaGlobalSet",k,v.buffname);
if (v.is_a == nil or not v:is_a(cPowaAura)) then
--self:UnitTestDebug(k,v.buffname);
self.Auras[k] = self:AuraFactory(v.bufftype, k, v);
end
end
 
for k, v in pairs(PowaSet) do
--self:UnitTestDebug("PowaSet",k,v.buffname, self.Auras[k]);
if (not self.Auras[k]) then
--self:UnitTestDebug("is_a=",v.is_a);
if (v.is_a == nil or not v:is_a(cPowaAura)) then
self.Auras[k] = self:AuraFactory(v.bufftype, k, v);
--self:UnitTestDebug("Out=",self.Auras[k].buffname);
end
end
end
 
--self:Message("Default Aura");
self.Auras[0] = cPowaAura(0, {off=true});
 
-- Update for backwards combatiblity
for i = 1, 360 do
-- gere les rajouts
local aura = self.Auras[i];
local oldaura = PowaSet[i];
if (oldaura==nil) then
oldaura = PowaGlobalSet[i];
end
if (aura) then
if (aura.buffname == "") then
--self:Message("Delete aura "..i);
self.Auras[i] = nil;
elseif (aura.bufftype == nil and oldaura~=nil) then
--self:Message("Repair bufftype for #"..i);
 
if (oldaura.isdebuff) then
aura.bufftype = self.BuffTypes.Debuff;
elseif (oldaura.isdebufftype) then
aura.bufftype = self.BuffTypes.TypeDebuff;
elseif (oldaura.isenchant) then
aura.bufftype = self.BuffTypes.Enchant;
else
aura.bufftype = self.BuffTypes.Buff;
end
 
-- Update old combo style 1235 => 1/2/3/5
elseif (aura.bufftype==self.BuffTypes.Combo) then
self:UnitTestDebug("Combo upgrade check ", aura.buffname, " for ", aura.id);
if (string.len(aura.buffname)>1 and string.find(aura.buffname, "/", 1, true)==nil) then
local newBuffName=string.sub(aura.buffname, 1, 1);
for i=2, string.len(aura.buffname) do
newBuffName = newBuffName.."/"..string.sub(aura.buffname, i, i);
end
aura.buffname = newBuffName
end
end
 
end
end
 
--self:Message("Saved varaible convertion: PowaTimer #", #PowaTimer);
-- Copy old timer info (should be once only)
for k, v in pairs(PowaTimer) do
local aura = self.Auras[k];
if (aura) then
aura.Timer = cPowaTimer(k, v);
if (PowaSet[k]~=nil and PowaSet[k].timer~=nil) then
aura.Timer.enabled = PowaSet[k].timer;
end
if (PowaGlobalSet[k]~=nil and PowaGlobalSet[k].timer~=nil) then
aura.Timer.enabled = PowaGlobalSet[k].timer;
end
end
end
 
-- Copy to Saved Sets
PowaSet = self.Auras;
for i = 121, 360 do
PowaGlobalSet[i] = self.Auras[i];
end
PowaTimer = {};
 
end
------------------------------------------------------------------------------------------------------- EVENTS
 
function PowaAuras:VARIABLES_LOADED(...)
DEFAULT_CHAT_FRAME:AddMessage("|cffB0A0ff<Power Auras Classic>|r |cffffff00"..self.Version.."|r - "..self.Text.welcome);
 
if (TestPA==nil) then
PowaState = {};
end
 
self.Misc = PowaMisc;
_, self.playerclass = UnitClass("player");
 
self:LoadAuras();
 
for i = 1, 5 do
getglobal("PowaOptionsList"..i):SetText(PowaPlayerListe[i]);
end
for i = 1, 10 do
getglobal("PowaOptionsList"..i+5):SetText(PowaGlobalListe[i]);
end
 
self.maxtextures = 1;
local texi = 1;
while ( getglobal("AuraTexture"):SetTexture("Interface\\Addons\\PowerAuras\\Auras\\Aura"..texi..".tga") == 1 ) do
self.maxtextures = texi;
texi = texi+1;
end
 
getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1, self.maxtextures);
getglobal("PowaBarAuraTextureSliderHigh"):SetText(self.maxtextures);
 
self.Initialising = false;
self:CreateEffectLists();
end
 
function PowaAuras:PLAYER_ENTERING_WORLD(...)
if (self.Misc.disabled == true) then
self:Toggle(false);
return;
end
PowaAuras_Tooltip:SetOwner(UIParent, "ANCHOR_NONE");
 
-- Look-up spells by spellId for debuff types
self.DebuffCatSpells = {}
for k, v in pairs(self.DebuffTypeSpellIds) do
local spellName = GetSpellInfo(k);
if spellName then
self.DebuffCatSpells[spellName] = v
else
self:Debug("Unknown spellId: ", k)
end
end
 
for key in pairs(self.DoCheck) do
self.DoCheck[key] = true;
end
 
if UnitIsDeadOrGhost("player") then
self.WeAreAlive = false;
end
if (GetNumRaidMembers() > 0) then
self.WeAreInRaid = true;
else
self.WeAreInRaid = false;
end
self.WeAreMounted = (IsMounted()~=nil);
self.WeAreInVehicle = (UnitInVehicle("player")~=nil);
 
self.ActiveTalentGroup = GetActiveTalentGroup();
 
self:GetStances();
 
self:MemorizeActions();
end
 
function PowaAuras:GetStances()
for iForm=1, GetNumShapeshiftForms() do
self.PowaStance[iForm] = select(2,GetShapeshiftFormInfo(iForm));
end
end
 
function PowaAuras:PLAYER_TALENT_UPDATE(...)
self.ActiveTalentGroup = GetActiveTalentGroup();
end
 
function PowaAuras:PLAYER_UPDATE_RESTING(...)
if (self.ModTest == false) then
self.DoCheck.All = true;
end
end
 
function PowaAuras:PARTY_MEMBERS_CHANGED(...)
if (self.ModTest == false) then
self.DoCheck.PartyBuffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
self.DoCheck.PartyHealth = true;
self.DoCheck.PartyMana = true;
end
end
 
function PowaAuras:RAID_ROSTER_UPDATE(...)
if (self.ModTest == false) then
self.DoCheck.RaidBuffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
self.DoCheck.RaidHealth = true;
self.DoCheck.RaidMana = true;
end
if GetNumRaidMembers() > 0 then
self.WeAreInRaid = true;
else
self.WeAreInRaid = false;
end
end
 
function PowaAuras:UNIT_HEALTH(...)
local unit = ...;
self:SetCheckResource("Health", unit);
end
 
function PowaAuras:UNIT_MAXHEALTH(...)
local unit = ...;
self:SetCheckResource("Health", unit);
end
 
function PowaAuras:UNIT_MANA(...)
local unit = ...;
self:SetCheckResource("Mana", unit);
end
 
function PowaAuras:UNIT_MAXMANA(...)
local unit = ...;
self:SetCheckResource("Mana", unit);
end
 
function PowaAuras:UNIT_RAGE(...)
local unit = ...;
self:SetCheckResource("RageEnergy", unit);
end
 
function PowaAuras:UNIT_ENERGY(...)
local unit = ...;
self:SetCheckResource("RageEnergy", unit);
end
 
function PowaAuras:UNIT_MAXENERGY(...)
local unit = ...;
self:SetCheckResource("RageEnergy", unit);
end
 
function PowaAuras:UNIT_RUNIC_POWER(...)
local unit = ...;
self:SetCheckResource("RageEnergy", unit);
end
 
function PowaAuras:SetCheckResource(resourceType, unitType)
if (self.ModTest == false) then
if (unitType == "target") then
self.DoCheck["Target"..resourceType] = true;
elseif (unitType == "focus") then
self.DoCheck["Focus"..resourceType] = true;
elseif ("party" == string.sub(unitType, 1, 5)) then
self.DoCheck["Party"..resourceType] = true;
self.DoCheck["NamedUnit"..resourceType] = true;
elseif ("raid" == string.sub(unitType, 1, 4)) then
self.DoCheck["Raid"..resourceType] = true;
self.DoCheck["NamedUnit"..resourceType] = true;
elseif (unitType == "pet") then
self.DoCheck["NamedUnit"..resourceType] = true;
elseif (unitType == "player") then
self.DoCheck[resourceType] = true; --- active les checks
end
end
end
 
function PowaAuras:UNIT_MAXRUNIC_POWER(...)
local unit = ...;
self:SetCheckResource("RageEnergy", unit);
end
 
function PowaAuras:SpellcastEvent(unit)
if (self.ModTest == false) then
--- spell alert handling
if unit and not UnitIsDead(unit) and UnitCanAttack(unit, "player") then
if UnitIsUnit(unit, "target") then
self.DoCheck.TargetSpells = true;
end
if UnitIsUnit(unit, "focus") then
self.DoCheck.FocusSpells = true;
end
self.DoCheck.Spells = true; --- party/raidscan for casting units in this case
end
end
end
 
function PowaAuras:UNIT_SPELLCAST_SUCCEEDED(...)
if (self.ModTest == false) then
local unit, spell = ...;
--- druid shapeshift special case
if unit and (unit == "player") and ( (spell == GetSpellInfo(768)) or (spell == GetSpellInfo(5487)) or (spell == GetSpellInfo(9634)) ) then
self.DoCheck.Mana = true;
self.DoCheck.RageEnergy = true;
end
PowaAuras:SpellcastEvent(unit);
end
end
 
function PowaAuras:UNIT_SPELLCAST_START(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_CHANNEL_START(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_DELAYED(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_CHANNEL_UPDATE(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_STOP(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_FAILED(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_INTERRUPTED(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:UNIT_SPELLCAST_CHANNEL_STOP(...)
local unit = ...;
PowaAuras:SpellcastEvent(unit);
end
 
function PowaAuras:PLAYER_FOCUS_CHANGED(...)
if (self.ModTest == false) then
self.DoCheck.FocusBuffs = true;
self.DoCheck.FocusHealth = true;
self.DoCheck.FocusMana = true;
self.DoCheck.FocusRageEnergy = true;
self.DoCheck.FocusSpells = true;
end
end
 
function PowaAuras:BuffsChanged(unit)
if (not self.ModTest) then
--self:Message("BuffsChanged ", unit);
if (arg1 == "target") then
self.DoCheck.TargetBuffs = true;
elseif ("party" == string.sub(arg1, 1, 5)) then
self.DoCheck.PartyBuffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
elseif (arg1 == "focus") then
self.DoCheck.FocusBuffs = true;
elseif (string.sub(arg1, 1, 4) == "raid") then
self.DoCheck.RaidBuffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
elseif (arg1 == "player") then
--- active les checks
self.DoCheck.Buffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
else
self.DoCheck.UnitBuffs = true;
end
end
end
 
function PowaAuras:UNIT_AURA(...)
local unit = ...;
self:BuffsChanged(unit);
end
 
function PowaAuras:UNIT_AURASTATE(...)
local unit = ...;
self:BuffsChanged(unit);
end
 
function PowaAuras:PLAYER_DEAD(...)
if (self.ModTest == false) then
self.DoCheck.All = true;
end
self.WeAreMounted = false;
self.WeAreInVehicle = false;
self.WeAreAlive = false;
end
 
function PowaAuras:PLAYER_ALIVE(...)
if not UnitIsDeadOrGhost("player") then
self.WeAreAlive = true;
if (self.ModTest == false) then
self.DoCheck.All = true;
end
end
end
 
function PowaAuras:PLAYER_UNGHOST(...)
if not UnitIsDeadOrGhost("player") then
self.WeAreAlive = true;
if (self.ModTest == false) then
self.DoCheck.All = true;
end
end
end
 
function PowaAuras:PLAYER_TARGET_CHANGED(...)
if (self.ModTest == false) then
self.DoCheck.TargetBuffs = true;
self.DoCheck.TargetHealth = true;
self.DoCheck.TargetMana = true;
self.DoCheck.TargetRageEnergy = true;
self.ResetTargetTimers = true;
self.DoCheck.Actions = true;
self.DoCheck.TargetSpells = true;
self.DoCheck.Combo = true;
end
end
 
function PowaAuras:PLAYER_REGEN_DISABLED(...)
if (self.ModTest == false) then
self.WeAreInCombat = true;
self.DoCheck.Others = true;
self.DoCheck.Enchants = true;
self.DoCheck.TargetBuffs = true;
self.DoCheck.Buffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
self.DoCheck.Actions = true;
end
end
 
function PowaAuras:PLAYER_REGEN_ENABLED(...)
if (self.ModTest == false) then
self.WeAreInCombat = false;
self.DoCheck.Others = true;
self.DoCheck.Enchants = true;
self.DoCheck.TargetBuffs = true;
self.DoCheck.Buffs = true;
self.DoCheck.GroupOrSelfBuffs = true;
self.DoCheck.Actions = true;
end
end
 
function PowaAuras:UNIT_COMBO_POINTS(...)
local unit = ...;
if unit ~= "player" then return; end
if (self.ModTest == false) then
self.DoCheck.Combo = true;
end
end
 
function PowaAuras:VehicleCheck(unit, entered)
if unit ~= "player" then return; end
if (self.ModTest == false) then
self.DoCheck.All = true;
end
self.WeAreInVehicle = entered;
end
 
function PowaAuras:UNIT_ENTERED_VEHICLE(...)
local unit = ...;
self:VehicleCheck(unit, true)
end
 
function PowaAuras:UNIT_EXITED_VEHICLE(...)
local unit = ...;
self:VehicleCheck(unit, false)
end
 
function PowaAuras:UNIT_FACTION(...) --- GetPVPTimer() returns the time until unflag in ms
local unit = ...;
if (self.ModTest == false) then
if unit == "player" then
self.DoCheck.PvP = true;
elseif unit == "target" then
self.DoCheck.TargetPvP = true;
end
 
for i=1,GetNumPartyMembers() do
if unit == "party"..i then
self.DoCheck.PartyPvP = true;
break;
end
end
for i=1, GetNumRaidMembers() do
if unit == "raid"..i then
self.DoCheck.RaidPvP = true;
break;
end
end
end
end
 
function PowaAuras:COMBAT_LOG_EVENT_UNFILTERED(...)
local timestamp,event,sourceGUID,sourceName,sourceFlags,destGUID,destName,destFlags, spellId, spellName = ...;
if (not self.ModTest) and destName and destName==UnitName("player") then
if event == "SPELL_PERIODIC_DAMAGE" then
if spellName then
self.AoeAuraAdded = spellName;
self.AoeAuraTexture = select(3, GetSpellInfo(spellId));
self.DoCheck.Aoe = true;
end
elseif event == "SPELL_AURA_REMOVED" then
if spellName then
self.AoeAuraFaded = spellName;
self.AoeAuraTexture = select(3, GetSpellInfo(spellId));
self.DoCheck.Aoe = true;
end
end
end
end
 
function PowaAuras:ACTIONBAR_SLOT_CHANGED(...)
local arg1 = ...;
self:MemorizeActions(arg1);
end
 
function PowaAuras:UPDATE_SHAPESHIFT_FORMS(...)
self:GetStances();
if (self.ModTest) then return; end
 
self.DoCheck.Stance = true;
end
 
function PowaAuras:ACTIONBAR_UPDATE_COOLDOWN(...)
if (self.ModTest == false) then
self.DoCheck.Actions = true;
self.DoCheck.Stance = true;
for slot=1,120 do
if HasAction(slot) then
local start, duration, enable = GetActionCooldown(slot);
if enable > 0 and start > 0 and duration > 0 then
self.UsablePending[slot] = math.ceil(start + duration);
else
self.UsablePending[slot] = nil;
end
end
end
end
end
 
function PowaAuras:ACTIONBAR_UPDATE_USABLE(...)
if (self.ModTest == false) then
self.DoCheck.Actions = true;
self.DoCheck.Stance = true;
end
end
 
function PowaAuras:SPELL_UPDATE_COOLDOWN(...)
if (self.ModTest == false) then
self.DoCheck.OwnSpell = true;
--self:Message("SPELL_UPDATE_COOLDOWN", ...);
end
end
 
function PowaAuras:SPELL_UPDATE_USABLE(...)
if (self.ModTest == false) then
self.DoCheck.OwnSpell = true;
--self:Message("SPELL_UPDATE_USABLE", ...);
end
end
 
function PowaAuras:UPDATE_SHAPESHIFT_FORM(...)
if (self.ModTest == false) then
self:Debug("UPDATE_SHAPESHIFT_FORM");
self.DoCheck.Stance = true;
self.DoCheck.Actions = true;
end
end
 
function PowaAuras:CustomTexPath(customname)
local texpath;
if string.find(customname,".", 1, true) then
texpath = "Interface\\Addons\\PowerAuras\\Custom\\"..customname;
else
_, _, texpath = GetSpellInfo(customname);
end
if not texpath then texpath = "" end
return texpath;
end
 
--- ------------------------------------------------------------------------------------
 
function PowaAuras:CreateTimerFrame(auraId, index)
local frame = CreateFrame("Frame", "TimerFrame"..auraId.."_"..index);
self.TimerFrame[auraId][index] = frame;
 
frame:SetFrameStrata("LOW");
frame:Hide();
frame.TimerValue = 0;
 
frame.texture = frame:CreateTexture(nil,"BACKGROUND");
frame.texture:SetBlendMode("ADD");
frame.texture:SetAllPoints(frame);
if (self.Auras[auraId].Timer.Transparent) then
frame.texture:SetTexture("Interface\\Addons\\PowerAuras\\timersTransparent.tga");
else
frame.texture:SetTexture("Interface\\Addons\\PowerAuras\\timers.tga");
end
end
 
function PowaAuras:CreateTimerFrameIfMissing(auraId)
if (not self.TimerFrame[auraId]) then
--self:Message("Creating missing TimerFrames for aura "..tostring(auraId));
self.TimerFrame[auraId] = {};
self:CreateTimerFrame(auraId, 1);
self:CreateTimerFrame(auraId, 2);
end
self:UpdateOptionsTimer(auraId);
return self.TimerFrame[auraId][1], self.TimerFrame[auraId][2];
end
 
--- ----------------------------------------------------------------------------------------------- CREE LA LISTE DES CHECKS
 
function PowaAuras:CreateEffectLists()
if (self.Initialising) then return; end
 
for k in pairs(self.AurasByType) do
self.AurasByType[k] = {};
end
 
for auraId, aura in pairs(self.Auras) do
if (aura ~= nil and aura.off ~= true) then
--print("Aura", aura.id);
aura:AddEffect(auraId);
end
end
 
if (self.Misc.debug == true) then
for k in pairs(self.AurasByType) do
self:Message(k .. " : " .. #self.AurasByType[k]); --OK
end
end
 
end
 
--- ----------------------------------------------------------------------------------------------- Memorize les actions
function PowaAuras:MemorizeActions(actionIndex)
local imin, imax;
self:Debug("---MemorizeActions---");
if (#self.AurasByType.Actions == 0) then
return;
end
 
--- scan tout ou uniquement le slot qui a change
if (actionIndex == nil) then
self:Debug("---Scan all Actionbuttons---");
imin = 1;
imax = 120;
--- reset all action positions
for _, v in pairs(self.AurasByType.Actions) do
self.Auras[v].slot = nil;
end
 
else
imin = actionIndex;
imax = actionIndex;
end
 
for i = imin, imax do
if (HasAction(i)) then
self:Debug("---Button",i," Action Found---");
PowaAction_Tooltip:SetOwner(UIParent, "ANCHOR_NONE");
PowaAction_Tooltip:SetAction(i);
local text = PowaAction_TooltipTextLeft1:GetText();
--self:Debug("tooltip text=",text);
if text and text ~= "" then
self:Debug("| "..text.." |");
end
if (text~=nil and PowaAction_TooltipTextLeft1:IsShown()) then
for _, v in pairs(self.AurasByType.Actions) do
local actionAura = self.Auras[v];
--self:Debug("actionAura",v,actionAura.buffname, actionAura.ignoremaj);
if((actionAura.ignoremaj == true and string.find(string.upper(text), string.upper(actionAura.buffname), 1, true)) or
(actionAura.ignoremaj == false and string.find(text, actionAura.buffname, 1, true)) ) then --- on a trouve le slot
actionAura.slot = i; --- remember the slot
self:Debug("---------------------------------------");
self:Debug("Actionname="..actionAura.buffname.." / Search in Tooltipstring="..text);
--- remember the texture
local tempicon;
if (actionAura.owntex == true) then
getglobal("PowaIconTexture"):SetTexture(GetActionTexture(i));
tempicon = getglobal("PowaIconTexture"):GetTexture();
if (actionAura.icon ~= tempicon) then
actionAura.icon = tempicon;
end
end
if (actionAura.icon == "") then
getglobal("PowaIconTexture"):SetTexture(GetActionTexture(i));
actionAura.icon = getglobal("PowaIconTexture"):GetTexture();
end
end
end
end
PowaAction_Tooltip:Hide();
end
end
end
 
function PowaAuras:CheckMultiple(aura, reason, giveReason)
if (not aura.multiids or aura.multiids == "") then
if (not giveReason) then return true; end
return true, reason;
end
if string.find(aura.multiids, "[^0-9/!]") then --- invalid input (only numbers and / allowed)
self:Debug("Multicheck. Invalid Input. Only numbers and '/' allowed.");
if (not giveReason) then return true; end
return true, reason;
end
for pword in string.gmatch(aura.multiids, "[^/]+") do
local reverse;
if (string.sub(pword, 1, 1) == "!") then
pword = string.sub(pword, 2);
reverse = true;
end
local k = tonumber(pword);
local linkedAura = self.Auras[k];
if linkedAura then
self:Debug("Multicheck. Aura ",k);
result, reason = linkedAura:ShouldShow(giveReason, reverse);
if (not result) then
if (not giveReason) then return false; end
return result, reason;
end
else
self:Debug("Multicheck. Non-existant Aura ID specified: "..pword);
end
end
if (not giveReason) then return true; end
return true, "All multiples match "..aura.multiids;
end
 
function PowaAuras:TestThisEffect(auraId, giveReason)
self:UnitTestInfo("TestThisEffect", auraId);
 
local aura = self.Auras[auraId];
 
self:Debug("----------------------------------");
self:Debug("Test Aura for Hide or Show = ",auraId, " showing=",aura.Showing);
 
--local shouldShow, reason = aura:ShouldShow(giveReason);
local shouldShow, reason = aura:ShouldShow(true);
if (shouldShow) then
shouldShow, reason = self:CheckMultiple(aura, reason, giveReason);
end
 
if shouldShow then
if (not aura.Showing) then
--self:Message("ShowAura ", aura.buffname, " (",auraId,") ", reason);
self:DisplayAura(auraId);
end
else
if (aura.Showing) then
--self:Message("HideAura ", aura.buffname, " (",auraId,") ", reason);
aura.HideRequest = true;
local secondaryAura = self.SecondaryAuras[aura.id];
if (secondaryAura and secondaryAura.Showing) then
secondaryAura.HideRequest = true;
end
end
end
 
return shouldShow, reason;
end
 
function PowaAuras:NewCheckBuffs()
self:UnitTestInfo("NewCheckBuffs");
 
for auraType in pairs(self.AurasByType) do
if ((self.DoCheck[auraType] or self.DoCheck.All) and #self.AurasByType[auraType]>0) then
--self:Message("TestAuraTypes ",auraType," DoCheck ", self.DoCheck[auraType], " All ", self.DoCheck.All, " #", #self.AurasByType[auraType]);
for _, v in pairs(self.AurasByType[auraType]) do
--self:Message("TestThisEffect ",v);
self:TestThisEffect(v);
end
self.DoCheck[auraType] = false;
end
end
 
self.DoCheck.All = false;
 
end
 
--- -----------------------------------------------------------------------------------------------------------
function PowaAuras:ShowAuraForFirstTime(aura)
self:UnitTestInfo("ShowAuraForFirstTime", aura.id);
local auraId = aura.id;
 
if (self.ModTest == false) then
if (aura.sound > 0) and (aura.customsound == "") then
PlaySound(aura.soundfile);
end
if not (aura.customsound == "") then
PlaySoundFile("Interface\\AddOns\\PowerAuras\\Sounds\\"..aura.customsound);
end
end
 
local frame, texture = aura:CreateFrames();
 
if (aura.owntex == true) then
texture:SetTexture(aura.icon);
elseif (aura.wowtex == true) then
texture:SetTexture(self.WowTextures[aura.texture]);
elseif (aura.customtex == true) then
texture:SetTexture(self:CustomTexPath(aura.customname));
elseif (aura.textaura == true) then
texture:SetText(aura.aurastext);
else
texture:SetTexture("Interface\\Addons\\PowerAuras\\Auras\\Aura"..aura.texture..".tga");
end
 
if (aura.randomcolor) then
texture:SetVertexColor(random(20,100)/100,random(20,100)/100,random(20,100)/100);
else
texture:SetVertexColor(aura.r,aura.g,aura.b);
end
 
if (aura.texmode == 1) then
if (aura.textaura ~= true) then
texture:SetBlendMode("ADD");
else
texture:SetShadowColor(0.0, 0.0, 0.0, 0.8);
texture:SetShadowOffset(2,-2);
end
frame:SetFrameStrata("LOW");
else
if (aura.textaura ~= true) then
texture:SetBlendMode("DISABLE");
else
texture:SetShadowColor(0.0, 0.0, 0.0, 0.0);
texture:SetShadowOffset(0,0);
end
frame:SetFrameStrata("BACKGROUND");
end
 
if (aura.textaura ~= true) then
if (aura.symetrie == 1) then
texture:SetTexCoord(1, 0, 0, 1); --- inverse X
elseif (aura.symetrie == 2) then
texture:SetTexCoord(0, 1, 1, 0); --- inverse Y
elseif (aura.symetrie == 3) then
texture:SetTexCoord(1, 0, 1, 0); --- inverse XY
else
texture:SetTexCoord(0, 1, 0, 1);
end
end
 
frame.baseH = 256 * aura.size * (2-aura.torsion);
if (aura.textaura == true) then
local fontsize = math.min(33, math.max(10, math.floor(frame.baseH / 12.8)));
local checkfont = texture:SetFont(self.Fonts[aura.aurastextfont], fontsize, "OUTLINE, MONOCHROME");
if not checkfont then
texture:SetFont(STANDARD_TEXT_FONT, fontsize, "OUTLINE, MONOCHROME");
end
frame.baseL = texture:GetStringWidth() + 5;
else
frame.baseL = 256 * aura.size * aura.torsion;
end
 
frame:SetAlpha(aura.alpha);
frame:SetPoint("Center",aura.x, aura.y);
frame:SetWidth(frame.baseL);
frame:SetHeight(frame.baseH);
 
frame.statut = 0;
 
aura.TimeShown = 0;
if (aura.Timer and aura.timerduration) then
aura.Timer.CustomDuration = aura.timerduration;
end
 
if (aura.begin > 0) then
frame.beginAnim = 1;
else
frame.beginAnim = 0;
end
 
if (aura.begin and aura.begin>0) then
aura.animation = self:AnimationBeginFactory(aura.begin, aura, frame);
else
aura.animation = self:AnimationMainFactory(aura.anim1, aura, frame);
end
 
self:UnitTestInfo("frame:Show()", aura.id);
 
--self:Message("frame:Show()", aura.id, " ", frame);
frame:Show(); -- Show Aura Frame
 
aura.Showing = true;
aura.HideRequest = false;
self:ShowSecondaryAuraForFirstTime(aura);
end
 
function PowaAuras:ShowSecondaryAuraForFirstTime(aura)
self:UnitTestInfo("ShowSecondaryAuraForFirstTime", aura.id);
 
if (aura.anim2 == 0) then --- no secondary aura
local secondaryAura = self.SecondaryAuras[aura.id];
if (secondaryAura) then
secondaryAura:Hide();
end
self.SecondaryAuras[aura.id] = nil;
self.SecondaryFrames[aura.id] = nil;
self.SecondaryTextures[aura.id] = nil;
return;
end
 
-- new secondary Aura
local secondaryAura = self:AuraFactory(aura.bufftype, aura.id, aura);
self.SecondaryAuras[aura.id] = secondaryAura;
 
secondaryAura.isSecondary = true;
secondaryAura.alpha = aura.alpha * 0.5;
secondaryAura.anim1 = aura.anim2;
secondaryAura.speed = aura.speed - 0.1; --- legerement plus lent
 
local auraId = aura.id;
local frame = self.Frames[auraId];
local texture = self.Textures[auraId];
 
local secondaryFrame, secondaryTexture = secondaryAura:CreateFrames();
 
if (aura.owntex == true) then
secondaryTexture:SetTexture(aura.icon);
elseif (aura.wowtex == true) then
secondaryTexture:SetTexture(self.WowTextures[aura.texture]);
elseif (aura.customtex == true) then
secondaryTexture:SetTexture(self:CustomTexPath(aura.customname));
elseif (aura.textaura == true) then
secondaryTexture:SetText(aura.aurastext);
else
secondaryTexture:SetTexture("Interface\\Addons\\PowerAuras\\Auras\\Aura"..aura.texture..".tga");
end
 
if (aura.randomcolor) then
if texture:GetObjectType() == "Texture" then
secondaryTexture:SetVertexColor( texture:GetVertexColor() );
elseif texture:GetObjectType() == "FontString" then
secondaryTexture:SetVertexColor(texture:GetTextColor());
end
else
secondaryTexture:SetVertexColor(aura.r,aura.g,aura.b);
end
 
if (aura.texmode == 1) then
if (aura.textaura ~= true) then
secondaryTexture:SetBlendMode("ADD");
end
secondaryFrame:SetFrameStrata("LOW");
else
if (aura.textaura ~= true) then
secondaryTexture:SetBlendMode("DISABLE");
end
secondaryFrame:SetFrameStrata("BACKGROUND");
end
 
if not aura.textaura == true then
if (aura.symetrie == 1) then
secondaryTexture:SetTexCoord(1, 0, 0, 1); --- inverse X
elseif (aura.symetrie == 2) then
secondaryTexture:SetTexCoord(0, 1, 1, 0); --- inverse Y
elseif (aura.symetrie == 3) then
secondaryTexture:SetTexCoord(1, 0, 1, 0); --- inverse XY
else
secondaryTexture:SetTexCoord(0, 1, 0, 1);
end
end
 
secondaryFrame.baseL = frame.baseL;
secondaryFrame.baseH = frame.baseH;
secondaryFrame:SetPoint("Center",aura.x, aura.y);
secondaryFrame:SetWidth(secondaryFrame.baseL);
secondaryFrame:SetHeight(secondaryFrame.baseH);
 
secondaryFrame.statut = 1;
 
if (aura.begin > 0) then
secondaryFrame.beginAnim = 2;
else
secondaryFrame.beginAnim = 0;
end
 
if (not aura.begin or aura.begin==0) then
secondaryAura.animation = self:AnimationMainFactory(aura.anim2, secondaryAura, secondaryFrame);
else
secondaryFrame:SetAlpha(0.0); -- Hide secondary until primary begin animation finishes
end
 
self:UnitTestInfo("secondaryFrame:Show()", aura.id);
secondaryFrame:Show(); -- Show Secondary Aura Frame
--self:Message("Show #2");
secondaryAura.Showing = true;
secondaryAura.HideRequest = false;
end
 
function PowaAuras:DisplayAura(auraId)
self:UnitTestInfo("DisplayAura", auraId);
if (self.Initialising) then return; end --- de-actived
 
local aura = self.Auras[auraId];
if (aura==nil or aura.off) then return; end
 
--self:Message("DisplayAura aura ", aura);
 
if (not aura.Showing) then --- si pas en cours
self:ShowAuraForFirstTime(aura);
end
end
 
--- ------------------------------------------------------------------------------------------------- ON UPDATE
function PowaAuras:AnimateAura(aura, elapsed)
self:UnitTestInfo("AnimateAura", aura.id, elapased);
 
 
local frame = aura:GetFrame();
 
self.curScale.w=frame.baseL;
self.curScale.h=frame.baseH;
 
 
--- Animations ----------------------------------------------------------------------
self:UnitTestInfo("Animation type", aura.anim1);
 
--- Animation 1 : aucune
if (aura.anim1 == 1) then
 
--- Animation 2 : max alpha <-> mi-alpha
elseif (aura.anim1 == 2) then
 
self.minScale.a = aura.alpha * 0.5 * aura.speed;
self.maxScale.a = aura.alpha;
 
if (frame.statut == 0) then
self.curScale.a = frame:GetAlpha() - (elapsed / 2);
frame:SetAlpha( self.curScale.a )
if (frame:GetAlpha() < self.minScale.a) then
frame:SetAlpha(self.minScale.a);
frame.statut = 1;
end
else
self.curScale.a = frame:GetAlpha() + (elapsed / 2);
if (self.curScale.a > 1.0) then self.curScale.a = 1.0; end --- pas trop haut non plus
frame:SetAlpha( self.curScale.a )
if (frame:GetAlpha() >= self.maxScale.a) then
frame:SetAlpha(self.maxScale.a);
frame.statut = 0;
end
end
--- Animation 3 : mini-zoom in repetitif + fading
elseif (aura.anim1 == 3) then
self.minScale.w = self.curScale.w * 0.90;
self.minScale.h = self.curScale.h * 0.90;
self.maxScale.w = self.curScale.w * 1.20;
self.maxScale.h = self.curScale.h * 1.20;
local speedScale = (25 * aura.speed) * aura.size;
 
if (frame.statut == 1) then --- decale anim 2
frame:SetWidth(self.curScale.w * 1.15);
frame:SetHeight(self.curScale.h * 1.15);
frame.statut = 0;
end
 
frame:SetWidth( frame:GetWidth() + (elapsed * speedScale) )
frame:SetHeight( frame:GetHeight() + (elapsed * speedScale) )
 
frame:SetAlpha( ((self.maxScale.w - frame:GetWidth()) / (self.maxScale.w - self.minScale.w)) * aura.alpha );
 
if (frame:GetWidth() > self.maxScale.w) then
frame:SetWidth(self.minScale.w);
frame:SetHeight(self.minScale.h);
end
--- Animation 4 : mini-zoom in/out
elseif (aura.anim1 == 4) then
self.minScale.w = self.curScale.w * 0.95;
self.minScale.h = self.curScale.h * 0.95;
self.maxScale.w = self.curScale.w * 1.05;
self.maxScale.h = self.curScale.h * 1.05;
local speedScale = (50 * aura.speed) * aura.size;
 
if (frame.statut == 0) then
frame:SetWidth( frame:GetWidth() + (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() + (elapsed * speedScale * (2-aura.torsion) ) )
if (frame:GetWidth() > self.maxScale.w) then
frame:SetWidth(self.maxScale.w);
frame:SetHeight(self.maxScale.h);
frame.statut = 1;
end
else
frame:SetWidth( frame:GetWidth() - (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() - (elapsed * speedScale * (2-aura.torsion) ) )
if (frame:GetWidth() < self.minScale.w) then
frame:SetWidth(self.minScale.w);
frame:SetHeight(self.minScale.h);
frame.statut = 0;
end
end
--- Animation 5 : effet bulle
elseif (aura.anim1 == 5) then
self.minScale.w = self.curScale.w * 0.95;
self.minScale.h = self.curScale.h * 0.95;
self.maxScale.w = self.curScale.w * 1.05;
self.maxScale.h = self.curScale.h * 1.05;
local speedScale = (50 * aura.speed) * aura.size;
 
if (frame.statut == 0) then
frame:SetWidth( frame:GetWidth() + (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() - (elapsed * speedScale * (2-aura.torsion) ) )
if (frame:GetWidth() > self.maxScale.w) then
frame:SetWidth(self.maxScale.w);
frame:SetHeight(self.minScale.h);
frame.statut = 1;
end
else
frame:SetWidth( frame:GetWidth() - (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() + (elapsed * speedScale * (2-aura.torsion) ) )
if (frame:GetHeight() > self.maxScale.h) then
frame:SetWidth(self.minScale.w);
frame:SetHeight(self.maxScale.h);
frame.statut = 0;
end
end
--- position au hasard + zoom in + fade (water-drop)
elseif (aura.anim1 == 6) then
if (frame:GetAlpha() > 0) then
self.curScale.a = frame:GetAlpha() - (elapsed * aura.alpha * 0.5 * aura.speed);
if (self.curScale.a < 0) then frame:SetAlpha(0.0);
else frame:SetAlpha(self.curScale.a); end
self.maxScale.w = frame:GetWidth() + (elapsed * 100 * aura.speed * aura.size);
self.maxScale.h = frame:GetHeight() + (elapsed * 100 * aura.speed * aura.size);
if ( (self.maxScale.w * 1.5) > frame:GetWidth()) then --- evite les lags
frame:SetWidth(self.maxScale.w)
frame:SetHeight(self.maxScale.h)
end
else
self.maxScale.w = (random(0,20) - 10) * aura.speed;
self.maxScale.h = (random(0,20) - 10) * aura.speed;
frame:SetAlpha(aura.alpha);
frame:SetWidth(self.curScale.w * 0.85);
frame:SetHeight(self.curScale.h * 0.85);
frame:SetPoint("Center",aura.x + self.maxScale.w, aura.y + self.maxScale.h);
end
--- static sauf parfois ou la texture est decalee + opaque (type electrique)
elseif (aura.anim1 == 7) then
if (frame.statut < 2) then
frame:SetAlpha(aura.alpha / 2); --- mi-alpha
if (random( 210-(aura.speed*100) ) == 1) then
frame.statut = 2;
self.maxScale.w = random(0,10) - 5;
self.maxScale.h = random(0,10) - 5;
frame:SetPoint("Center",aura.x + self.maxScale.w, aura.y + self.maxScale.h);
frame:SetAlpha(aura.alpha);
end
else
frame:SetPoint("Center",aura.x, aura.y);
frame.statut = 0;
end
--- zoom out + stop + fade
elseif (aura.anim1 == 8) then
self.minScale.w = self.curScale.w;
self.minScale.h = self.curScale.h;
self.maxScale.w = self.curScale.w * 1.30;
self.maxScale.h = self.curScale.h * 1.30;
local speedScale = (50 * aura.speed) * aura.size;
 
if (frame.statut == 0) then --- demarre le zoom out (max size)
frame:SetWidth(self.maxScale.w);
frame:SetHeight(self.maxScale.h);
frame:SetAlpha(0.0);
frame.statut = 2;
elseif (frame.statut == 2) then --- zoom out + fade in
frame:SetWidth( frame:GetWidth() - (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() - (elapsed * speedScale * (2-aura.torsion) ) )
 
frame:SetAlpha( ((self.maxScale.w - frame:GetWidth()) / (self.maxScale.w - self.minScale.w)) * aura.alpha );
 
if (frame:GetWidth() < self.curScale.w) then
frame:SetWidth(self.curScale.w);
frame:SetHeight(self.curScale.h);
frame.statut = 1;
end
elseif (frame.statut == 1) then --- demarre le fade-out
frame:SetWidth(self.curScale.w);
frame:SetHeight(self.curScale.h);
frame:SetAlpha(aura.alpha);
frame.statut = 3;
 
elseif (frame.statut == 3) then --- fade-out
self.curScale.a = frame:GetAlpha() - (elapsed / random(1,2));
 
if (self.curScale.a < 0.0) then
frame:SetAlpha(0.0);
frame.statut = 0;
else
frame:SetAlpha(self.curScale.a);
end
end
--- deplacement vers le haut + fade-out + reduction
elseif (aura.anim1 == 9) then
local speedScale = (50 * aura.speed) * aura.size;
 
if (frame.statut < 2) then --- debut
frame:SetWidth(self.curScale.w);
frame:SetHeight(self.curScale.h);
frame:SetPoint("Center",aura.x, aura.y);
frame:SetAlpha(aura.alpha);
frame.statut = 2;
else
_,_,_,xOfs,yOfs = frame:GetPoint();
frame:SetPoint("Center",xOfs + (random(1,3)-2), yOfs + (elapsed * random(10,20)));
self.curScale.a = frame:GetAlpha() - ( (elapsed / random(2,4)) * aura.alpha);
 
frame:SetWidth( frame:GetWidth() - (elapsed * speedScale * aura.torsion) )
frame:SetHeight( frame:GetHeight() - (elapsed * speedScale * (2-aura.torsion) ) )
 
if (self.curScale.a < 0.0) then
frame:SetAlpha(0.0);
frame.statut = 1;
else
frame:SetAlpha(self.curScale.a);
end
end
--- rotation autour du centre
elseif (aura.anim1 == 10) then
self.maxScale.w = math.max(aura.x, -aura.x, 5) * 1.0;
self.maxScale.h = self.maxScale.w * (1.6 - aura.torsion);
local speedScale = elapsed * 75 * aura.speed;
 
if (aura.isSecondary and (self.Frames[aura.id].anim1 == 10)) then
if (aura.symetrie < 2) then
frame.statut = self.Frames[aura.id].statut + 180;
if (frame.statut > 360) then frame.statut = frame.statut - 360; end
else
frame.statut = 180-self.Frames[aura.id].statut;
if (frame.statut < 0) then frame.statut = frame.statut + 360; end
end
elseif (aura.symetrie == 1 or aura.symetrie == 3) then
frame.statut = frame.statut - speedScale;
if (frame.statut < 0) then frame.statut = 360; end
else
frame.statut = frame.statut + speedScale;
if (frame.statut > 360) then frame.statut = 0; end
end
 
--- annule la torsion
frame:SetWidth(self.curScale.w / aura.torsion);
frame:SetHeight(self.curScale.h / (2-aura.torsion));
--- annule la symetrie
if not aura.textaura == true then
local texture = aura:GetTexture();
if (texture) then
texture:SetTexCoord(0, 1, 0, 1);
end
end
 
--- transparence
if (frame.statut < 180) then --- zone de transparence
if (frame.statut < 90) then
frame:SetAlpha( (1-(frame.statut / 90)) * aura.alpha );
else
frame:SetAlpha( ((frame.statut-90) / 90) * aura.alpha );
end
else
frame:SetAlpha(aura.alpha);
end
 
frame:SetPoint("Center",self.maxScale.w * cos(frame.statut), (self.maxScale.h * sin(frame.statut)) + aura.y);
end
 
end
 
function PowaAuras:UpdateAura(aura, elapsed)
--self:Message("UpdateAura ", aura, " ", elapsed);
if (aura == nil) then
self:UnitTestInfo("UpdateAura: Don't show, aura missing");
return;
end
if (aura.off or not aura.Showing) then
self:UnitTestInfo("UpdateAura: Don't show, ", aura.off, aura.Showing);
return;
end
local frame = aura:GetFrame();
if (frame == nil) then
self:UnitTestInfo("UpdateAura: Don't show, frame missing");
return;
end
--self:Message("UpdateAura ", aura, " ", elapsed);
 
if (aura.HideRequest) then
--self:Message("Hide Requested for ",aura.id);
aura.HideRequest = false;
aura.animation = self:AnimationEndFactory(aura.finish, aura, frame);
if (not aura.animation) then
aura:Hide();
return;
end
end
 
if (not aura.isSecondary) then
if (self.ModTest == false) then
if (aura.duration > 0) then
aura.TimeShown = aura.TimeShown + elapsed;
if (aura.TimeShown > aura.duration) then --- If duration has expired then hide this aura
self:UnitTestInfo("UpdateAura: Hide, duration expired");
aura.HideRequest = true;
return;
end
end
end
aura.Timer:Update(elapsed);
end
 
if (aura.animation) then
local finished = aura.animation:Update(elapsed);
if (finished) then
if (aura.animation.IsBegin) then
aura.animation = self:AnimationMainFactory(aura.anim1, aura, frame);
local secondaryAura = self.SecondaryAuras[aura.id];
if (secondaryAura) then
local secondaryAuraFrame = self.SecondaryFrames[aura.id];
if (secondaryAuraFrame) then
secondaryAura.animation = self:AnimationMainFactory(aura.anim2, secondaryAura, secondaryAuraFrame);
end
end
elseif (aura.animation.IsEnd) then
aura:Hide();
end
end
return;
else
self:AnimateAura(aura, elapsed);
end
end
 
function PowaAuras:OnUpdate(elapsed)
--- lance les checks de la cible
self:UnitTestInfo("OnUpdate", elapsed);
 
if (self.Initialising) then return; end --- Addon Disabled
 
if (self.ModTest == false) then
 
--self:Message("OnUpdate ",elapsed, " ", self.ChecksTimer);
self.ChecksTimer = self.ChecksTimer + elapsed;
self:UnitTestInfo("ChecksTimer", self.ChecksTimer, self.NextCheck);
if (self.ChecksTimer > self.NextCheck) then
self.ChecksTimer = 0;
if (self.ModTest == false) then
local isMountedNow = (IsMounted()~=nil);
if (isMountedNow ~= self.WeAreMounted) then
self.DoCheck.All = true;
self.WeAreMounted = isMountedNow;
end
self.DoCheck.Enchants = true;
end
end
 
self.DebugTimer = self.DebugTimer + elapsed;
 
 
--- Usable pending Checks
if self.UsablePending then
self:UnitTestInfo("UsablePending");
for slot, cd in pairs(self.UsablePending) do
if cd then
if GetTime() > cd then
self.DoCheck.Actions = true;
self.DoCheck.Stance = true;
self.WeAreMounted = (IsMounted()~=nil);
self.WeAreInVehicle = (UnitInVehicle("player")~=nil);
self.UsablePending[slot] = nil;
end
end
end
end
 
--- lance les checks normaux
self:UnitTestInfo("DoCheck update");
for k ,v in pairs(self.DoCheck) do
self:Debug("DoCheck "..k.." = " .. tostring(v) );
if (v) then
self:NewCheckBuffs();
break;
end
end
end
 
-- Check each aura
self:UnitTestInfo("Aura checks");
for _, aura in pairs(self.Auras) do
self:UpdateAura(aura, elapsed);
end
for _, aura in pairs(self.SecondaryAuras) do
self:UpdateAura(aura, elapsed);
end
 
self.ResetTargetTimers = false;
 
end
 
function PowaAuras:ExtractImportValue(valueType, value)
if valueType == "st" then
return value;
elseif valueType == "bo" then
if value == "false" then
return false;
elseif value == "true" then
return true;
end
elseif valueType == "nu" then
return tonumber(value);
end
return nil;
end
 
function PowaAuras:ImportAura(aurastring, auraId)
 
--self:Message("Import ", auraId);
--self:Message(aurastring);
 
local aura = cPowaAura(auraId);
 
local aurastring = string.gsub(aurastring,";%s*",";");
local temptbl = {strsplit(";", aurastring)};
local importAuraSettings = {};
local importTimerSettings = {};
 
for i, val in ipairs(temptbl) do
--self:Message(i, " ", val);
local key, var = strsplit(":", val);
local varpref = string.sub(var,1,2);
var = string.sub(var,3);
if (string.sub(key,1,6) == "timer.") then
importTimerSettings[key] = self:ExtractImportValue(varpref, var)
else
importAuraSettings[key] = self:ExtractImportValue(varpref, var)
end
end
 
for k, v in pairs(aura) do
local varType = type(v);
--self:Message(k, " ", v, " ", varType, " ", importAuraSettings[k]);
if (varType == "string" or varType == "boolean" or varType == "number" and k~="id") then
aura[k] = importAuraSettings[k];
end
end
 
if (aura.bufftype==self.BuffTypes.Combo) then --backwards compatability
if (string.len(aura.buffname)>1 and string.find(aura.buffname, "/", 1, true)==nil) then
local newBuffName=string.sub(aura.buffname, 1, 1);
for i=2, string.len(aura.buffname) do
newBuffName = newBuffName.."/"..string.sub(aura.buffname, i, i);
end
aura.buffname = newBuffName
end
end
 
if (importAuraSettings.timer) then --backwards compatability
aura.Timer = cPowaTimer(aura.id);
end
 
if (#importTimerSettings>0) then
--self:CreateTimerFrameIfMissing(aura.id)
if (aura.Timer==nil) then
aura.Timer = cPowaTimer(aura.id);
end
for k in pairs(aura.Timer) do
aura.Timer[k] = importTimerSettings["timer."..k];
end
end
--self:Message("new Aura created from import");
--aura:Display();
return self:AuraFactory(aura.bufftype, auraId, aura);
end
 
function PowaAuras:CreateNewAuraFromImport(auraId, importString)
if importString==nil or importString == "" then
return;
end
self.Auras[auraId] = self:ImportAura(importString, auraId);
if (auraId > 120) then
PowaGlobalSet[auraId] = self.Auras[auraId];
end
end
 
function PowaAuras:SetupStaticPopups()
 
StaticPopupDialogs["POWERAURAS_IMPORT_AURA"] = {
text = self.Text.aideImport,
button1 = ACCEPT,
button2 = CANCEL,
hasEditBox = 1,
maxLetters = 2000,
hasWideEditBox = 1,
OnAccept = function(self)
PowaAuras:CreateNewAuraFromImport(PowaAuras.ImportAuraId, self.wideEditBox:GetText());
self:Hide();
end,
OnShow = function(self)
self.wideEditBox:SetFocus();
end,
OnHide = function(self)
if ( ChatFrameEditBox:IsShown() ) then
ChatFrameEditBox:SetFocus();
end
self.wideEditBox:SetText("");
PowaAuras:DisplayAura(PowaAuras.CurrentAuraId);
PowaAuras:UpdateMainOption();
end,
EditBoxOnEnterPressed = function(self)
local parent = self:GetParent();
PowaAuras:CreateNewAuraFromImport(PowaAuras.ImportAuraId, parent.wideEditBox:GetText());
parent:Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
 
StaticPopupDialogs["POWERAURAS_EXPORT_AURA"] = {
text = self.Text.aideExport,
button1 = OKAY,
button2 = EXIT,
hasEditBox = 1,
maxLetters = 2000,
hasWideEditBox = 1,
OnShow = function(self)
self.wideEditBox:SetText(PowaAuras.Auras[PowaAuras.CurrentAuraId]:CreateAuraString());
self.wideEditBox:SetFocus();
self.wideEditBox:HighlightText();
end,
OnHide = function(self)
if ( ChatFrameEditBox:IsShown() ) then
ChatFrameEditBox:SetFocus();
end
self.wideEditBox:SetText("");
end,
EditBoxOnEnterPressed = function(self)
self:GetParent():Hide();
end,
EditBoxOnEscapePressed = function(self)
self:GetParent():Hide();
end,
timeout = 0,
exclusive = 1,
whileDead = 1,
hideOnEscape = 1
};
 
end
 
--- ------------------------------------------------------------------------------------ GESTION DES OPTIONS
function PowaAuras:RedisplayAura() ---Re-show aura after options changed
 
if (self.Initialising) then return; end
 
local aura = self.Auras[self.CurrentAuraId];
if (not aura or not aura.Showing) then
return;
end
aura:Hide();
aura:CreateFrames();
self.SecondaryAuras[aura.id] = nil; -- Force recreate
self:DisplayAura(aura.id);
end
 
function PowaAuras:OptionTest() --- teste ou masque l'effet choisi
 
--self:Message("OptionTest for ", self.CurrentAuraId);
local aura = self.Auras[self.CurrentAuraId];
if (not aura or aura.buffname == "" or aura.buffname == " ") then
return;
end
 
if (aura.Showing) then
aura.HideRequest = true;
else
aura:CreateFrames();
self.SecondaryAuras[aura.id] = nil; -- Force recreate
self:DisplayAura(aura.id);
end
end
 
function PowaAuras:HideTimerFrame(auraId, i)
if (self.TimerFrame[auraId] and self.TimerFrame[auraId][i]) then
--self:Message("Hide Timer Frame 1 for ", auraId);
self.TimerFrame[auraId][i]:Hide();
end
end
 
function PowaAuras:HideTimerFrames(auraId)
if self.TimerFrame[auraId] then
self:HideTimerFrame(auraId, 1);
self:HideTimerFrame(auraId, 2);
end
end
 
function PowaAuras:DeleteTimerFrames(auraId)
self:HideTimerFrames(auraId);
if self.TimerFrame[auraId] then
self.TimerFrame[auraId][1] = nil;
self.TimerFrame[auraId][2] = nil;
self.TimerFrame[auraId] = nil;
end
end
 
function PowaAuras:OptionHideAll(now) --- cache tous les effets
--- force Hide on mod shutdown
for _, aura in pairs(self.Auras) do
if now then
aura:Hide();
self:HideTimerFrames(aura.id);
else
aura.HideRequest = true;
end
end
 
end
trunk/PowerAuras/German_Manual.html New file
0,0 → 1,120
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Deutsche Anleitung</title>
</head>
<body>
Anleitung:<br>
<br>
Screens sind alle auf Englisch, aber sonst ist alles am gleichem Fleck nur auf deutsch.<br>
<br>
Also fangen wir an:<br>
<br>
Man hat das AddOn im seinen AddOn Ordner kopiert<br>
WoWInstallationsVerzeichniss/Interface/AddOns/PowerAuras<br>
<br>
Im Spiel kann man dann "/powa" eingeben um das Optionsfenster zu öffnen.<br>
<br>
<table border=1>
<tr>
<td>
<img src="Manual_Pics/Config1.jpg" />
</td>
<td>
1 = Das AddOn an oder ausschalten.<br>
<br>
2 = Auras nur für diesen Charakter.<br>
<br>
3 = Auras für alle Charaktere.<br>
<br>
4 = Auras auf dieser Seite.<br>
<br>
5 = Erstellt eine neue Aura.<br>
<br>
6 = Verschiebt eine Aura zu einer Seite nach Wahl.<br>
<br>
7 = Kopiert eine Aura zu einer Seite nach Wahl. Kann auch die gleiche Seite sein.<br>
<br>
8 = Löscht die ausgewählte Aura. Geht nur mit gedrückter STRG-Taste, um unabsichtliches löschen zu vermeiden.<br>
<br>
9 = Öffnet den Effekt-Editor für die ausgewählte Aura.
</td>
</tr>
<tr>
<td colspan="2">
Man erstellt sich also erstmal mit "Neu" eine neue Aura.<br>
Der Effekt Editor öffnet sich und man sieht eine Grafik im Interface.
</td>
</tr>
<tr>
<td>
<img src="Manual_Pics/Editor1.jpg"/>
</td>
<td>
1 = Die Ansicht der Grafik, ohne Animation. Einfach die Bilddatei.<br>
<br>
2 = Farbeinstellungen<br>
<br>
3 = Die Grafikauswahl. Bei Glow werden Bereiche transparent die zu dunklere Töne hingehen. Will man eine schwarze Farbe benutzen muss man es deaktivieren. <br>
Bei WoW Textures kann man ausgewählte Grafiken vom Spiel benutzen. <br>
Bei Custom Textures kann man eigene Grafiken im Ordner /AddOns/PowerAuras/Custom/ auswählen. Man muss dann den Dateinamen reinschreiben in das Textfeld was erscheint.<br>
<br>
4 = Die Anzeigeeinstellungen der Grafik. Bissl rumspielen, dann weiss man was was macht. :)<br>
<br>
5 = Positionseinstellung der Grafik/Aura. Wenn man ganz nach links oder rechts geregelt hat, geht der Regler wieder in die Mitte und man kann nochmals nachregeln. <br>
Genau Positionangeben kann man rechts eingeben.<br>
<br>
6 = Das AuswahlMenu für das Event welches man überwachen will. Später mehr dazu.<br>
<br>
7 = Das Icon des Buff/Debuff/Fähigkkeit, welches gespeichert wird beim ersten auftreten des Events<br>
<br>
8 = Der Name des Buff/Debuff/Fähigkeit. Nur ein Teil vom Namen oder mehrere Namen gehen auch. Siehe Bild<br>
<br>
9 = Das "Objekt" welches man überwachen möchte. Wenn keins ausgewählt ist man selber das Objekt. Focus geht nur, wenn ihr ein Ziel gefokust habt.<br>
<br>
10 = Anzeigeoptionen wann die Grafik angezeigt werden soll. ALso zB. das die Grafik da ist, wenn gerade das Event nicht da ist.
</td>
</tr>
<tr>
<td colspan="2">
Also man hat eine neue Aura erstellt und hat sich eine Grafik ausgesucht, Farbe, Anzeige und Position.<br>
Dann wählt man unten aus bei "6", was man eigentlich überwacht haben will. <br>
Also nehmen wir mal an ich will wissen wann ich ein "Erneuern" auf mir hab. Damit ich sofort weiss, gleich kommt "Stille" und du hast kein HoT.&circ;&circ; <br>
Also wähle ich aus "Buff" und schreibe in das Textfeld unten dran: "Erneuern" oder "Renew" kA wie der HoT auf Deutsch heisst genau. :)<br>
Dann hake ich unten nix ab, weil ich ja meinen Char überwachen will. <br>
Ganz unten könnt ich noch sagen, das es nur wichtig ist wenn ich im Kampf bin. Also Haken dran bei "Nur im Kampf".<br>
<br>
Das war es schon. Aber halt! Wo sind die phaten An1m4t1onen?&circ;&circ;<br>
<br>
Man klickt den Reiter "Animationen" an. Darauf wäre jetzt niemand gekommen, oda?<br>
</td>
<tr>
<td>
<img src="Manual_Pics/Editor3.jpg" />
</td>
<td>
So jetzt schnell zum Ende...<br>
<br>
1 = Einblendanimation<br>
<br>
2 = Ausblendanimation<br>
<br>
3 = Hauptanimation<br>
<br>
4 = 2t Animation, stapelt sich einfach über die Hauptanimation.<br>
<br>
5 = Animationsgeschwindigkeit (Stroboskop bittesehr)<br>
<br>
6 = Animationsdauer. Bei "Keine" ist die Animation und die Grafik solange da wie das Event.<br>
</td>
</tr>
<tr>
<td colspan="2">
So und jetzt HF.
</td>
</tr>
</table>
</body>
</html>
trunk/PowerAuras/Sounds/cat2.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/cookie.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/phone.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/moan.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/splash.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/aggro.wav Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/bam.wav Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/shot.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/wilhelm.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Sounds/sonar.mp3 Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura34.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura16.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura35.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura17.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura36.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura18.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura37.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura19.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura38.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura39.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura1.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura2.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura3.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura4.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura5.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura6.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura7.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura8.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura9.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura20.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura21.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura22.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura40.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura23.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura41.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura24.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura42.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura25.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura43.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura26.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura44.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura27.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura45.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura28.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura46.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura47.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura29.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura48.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura49.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura10.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura11.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura30.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura12.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura31.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura13.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura32.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura14.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura50.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura33.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/Auras/Aura15.tga Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/PowerAuras/PowerAuras.toc New file
0,0 → 1,26
## Interface: 30200
## Title: Power Auras Classic |cff7f7fffv.2.6.2Q|r
## Author: Smacker 'lolcat',Driizt 'classic',Garstiger 'continued',Sinsthar 'base'
## Version: 2.6.2Q
## Notes: Cool Effects around the player for ingame events. Authors: |cff7f7fff-Sinsthar-, -Garstiger-, -Driizt-, and -Smacker-|r
## Notes-frFR: Affiche des effets visuels autour du personnage.
## Notes-zhCN: 多功能条件触发式超酷特效音效
## DefaultState: Enabled
## LoadOnDemand: 0
## SavedVariables: PowaGlobalSet,PowaGlobalListe
## SavedVariablesPerCharacter: PowaSet,PowaMisc,PowaTimer,PowaPlayerListe,PowaState
 
PowerAurasBase.lua
localisation.lua
localisation_frFR.lua
localisation_deDE.lua
localisation_ruRU.lua
localisation_zhCN.lua
localisation_zhTW.lua
PowerAurasDump.lua
PowerAurasClasses.lua
PowerAurasAnimations.lua
PowerAuras.lua
PowerOptions.lua
PowerAuras.xml
PowerOptions.xml