diff --git a/Bindings.xml b/Bindings.xml
index 12c6f4b..626e486 100644
--- a/Bindings.xml
+++ b/Bindings.xml
@@ -1,29 +1,29 @@
-
-
- Necrosis_UseItem("Soulstone");
-
-
- Necrosis_UseItem("Healthstone");
-
-
- Necrosis_UseItem("Spellstone", "Binding");
-
-
- Necrosis_UseItem("Firestone");
-
-
- Necrosis_UseItem("Mount");
-
-
- Necrosis_BuffCast(43);
-
-
- Necrosis_BuffCast(9);
-
-
- Necrosis_Toggle("LeftButton");
-
-
- Necrosis_CurseMenu("MiddleButton");
-
-
+
+
+ Necrosis_UseItem("Soulstone");
+
+
+ Necrosis_UseItem("Healthstone");
+
+
+ Necrosis_UseItem("Spellstone", "Binding");
+
+
+ Necrosis_UseItem("Firestone");
+
+
+ Necrosis_UseItem("Mount");
+
+
+ Necrosis_BuffCast(43);
+
+
+ Necrosis_BuffCast(9);
+
+
+ Necrosis_Toggle("LeftButton");
+
+
+ Necrosis_CurseMenu("MiddleButton");
+
+
diff --git a/Changelog-de.txt b/Changelog-de.txt
index 7022468..14dd348 100644
--- a/Changelog-de.txt
+++ b/Changelog-de.txt
@@ -1,125 +1,125 @@
-NECROSIS LdC
---------------------------------
-
-Idee : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-
-- Erste Übersetzung (in Französisch, was vom Original-Addon noch
- nicht unterstützt war) und Verbesserungen : Tilienna Thorondor
-
-- Necrosis LdC Verfechter : Lomig & Nyx von Kael'Thas
-
-- Skins und Französische Stimmen : Eliah von Ner'zhul
-
-- Deutsche Version von Arne Meier (bis Version 1.3),
- ab Version 1.3.1 von Hexenmeisterin Halisstra auf Lothar
-
-- Besonderen Dank an Sadyre- Kontakt : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
-
-
--------------------------------Changelog : -------------------------------
-
-1.5.2a [Liadora]: Still haven't learn german... sorry for the english written changelog.
- TOC updated to match 1.12
- Epic Steed bug corrected for the FR client.
- Necrosis will now be working in duel since your adversary is no longer considered an ally.
-
- Middle-clicking the curse menu now try to recast the curse the same way it was clicked,
- meaning that if you right-clicked Curse of Agony to amplify it, the recast will try to
- amplify it also.
-
- Keybind for Banish, Life Tap and recasting curse (like above) added.
-
-
-
-1.5.2 Sorry, i don't speak a word of german, thus it will be an english version
- TOC updated to match 1.11
- Demonic Sacrifice added.
- Keybind for shadow-ward now available.
- DE Localisation of Curse of Shadow corrected.
-
- Brand new Curse Menu! Curse Buttons behaviour is:
- - Amplify-able curses may be cast amplified with a right click.
- - If the target is friendly, an assist is done before casting.
- - Without target, the curse buttons don't respond.
- - Middle click cast the curse and make your pet attack if you have one.
-
- Soulshard sorting is now not activated by default, since some people got issues when
- switching from different version.
-
- Sounds should be working fine since 1.11.1, since it was a bug coming from Blizzard.
-
-1.5.1 Korrigiert: Weiße Textur bei Teufelsbeherrschung
- Fluch der Erschöpfung wurde hinzugefügt
- Fluch verstärken wurde hinzugefügt
-
- Teufel-Seelensplitter werden nicht mehr als Seelensplitter angesehen
- Graphische Timer werden nun mit der UI skaliert, wie es von Anfang an beabsichtigt war
-
- Interne Änderungen im Format der Datenbank
- Neues Format der speech.lua
- - Beschwörung: Jeder Satz darf nun auf mehreren Chat Zeilen erscheinen
- - "Verbesserte Chance" : Es wird nicht mehr denselben Spruch zweimal hintereinander geben
- - Neue Platzhalter hinzugefügt.
- Innerhalb der Sprüche gelten nun folgende Abkürzungen:
- Der Name des Warlocks wird durch ersetzt,
- der Name des Pets durch und das Ziel eines Spruches durch
-
- Aderlass wurde hinzugefügt. Da es einer der meist genutzten Sprüche ist, muss man einfach die Necrosis
- Spähre linksklicken um diesen zu aktivieren.
-
- Schattenschutz wurde hinzugefügt
-
- Die Option, Sprüche für Dämonen ein- / auszuschalten wurde korrigiert
- Der Knopf für den Spruch verbannen wurde ans Ende der Zeile gesetzt, un er kann nun von 100% bis 200% skaliert werden
-
- Die normalen Ränge von "Unsichtbarkeit entdecken" und "Seelenstein erstellen" sind jetzt korrigiert !
-
-
-1.5 Timer wurden überarbeitet um weniger Lag zu erzeugen
- Es wurden im Datenbankformat einige interne Veränderungen vorgenommen
- Die englische und deutsche Lokalisierungen wurden verbessert
- Das Aktivieren der Beschwörungssprüche wird den Character einen Text sagen lassen,
- wenn man einen Dämon beschwört
- WICHTIG: Aufgrund der Rückmeldungen die WOW gibt kann es dauern, bis Necrosis
- den Namen des beschworenen Dämons bekommt. Dies kann bis zu
- 10 Beschwörungen oder mehr dauern.
- Der Befehl "/necro sm" wurde hinzugefügt: Aktiviert bzw deaktiviert kurze Nachrichten für
- Seelensteine und beim Beschwören von anderen Spielern anstelle der Zufallstexte
- Klickt man mit der rechten Maustaste um einen Dämon zu beschwören wird
- Teufelsbeherrschung ausgeführt
- Klickt man mit der mittleres Taste auf den Spruchmenü Button oder auf den
- Dämonenmenü Button, wird der letzte gesprochene Spruch oder beschwörte Dämon
- gesprochen bzw beschworen
- Der Befehl "/necro cast coa" wurde hinzugefügt um den Fluch der Pein in
- einem Macro mit einem Timer zu sprechen
- Es wurde eine Script Funktion hinzugefügt, die das Erstellen von eigenen Timern
- ermöglicht:
- /script NecrosisTimer("Name des Timers", Dauer):
- Der Timer wird mit dem derzeitigen Ziel verbunden
- Ist kein Ziel ausgewählt, wird es ein genereller Timer
- Ist man nich im Kampfmodus, kann der Name der Kreatur, die man mit dem Timer
- verbindet, in der Timerliste verbleiben und nicht verschwinden.
- Allerdings sollte er beim nächsten Kampf dann verschwinden.
- Groß- / Kleinschreibung ist bei dem Befehl wichtig, Dauer wird in Sekunden
- angegeben
-
-1.4.2 Ein Fehler bei den Timern wurde korrigiert
-
-1.4.1 Necrosis LdC ist nun kompatibel mit WoW 1.10
-
-1.4 Kein Lag mehr, wenn man die Menüs öffnet
- Graphische Timer
- Verbannen Timer wurden korrigiert
- Im Spruch Menü wurde "Dämonen spüren" hinzugefügt
-
-1.3.2 Verbannen Timer sollte nun funktionieren -- Aber man kann es nicht erkennen,
- falls das Ziel zu früh entkommt.
- Höllensteine und Dämonen-Statuetten werden nun korrekt gezählt
-
-1.3.1 Verschiedene Fehler verbessert (Wie fehlerhafte Timer, wenn man keinen Seelenstein verwendet)
- Neues Einstellungs-Menü
- Der Hexenmeister kann die Sphäre als Seelenstein-Timer nutzen
-1.3 : Buff management Beschwörungs-, Verbannen- und Versklaven-Verwaltung Mana Verwaltung (inaktive Icons wenn nicht vorhanden) Veränderungen im Timer System : Timer sind nun über die Monster organisiert Fehler beim Tastenfestlegen behoben Fehler im englischen Teil von Necrosis behoben Geringe Fehler behoben1.2 : Es ist nun möglich die Buttons von Necrosis in der Größe zu ändern Es ist nun möglich das Skin von Necrosis zu ändern Die Anzeige der Seelensplitter in der Necrosis Sphäre kann nun deaktiviert werden Es gibt nun einen Timer für jeden Cooldown der Hexenmeistersprüche
- Testweise wurde ein Timer für Instant Zaubern eingeführt1.1 : Ein Fehler wurde korrigiert der auftrat, wenn auf einem französischen Client
- eine Höllenbestie beschworen wurde
+NECROSIS LdC
+--------------------------------
+
+Idee : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+
+- Erste Übersetzung (in Französisch, was vom Original-Addon noch
+ nicht unterstützt war) und Verbesserungen : Tilienna Thorondor
+
+- Necrosis LdC Verfechter : Lomig & Nyx von Kael'Thas
+
+- Skins und Französische Stimmen : Eliah von Ner'zhul
+
+- Deutsche Version von Arne Meier (bis Version 1.3),
+ ab Version 1.3.1 von Hexenmeisterin Halisstra auf Lothar
+
+- Besonderen Dank an Sadyre- Kontakt : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
+
+
+-------------------------------Changelog : -------------------------------
+
+1.5.2a [Liadora]: Still haven't learn german... sorry for the english written changelog.
+ TOC updated to match 1.12
+ Epic Steed bug corrected for the FR client.
+ Necrosis will now be working in duel since your adversary is no longer considered an ally.
+
+ Middle-clicking the curse menu now try to recast the curse the same way it was clicked,
+ meaning that if you right-clicked Curse of Agony to amplify it, the recast will try to
+ amplify it also.
+
+ Keybind for Banish, Life Tap and recasting curse (like above) added.
+
+
+
+1.5.2 Sorry, i don't speak a word of german, thus it will be an english version
+ TOC updated to match 1.11
+ Demonic Sacrifice added.
+ Keybind for shadow-ward now available.
+ DE Localisation of Curse of Shadow corrected.
+
+ Brand new Curse Menu! Curse Buttons behaviour is:
+ - Amplify-able curses may be cast amplified with a right click.
+ - If the target is friendly, an assist is done before casting.
+ - Without target, the curse buttons don't respond.
+ - Middle click cast the curse and make your pet attack if you have one.
+
+ Soulshard sorting is now not activated by default, since some people got issues when
+ switching from different version.
+
+ Sounds should be working fine since 1.11.1, since it was a bug coming from Blizzard.
+
+1.5.1 Korrigiert: Weiße Textur bei Teufelsbeherrschung
+ Fluch der Erschöpfung wurde hinzugefügt
+ Fluch verstärken wurde hinzugefügt
+
+ Teufel-Seelensplitter werden nicht mehr als Seelensplitter angesehen
+ Graphische Timer werden nun mit der UI skaliert, wie es von Anfang an beabsichtigt war
+
+ Interne Änderungen im Format der Datenbank
+ Neues Format der speech.lua
+ - Beschwörung: Jeder Satz darf nun auf mehreren Chat Zeilen erscheinen
+ - "Verbesserte Chance" : Es wird nicht mehr denselben Spruch zweimal hintereinander geben
+ - Neue Platzhalter hinzugefügt.
+ Innerhalb der Sprüche gelten nun folgende Abkürzungen:
+ Der Name des Warlocks wird durch ersetzt,
+ der Name des Pets durch und das Ziel eines Spruches durch
+
+ Aderlass wurde hinzugefügt. Da es einer der meist genutzten Sprüche ist, muss man einfach die Necrosis
+ Spähre linksklicken um diesen zu aktivieren.
+
+ Schattenschutz wurde hinzugefügt
+
+ Die Option, Sprüche für Dämonen ein- / auszuschalten wurde korrigiert
+ Der Knopf für den Spruch verbannen wurde ans Ende der Zeile gesetzt, un er kann nun von 100% bis 200% skaliert werden
+
+ Die normalen Ränge von "Unsichtbarkeit entdecken" und "Seelenstein erstellen" sind jetzt korrigiert !
+
+
+1.5 Timer wurden überarbeitet um weniger Lag zu erzeugen
+ Es wurden im Datenbankformat einige interne Veränderungen vorgenommen
+ Die englische und deutsche Lokalisierungen wurden verbessert
+ Das Aktivieren der Beschwörungssprüche wird den Character einen Text sagen lassen,
+ wenn man einen Dämon beschwört
+ WICHTIG: Aufgrund der Rückmeldungen die WOW gibt kann es dauern, bis Necrosis
+ den Namen des beschworenen Dämons bekommt. Dies kann bis zu
+ 10 Beschwörungen oder mehr dauern.
+ Der Befehl "/necro sm" wurde hinzugefügt: Aktiviert bzw deaktiviert kurze Nachrichten für
+ Seelensteine und beim Beschwören von anderen Spielern anstelle der Zufallstexte
+ Klickt man mit der rechten Maustaste um einen Dämon zu beschwören wird
+ Teufelsbeherrschung ausgeführt
+ Klickt man mit der mittleres Taste auf den Spruchmenü Button oder auf den
+ Dämonenmenü Button, wird der letzte gesprochene Spruch oder beschwörte Dämon
+ gesprochen bzw beschworen
+ Der Befehl "/necro cast coa" wurde hinzugefügt um den Fluch der Pein in
+ einem Macro mit einem Timer zu sprechen
+ Es wurde eine Script Funktion hinzugefügt, die das Erstellen von eigenen Timern
+ ermöglicht:
+ /script NecrosisTimer("Name des Timers", Dauer):
+ Der Timer wird mit dem derzeitigen Ziel verbunden
+ Ist kein Ziel ausgewählt, wird es ein genereller Timer
+ Ist man nich im Kampfmodus, kann der Name der Kreatur, die man mit dem Timer
+ verbindet, in der Timerliste verbleiben und nicht verschwinden.
+ Allerdings sollte er beim nächsten Kampf dann verschwinden.
+ Groß- / Kleinschreibung ist bei dem Befehl wichtig, Dauer wird in Sekunden
+ angegeben
+
+1.4.2 Ein Fehler bei den Timern wurde korrigiert
+
+1.4.1 Necrosis LdC ist nun kompatibel mit WoW 1.10
+
+1.4 Kein Lag mehr, wenn man die Menüs öffnet
+ Graphische Timer
+ Verbannen Timer wurden korrigiert
+ Im Spruch Menü wurde "Dämonen spüren" hinzugefügt
+
+1.3.2 Verbannen Timer sollte nun funktionieren -- Aber man kann es nicht erkennen,
+ falls das Ziel zu früh entkommt.
+ Höllensteine und Dämonen-Statuetten werden nun korrekt gezählt
+
+1.3.1 Verschiedene Fehler verbessert (Wie fehlerhafte Timer, wenn man keinen Seelenstein verwendet)
+ Neues Einstellungs-Menü
+ Der Hexenmeister kann die Sphäre als Seelenstein-Timer nutzen
+1.3 : Buff management Beschwörungs-, Verbannen- und Versklaven-Verwaltung Mana Verwaltung (inaktive Icons wenn nicht vorhanden) Veränderungen im Timer System : Timer sind nun über die Monster organisiert Fehler beim Tastenfestlegen behoben Fehler im englischen Teil von Necrosis behoben Geringe Fehler behoben1.2 : Es ist nun möglich die Buttons von Necrosis in der Größe zu ändern Es ist nun möglich das Skin von Necrosis zu ändern Die Anzeige der Seelensplitter in der Necrosis Sphäre kann nun deaktiviert werden Es gibt nun einen Timer für jeden Cooldown der Hexenmeistersprüche
+ Testweise wurde ein Timer für Instant Zaubern eingeführt1.1 : Ein Fehler wurde korrigiert der auftrat, wenn auf einem französischen Client
+ eine Höllenbestie beschworen wurde
1.0 : Erste stabile Version
\ No newline at end of file
diff --git a/Changelog-en.txt b/Changelog-en.txt
index 908365f..f1669b8 100644
--- a/Changelog-en.txt
+++ b/Changelog-en.txt
@@ -1,119 +1,119 @@
-NECROSIS LdC
--------------------------------
-
-- Original Idea : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-- First translation (in French which was not supported by the original
- mod) and improvements : Tilienna Thorondor
-- Necrosis LdC maintainers : Lomig & Nyx from Kael'Thas
-
-- Skins and French voices : Eliah from Ner'zhul
-- German Version by Arne Meier
-- Special thanks to Sadyre
-
-- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
-
-
-First of all, I apologize for my bad english, I will try to find someone
-who can speak more fluently than me to improve my pieces of writing...
-
-
--------------------------------
-Changelog :
--------------------------------
-
-1.5.2a TOC updated to match 1.12
- Epic Steed bug corrected for the FR client.
- Necrosis will now be working in duel since your adversary is no longer considered an ally.
-
- Middle-clicking the curse menu now try to recast the curse the same way it was clicked,
- meaning that if you right-clicked Curse of Agony to amplify it, the recast will try to
- amplify it also.
-
- Keybind for Banish, Life Tap and recasting curse (like above) added.
-
-1.5.2 TOC updated to match 1.11
- Demonic Sacrifice added.
- Keybind for shadow-ward now available.
-
- Some FR and DE localisation error were corrected.
-
- Brand new Curse Menu! Curse Buttons behaviour is:
- - Amplify-able curses may be cast amplified with a right click.
- - If the target is friendly, an assist is done before casting.
- - Without target, the curse buttons don't respond.
- - Middle click cast the curse and make your pet attack if you have one.
-
- Soulshard sorting is now not activated by default, since some people got issues when
- switching from different version.
-
- Sounds should be working fine since 1.11.1, since it was a bug coming from Blizzard.
-
-1.5.1 Fix white skin with fel domination
- Exhaustion Curse added
- Amplify Curse added
-
- Fel Soulshards will no more be considered as Soulshards
- Graphical Timers are now scaled with the UI, as firstly intented
-
- Internal changes in database format
- New speech.lua format
- - Every summoning sentences are now allowed on several chat-lines
- - "Improved chance" : You will no longer have twice the same sentence on the bounce
- - New tags added. Now, in you speeches, the warlock's name is replaced by ,
- then summoned demon by and the spell target by
-
- Life Tap added. As one of the most used spell, you just have to left click on the necrosis sphere
- Shadow Ward added
-
- The option to turn on/off the speeches for demons is now fixed
- Banish button is now at the end of the line, and you can now set its scale from 100 % to 200 %
-
- Detect Invisibility and Create Stones (normal ranks) are now fixed !
-
-1.5 : Timers reworked --> Less lag
- Internal changes in database format
- English and German localisation improved
-
- Activating summon speech will now make you talk when you summon demons
- Adding a "/necro sm" command to activate short messages while soulstoning and player summoning
- Right click on a demon cast Fel Domination
- Middle click on buff or demon menu will cast last buff or summon last demon
- Adding a "/necro cast coa" command to cast a Curse of Agony in a macro with a timer
- Adding a script function to add personalized timers
- /script NecrosisTimer("Name of the timer", durration); let a timer be associated with your current target
- If you do not have any target, it will be a general timer
- When you are not in fight mode, The name of the mob you put your timer on may keep showing on the screen
- It will disappear next fight.
-
-1.4.2 Timer bug fixed
-
-1.4.1 WoW 1.10 Compatibility
-
-1.4 No more lag when opening menus
- Graphical Timers
- Banish timers are now correct
- Add Sense Demons in the Spell Menu
-
-1.3.2 Banish timer is now fixed -- But can't see if the target escape too soon
- Infernal and Demoniac stones count is now fixed
-
-1.3.1 Various bugs fixed (As hazardous timers when you do not use a soulstone)
- New Setting Menu
- Let the warlock use the sphere as Soulstone timer
-
-1.3 : Buff management
- Summoning, banish and enslave management
- Mana management (inactive icons if unvailable)
- Changes in the timers system : Timers are now organized by mobs
- Bugs in binding keys removed
- Bugs with using english part of Necrosis removed
- Minor bugs removed
-
-1.2 : Changing size of the Necrosis buttons is now possible
- It is now possible to change Necrosis' Skin
- You can now hide the shard count in the Necrosis Sphere
- There is now a timer for ALL warlock spell cooldowns
- Timer for insta-cast (TEST)
-
-1.1 : Fix a bug about summoning an Inferno on French Client
+NECROSIS LdC
+-------------------------------
+
+- Original Idea : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+- First translation (in French which was not supported by the original
+ mod) and improvements : Tilienna Thorondor
+- Necrosis LdC maintainers : Lomig & Nyx from Kael'Thas
+
+- Skins and French voices : Eliah from Ner'zhul
+- German Version by Arne Meier
+- Special thanks to Sadyre
+
+- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
+
+
+First of all, I apologize for my bad english, I will try to find someone
+who can speak more fluently than me to improve my pieces of writing...
+
+
+-------------------------------
+Changelog :
+-------------------------------
+
+1.5.2a TOC updated to match 1.12
+ Epic Steed bug corrected for the FR client.
+ Necrosis will now be working in duel since your adversary is no longer considered an ally.
+
+ Middle-clicking the curse menu now try to recast the curse the same way it was clicked,
+ meaning that if you right-clicked Curse of Agony to amplify it, the recast will try to
+ amplify it also.
+
+ Keybind for Banish, Life Tap and recasting curse (like above) added.
+
+1.5.2 TOC updated to match 1.11
+ Demonic Sacrifice added.
+ Keybind for shadow-ward now available.
+
+ Some FR and DE localisation error were corrected.
+
+ Brand new Curse Menu! Curse Buttons behaviour is:
+ - Amplify-able curses may be cast amplified with a right click.
+ - If the target is friendly, an assist is done before casting.
+ - Without target, the curse buttons don't respond.
+ - Middle click cast the curse and make your pet attack if you have one.
+
+ Soulshard sorting is now not activated by default, since some people got issues when
+ switching from different version.
+
+ Sounds should be working fine since 1.11.1, since it was a bug coming from Blizzard.
+
+1.5.1 Fix white skin with fel domination
+ Exhaustion Curse added
+ Amplify Curse added
+
+ Fel Soulshards will no more be considered as Soulshards
+ Graphical Timers are now scaled with the UI, as firstly intented
+
+ Internal changes in database format
+ New speech.lua format
+ - Every summoning sentences are now allowed on several chat-lines
+ - "Improved chance" : You will no longer have twice the same sentence on the bounce
+ - New tags added. Now, in you speeches, the warlock's name is replaced by ,
+ then summoned demon by and the spell target by
+
+ Life Tap added. As one of the most used spell, you just have to left click on the necrosis sphere
+ Shadow Ward added
+
+ The option to turn on/off the speeches for demons is now fixed
+ Banish button is now at the end of the line, and you can now set its scale from 100 % to 200 %
+
+ Detect Invisibility and Create Stones (normal ranks) are now fixed !
+
+1.5 : Timers reworked --> Less lag
+ Internal changes in database format
+ English and German localisation improved
+
+ Activating summon speech will now make you talk when you summon demons
+ Adding a "/necro sm" command to activate short messages while soulstoning and player summoning
+ Right click on a demon cast Fel Domination
+ Middle click on buff or demon menu will cast last buff or summon last demon
+ Adding a "/necro cast coa" command to cast a Curse of Agony in a macro with a timer
+ Adding a script function to add personalized timers
+ /script NecrosisTimer("Name of the timer", durration); let a timer be associated with your current target
+ If you do not have any target, it will be a general timer
+ When you are not in fight mode, The name of the mob you put your timer on may keep showing on the screen
+ It will disappear next fight.
+
+1.4.2 Timer bug fixed
+
+1.4.1 WoW 1.10 Compatibility
+
+1.4 No more lag when opening menus
+ Graphical Timers
+ Banish timers are now correct
+ Add Sense Demons in the Spell Menu
+
+1.3.2 Banish timer is now fixed -- But can't see if the target escape too soon
+ Infernal and Demoniac stones count is now fixed
+
+1.3.1 Various bugs fixed (As hazardous timers when you do not use a soulstone)
+ New Setting Menu
+ Let the warlock use the sphere as Soulstone timer
+
+1.3 : Buff management
+ Summoning, banish and enslave management
+ Mana management (inactive icons if unvailable)
+ Changes in the timers system : Timers are now organized by mobs
+ Bugs in binding keys removed
+ Bugs with using english part of Necrosis removed
+ Minor bugs removed
+
+1.2 : Changing size of the Necrosis buttons is now possible
+ It is now possible to change Necrosis' Skin
+ You can now hide the shard count in the Necrosis Sphere
+ There is now a timer for ALL warlock spell cooldowns
+ Timer for insta-cast (TEST)
+
+1.1 : Fix a bug about summoning an Inferno on French Client
1.0 : First stable version
\ No newline at end of file
diff --git a/Changelog-fr.txt b/Changelog-fr.txt
index 2f0b35a..02fa1c8 100644
--- a/Changelog-fr.txt
+++ b/Changelog-fr.txt
@@ -1,133 +1,133 @@
- Necrosis LdC
--------------------------------
-
-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-- Implémentation de base (FR) : Tilienna Thorondor
-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
-
-- Skins et voix Françaises : Eliah, Ner'zhul
-- Version Allemande par Arne Meier
-- Remerciements spéciaux pour Sadyre (JoL)
-
-- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
-
-
-
--------------------------------
-Changelog :
--------------------------------
-
-1.5.2a Mise à jour de la TOC pour la 1.12
- Correction du bug de la monture épique pour les clients FR.
- Correction des bugs en duel. Désormais, vous pouvez utilisez une pierre de soin et lancer
- vos malédictions correctement sans que votre adversaire soit considéré comme un allié.
-
- Changement du comportement du clique-milieu sur le menu des malédictions. Désormais, la
- la malédiction précedente est relancée mais surtout dans les mêmes conditions de clic.
- (c'est à dire que si vous aviez lancé agonie en améliorer, cela retentera de le faire.)
-
- Ajout de trois raccourçis clavier: Bannissement, Connexion et recast de la dernière
- lancée, exactement comme un clique-milieu sur le menu des malédictions. Cela permet de
- démarrer un combat en lançant la malédiction voulue avec nécrosis, et de poursuivre le
- combat en appuyant sur une touche pour les cast suivants.
-
-1.5.2 Mise à jour de la TOC pour la 1.11
- Correction de petites erreurs de localisation en FR et DE qui empêchait d'acceder à certains
- sorts, comme le gardien de l'ombre en FR ou la malédiction d'ombre en DE.
- Re-correction fr d'un bug qui empêchait le timer des démons asservis de se déclencher.
- Peut-être que ce coup-ci ce foutu débuff va arrêter de changer de nom.
-
- Ajout du Sacrifice démoniaque dans le menu des démons. (Vous le vouliez, vous l'avez.)
- Ajout d'un raccourçi clavier configurable via le menu ad-hoc pour le gardien de l'ombre.
-
- Ajout d'un menu de malédiction! Le comportement des boutons de malédictions est le suivant:
- - Les malédictions amplifiables peuvent l'être en cliquant droit.
- - Si la cible est allié, un assist est lancé avant de le cast.
- - S'il n'y a pas de cible, les boutons ne répondent pas.
- - En cas de clic avec le bouton du milieu, si un pet est présent il attaque en même temps
- que le cast.
-
- Désactivation dans la configuration par défaut du tri de fragment d'âme. Certaines personnes
- ont eu des soucis lors des changements de version.
-
- Les sons doivent remarcher correctement depuis la mise à jour 1.11.1. En effet, le bug était
- du côté de Blizzard.
-
-1.5.1 Correction fr d'un bug de rangement des fragments avec les sacs à fragments bleus et violets
- Correction fr d'un bug qui empêchait le timer des démons asservis de se déclencher
- Correction de la skin du bouton de domination corrompue
- Ajout de la malédiction de fatigue (je l'avais oubliée ! :D)
- Ajout de la malédiction amplifiée (Oubliée aussi :D)
-
- Correction du bug entre Necrosis et les fragments d'âme corrompus de Felwood.
- Correction du bug des timers graphiques qui ne respectaient pas l'échelle de l'interface
-
- Changement interne dans la base de données
- Correction fr de la tooltip d'Asservir Démon
- Correction d'orthographe dans le speech.lua (fr)
- Changement du format du fichier speech.lua
- - Les phrases d'invocations sont maintenant toutes multilignes
- - "Hasard amélioré" : Il n'est plus possible d'avoir deux fois à suivre la même phrase
- d'invocation ou de pierre de rez :)
- - Ajout de tags simples à comprendre pour créer ses propres messages : Le nom du joueur
- est remplacé par , du pet invoqué par et de la cible du sort par
-
- Ajout de connexion dans les sorts utilisés : Etant le sort le plus employé par les démos
- qui se respectent, c'est un clic gauche sur la sphere qui le déclenche !
- Ajout du sort de protection contre les ombres
-
- Case à cocher des messages d'invocation des démons réparée
- Le bouton Banish est maintenant en fin de ligne pour l'utiliser plus rapidement, et on peut
- modifier sa taille du simple au double pour plus de visibilité
-
- ENFIN (logiquement) j'ai réparé la détection des sorts de création de pierre et de détection
- de l'invisibilité
-
-1.5 : Retravail total des timers pour moins de lag
- Changements internes dans la manière de gérer les données
- Amélioration des localisations anglaises et allemandes
-
- L'activation des messages d'invocation vous fait parler aussi pour l'invocation des démons
- Ajout de la commande /sm pour avoir des message de pierre d'âme et de tp non envahissants
- Un clic droit sur un démon lance la domination corrompue si disponible
- Un clic du milieu sur le menu des sorts ou celui des démons lance le dernier sort/démon castés
- Ajout de la commande /necro cast coa qui permet de caster une malé d'agonie dans une macro avec un timer
- Ajout d'une fonction de script permettant la création de timers personnalisés
- /script NecrosisTimer("Nom donné au timer", durée); permet d'associer un timer à la cible en court
- Si il n'y a pas de cible, le timer est un timer général
- Hors Combat, quand on donne un timer à une cible, le nom de la cible du timer ne disparait pas :
- Il disparaitra au prochain combat :)
-
-1.4.2 Correction d'un bug envahissant sur les timers
-
-1.4.1 Compatibilité 1.10
-
-1.4 : Correction du lag à l'ouverture des menus
- Timers représentés sous forme graphique
- Les banissements sont maintenant bien timés
- Ajout du radar à démons dans le menu
-
-1.3.2 Correction du timer de banissement -- Pas encore de gestion des libération de ban
- Correction du comptage incorrect des pierres infernales et démoniaques
-
-1.3.1 Correction de bugs divers (timers fonctionnent meme si on ne pose pas de soulstone...)
- Nouveau menu de configuration
- Permet l'utilisation de la sphere comme timer de rez
-
-1.3 : Gestion des buffs
- Gestion des invocations, des asservissements et des banissements
- Gestion de la mana (icones grisées / inactives en cas d'impossibilité)
- Modification du système de timers : Les timers sont maintenant classés par
- mobs !
- Correction des bugs de touches de raccourci
- Correction des bugs de passage des textes en VO
- Correction de bugs mineurs
-
-1.2 : Réglage possible de la taille des boutons de necrosis
- Changement possible de skin pour Necrosis
- Possibilité de cacher le nombre de fragment dans la sphère
- Timing de tous les cooldown de sorts démonistes
- Timing de sorts instants
-
-1.1 : Correction d'un bug pour l'invocation de l'infernal en Français
-1.0 : Première version stable
+ Necrosis LdC
+-------------------------------
+
+- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+- Implémentation de base (FR) : Tilienna Thorondor
+- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+
+- Skins et voix Françaises : Eliah, Ner'zhul
+- Version Allemande par Arne Meier
+- Remerciements spéciaux pour Sadyre (JoL)
+
+- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
+
+
+
+-------------------------------
+Changelog :
+-------------------------------
+
+1.5.2a Mise à jour de la TOC pour la 1.12
+ Correction du bug de la monture épique pour les clients FR.
+ Correction des bugs en duel. Désormais, vous pouvez utilisez une pierre de soin et lancer
+ vos malédictions correctement sans que votre adversaire soit considéré comme un allié.
+
+ Changement du comportement du clique-milieu sur le menu des malédictions. Désormais, la
+ la malédiction précedente est relancée mais surtout dans les mêmes conditions de clic.
+ (c'est à dire que si vous aviez lancé agonie en améliorer, cela retentera de le faire.)
+
+ Ajout de trois raccourçis clavier: Bannissement, Connexion et recast de la dernière
+ lancée, exactement comme un clique-milieu sur le menu des malédictions. Cela permet de
+ démarrer un combat en lançant la malédiction voulue avec nécrosis, et de poursuivre le
+ combat en appuyant sur une touche pour les cast suivants.
+
+1.5.2 Mise à jour de la TOC pour la 1.11
+ Correction de petites erreurs de localisation en FR et DE qui empêchait d'acceder à certains
+ sorts, comme le gardien de l'ombre en FR ou la malédiction d'ombre en DE.
+ Re-correction fr d'un bug qui empêchait le timer des démons asservis de se déclencher.
+ Peut-être que ce coup-ci ce foutu débuff va arrêter de changer de nom.
+
+ Ajout du Sacrifice démoniaque dans le menu des démons. (Vous le vouliez, vous l'avez.)
+ Ajout d'un raccourçi clavier configurable via le menu ad-hoc pour le gardien de l'ombre.
+
+ Ajout d'un menu de malédiction! Le comportement des boutons de malédictions est le suivant:
+ - Les malédictions amplifiables peuvent l'être en cliquant droit.
+ - Si la cible est allié, un assist est lancé avant de le cast.
+ - S'il n'y a pas de cible, les boutons ne répondent pas.
+ - En cas de clic avec le bouton du milieu, si un pet est présent il attaque en même temps
+ que le cast.
+
+ Désactivation dans la configuration par défaut du tri de fragment d'âme. Certaines personnes
+ ont eu des soucis lors des changements de version.
+
+ Les sons doivent remarcher correctement depuis la mise à jour 1.11.1. En effet, le bug était
+ du côté de Blizzard.
+
+1.5.1 Correction fr d'un bug de rangement des fragments avec les sacs à fragments bleus et violets
+ Correction fr d'un bug qui empêchait le timer des démons asservis de se déclencher
+ Correction de la skin du bouton de domination corrompue
+ Ajout de la malédiction de fatigue (je l'avais oubliée ! :D)
+ Ajout de la malédiction amplifiée (Oubliée aussi :D)
+
+ Correction du bug entre Necrosis et les fragments d'âme corrompus de Felwood.
+ Correction du bug des timers graphiques qui ne respectaient pas l'échelle de l'interface
+
+ Changement interne dans la base de données
+ Correction fr de la tooltip d'Asservir Démon
+ Correction d'orthographe dans le speech.lua (fr)
+ Changement du format du fichier speech.lua
+ - Les phrases d'invocations sont maintenant toutes multilignes
+ - "Hasard amélioré" : Il n'est plus possible d'avoir deux fois à suivre la même phrase
+ d'invocation ou de pierre de rez :)
+ - Ajout de tags simples à comprendre pour créer ses propres messages : Le nom du joueur
+ est remplacé par , du pet invoqué par et de la cible du sort par
+
+ Ajout de connexion dans les sorts utilisés : Etant le sort le plus employé par les démos
+ qui se respectent, c'est un clic gauche sur la sphere qui le déclenche !
+ Ajout du sort de protection contre les ombres
+
+ Case à cocher des messages d'invocation des démons réparée
+ Le bouton Banish est maintenant en fin de ligne pour l'utiliser plus rapidement, et on peut
+ modifier sa taille du simple au double pour plus de visibilité
+
+ ENFIN (logiquement) j'ai réparé la détection des sorts de création de pierre et de détection
+ de l'invisibilité
+
+1.5 : Retravail total des timers pour moins de lag
+ Changements internes dans la manière de gérer les données
+ Amélioration des localisations anglaises et allemandes
+
+ L'activation des messages d'invocation vous fait parler aussi pour l'invocation des démons
+ Ajout de la commande /sm pour avoir des message de pierre d'âme et de tp non envahissants
+ Un clic droit sur un démon lance la domination corrompue si disponible
+ Un clic du milieu sur le menu des sorts ou celui des démons lance le dernier sort/démon castés
+ Ajout de la commande /necro cast coa qui permet de caster une malé d'agonie dans une macro avec un timer
+ Ajout d'une fonction de script permettant la création de timers personnalisés
+ /script NecrosisTimer("Nom donné au timer", durée); permet d'associer un timer à la cible en court
+ Si il n'y a pas de cible, le timer est un timer général
+ Hors Combat, quand on donne un timer à une cible, le nom de la cible du timer ne disparait pas :
+ Il disparaitra au prochain combat :)
+
+1.4.2 Correction d'un bug envahissant sur les timers
+
+1.4.1 Compatibilité 1.10
+
+1.4 : Correction du lag à l'ouverture des menus
+ Timers représentés sous forme graphique
+ Les banissements sont maintenant bien timés
+ Ajout du radar à démons dans le menu
+
+1.3.2 Correction du timer de banissement -- Pas encore de gestion des libération de ban
+ Correction du comptage incorrect des pierres infernales et démoniaques
+
+1.3.1 Correction de bugs divers (timers fonctionnent meme si on ne pose pas de soulstone...)
+ Nouveau menu de configuration
+ Permet l'utilisation de la sphere comme timer de rez
+
+1.3 : Gestion des buffs
+ Gestion des invocations, des asservissements et des banissements
+ Gestion de la mana (icones grisées / inactives en cas d'impossibilité)
+ Modification du système de timers : Les timers sont maintenant classés par
+ mobs !
+ Correction des bugs de touches de raccourci
+ Correction des bugs de passage des textes en VO
+ Correction de bugs mineurs
+
+1.2 : Réglage possible de la taille des boutons de necrosis
+ Changement possible de skin pour Necrosis
+ Possibilité de cacher le nombre de fragment dans la sphère
+ Timing de tous les cooldown de sorts démonistes
+ Timing de sorts instants
+
+1.1 : Correction d'un bug pour l'invocation de l'infernal en Français
+1.0 : Première version stable
diff --git a/LICENSE b/LICENSE
index d159169..89e08fb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,339 +1,339 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- , 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ , 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/Lisezmoi.txt b/Lisezmoi.txt
index 70b18ff..b252715 100644
--- a/Lisezmoi.txt
+++ b/Lisezmoi.txt
@@ -1,114 +1,114 @@
- Necrosis LdC
--------------------------------
-
-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-- Implémentation de base (FR) : Tilienna Thorondor
-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
-
-- Skins et voix Françaises : Eliah, Ner'zhul
-- Version Allemande par Arne Meier
-- Remerciements spéciaux pour Sadyre (JoL)
-
-- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
-
-
-
-
--------------------------------
-1 - Qu'est-ce que Necrosis ?
--------------------------------
-
-Necrosis est un mod qui aide les Démonistes à gérer leurs pierres, fragments,
-et démons. Ni plus, ni moins. Bon, ça ne fait pas encore le café, mais j'ai
-pourtant essayé, promis !
-
--------------------------------
-2 - Pourquoi utiliser Necrosis ?
--------------------------------
-
-Parce que ce mod est génial ! C'est joli tout plein, grace à lui vous ne serez
-plus obligé d'avoir 150.000 boutons autour de votre écran, vos amis seront
-contents d'apprendre que vous leur avez mis une pierre d'âme, et ils vous
-remercieront de leur expliquer comment fonctionne une invocation de joueur...
-Génial, je vous le disais !
-
--------------------------------
-3 - Comment ça marche ?
--------------------------------
-
-En fait, c'est simplissime. Même ma grand mère peut le faire. Bon, bien sûr, ma
-grand mère n'a jamais eu l'intention de jouer à des jeux en ligne. Elle pensait
-que les ordinateurs étaient des machines du Diable qui apportaient la mort et la
-désolation. Si c'est pas honteux une telle étroitesse d'esprit ! Enfin bref ...
-
-
-Comment ça marche ? Mmmm....
-
-
-Necrosis vous fourni une sphère et 7 boutons.
-Un clic droit sur la sphère vous permet d'avoir le menu de configuration
-
-- Sur la sphère est affiché le nombre de fragments en votre possession
-- Un bouton pour créer / équiper une pierre de feu
-- Un bouton pour créer / équiper / utiliser une pierre de sort
- Clic droit pour créer ou équiper
- Clic gauche pour créer ou utiliser
-- Un bouton pour créer / utiliser / donner une pierre de soins
- Sans cible, en ciblant un ennemi ou un PnJ : Utilise la pierre
- En ciblant un joueur allié : Donne la pierre
- Si une fenêtre d'échange est ouverte : Y met la pierre et valide l'échange
- Astucieusement, il vous sera impossible d'utiliser la pierre si vous
- êtes en pleine santé... Et si le heal de personne en forme vous
- intéresse, faites donc un paladin !
-- Un bouton pour créer / utiliser une pierre d'âme
- En ciblant un joueur allié : Lui pose la pierre
- En ciblant autre chose : Pose la sphère sur vous
-- Un bouton pour invoquer votre monture
-- Un bouton pour ouvrir le menu d'invocation des démons, avec vos démons,
- le sorts de Domination corrompue...
-- Un bouton pour le timer des sorts
- Indique l'emplacement des timers (à droite du bouton)
- Un clic droit sur le bouton utilise votre pierre de foyer
-
--------------------------------
-4 - Plus de fonctionnalités
--------------------------------
-
-La sphère de Nécrosis est déplaçable où bon vous semble
-Tous les boutons de Necrosis sont déplaçables où bon vous semble
-
-Quand vous vous déconnectez avec une pierre équipée en main gauche et que vous
-vous reconnectez plus de 30 minutes plus tard, comme vos pierres ont disparu,
-Necrosis rééquipe le premier objet main-gauche lié qu'il trouve dans vos sacs.
-
-Quand vous invoquez un autre joueur, Necrosis choisit au hasard une phrase pour
-prévenir vos amis de qui vous invoquez.
-
-Quand vous posez une pierre d'âme sur un ami à l'aide du bouton de Necrosis, il
-choisit au hasard une phrase pour prévenir vos amis...
-
-Ces phrases sont contenues dansr le fichier "Speech.lua", vous pouvez modifier/
-ajouter/enlever autant de phrase que vous le souhaitez
-
-
-
-La plupart de vos sorts à cooldown affichent un timer dans Necrosis La plupart,
-pas tous ! J'y travaille, mais inscrire la durée d'un sort instantané est assez
-ardu...
-
--------------------------------
-5 - Vous pouvez nous aider
--------------------------------
-
-Ce mod bug ? Envoyez-moi une description de ce que vous faisiez, et le message
-d'erreur exact affiché. On a tellement testé ce mod qu'un gros bug me semble
-évité, mais on est jamais à l'abris ! Au pire, sur les forums officiels ou
-sur JoL, vous trouverez un topic sur Necrosis :)
-
--------------------------------
-6 - Améliorations
--------------------------------
-
-Si vous trouvez que certaines fonctions sont nulles, et vous voulez rajouter/ avez
-rajouté un truc super génial... Et si vous voulez en faire profiter les gens,
-n'hésitez pas à nous écrire !
+ Necrosis LdC
+-------------------------------
+
+- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+- Implémentation de base (FR) : Tilienna Thorondor
+- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+
+- Skins et voix Françaises : Eliah, Ner'zhul
+- Version Allemande par Arne Meier
+- Remerciements spéciaux pour Sadyre (JoL)
+
+- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
+
+
+
+
+-------------------------------
+1 - Qu'est-ce que Necrosis ?
+-------------------------------
+
+Necrosis est un mod qui aide les Démonistes à gérer leurs pierres, fragments,
+et démons. Ni plus, ni moins. Bon, ça ne fait pas encore le café, mais j'ai
+pourtant essayé, promis !
+
+-------------------------------
+2 - Pourquoi utiliser Necrosis ?
+-------------------------------
+
+Parce que ce mod est génial ! C'est joli tout plein, grace à lui vous ne serez
+plus obligé d'avoir 150.000 boutons autour de votre écran, vos amis seront
+contents d'apprendre que vous leur avez mis une pierre d'âme, et ils vous
+remercieront de leur expliquer comment fonctionne une invocation de joueur...
+Génial, je vous le disais !
+
+-------------------------------
+3 - Comment ça marche ?
+-------------------------------
+
+En fait, c'est simplissime. Même ma grand mère peut le faire. Bon, bien sûr, ma
+grand mère n'a jamais eu l'intention de jouer à des jeux en ligne. Elle pensait
+que les ordinateurs étaient des machines du Diable qui apportaient la mort et la
+désolation. Si c'est pas honteux une telle étroitesse d'esprit ! Enfin bref ...
+
+
+Comment ça marche ? Mmmm....
+
+
+Necrosis vous fourni une sphère et 7 boutons.
+Un clic droit sur la sphère vous permet d'avoir le menu de configuration
+
+- Sur la sphère est affiché le nombre de fragments en votre possession
+- Un bouton pour créer / équiper une pierre de feu
+- Un bouton pour créer / équiper / utiliser une pierre de sort
+ Clic droit pour créer ou équiper
+ Clic gauche pour créer ou utiliser
+- Un bouton pour créer / utiliser / donner une pierre de soins
+ Sans cible, en ciblant un ennemi ou un PnJ : Utilise la pierre
+ En ciblant un joueur allié : Donne la pierre
+ Si une fenêtre d'échange est ouverte : Y met la pierre et valide l'échange
+ Astucieusement, il vous sera impossible d'utiliser la pierre si vous
+ êtes en pleine santé... Et si le heal de personne en forme vous
+ intéresse, faites donc un paladin !
+- Un bouton pour créer / utiliser une pierre d'âme
+ En ciblant un joueur allié : Lui pose la pierre
+ En ciblant autre chose : Pose la sphère sur vous
+- Un bouton pour invoquer votre monture
+- Un bouton pour ouvrir le menu d'invocation des démons, avec vos démons,
+ le sorts de Domination corrompue...
+- Un bouton pour le timer des sorts
+ Indique l'emplacement des timers (à droite du bouton)
+ Un clic droit sur le bouton utilise votre pierre de foyer
+
+-------------------------------
+4 - Plus de fonctionnalités
+-------------------------------
+
+La sphère de Nécrosis est déplaçable où bon vous semble
+Tous les boutons de Necrosis sont déplaçables où bon vous semble
+
+Quand vous vous déconnectez avec une pierre équipée en main gauche et que vous
+vous reconnectez plus de 30 minutes plus tard, comme vos pierres ont disparu,
+Necrosis rééquipe le premier objet main-gauche lié qu'il trouve dans vos sacs.
+
+Quand vous invoquez un autre joueur, Necrosis choisit au hasard une phrase pour
+prévenir vos amis de qui vous invoquez.
+
+Quand vous posez une pierre d'âme sur un ami à l'aide du bouton de Necrosis, il
+choisit au hasard une phrase pour prévenir vos amis...
+
+Ces phrases sont contenues dansr le fichier "Speech.lua", vous pouvez modifier/
+ajouter/enlever autant de phrase que vous le souhaitez
+
+
+
+La plupart de vos sorts à cooldown affichent un timer dans Necrosis La plupart,
+pas tous ! J'y travaille, mais inscrire la durée d'un sort instantané est assez
+ardu...
+
+-------------------------------
+5 - Vous pouvez nous aider
+-------------------------------
+
+Ce mod bug ? Envoyez-moi une description de ce que vous faisiez, et le message
+d'erreur exact affiché. On a tellement testé ce mod qu'un gros bug me semble
+évité, mais on est jamais à l'abris ! Au pire, sur les forums officiels ou
+sur JoL, vous trouverez un topic sur Necrosis :)
+
+-------------------------------
+6 - Améliorations
+-------------------------------
+
+Si vous trouvez que certaines fonctions sont nulles, et vous voulez rajouter/ avez
+rajouté un truc super génial... Et si vous voulez en faire profiter les gens,
+n'hésitez pas à nous écrire !
diff --git a/Localization-dialog-de.lua b/Localization-dialog-de.lua
index 3143b79..bdd5310 100644
--- a/Localization-dialog-de.lua
+++ b/Localization-dialog-de.lua
@@ -1,305 +1,305 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 11.05.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-------------------------------------------------
--- GERMAN VERSION TEXTS --
-------------------------------------------------
-
-function Necrosis_Localization_Dialog_De()
-
- function NecrosisLocalization()
- Necrosis_Localization_Speech_De();
- end
-
- NECROSIS_COOLDOWN = {
- ["Spellstone"] = "Zauberstein Cooldown",
- ["Healthstone"] = "Gesundheitsstein Cooldown"
- };
-
- NecrosisTooltipData = {
- ["Main"] = {
- Label = "|c00FFFFFFNecrosis|r",
- Stone = {
- [true] = "Ja";
- [false] = "Nein";
- },
- Hellspawn = {
- [true] = "An";
- [false] = "Aus";
- },
- ["Soulshard"] = "Seelensplitter : ",
- ["InfernalStone"] = "H\195\182llensteine : ",
- ["DemoniacStone"] = "D\195\164monen-Statuetten : ",
- ["Soulstone"] = "\nSeelenstein : ",
- ["Healthstone"] = "Gesundheitsstein : ",
- ["Spellstone"] = "Zauberstein: ",
- ["Firestone"] = "Feuerstein : ",
- ["CurrentDemon"] = "D\195\164mon : ",
- ["EnslavedDemon"] = "D\195\164mon : Versklavter",
- ["NoCurrentDemon"] = "D\195\164mon : Keiner",
- },
- ["Soulstone"] = {
- Label = "|c00FF99FFSeelenstein|r",
- Text = {"Erstelle","Verwende","Benutzt","Warten"}
- },
- ["Healthstone"] = {
- Label = "|c0066FF33Gesundheitsstein|r",
- Text = {"Erstelle","Verwende"}
- },
- ["Spellstone"] = {
- Label = "|c0099CCFFZauberstein|r",
- Text = {"Erstelle","Im Inventar","In der Hand gehalten"}
- },
- ["Firestone"] = {
- Label = "|c00FF4444Feuerstein|r",
- Text = {"Erstelle","Im Inventar","In der Hand gehalten"}
- },
- ["SpellTimer"] = {
- Label = "|c00FFFFFFSpruchdauer|r",
- Text = "Aktive Spr\195\188che auf dem Ziel\n",
- Right = "Rechtsklick f\195\188r Ruhestein nach "
- },
- ["ShadowTrance"] = {
- Label = "|c00FFFFFFSchatten Trance|r"
- },
- ["Domination"] = {
- Label = "|c00FFFFFFTeufelsbeherrschung|r"
- },
- ["Enslave"] = {
- Label = "|c00FFFFFFVersklavt|r"
- },
- ["Armor"] = {
- Label = "|c00FFFFFFD\195\164monenr\195\188stung|r"
- },
- ["Invisible"] = {
- Label = "|c00FFFFFFEntdecke Unsichtbarkeit|r"
- },
- ["Aqua"] = {
- Label = "|c00FFFFFFUnendlicher Atem|r"
- },
- ["Kilrogg"] = {
- Label = "|c00FFFFFFAuge von Kilrogg|r"
- },
- ["Banish"] = {
- Label = "|c00FFFFFFVerbannen|r"
- },
- ["TP"] = {
- Label = "|c00FFFFFFRitual der Beschw\195\182rung|r"
- },
- ["SoulLink"] = {
- Label = "|c00FFFFFFSeelenverbindung|r"
- },
- ["ShadowProtection"] = {
- Label = "|c00FFFFFFSchattenzauberschutz|r"
- },
- ["Imp"] = {
- Label = "|c00FFFFFFWichtel|r"
- },
- ["Void"] = {
- Label = "|c00FFFFFFLeerwandler|r"
- },
- ["Succubus"] = {
- Label = "|c00FFFFFFSukkubus|r"
- },
- ["Fel"] = {
- Label = "|c00FFFFFFTeufelsj\195\164ger|r"
- },
- ["Infernal"] = {
- Label = "|c00FFFFFFH\195\182llenbestie|r"
- },
- ["Doomguard"] = {
- Label = "|c00FFFFFFVerdammniswache|r"
- },
- ["Sacrifice"] = {
- Label = "|c00FFFFFFD\195\164monenopferung|r"
- },
- ["Amplify"] = {
- Label = "|c00FFFFFFFluch verst\195\164rken|r"
- },
- ["Weakness"] = {
- Label = "|c00FFFFFFFluch der Schw\195\164che|r"
- },
- ["Agony"] = {
- Label = "|c00FFFFFFFluch der Pein|r"
- },
- ["Reckless"] = {
- Label = "|c00FFFFFFFluch der Tollk\195\188hnheit|r"
- },
- ["Tongues"] = {
- Label = "|c00FFFFFFFluch der Sprachen|r"
- },
- ["Exhaust"] = {
- Label = "|c00FFFFFFFluch der Ersch\195\182pfung|r"
- },
- ["Elements"] = {
- Label = "|c00FFFFFFFluch der Elemente|r"
- },
- ["Shadow"] = {
- Label = "|c00FFFFFFFluch der Schatten|r"
- },
- ["Doom"] = {
- Label = "|c00FFFFFFFluch der Verdammnis|r"
- },
- ["Mount"] = {
- Label = "|c00FFFFFFMount|r"
- },
- ["Buff"] = {
- Label = "|c00FFFFFFSpruch Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
- },
- ["Pet"] = {
- Label = "|c00FFFFFFD\195\164monen Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
- },
- ["Curse"] = {
- Label = "|c00FFFFFFFluch Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
- },
- ["Radar"] = {
- Label = "|c00FFFFFFD\195\164monen sp\195\188ren|r"
- },
- ["AmplifyCooldown"] = "Mit der rechten Taste klicken f\195\188r verstärken",
- ["DominationCooldown"] = "Mit der rechten Taste klicken f\195\188r eine schnelle Beschw\195\182rung",
- ["LastSpell"] = "Mittlere Taste klicken f\195\188r ",
- };
-
-
- NECROSIS_SOUND = {
- ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-En.mp3",
- ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-En.mp3",
- ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-En.mp3",
- ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-En.mp3"
- };
-
-
- NECROSIS_NIGHTFALL_TEXT = {
- ["NoBoltSpell"] = "Du hast scheinbar keinen Schattenblitz Zauber.",
- ["Message"] = "Schattentrance"
- };
-
-
- NECROSIS_MESSAGE = {
- ["Error"] = {
- ["InfernalStoneNotPresent"] = "Du ben\195\182tigst einen H\195\182llenstein daf\195\188r !",
- ["SoulShardNotPresent"] = "Du ben\195\182tigst einen Seelensplitter daf\195\188r !",
- ["DemoniacStoneNotPresent"] = "Du ben\195\182tigst eine D\195\164monen-Statuette daf\195\188r !",
- ["NoRiding"] = "Du hast kein Mount zum reiten !",
- ["NoFireStoneSpell"] = "Du hast keinen Zauber um Feuersteine zu erstellen",
- ["NoSpellStoneSpell"] = "Du hast keinen Zauber um Zaubersteine zu erstellen",
- ["NoHealthStoneSpell"] = "Du hast keinen Zauber um Gesundheitssteine zu erstellen",
- ["NoSoulStoneSpell"] = "Du hast keinen Zauber um Seelensteine zu erstellen",
- ["FullHealth"] = "Du kannst deinen Gesundheitsstein nicht benutzen, du hast bereits volles Leben",
- ["BagAlreadySelect"] = "Fehler : Diese Tasche ist bereits ausgew\195\164hlt.",
- ["WrongBag"] = "Fehler : Die Zahl muss zwischen 0 und 4 sein.",
- ["BagIsNumber"] = "Fehler : Bitte gib eine Zahl an.",
- ["NoHearthStone"] = "Fehler : Du hast keinen Ruhestein im Inventar"
- },
- ["Bag"] = {
- ["FullPrefix"] = "Dein ",
- ["FullSuffix"] = " ist voll !",
- ["FullDestroySuffix"] = " ist voll; folgende Seelensplitter werden zerst\195\182rt !",
- ["SelectedPrefix"] = "Du hast deinen ",
- ["SelectedSuffix"] = " f\195\188r deine Seelensplitter gew\195\164hlt."
- },
- ["Interface"] = {
- ["Welcome"] = "/necro f\195\188r das Einstellungsmen\195\188.",
- ["TooltipOn"] = "Tooltips an" ,
- ["TooltipOff"] = "Tooltips aus",
- ["MessageOn"] = "Chat Nachrichten an",
- ["MessageOff"] = "Chat Nachrichten aus",
- ["MessagePosition"] = "<- Hier werden Nachrichten von Necrosis erscheinen ->",
- ["DefaultConfig"] = "Standard-Einstellungen geladen.",
- ["UserConfig"] = "Einstellungen geladen."
- },
- ["Help"] = {
- "/necro recall -- Zentriere Necrosis und alle Buttons in der Mitte des Bildschirms",
- "/necro sm -- Ersetze Seelenstein- und Beschw\195\182rungs-Zufallsnachrichten durch eine kurze, raidgeeignete Version"
- },
- ["EquipMessage"] = "Ausr\195\188ste ",
- ["SwitchMessage"] = " anstelle von ",
- ["Information"] = {
- ["FearProtect"] = "Dein Ziel hat Fear-Protection!!!",
- ["EnslaveBreak"] = "Dein D\195\164mon hat seine Ketten gebrochen...",
- ["SoulstoneEnd"] = "Dein Seelenstein ist ausgelaufen."
- }
- };
-
-
- -- Gestion XML - Menu de configuration
-
- NECROSIS_COLOR_TOOLTIP = {
- ["Purple"] = "Lila",
- ["Blue"] = "Blau",
- ["Pink"] = "Pink",
- ["Orange"] = "Orange",
- ["Turquoise"] = "T\195\188rkis",
- ["X"] = "X"
- };
-
- NECROSIS_CONFIGURATION = {
- ["Menu1"] = "Splitter Einstellungen",
- ["Menu2"] = "Nachrichten Einstellungen",
- ["Menu3"] = "Buttons Einstellungen",
- ["Menu4"] = "Timer Einstellungen",
- ["Menu5"] = "Graphische Einstellungen",
- ["MainRotation"] = "Necrosis Rotiationseinstellung",
- ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFe|CFFFFC4FFn|CFFFF99FFt|CFFFF50FFa|CFFFF00FFr :",
- ["ShardMenu2"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFl|CFFFF99FFi|CFFFFC4FFtt|CFFFF99FFe|CFFFF50FFr :",
- ["ShardMove"] = "Lege die Seelensplitter in die ausgew\195\164hlte Tasche.",
- ["ShardDestroy"] = "Zerst\195\182re neue Seelensplitter, wenn die Tasche voll ist.",
- ["SpellMenu1"] = "|CFFB700B7Z|CFFFF00FFa|CFFFF50FFu|CFFFFC4FFb|CFFFF99FFe|CFFFF50FFr :",
- ["SpellMenu2"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFi|CFFFF99FFe|CFFFFC4FFl|CFFFF99FFe|CFFFF50FFr :",
- ["TimerMenu"] = "|CFFB700B7G|CFFFF00FFr|CFFFF50FFa|CFFFF99FFp|CFFFFC4FFh|CFFFF99FFi|CFFFF50FFs|CFFFF00FFc|CFFB700B7he T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFF00FFr :",
- ["TranseWarning"] = "Warnung, wenn Schattentrance eintritt",
- ["SpellTime"] = "Spruchdauer anzeigen",
- ["AntiFearWarning"] = "Warnung, wenn Ziel immun gegen\195\188ber Fear",
- ["TranceButtonView"] = "Zeige versteckte Buttons um sie zu verschieben",
- ["GraphicalTimer"] = "Verwende graphische Timer anstelle von Texttimern",
- ["TimerColor"] = "Zeige wei\195\159en Text in Timern anstelle von gelbem Text",
- ["TimerDirection"] = "Neue Timer oberhalb der bestehenden Timer anzeigen",
- ["ButtonLock"] = "Sperre die Buttons um die Necrosis Sph\195\164re",
- ["MainLock"] = "Sperre die Buttons und die Necrosis Sph\195\164re",
- ["BagSelect"] = "W\195\164hle die Seelensplitter-Tasche",
- ["BuffMenu"] = "Setze das Spruch Men\195\188 nach links",
- ["CurseMenu"] = "Setze das Fluch Men\195\188 nach links",
- ["PetMenu"] = "Setze das Diener Men\195\188 nach links",
- ["STimerLeft"] = "Zeige die Timer auf der linken Seite des Knopfes",
- ["ShowCount"] = "Zeige die Anzahl der Seelensplitter in Necrosis",
- ["CountType"] = "Stein Typ gez\195\164hlt",
- ["Circle"] = "Anzeige in der grafischen Sph\195\164re",
- ["Sound"] = "Aktiviere Sounds",
- ["ShowMessage"] = "Zuf\195\164llige Spr\195\188che",
- ["ShowDemonSummon"] = "Zuf\195\164llige Spr\195\188che (D\195\164mon)",
- ["ShowSteedSummon"] = "Zuf\195\164llige Spr\195\188che (Mount)",
- ["ChatType"] = "Necrosis Nachrichten als System-Nachrichten anzeigen",
- ["NecrosisSize"] = "Gr\195\182\195\159e des Necrosis Button",
- ["BanishSize"] = "Gr\195\182\195\159e des Verbannen Button",
- ["TranseSize"] = "Gr\195\182\195\159e des Trance und Anti-Fear Buttons",
- ["Skin"] = "Aussehen der Necrosis Sph\195\164re",
- ["Show"] = {
- ["Firestone"] = "Zeige den Feuerstein Button",
- ["Spellstone"] = "Zeige den Zauberstein Button",
- ["Healthstone"] = "Zeige den Gesundheitsstein Button",
- ["Soulstone"] = "Zeige den Seelenstein Button",
- ["Steed"] = "Zeige den Mount Button",
- ["Buff"] = "Zeige den Spruch Men\195\188 Button",
- ["Demon"] = "Zeige den D\195\164monen Men\195\188 Button",
- ["Curse"] = "Zeige den Fluch Men\195\188 Button",
- ["Tooltips"] = "Zeige Tooltips"
- },
- ["Count"] = {
- ["Shard"] = "Seelensplitter",
- ["Inferno"] = "D\195\164monenen-Beschw\195\182rungs-Steine",
- ["Rez"] = "Wiederbelebungs-Timer"
- }
- };
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 11.05.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+------------------------------------------------
+-- GERMAN VERSION TEXTS --
+------------------------------------------------
+
+function Necrosis_Localization_Dialog_De()
+
+ function NecrosisLocalization()
+ Necrosis_Localization_Speech_De();
+ end
+
+ NECROSIS_COOLDOWN = {
+ ["Spellstone"] = "Zauberstein Cooldown",
+ ["Healthstone"] = "Gesundheitsstein Cooldown"
+ };
+
+ NecrosisTooltipData = {
+ ["Main"] = {
+ Label = "|c00FFFFFFNecrosis|r",
+ Stone = {
+ [true] = "Ja";
+ [false] = "Nein";
+ },
+ Hellspawn = {
+ [true] = "An";
+ [false] = "Aus";
+ },
+ ["Soulshard"] = "Seelensplitter : ",
+ ["InfernalStone"] = "H\195\182llensteine : ",
+ ["DemoniacStone"] = "D\195\164monen-Statuetten : ",
+ ["Soulstone"] = "\nSeelenstein : ",
+ ["Healthstone"] = "Gesundheitsstein : ",
+ ["Spellstone"] = "Zauberstein: ",
+ ["Firestone"] = "Feuerstein : ",
+ ["CurrentDemon"] = "D\195\164mon : ",
+ ["EnslavedDemon"] = "D\195\164mon : Versklavter",
+ ["NoCurrentDemon"] = "D\195\164mon : Keiner",
+ },
+ ["Soulstone"] = {
+ Label = "|c00FF99FFSeelenstein|r",
+ Text = {"Erstelle","Verwende","Benutzt","Warten"}
+ },
+ ["Healthstone"] = {
+ Label = "|c0066FF33Gesundheitsstein|r",
+ Text = {"Erstelle","Verwende"}
+ },
+ ["Spellstone"] = {
+ Label = "|c0099CCFFZauberstein|r",
+ Text = {"Erstelle","Im Inventar","In der Hand gehalten"}
+ },
+ ["Firestone"] = {
+ Label = "|c00FF4444Feuerstein|r",
+ Text = {"Erstelle","Im Inventar","In der Hand gehalten"}
+ },
+ ["SpellTimer"] = {
+ Label = "|c00FFFFFFSpruchdauer|r",
+ Text = "Aktive Spr\195\188che auf dem Ziel\n",
+ Right = "Rechtsklick f\195\188r Ruhestein nach "
+ },
+ ["ShadowTrance"] = {
+ Label = "|c00FFFFFFSchatten Trance|r"
+ },
+ ["Domination"] = {
+ Label = "|c00FFFFFFTeufelsbeherrschung|r"
+ },
+ ["Enslave"] = {
+ Label = "|c00FFFFFFVersklavt|r"
+ },
+ ["Armor"] = {
+ Label = "|c00FFFFFFD\195\164monenr\195\188stung|r"
+ },
+ ["Invisible"] = {
+ Label = "|c00FFFFFFEntdecke Unsichtbarkeit|r"
+ },
+ ["Aqua"] = {
+ Label = "|c00FFFFFFUnendlicher Atem|r"
+ },
+ ["Kilrogg"] = {
+ Label = "|c00FFFFFFAuge von Kilrogg|r"
+ },
+ ["Banish"] = {
+ Label = "|c00FFFFFFVerbannen|r"
+ },
+ ["TP"] = {
+ Label = "|c00FFFFFFRitual der Beschw\195\182rung|r"
+ },
+ ["SoulLink"] = {
+ Label = "|c00FFFFFFSeelenverbindung|r"
+ },
+ ["ShadowProtection"] = {
+ Label = "|c00FFFFFFSchattenzauberschutz|r"
+ },
+ ["Imp"] = {
+ Label = "|c00FFFFFFWichtel|r"
+ },
+ ["Void"] = {
+ Label = "|c00FFFFFFLeerwandler|r"
+ },
+ ["Succubus"] = {
+ Label = "|c00FFFFFFSukkubus|r"
+ },
+ ["Fel"] = {
+ Label = "|c00FFFFFFTeufelsj\195\164ger|r"
+ },
+ ["Infernal"] = {
+ Label = "|c00FFFFFFH\195\182llenbestie|r"
+ },
+ ["Doomguard"] = {
+ Label = "|c00FFFFFFVerdammniswache|r"
+ },
+ ["Sacrifice"] = {
+ Label = "|c00FFFFFFD\195\164monenopferung|r"
+ },
+ ["Amplify"] = {
+ Label = "|c00FFFFFFFluch verst\195\164rken|r"
+ },
+ ["Weakness"] = {
+ Label = "|c00FFFFFFFluch der Schw\195\164che|r"
+ },
+ ["Agony"] = {
+ Label = "|c00FFFFFFFluch der Pein|r"
+ },
+ ["Reckless"] = {
+ Label = "|c00FFFFFFFluch der Tollk\195\188hnheit|r"
+ },
+ ["Tongues"] = {
+ Label = "|c00FFFFFFFluch der Sprachen|r"
+ },
+ ["Exhaust"] = {
+ Label = "|c00FFFFFFFluch der Ersch\195\182pfung|r"
+ },
+ ["Elements"] = {
+ Label = "|c00FFFFFFFluch der Elemente|r"
+ },
+ ["Shadow"] = {
+ Label = "|c00FFFFFFFluch der Schatten|r"
+ },
+ ["Doom"] = {
+ Label = "|c00FFFFFFFluch der Verdammnis|r"
+ },
+ ["Mount"] = {
+ Label = "|c00FFFFFFMount|r"
+ },
+ ["Buff"] = {
+ Label = "|c00FFFFFFSpruch Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
+ },
+ ["Pet"] = {
+ Label = "|c00FFFFFFD\195\164monen Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
+ },
+ ["Curse"] = {
+ Label = "|c00FFFFFFFluch Men\195\188|r\nRechtsklick um das Men\195\188 zu \195\182ffnen"
+ },
+ ["Radar"] = {
+ Label = "|c00FFFFFFD\195\164monen sp\195\188ren|r"
+ },
+ ["AmplifyCooldown"] = "Mit der rechten Taste klicken f\195\188r verstärken",
+ ["DominationCooldown"] = "Mit der rechten Taste klicken f\195\188r eine schnelle Beschw\195\182rung",
+ ["LastSpell"] = "Mittlere Taste klicken f\195\188r ",
+ };
+
+
+ NECROSIS_SOUND = {
+ ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-En.mp3",
+ ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-En.mp3",
+ ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-En.mp3",
+ ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-En.mp3"
+ };
+
+
+ NECROSIS_NIGHTFALL_TEXT = {
+ ["NoBoltSpell"] = "Du hast scheinbar keinen Schattenblitz Zauber.",
+ ["Message"] = "Schattentrance"
+ };
+
+
+ NECROSIS_MESSAGE = {
+ ["Error"] = {
+ ["InfernalStoneNotPresent"] = "Du ben\195\182tigst einen H\195\182llenstein daf\195\188r !",
+ ["SoulShardNotPresent"] = "Du ben\195\182tigst einen Seelensplitter daf\195\188r !",
+ ["DemoniacStoneNotPresent"] = "Du ben\195\182tigst eine D\195\164monen-Statuette daf\195\188r !",
+ ["NoRiding"] = "Du hast kein Mount zum reiten !",
+ ["NoFireStoneSpell"] = "Du hast keinen Zauber um Feuersteine zu erstellen",
+ ["NoSpellStoneSpell"] = "Du hast keinen Zauber um Zaubersteine zu erstellen",
+ ["NoHealthStoneSpell"] = "Du hast keinen Zauber um Gesundheitssteine zu erstellen",
+ ["NoSoulStoneSpell"] = "Du hast keinen Zauber um Seelensteine zu erstellen",
+ ["FullHealth"] = "Du kannst deinen Gesundheitsstein nicht benutzen, du hast bereits volles Leben",
+ ["BagAlreadySelect"] = "Fehler : Diese Tasche ist bereits ausgew\195\164hlt.",
+ ["WrongBag"] = "Fehler : Die Zahl muss zwischen 0 und 4 sein.",
+ ["BagIsNumber"] = "Fehler : Bitte gib eine Zahl an.",
+ ["NoHearthStone"] = "Fehler : Du hast keinen Ruhestein im Inventar"
+ },
+ ["Bag"] = {
+ ["FullPrefix"] = "Dein ",
+ ["FullSuffix"] = " ist voll !",
+ ["FullDestroySuffix"] = " ist voll; folgende Seelensplitter werden zerst\195\182rt !",
+ ["SelectedPrefix"] = "Du hast deinen ",
+ ["SelectedSuffix"] = " f\195\188r deine Seelensplitter gew\195\164hlt."
+ },
+ ["Interface"] = {
+ ["Welcome"] = "/necro f\195\188r das Einstellungsmen\195\188.",
+ ["TooltipOn"] = "Tooltips an" ,
+ ["TooltipOff"] = "Tooltips aus",
+ ["MessageOn"] = "Chat Nachrichten an",
+ ["MessageOff"] = "Chat Nachrichten aus",
+ ["MessagePosition"] = "<- Hier werden Nachrichten von Necrosis erscheinen ->",
+ ["DefaultConfig"] = "Standard-Einstellungen geladen.",
+ ["UserConfig"] = "Einstellungen geladen."
+ },
+ ["Help"] = {
+ "/necro recall -- Zentriere Necrosis und alle Buttons in der Mitte des Bildschirms",
+ "/necro sm -- Ersetze Seelenstein- und Beschw\195\182rungs-Zufallsnachrichten durch eine kurze, raidgeeignete Version"
+ },
+ ["EquipMessage"] = "Ausr\195\188ste ",
+ ["SwitchMessage"] = " anstelle von ",
+ ["Information"] = {
+ ["FearProtect"] = "Dein Ziel hat Fear-Protection!!!",
+ ["EnslaveBreak"] = "Dein D\195\164mon hat seine Ketten gebrochen...",
+ ["SoulstoneEnd"] = "Dein Seelenstein ist ausgelaufen."
+ }
+ };
+
+
+ -- Gestion XML - Menu de configuration
+
+ NECROSIS_COLOR_TOOLTIP = {
+ ["Purple"] = "Lila",
+ ["Blue"] = "Blau",
+ ["Pink"] = "Pink",
+ ["Orange"] = "Orange",
+ ["Turquoise"] = "T\195\188rkis",
+ ["X"] = "X"
+ };
+
+ NECROSIS_CONFIGURATION = {
+ ["Menu1"] = "Splitter Einstellungen",
+ ["Menu2"] = "Nachrichten Einstellungen",
+ ["Menu3"] = "Buttons Einstellungen",
+ ["Menu4"] = "Timer Einstellungen",
+ ["Menu5"] = "Graphische Einstellungen",
+ ["MainRotation"] = "Necrosis Rotiationseinstellung",
+ ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFe|CFFFFC4FFn|CFFFF99FFt|CFFFF50FFa|CFFFF00FFr :",
+ ["ShardMenu2"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFl|CFFFF99FFi|CFFFFC4FFtt|CFFFF99FFe|CFFFF50FFr :",
+ ["ShardMove"] = "Lege die Seelensplitter in die ausgew\195\164hlte Tasche.",
+ ["ShardDestroy"] = "Zerst\195\182re neue Seelensplitter, wenn die Tasche voll ist.",
+ ["SpellMenu1"] = "|CFFB700B7Z|CFFFF00FFa|CFFFF50FFu|CFFFFC4FFb|CFFFF99FFe|CFFFF50FFr :",
+ ["SpellMenu2"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFi|CFFFF99FFe|CFFFFC4FFl|CFFFF99FFe|CFFFF50FFr :",
+ ["TimerMenu"] = "|CFFB700B7G|CFFFF00FFr|CFFFF50FFa|CFFFF99FFp|CFFFFC4FFh|CFFFF99FFi|CFFFF50FFs|CFFFF00FFc|CFFB700B7he T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFF00FFr :",
+ ["TranseWarning"] = "Warnung, wenn Schattentrance eintritt",
+ ["SpellTime"] = "Spruchdauer anzeigen",
+ ["AntiFearWarning"] = "Warnung, wenn Ziel immun gegen\195\188ber Fear",
+ ["TranceButtonView"] = "Zeige versteckte Buttons um sie zu verschieben",
+ ["GraphicalTimer"] = "Verwende graphische Timer anstelle von Texttimern",
+ ["TimerColor"] = "Zeige wei\195\159en Text in Timern anstelle von gelbem Text",
+ ["TimerDirection"] = "Neue Timer oberhalb der bestehenden Timer anzeigen",
+ ["ButtonLock"] = "Sperre die Buttons um die Necrosis Sph\195\164re",
+ ["MainLock"] = "Sperre die Buttons und die Necrosis Sph\195\164re",
+ ["BagSelect"] = "W\195\164hle die Seelensplitter-Tasche",
+ ["BuffMenu"] = "Setze das Spruch Men\195\188 nach links",
+ ["CurseMenu"] = "Setze das Fluch Men\195\188 nach links",
+ ["PetMenu"] = "Setze das Diener Men\195\188 nach links",
+ ["STimerLeft"] = "Zeige die Timer auf der linken Seite des Knopfes",
+ ["ShowCount"] = "Zeige die Anzahl der Seelensplitter in Necrosis",
+ ["CountType"] = "Stein Typ gez\195\164hlt",
+ ["Circle"] = "Anzeige in der grafischen Sph\195\164re",
+ ["Sound"] = "Aktiviere Sounds",
+ ["ShowMessage"] = "Zuf\195\164llige Spr\195\188che",
+ ["ShowDemonSummon"] = "Zuf\195\164llige Spr\195\188che (D\195\164mon)",
+ ["ShowSteedSummon"] = "Zuf\195\164llige Spr\195\188che (Mount)",
+ ["ChatType"] = "Necrosis Nachrichten als System-Nachrichten anzeigen",
+ ["NecrosisSize"] = "Gr\195\182\195\159e des Necrosis Button",
+ ["BanishSize"] = "Gr\195\182\195\159e des Verbannen Button",
+ ["TranseSize"] = "Gr\195\182\195\159e des Trance und Anti-Fear Buttons",
+ ["Skin"] = "Aussehen der Necrosis Sph\195\164re",
+ ["Show"] = {
+ ["Firestone"] = "Zeige den Feuerstein Button",
+ ["Spellstone"] = "Zeige den Zauberstein Button",
+ ["Healthstone"] = "Zeige den Gesundheitsstein Button",
+ ["Soulstone"] = "Zeige den Seelenstein Button",
+ ["Steed"] = "Zeige den Mount Button",
+ ["Buff"] = "Zeige den Spruch Men\195\188 Button",
+ ["Demon"] = "Zeige den D\195\164monen Men\195\188 Button",
+ ["Curse"] = "Zeige den Fluch Men\195\188 Button",
+ ["Tooltips"] = "Zeige Tooltips"
+ },
+ ["Count"] = {
+ ["Shard"] = "Seelensplitter",
+ ["Inferno"] = "D\195\164monenen-Beschw\195\182rungs-Steine",
+ ["Rez"] = "Wiederbelebungs-Timer"
+ }
+ };
+
+end
diff --git a/Localization-dialog-en.lua b/Localization-dialog-en.lua
index 792c2b8..ad00a2d 100644
--- a/Localization-dialog-en.lua
+++ b/Localization-dialog-en.lua
@@ -1,305 +1,305 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 06.05.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-------------------------------------------------
--- ENGLISH VERSION TEXTS --
-------------------------------------------------
-
-function Necrosis_Localization_Dialog_En()
-
- function NecrosisLocalization()
- Necrosis_Localization_Speech_En();
- end
-
- NECROSIS_COOLDOWN = {
- ["Spellstone"] = "Spellstone Cooldown",
- ["Healthstone"] = "Healthstone Cooldown"
- };
-
- NecrosisTooltipData = {
- ["Main"] = {
- Label = "|c00FFFFFFNecrosis|r",
- Stone = {
- [true] = "Yes";
- [false] = "No";
- },
- Hellspawn = {
- [true] = "On";
- [false] = "Off";
- },
- ["Soulshard"] = "Soul Shard(s) : ",
- ["InfernalStone"] = "Infernal Stone(s) : ",
- ["DemoniacStone"] = "Demonic Figurine(s) ",
- ["Soulstone"] = "\nSoulstone : ",
- ["Healthstone"] = "Healthstone : ",
- ["Spellstone"] = "Spellstone : ",
- ["Firestone"] = "Firestone : ",
- ["CurrentDemon"] = "Demon : ",
- ["EnslavedDemon"] = "Demon : Enslaved",
- ["NoCurrentDemon"] = "Demon : None",
- },
- ["Soulstone"] = {
- Label = "|c00FF99FFSoulstone|r",
- Text = {"Create","Use","Used","Waiting"}
- },
- ["Healthstone"] = {
- Label = "|c0066FF33Healthstone|r",
- Text = {"Create","Use"}
- },
- ["Spellstone"] = {
- Label = "|c0099CCFFSpellstone|r",
- Text = {"Create","In Inventory","Held in hand"}
- },
- ["Firestone"] = {
- Label = "|c00FF4444Firestone|r",
- Text = {"Create","In Inventory","Held in hand"}
- },
- ["SpellTimer"] = {
- Label = "|c00FFFFFFSpell Durations|r",
- Text = "Active Spells on the target",
- Right = "Right Click for Hearthstone to "
- },
- ["ShadowTrance"] = {
- Label = "|c00FFFFFFShadow Transe|r"
- },
- ["Domination"] = {
- Label = "|c00FFFFFFFel Domination|r"
- },
- ["Enslave"] = {
- Label = "|c00FFFFFFEnslave|r"
- },
- ["Armor"] = {
- Label = "|c00FFFFFFDemon Armor|r"
- },
- ["Invisible"] = {
- Label = "|c00FFFFFFDetect Invisibility|r"
- },
- ["Aqua"] = {
- Label = "|c00FFFFFFUnending Breath|r"
- },
- ["Kilrogg"] = {
- Label = "|c00FFFFFFEye of Kilrogg|r"
- },
- ["Banish"] = {
- Label = "|c00FFFFFFBanish|r"
- },
- ["TP"] = {
- Label = "|c00FFFFFFRitual of Summoning|r"
- },
- ["SoulLink"] = {
- Label = "|c00FFFFFFSoul Link|r"
- },
- ["ShadowProtection"] = {
- Label = "|c00FFFFFFShadow Ward|r"
- },
- ["Imp"] = {
- Label = "|c00FFFFFFImp|r"
- },
- ["Void"] = {
- Label = "|c00FFFFFFVoidwalker|r"
- },
- ["Succubus"] = {
- Label = "|c00FFFFFFSuccubus|r"
- },
- ["Fel"] = {
- Label = "|c00FFFFFFFelhunter|r"
- },
- ["Infernal"] = {
- Label = "|c00FFFFFFInferno|r"
- },
- ["Doomguard"] = {
- Label = "|c00FFFFFFDoomguard|r"
- },
- ["Sacrifice"] = {
- Label = "|c00FFFFFFDemonic sacrifice|r"
- },
- ["Amplify"] = {
- Label = "|c00FFFFFFAmplify Curse|r"
- },
- ["Weakness"] = {
- Label = "|c00FFFFFFCurse of Weakness|r"
- },
- ["Agony"] = {
- Label = "|c00FFFFFFCurse of Agony|r"
- },
- ["Reckless"] = {
- Label = "|c00FFFFFFCurse of Recklessness|r"
- },
- ["Tongues"] = {
- Label = "|c00FFFFFFCurse of Tongues|r"
- },
- ["Exhaust"] = {
- Label = "|c00FFFFFFCurse of Exhaustion|r"
- },
- ["Elements"] = {
- Label = "|c00FFFFFFCurse of Elements|r"
- },
- ["Shadow"] = {
- Label = "|c00FFFFFFCurse of Shadow|r"
- },
- ["Doom"] = {
- Label = "|c00FFFFFFCurse of Doom|r"
- },
- ["Mount"] = {
- Label = "|c00FFFFFFSteed|r"
- },
- ["Buff"] = {
- Label = "|c00FFFFFFSpell Menu|r\nRight click to keep the menu open"
- },
- ["Pet"] = {
- Label = "|c00FFFFFFDemon Menu|r\nRight click to keep the menu open"
- },
- ["Curse"] = {
- Label = "|c00FFFFFFCurse Menu|r\nRight click to keep the menu open"
- },
- ["Radar"] = {
- Label = "|c00FFFFFFSense Demons|r"
- },
- ["AmplifyCooldown"] = "Right click to amplify curse",
- ["DominationCooldown"] = "Right click for fast summon",
- ["LastSpell"] = "Middle click to cast ",
- };
-
-
- NECROSIS_SOUND = {
- ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-En.mp3",
- ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-En.mp3",
- ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-En.mp3",
- ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-En.mp3"
- };
-
-
- NECROSIS_NIGHTFALL_TEXT = {
- ["NoBoltSpell"] = "You do not seem to have any Shadow Bolt Spell.",
- ["Message"] = "Shadow Trance"
- };
-
-
- NECROSIS_MESSAGE = {
- ["Error"] = {
- ["InfernalStoneNotPresent"] = "You need an Infernal Stone to do that !",
- ["SoulShardNotPresent"] = "You need a Soul shard to do that !",
- ["DemoniacStoneNotPresent"] = "You need a Demoniac Figurine to do that !",
- ["NoRiding"] = "You do not have any Steed to ride !",
- ["NoFireStoneSpell"] = "You do not have any Firestone creation spell",
- ["NoSpellStoneSpell"] = "You do not have any Spellstone creation spell",
- ["NoHealthStoneSpell"] = "You do not have any Healthstone creation spell",
- ["NoSoulStoneSpell"] = "You do not have any Soulstone creation spell",
- ["FullHealth"] = "You cannot use your Healthstone as you are not hurt",
- ["BagAlreadySelect"] = "Error : This bag is already selected.",
- ["WrongBag"] = "Error : The number must be between 0 and 4.",
- ["BagIsNumber"] = "Error : Please type a number.",
- ["NoHearthStone"] = "Error : You do not have a Hearthstone in your inventory"
- },
- ["Bag"] = {
- ["FullPrefix"] = "Your ",
- ["FullSuffix"] = " is full !",
- ["FullDestroySuffix"] = " is full; Next shards will be destroyed !",
- ["SelectedPrefix"] = "You have chosen your ",
- ["SelectedSuffix"] = " to keep your shards."
- },
- ["Interface"] = {
- ["Welcome"] = "/necro to show the setting menu !",
- ["TooltipOn"] = "Tooltips turned on" ,
- ["TooltipOff"] = "Tooltips turned off",
- ["MessageOn"] = "Chat messaging turned on",
- ["MessageOff"] = "Chat messaging turned off",
- ["MessagePosition"] = "<- System messages by Necrosis will appear here ->",
- ["DefaultConfig"] = "Default configuration loaded.",
- ["UserConfig"] = "Configuration loaded."
- },
- ["Help"] = {
- "/necro recall -- Center Necrosis and all buttons in the middle of the screen",
- "/necro sm -- Replace Soulstoning and summoning messages with a short raid-ready version"
- },
- ["EquipMessage"] = "Equip ",
- ["SwitchMessage"] = " instead of ",
- ["Information"] = {
- ["FearProtect"] = "Your target has got a fear protection !!!!",
- ["EnslaveBreak"] = "Your demon broke his chains...",
- ["SoulstoneEnd"] = "Your Soulstone has faded."
- }
- };
-
-
- -- Gestion XML - Menu de configuration
-
- NECROSIS_COLOR_TOOLTIP = {
- ["Purple"] = "Purple",
- ["Blue"] = "Blue",
- ["Pink"] = "Pink",
- ["Orange"] = "Orange",
- ["Turquoise"] = "Turquoise",
- ["X"] = "X"
- };
-
- NECROSIS_CONFIGURATION = {
- ["Menu1"] = "Shard Settings",
- ["Menu2"] = "Message Settings",
- ["Menu3"] = "Button Settings",
- ["Menu4"] = "Timer Settings",
- ["Menu5"] = "Graphical Settings",
- ["MainRotation"] = "Necrosis Angle Selection",
- ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFe|CFFFFC4FFn|CFFFF99FFt|CFFFF50FFo|CFFFF00FFr|CFFB700B7y :",
- ["ShardMenu2"] = "|CFFB700B7S|CFFFF00FFh|CFFFF50FFa|CFFFF99FFr|CFFFFC4FFd C|CFFFF99FFo|CFFFF50FFu|CFFFF00FFn|CFFB700B7t :",
- ["ShardMove"] = "Put shards in the selected bag.",
- ["ShardDestroy"] = "Destroy all new shards if the bag is full.",
- ["SpellMenu1"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFe|CFFFF99FFl|CFFFFC4FFls :",
- ["SpellMenu2"] = "|CFFB700B7P|CFFFF00FFl|CFFFF50FFa|CFFFF99FFy|CFFFFC4FFe|CFFFF99FFr :",
- ["TimerMenu"] = "|CFFB700B7G|CFFFF00FFr|CFFFF50FFa|CFFFF99FFp|CFFFFC4FFh|CFFFF99FFi|CFFFF50FFc|CFFFF00FFa|CFFB700B7l T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFFC4FFrs :",
- ["TimerColor"] = "Show white instead of yellow timer texts",
- ["TimerDirection"] = "Timers grow upwards",
- ["TranseWarning"] = "Alert me when I enter a Trance State",
- ["SpellTime"] = "Turn on the spell durations indicator",
- ["AntiFearWarning"] = "Warn me when my target cannot be feared.",
- ["GraphicalTimer"] = "Show graphical instead text timers",
- ["TranceButtonView"] = "Let me see hidden buttons to drag them.",
- ["ButtonLock"] = "Lock the buttons around the Necrosis Sphere.",
- ["MainLock"] = "Lock buttons and the Necrosis Sphere.",
- ["BagSelect"] = "Selection of Soul Shard Container",
- ["BuffMenu"] = "Put buff menu on the left",
- ["PetMenu"] = "Put pet menu on the left",
- ["CurseMenu"] = "Put curse menu on the left",
- ["STimerLeft"] = "Show timers on the left side of the button",
- ["ShowCount"] = "Show the Shard count in Necrosis",
- ["CountType"] = "Stone type counted",
- ["Circle"] = "Event shown by the graphical sphere",
- ["Sound"] = "Activate sounds",
- ["ShowMessage"] = "Activate random speeches",
- ["ShowDemonSummon"] = "Activate random speeches (demon)",
- ["ShowSteedSummon"] = "Activate random speeches (steed)",
- ["ChatType"] = "Declare Necrosis messages as system messages",
- ["NecrosisSize"] = "Size of the Necrosis button",
- ["BanishSize"] = "Size of the Banish button",
- ["TranseSize"] = "Size of Transe and Anti-fear buttons",
- ["Skin"] = "Skin of the Necrosis Sphere",
- ["Show"] = {
- ["Firestone"] = "Show Firestone button",
- ["Spellstone"] = "Show Spellstone button",
- ["Healthstone"] = "Show Healthstone button",
- ["Soulstone"] = "Show Soulstone button",
- ["Steed"] = "Show Steed button",
- ["Buff"] = "Show Spell menu button",
- ["Curse"] = "Show Curse menu button",
- ["Demon"] = "Show Demon menu button",
- ["Tooltips"] = "Show tooltips"
- },
- ["Count"] = {
- ["Shard"] = "Soulshards",
- ["Inferno"] = "Demon summoning stones",
- ["Rez"] = "Resurrection Timer"
- }
- };
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 06.05.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+------------------------------------------------
+-- ENGLISH VERSION TEXTS --
+------------------------------------------------
+
+function Necrosis_Localization_Dialog_En()
+
+ function NecrosisLocalization()
+ Necrosis_Localization_Speech_En();
+ end
+
+ NECROSIS_COOLDOWN = {
+ ["Spellstone"] = "Spellstone Cooldown",
+ ["Healthstone"] = "Healthstone Cooldown"
+ };
+
+ NecrosisTooltipData = {
+ ["Main"] = {
+ Label = "|c00FFFFFFNecrosis|r",
+ Stone = {
+ [true] = "Yes";
+ [false] = "No";
+ },
+ Hellspawn = {
+ [true] = "On";
+ [false] = "Off";
+ },
+ ["Soulshard"] = "Soul Shard(s) : ",
+ ["InfernalStone"] = "Infernal Stone(s) : ",
+ ["DemoniacStone"] = "Demonic Figurine(s) ",
+ ["Soulstone"] = "\nSoulstone : ",
+ ["Healthstone"] = "Healthstone : ",
+ ["Spellstone"] = "Spellstone : ",
+ ["Firestone"] = "Firestone : ",
+ ["CurrentDemon"] = "Demon : ",
+ ["EnslavedDemon"] = "Demon : Enslaved",
+ ["NoCurrentDemon"] = "Demon : None",
+ },
+ ["Soulstone"] = {
+ Label = "|c00FF99FFSoulstone|r",
+ Text = {"Create","Use","Used","Waiting"}
+ },
+ ["Healthstone"] = {
+ Label = "|c0066FF33Healthstone|r",
+ Text = {"Create","Use"}
+ },
+ ["Spellstone"] = {
+ Label = "|c0099CCFFSpellstone|r",
+ Text = {"Create","In Inventory","Held in hand"}
+ },
+ ["Firestone"] = {
+ Label = "|c00FF4444Firestone|r",
+ Text = {"Create","In Inventory","Held in hand"}
+ },
+ ["SpellTimer"] = {
+ Label = "|c00FFFFFFSpell Durations|r",
+ Text = "Active Spells on the target",
+ Right = "Right Click for Hearthstone to "
+ },
+ ["ShadowTrance"] = {
+ Label = "|c00FFFFFFShadow Transe|r"
+ },
+ ["Domination"] = {
+ Label = "|c00FFFFFFFel Domination|r"
+ },
+ ["Enslave"] = {
+ Label = "|c00FFFFFFEnslave|r"
+ },
+ ["Armor"] = {
+ Label = "|c00FFFFFFDemon Armor|r"
+ },
+ ["Invisible"] = {
+ Label = "|c00FFFFFFDetect Invisibility|r"
+ },
+ ["Aqua"] = {
+ Label = "|c00FFFFFFUnending Breath|r"
+ },
+ ["Kilrogg"] = {
+ Label = "|c00FFFFFFEye of Kilrogg|r"
+ },
+ ["Banish"] = {
+ Label = "|c00FFFFFFBanish|r"
+ },
+ ["TP"] = {
+ Label = "|c00FFFFFFRitual of Summoning|r"
+ },
+ ["SoulLink"] = {
+ Label = "|c00FFFFFFSoul Link|r"
+ },
+ ["ShadowProtection"] = {
+ Label = "|c00FFFFFFShadow Ward|r"
+ },
+ ["Imp"] = {
+ Label = "|c00FFFFFFImp|r"
+ },
+ ["Void"] = {
+ Label = "|c00FFFFFFVoidwalker|r"
+ },
+ ["Succubus"] = {
+ Label = "|c00FFFFFFSuccubus|r"
+ },
+ ["Fel"] = {
+ Label = "|c00FFFFFFFelhunter|r"
+ },
+ ["Infernal"] = {
+ Label = "|c00FFFFFFInferno|r"
+ },
+ ["Doomguard"] = {
+ Label = "|c00FFFFFFDoomguard|r"
+ },
+ ["Sacrifice"] = {
+ Label = "|c00FFFFFFDemonic sacrifice|r"
+ },
+ ["Amplify"] = {
+ Label = "|c00FFFFFFAmplify Curse|r"
+ },
+ ["Weakness"] = {
+ Label = "|c00FFFFFFCurse of Weakness|r"
+ },
+ ["Agony"] = {
+ Label = "|c00FFFFFFCurse of Agony|r"
+ },
+ ["Reckless"] = {
+ Label = "|c00FFFFFFCurse of Recklessness|r"
+ },
+ ["Tongues"] = {
+ Label = "|c00FFFFFFCurse of Tongues|r"
+ },
+ ["Exhaust"] = {
+ Label = "|c00FFFFFFCurse of Exhaustion|r"
+ },
+ ["Elements"] = {
+ Label = "|c00FFFFFFCurse of Elements|r"
+ },
+ ["Shadow"] = {
+ Label = "|c00FFFFFFCurse of Shadow|r"
+ },
+ ["Doom"] = {
+ Label = "|c00FFFFFFCurse of Doom|r"
+ },
+ ["Mount"] = {
+ Label = "|c00FFFFFFSteed|r"
+ },
+ ["Buff"] = {
+ Label = "|c00FFFFFFSpell Menu|r\nRight click to keep the menu open"
+ },
+ ["Pet"] = {
+ Label = "|c00FFFFFFDemon Menu|r\nRight click to keep the menu open"
+ },
+ ["Curse"] = {
+ Label = "|c00FFFFFFCurse Menu|r\nRight click to keep the menu open"
+ },
+ ["Radar"] = {
+ Label = "|c00FFFFFFSense Demons|r"
+ },
+ ["AmplifyCooldown"] = "Right click to amplify curse",
+ ["DominationCooldown"] = "Right click for fast summon",
+ ["LastSpell"] = "Middle click to cast ",
+ };
+
+
+ NECROSIS_SOUND = {
+ ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-En.mp3",
+ ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-En.mp3",
+ ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-En.mp3",
+ ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-En.mp3"
+ };
+
+
+ NECROSIS_NIGHTFALL_TEXT = {
+ ["NoBoltSpell"] = "You do not seem to have any Shadow Bolt Spell.",
+ ["Message"] = "Shadow Trance"
+ };
+
+
+ NECROSIS_MESSAGE = {
+ ["Error"] = {
+ ["InfernalStoneNotPresent"] = "You need an Infernal Stone to do that !",
+ ["SoulShardNotPresent"] = "You need a Soul shard to do that !",
+ ["DemoniacStoneNotPresent"] = "You need a Demoniac Figurine to do that !",
+ ["NoRiding"] = "You do not have any Steed to ride !",
+ ["NoFireStoneSpell"] = "You do not have any Firestone creation spell",
+ ["NoSpellStoneSpell"] = "You do not have any Spellstone creation spell",
+ ["NoHealthStoneSpell"] = "You do not have any Healthstone creation spell",
+ ["NoSoulStoneSpell"] = "You do not have any Soulstone creation spell",
+ ["FullHealth"] = "You cannot use your Healthstone as you are not hurt",
+ ["BagAlreadySelect"] = "Error : This bag is already selected.",
+ ["WrongBag"] = "Error : The number must be between 0 and 4.",
+ ["BagIsNumber"] = "Error : Please type a number.",
+ ["NoHearthStone"] = "Error : You do not have a Hearthstone in your inventory"
+ },
+ ["Bag"] = {
+ ["FullPrefix"] = "Your ",
+ ["FullSuffix"] = " is full !",
+ ["FullDestroySuffix"] = " is full; Next shards will be destroyed !",
+ ["SelectedPrefix"] = "You have chosen your ",
+ ["SelectedSuffix"] = " to keep your shards."
+ },
+ ["Interface"] = {
+ ["Welcome"] = "/necro to show the setting menu !",
+ ["TooltipOn"] = "Tooltips turned on" ,
+ ["TooltipOff"] = "Tooltips turned off",
+ ["MessageOn"] = "Chat messaging turned on",
+ ["MessageOff"] = "Chat messaging turned off",
+ ["MessagePosition"] = "<- System messages by Necrosis will appear here ->",
+ ["DefaultConfig"] = "Default configuration loaded.",
+ ["UserConfig"] = "Configuration loaded."
+ },
+ ["Help"] = {
+ "/necro recall -- Center Necrosis and all buttons in the middle of the screen",
+ "/necro sm -- Replace Soulstoning and summoning messages with a short raid-ready version"
+ },
+ ["EquipMessage"] = "Equip ",
+ ["SwitchMessage"] = " instead of ",
+ ["Information"] = {
+ ["FearProtect"] = "Your target has got a fear protection !!!!",
+ ["EnslaveBreak"] = "Your demon broke his chains...",
+ ["SoulstoneEnd"] = "Your Soulstone has faded."
+ }
+ };
+
+
+ -- Gestion XML - Menu de configuration
+
+ NECROSIS_COLOR_TOOLTIP = {
+ ["Purple"] = "Purple",
+ ["Blue"] = "Blue",
+ ["Pink"] = "Pink",
+ ["Orange"] = "Orange",
+ ["Turquoise"] = "Turquoise",
+ ["X"] = "X"
+ };
+
+ NECROSIS_CONFIGURATION = {
+ ["Menu1"] = "Shard Settings",
+ ["Menu2"] = "Message Settings",
+ ["Menu3"] = "Button Settings",
+ ["Menu4"] = "Timer Settings",
+ ["Menu5"] = "Graphical Settings",
+ ["MainRotation"] = "Necrosis Angle Selection",
+ ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFe|CFFFFC4FFn|CFFFF99FFt|CFFFF50FFo|CFFFF00FFr|CFFB700B7y :",
+ ["ShardMenu2"] = "|CFFB700B7S|CFFFF00FFh|CFFFF50FFa|CFFFF99FFr|CFFFFC4FFd C|CFFFF99FFo|CFFFF50FFu|CFFFF00FFn|CFFB700B7t :",
+ ["ShardMove"] = "Put shards in the selected bag.",
+ ["ShardDestroy"] = "Destroy all new shards if the bag is full.",
+ ["SpellMenu1"] = "|CFFB700B7S|CFFFF00FFp|CFFFF50FFe|CFFFF99FFl|CFFFFC4FFls :",
+ ["SpellMenu2"] = "|CFFB700B7P|CFFFF00FFl|CFFFF50FFa|CFFFF99FFy|CFFFFC4FFe|CFFFF99FFr :",
+ ["TimerMenu"] = "|CFFB700B7G|CFFFF00FFr|CFFFF50FFa|CFFFF99FFp|CFFFFC4FFh|CFFFF99FFi|CFFFF50FFc|CFFFF00FFa|CFFB700B7l T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFFC4FFrs :",
+ ["TimerColor"] = "Show white instead of yellow timer texts",
+ ["TimerDirection"] = "Timers grow upwards",
+ ["TranseWarning"] = "Alert me when I enter a Trance State",
+ ["SpellTime"] = "Turn on the spell durations indicator",
+ ["AntiFearWarning"] = "Warn me when my target cannot be feared.",
+ ["GraphicalTimer"] = "Show graphical instead text timers",
+ ["TranceButtonView"] = "Let me see hidden buttons to drag them.",
+ ["ButtonLock"] = "Lock the buttons around the Necrosis Sphere.",
+ ["MainLock"] = "Lock buttons and the Necrosis Sphere.",
+ ["BagSelect"] = "Selection of Soul Shard Container",
+ ["BuffMenu"] = "Put buff menu on the left",
+ ["PetMenu"] = "Put pet menu on the left",
+ ["CurseMenu"] = "Put curse menu on the left",
+ ["STimerLeft"] = "Show timers on the left side of the button",
+ ["ShowCount"] = "Show the Shard count in Necrosis",
+ ["CountType"] = "Stone type counted",
+ ["Circle"] = "Event shown by the graphical sphere",
+ ["Sound"] = "Activate sounds",
+ ["ShowMessage"] = "Activate random speeches",
+ ["ShowDemonSummon"] = "Activate random speeches (demon)",
+ ["ShowSteedSummon"] = "Activate random speeches (steed)",
+ ["ChatType"] = "Declare Necrosis messages as system messages",
+ ["NecrosisSize"] = "Size of the Necrosis button",
+ ["BanishSize"] = "Size of the Banish button",
+ ["TranseSize"] = "Size of Transe and Anti-fear buttons",
+ ["Skin"] = "Skin of the Necrosis Sphere",
+ ["Show"] = {
+ ["Firestone"] = "Show Firestone button",
+ ["Spellstone"] = "Show Spellstone button",
+ ["Healthstone"] = "Show Healthstone button",
+ ["Soulstone"] = "Show Soulstone button",
+ ["Steed"] = "Show Steed button",
+ ["Buff"] = "Show Spell menu button",
+ ["Curse"] = "Show Curse menu button",
+ ["Demon"] = "Show Demon menu button",
+ ["Tooltips"] = "Show tooltips"
+ },
+ ["Count"] = {
+ ["Shard"] = "Soulshards",
+ ["Inferno"] = "Demon summoning stones",
+ ["Rez"] = "Resurrection Timer"
+ }
+ };
+
+end
diff --git a/Localization-dialog-fr.lua b/Localization-dialog-fr.lua
index 81ede9d..4f4c364 100644
--- a/Localization-dialog-fr.lua
+++ b/Localization-dialog-fr.lua
@@ -1,303 +1,303 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 28.06.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-------------------------------------------------
--- VERSION FRANCAISE DES TEXTES --
-------------------------------------------------
-
-function Necrosis_Localization_Dialog_Fr()
-
- function NecrosisLocalization()
- Necrosis_Localization_Speech_Fr();
- end
-
- NECROSIS_COOLDOWN = {
- ["Spellstone"] = "Temps de recharge Pierre de sort",
- ["Healthstone"] = "Temps de recharge Pierre de soins"
- };
-
- NecrosisTooltipData = {
- ["Main"] = {
- Label = "|c00FFFFFFNecrosis|r",
- Stone = {
- [true] = "Oui";
- [false] = "Non";
- },
- Hellspawn = {
- [true] = "On";
- [false] = "Off";
- },
- ["Soulshard"] = "Fragment(s) d'\195\162me : ",
- ["InfernalStone"] = "Pierre(s) infernale(s) : ",
- ["DemoniacStone"] = "Pierre(s) d\195\169moniaque(s) : ",
- ["Soulstone"] = "\nPierre d'\195\162me : ",
- ["Healthstone"] = "Pierre de soins : ",
- ["Spellstone"] = "Pierre de sort : ",
- ["Firestone"] = "Pierre de feu : ",
- ["CurrentDemon"] = "Demon : ",
- ["EnslavedDemon"] = "Demon : Asservi",
- ["NoCurrentDemon"] = "Demon : Aucun",
- },
- ["Soulstone"] = {
- Label = "|c00FF99FFPierre d'\195\162me|r",
- Text = {"Cr\195\169ation","Utilisation","Utilis\195\169e","En attente"}
- },
- ["Healthstone"] = {
- Label = "|c0066FF33Pierre de soins|r",
- Text = {"Cr\195\169ation","Utilisation"}
- },
- ["Spellstone"] = {
- Label = "|c0099CCFFPierre de sort|r",
- Text = {"Cr\195\169ation","En inventaire","Tenue en main"}
- },
- ["Firestone"] = {
- Label = "|c00FF4444Pierre de feu|r",
- Text = {"Cr\195\169ation","En inventaire","Tenue en main"}
- },
- ["SpellTimer"] = {
- Label = "|c00FFFFFFDur\195\169e des sorts|r",
- Text = "Sorts actifs sur la cible",
- Right = "Clic droit pour pierre de foyer vers "
- },
- ["ShadowTrance"] = {
- Label = "|c00FFFFFFTranse de l'ombre|r"
- },
- ["Domination"] = {
- Label = "|c00FFFFFFDomination corrompue|r"
- },
- ["Enslave"] = {
- Label = "|c00FFFFFFAsservissement|r"
- },
- ["Armor"] = {
- Label = "|c00FFFFFFArmure d\195\169moniaque|r"
- },
- ["Invisible"] = {
- Label = "|c00FFFFFFD\195\169tection de l'invisibilit\195\169|r"
- },
- ["Aqua"] = {
- Label = "|c00FFFFFFRespiration interminable|r"
- },
- ["Kilrogg"] = {
- Label = "|c00FFFFFFOeil de Kilrogg|r"
- },
- ["Banish"] = {
- Label = "|c00FFFFFFBannir|r"
- },
- ["TP"] = {
- Label = "|c00FFFFFFRituel d'invocation|r"
- },
- ["SoulLink"] = {
- Label = "|c00FFFFFFLien spirituel|r"
- },
- ["ShadowProtection"] = {
- Label = "|c00FFFFFFGardien de l'ombre|r"
- },
- ["Imp"] = {
- Label = "|c00FFFFFFDiablotin|r"
- },
- ["Void"] = {
- Label = "|c00FFFFFFMarcheur \195\169th\195\169r\195\169|r"
- },
- ["Succubus"] = {
- Label = "|c00FFFFFFSuccube|r"
- },
- ["Fel"] = {
- Label = "|c00FFFFFFChasseur corrompu|r"
- },
- ["Infernal"] = {
- Label = "|c00FFFFFFInfernal|r"
- },
- ["Doomguard"] = {
- Label = "|c00FFFFFFGarde funeste|r"
- },
- ["Sacrifice"] = {
- Label = "|c00FFFFFFSacrifice d\195\169moniaque|r"
- },
- ["Amplify"] = {
- Label = "|c00FFFFFFMal\195\169diction amplifi\195\169e|r"
- },
- ["Weakness"] = {
- Label = "|c00FFFFFFMal\195\169diction de faiblesse|r"
- },
- ["Agony"] = {
- Label = "|c00FFFFFFMal\195\169diction d'agonie|r"
- },
- ["Reckless"] = {
- Label = "|c00FFFFFFMal\195\169diction de t\195\169m\195\169rit\195\169|r"
- },
- ["Tongues"] = {
- Label = "|c00FFFFFFMal\195\169diction des langages|r"
- },
- ["Exhaust"] = {
- Label = "|c00FFFFFFMal\195\169diction de fatigue|r"
- },
- ["Elements"] = {
- Label = "|c00FFFFFFMal\195\169diction des \195\169l\195\169ments|r"
- },
- ["Shadow"] = {
- Label = "|c00FFFFFFMal\195\169diction de l'ombre|r"
- },
- ["Doom"] = {
- Label = "|c00FFFFFFMal\195\169diction funeste|r"
- },
- ["Mount"] = {
- Label = "|c00FFFFFFMonture|r"
- },
- ["Buff"] = {
- Label = "|c00FFFFFFMenu des sorts|r\nClic droit pour laisser ouvert"
- },
- ["Pet"] = {
- Label = "|c00FFFFFFMenu des d\195\169mons|r\nClic droit pour laisser ouvert"
- },
- ["Curse"] = {
- Label = "|c00FFFFFFMenu des mal\195\169dictions|r\nClic droit pour laisser ouvert"
- },
- ["Radar"] = {
- Label = "|c00FFFFFFD\195\169tection des d\195\169mons|r"
- },
- ["AmplifyCooldown"] = "Clic droit pour amplifier la mal\195\169diction",
- ["DominationCooldown"] = "Clic droit pour invocation rapide",
- ["LastSpell"] = "Clic du milieu pour caster ",
- };
-
- NECROSIS_SOUND = {
- ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-Fr.mp3",
- ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-Fr.mp3",
- ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-Fr.mp3",
- ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-Fr.mp3"
- };
-
- NECROSIS_NIGHTFALL_TEXT = {
- ["NoBoltSpell"] = "Vos n'avez pas le sort Trait de l'ombre.",
- ["Message"] = "Transe de l'ombre"
- };
-
-
- NECROSIS_MESSAGE = {
- ["Error"] = {
- ["InfernalStoneNotPresent"] = "Pas de Pierre infernale pour l'invocation",
- ["SoulShardNotPresent"] = "Pas de Fragment d'\195\162me pour l'invocation",
- ["DemoniacStoneNotPresent"] = "Pas de pierre d\195\169moniaque pour l'invocation",
- ["NoRiding"] = "Vous n'avez pas de monture \192\160 invoquer !",
- ["NoFireStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de feu",
- ["NoSpellStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de sort",
- ["NoHealthStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de soins",
- ["NoSoulStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre d'\195\162me",
- ["FullHealth"] = "Utilisation de Pierre de soins impossible, vous n'etes pas bless\195\169(e)",
- ["BagAlreadySelect"] = "Erreur : Vous avez d\195\169j\195\160 ce sac selectionn\195\169.",
- ["WrongBag"] = "Erreur : Le No doit \195\170tre compris entre 0 et 4",
- ["BagIsNumber"] = "Erreur : Veuillez taper un chiffre.",
- ["NoHearthStone"] = "Erreur : Vous n'avez pas de pierre de foyer dans votre inventaire"
- },
- ["Bag"] = {
- ["FullPrefix"] = "Votre ",
- ["FullSuffix"] = " est plein !",
- ["FullDestroySuffix"] = " est plein; les prochains fragments seront detruits !",
- ["SelectedPrefix"] = "Vous avez choisi votre ",
- ["SelectedSuffix"] = " pour stocker vos fragments"
- },
- ["Interface"] = {
- ["Welcome"] = "/necro pour les options !",
- ["TooltipOn"] = "Bulles d'aide activ\195\169es" ,
- ["TooltipOff"] = "Bulles d'aide d\195\169sactiv\195\169es",
- ["MessageOn"] = "Messages Pierre d'\195\162me et Invocation de joueur activ\195\169s",
- ["MessageOff"] = "Messages Pierre d'\195\162me et Invocation de joueur desactiv\195\169s",
- ["MessagePosition"] = "<- position des messages systeme Necrosis ->",
- ["DefaultConfig"] = "Configuration par defaut charg\195\169e.",
- ["UserConfig"] = "Configuration charg\195\169e"
- },
- ["Help"] = {
- "/necro recall -- Centre Necrosis and tous les boutons au centre de l'écran",
- "/necro sm -- Remplace les messages de pierre d'\195\162me et d'invocation par des versions courtes spéciales raid"
- },
- ["EquipMessage"] = "Equipe ",
- ["SwitchMessage"] = " \195\160 la place de ",
- ["Information"] = {
- ["FearProtect"] = "La cible est prot\195\168g\195\169e contre la peur !!!!",
- ["EnslaveBreak"] = "Votre D\195\169mon a bris\195\169 ses chaines...",
- ["SoulstoneEnd"] = "Votre Pierre d'\195\162me vient de s'eteindre."
- }
- };
-
-
- -- Gestion XML - Menu de configuration
-
- NECROSIS_COLOR_TOOLTIP = {
- ["Purple"] = "Violet",
- ["Blue"] = "Bleu",
- ["Pink"] = "Rose",
- ["Orange"] = "Orange",
- ["Turquoise"] = "Turquoise",
- ["X"] = "X"
- };
-
- NECROSIS_CONFIGURATION = {
- ["Menu1"] = "Configuration des fragments",
- ["Menu2"] = "Configuration des messages",
- ["Menu3"] = "Configuration des boutons",
- ["Menu4"] = "Configuration des timers",
- ["Menu5"] = "Configuration graphique",
- ["MainRotation"] = "Rotation de Necrosis",
- ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFen|CFFFFC4FFt|CFFFF99FFa|CFFFF50FFi|CFFFF00FFr|CFFB700B7e :",
- ["ShardMenu2"] = "|CFFB700B7C|CFFFF00FFo|CFFFF50FFm|CFFFF99FFp|CFFFFC4FFt|CFFFF99FFe|CFFFF50FFu|CFFFF00FFr :",
- ["ShardMove"] = "D\195\169place les fragments dans le sac specifi\195\169",
- ["ShardDestroy"] = "D\195\169truit les fragments si sac plein",
- ["SpellMenu1"] = "|CFFB700B7S|CFFFF00FFo|CFFFF50FFr|CFFFF99FFt|CFFFFC4FFs :",
- ["SpellMenu2"] = "|CFFB700B7J|CFFFF00FFo|CFFFF50FFu|CFFFF99FFe|CFFFFC4FFu|CFFFF99FFr :",
- ["TimerMenu"] = "|CFFB700B7T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFFC4FFr|CFFFF99FFs G|CFFFF50FFr|CFFFF00FFa|CFFB700B7ph|CFFFF00FFi|CFFFF50FFq|CFFFF99FFue|CFFFFC4FFs :",
- ["TranseWarning"] = "M'alerter quand j'entre en Transe",
- ["SpellTime"] = "Affiche la gestion des dur\195\169es de sorts",
- ["AntiFearWarning"] = "M'alerter quand ma cible \195\160 un 'anti fear'",
- ["GraphicalTimer"] = "Affichage des timers sous forme graphique",
- ["TimerColor"] = "Affiche le texte des timers en blanc",
- ["TimerDirection"] = "Ajouter les timers en haut des pr\195\169c\195\169dents",
- ["TranceButtonView"] = "Affichage des boutons cach\195\169s pour les d\195\169placer",
- ["ButtonLock"] = "Verrouiller les boutons sur la sphere Necrosis",
- ["MainLock"] = "Verrouiller les boutons des Pierres et Necrosis",
- ["BagSelect"] = "Choix du sac contenant les fragments",
- ["BuffMenu"] = "Afficher le menu des buffs vers la gauche",
- ["PetMenu"] = "Afficher le menu des d\195\169mons vers la gauche",
- ["CurseMenu"] = "Afficher le menu des mal\195\169dictions vers la gauche",
- ["STimerLeft"] = "Afficher les timers sur la gauche du bouton",
- ["ShowCount"] = "Afficher le compteur de fragments",
- ["CountType"] = "Type de compteur",
- ["Circle"] = "Ev\195\168nement montr\195\169 par la sph\195\168re graphique",
- ["ShowMessage"] = "Active les messages al\195\169atoires d'invocation",
- ["ShowDemonSummon"] = "Active les messages pour les D\195\169mons",
- ["ShowSteedSummon"] = "Active les messages pour la Monture",
- ["ChatType"] = "Les messages = des messages syst\195\168mes",
- ["Sound"] = "Activer les sons",
- ["NecrosisSize"] = "Taille de la pierre Necrosis",
- ["BanishSize"] = "Taille du bouton Banish",
- ["TranseSize"] = "Taille des boutons Transe et AntiPeur",
- ["Skin"] = "Skin de la pierre Necrosis",
- ["Show"] = {
- ["Firestone"] = "Afficher le bouton des Pierres de feu",
- ["Spellstone"] = "Afficher le bouton des Pierres de sort",
- ["Healthstone"] = "Afficher le bouton des Pierres de soin",
- ["Soulstone"] = "Afficher le bouton des Pierres d'\195\162me",
- ["Steed"] = "Afficher le bouton de la Monture",
- ["Buff"] = "Affiche le bouton des Buffs",
- ["Curse"] = "Affiche le bouton des Mal\195\169dictions",
- ["Demon"] = "Affiche le bouton d'invocation des D\195\169mons",
- ["Tooltips"] = "Affiche les bulles d'aides"
- },
- ["Count"] = {
- ["Shard"] = "Fragments d'\195\162me",
- ["Inferno"] = "Pierres d'invocations",
- ["Rez"] = "Timer de Rez"
- }
- };
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 28.06.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+------------------------------------------------
+-- VERSION FRANCAISE DES TEXTES --
+------------------------------------------------
+
+function Necrosis_Localization_Dialog_Fr()
+
+ function NecrosisLocalization()
+ Necrosis_Localization_Speech_Fr();
+ end
+
+ NECROSIS_COOLDOWN = {
+ ["Spellstone"] = "Temps de recharge Pierre de sort",
+ ["Healthstone"] = "Temps de recharge Pierre de soins"
+ };
+
+ NecrosisTooltipData = {
+ ["Main"] = {
+ Label = "|c00FFFFFFNecrosis|r",
+ Stone = {
+ [true] = "Oui";
+ [false] = "Non";
+ },
+ Hellspawn = {
+ [true] = "On";
+ [false] = "Off";
+ },
+ ["Soulshard"] = "Fragment(s) d'\195\162me : ",
+ ["InfernalStone"] = "Pierre(s) infernale(s) : ",
+ ["DemoniacStone"] = "Pierre(s) d\195\169moniaque(s) : ",
+ ["Soulstone"] = "\nPierre d'\195\162me : ",
+ ["Healthstone"] = "Pierre de soins : ",
+ ["Spellstone"] = "Pierre de sort : ",
+ ["Firestone"] = "Pierre de feu : ",
+ ["CurrentDemon"] = "Demon : ",
+ ["EnslavedDemon"] = "Demon : Asservi",
+ ["NoCurrentDemon"] = "Demon : Aucun",
+ },
+ ["Soulstone"] = {
+ Label = "|c00FF99FFPierre d'\195\162me|r",
+ Text = {"Cr\195\169ation","Utilisation","Utilis\195\169e","En attente"}
+ },
+ ["Healthstone"] = {
+ Label = "|c0066FF33Pierre de soins|r",
+ Text = {"Cr\195\169ation","Utilisation"}
+ },
+ ["Spellstone"] = {
+ Label = "|c0099CCFFPierre de sort|r",
+ Text = {"Cr\195\169ation","En inventaire","Tenue en main"}
+ },
+ ["Firestone"] = {
+ Label = "|c00FF4444Pierre de feu|r",
+ Text = {"Cr\195\169ation","En inventaire","Tenue en main"}
+ },
+ ["SpellTimer"] = {
+ Label = "|c00FFFFFFDur\195\169e des sorts|r",
+ Text = "Sorts actifs sur la cible",
+ Right = "Clic droit pour pierre de foyer vers "
+ },
+ ["ShadowTrance"] = {
+ Label = "|c00FFFFFFTranse de l'ombre|r"
+ },
+ ["Domination"] = {
+ Label = "|c00FFFFFFDomination corrompue|r"
+ },
+ ["Enslave"] = {
+ Label = "|c00FFFFFFAsservissement|r"
+ },
+ ["Armor"] = {
+ Label = "|c00FFFFFFArmure d\195\169moniaque|r"
+ },
+ ["Invisible"] = {
+ Label = "|c00FFFFFFD\195\169tection de l'invisibilit\195\169|r"
+ },
+ ["Aqua"] = {
+ Label = "|c00FFFFFFRespiration interminable|r"
+ },
+ ["Kilrogg"] = {
+ Label = "|c00FFFFFFOeil de Kilrogg|r"
+ },
+ ["Banish"] = {
+ Label = "|c00FFFFFFBannir|r"
+ },
+ ["TP"] = {
+ Label = "|c00FFFFFFRituel d'invocation|r"
+ },
+ ["SoulLink"] = {
+ Label = "|c00FFFFFFLien spirituel|r"
+ },
+ ["ShadowProtection"] = {
+ Label = "|c00FFFFFFGardien de l'ombre|r"
+ },
+ ["Imp"] = {
+ Label = "|c00FFFFFFDiablotin|r"
+ },
+ ["Void"] = {
+ Label = "|c00FFFFFFMarcheur \195\169th\195\169r\195\169|r"
+ },
+ ["Succubus"] = {
+ Label = "|c00FFFFFFSuccube|r"
+ },
+ ["Fel"] = {
+ Label = "|c00FFFFFFChasseur corrompu|r"
+ },
+ ["Infernal"] = {
+ Label = "|c00FFFFFFInfernal|r"
+ },
+ ["Doomguard"] = {
+ Label = "|c00FFFFFFGarde funeste|r"
+ },
+ ["Sacrifice"] = {
+ Label = "|c00FFFFFFSacrifice d\195\169moniaque|r"
+ },
+ ["Amplify"] = {
+ Label = "|c00FFFFFFMal\195\169diction amplifi\195\169e|r"
+ },
+ ["Weakness"] = {
+ Label = "|c00FFFFFFMal\195\169diction de faiblesse|r"
+ },
+ ["Agony"] = {
+ Label = "|c00FFFFFFMal\195\169diction d'agonie|r"
+ },
+ ["Reckless"] = {
+ Label = "|c00FFFFFFMal\195\169diction de t\195\169m\195\169rit\195\169|r"
+ },
+ ["Tongues"] = {
+ Label = "|c00FFFFFFMal\195\169diction des langages|r"
+ },
+ ["Exhaust"] = {
+ Label = "|c00FFFFFFMal\195\169diction de fatigue|r"
+ },
+ ["Elements"] = {
+ Label = "|c00FFFFFFMal\195\169diction des \195\169l\195\169ments|r"
+ },
+ ["Shadow"] = {
+ Label = "|c00FFFFFFMal\195\169diction de l'ombre|r"
+ },
+ ["Doom"] = {
+ Label = "|c00FFFFFFMal\195\169diction funeste|r"
+ },
+ ["Mount"] = {
+ Label = "|c00FFFFFFMonture|r"
+ },
+ ["Buff"] = {
+ Label = "|c00FFFFFFMenu des sorts|r\nClic droit pour laisser ouvert"
+ },
+ ["Pet"] = {
+ Label = "|c00FFFFFFMenu des d\195\169mons|r\nClic droit pour laisser ouvert"
+ },
+ ["Curse"] = {
+ Label = "|c00FFFFFFMenu des mal\195\169dictions|r\nClic droit pour laisser ouvert"
+ },
+ ["Radar"] = {
+ Label = "|c00FFFFFFD\195\169tection des d\195\169mons|r"
+ },
+ ["AmplifyCooldown"] = "Clic droit pour amplifier la mal\195\169diction",
+ ["DominationCooldown"] = "Clic droit pour invocation rapide",
+ ["LastSpell"] = "Clic du milieu pour caster ",
+ };
+
+ NECROSIS_SOUND = {
+ ["Fear"] = "Interface\\AddOns\\Necrosis\\sounds\\Fear-Fr.mp3",
+ ["SoulstoneEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\SoulstoneEnd-Fr.mp3",
+ ["EnslaveEnd"] = "Interface\\AddOns\\Necrosis\\sounds\\EnslaveDemonEnd-Fr.mp3",
+ ["ShadowTrance"] = "Interface\\AddOns\\Necrosis\\sounds\\ShadowTrance-Fr.mp3"
+ };
+
+ NECROSIS_NIGHTFALL_TEXT = {
+ ["NoBoltSpell"] = "Vos n'avez pas le sort Trait de l'ombre.",
+ ["Message"] = "Transe de l'ombre"
+ };
+
+
+ NECROSIS_MESSAGE = {
+ ["Error"] = {
+ ["InfernalStoneNotPresent"] = "Pas de Pierre infernale pour l'invocation",
+ ["SoulShardNotPresent"] = "Pas de Fragment d'\195\162me pour l'invocation",
+ ["DemoniacStoneNotPresent"] = "Pas de pierre d\195\169moniaque pour l'invocation",
+ ["NoRiding"] = "Vous n'avez pas de monture \192\160 invoquer !",
+ ["NoFireStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de feu",
+ ["NoSpellStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de sort",
+ ["NoHealthStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre de soins",
+ ["NoSoulStoneSpell"] = "Vous n'avez pas de sort Cr\195\169ation de Pierre d'\195\162me",
+ ["FullHealth"] = "Utilisation de Pierre de soins impossible, vous n'etes pas bless\195\169(e)",
+ ["BagAlreadySelect"] = "Erreur : Vous avez d\195\169j\195\160 ce sac selectionn\195\169.",
+ ["WrongBag"] = "Erreur : Le No doit \195\170tre compris entre 0 et 4",
+ ["BagIsNumber"] = "Erreur : Veuillez taper un chiffre.",
+ ["NoHearthStone"] = "Erreur : Vous n'avez pas de pierre de foyer dans votre inventaire"
+ },
+ ["Bag"] = {
+ ["FullPrefix"] = "Votre ",
+ ["FullSuffix"] = " est plein !",
+ ["FullDestroySuffix"] = " est plein; les prochains fragments seront detruits !",
+ ["SelectedPrefix"] = "Vous avez choisi votre ",
+ ["SelectedSuffix"] = " pour stocker vos fragments"
+ },
+ ["Interface"] = {
+ ["Welcome"] = "/necro pour les options !",
+ ["TooltipOn"] = "Bulles d'aide activ\195\169es" ,
+ ["TooltipOff"] = "Bulles d'aide d\195\169sactiv\195\169es",
+ ["MessageOn"] = "Messages Pierre d'\195\162me et Invocation de joueur activ\195\169s",
+ ["MessageOff"] = "Messages Pierre d'\195\162me et Invocation de joueur desactiv\195\169s",
+ ["MessagePosition"] = "<- position des messages systeme Necrosis ->",
+ ["DefaultConfig"] = "Configuration par defaut charg\195\169e.",
+ ["UserConfig"] = "Configuration charg\195\169e"
+ },
+ ["Help"] = {
+ "/necro recall -- Centre Necrosis and tous les boutons au centre de l'écran",
+ "/necro sm -- Remplace les messages de pierre d'\195\162me et d'invocation par des versions courtes spéciales raid"
+ },
+ ["EquipMessage"] = "Equipe ",
+ ["SwitchMessage"] = " \195\160 la place de ",
+ ["Information"] = {
+ ["FearProtect"] = "La cible est prot\195\168g\195\169e contre la peur !!!!",
+ ["EnslaveBreak"] = "Votre D\195\169mon a bris\195\169 ses chaines...",
+ ["SoulstoneEnd"] = "Votre Pierre d'\195\162me vient de s'eteindre."
+ }
+ };
+
+
+ -- Gestion XML - Menu de configuration
+
+ NECROSIS_COLOR_TOOLTIP = {
+ ["Purple"] = "Violet",
+ ["Blue"] = "Bleu",
+ ["Pink"] = "Rose",
+ ["Orange"] = "Orange",
+ ["Turquoise"] = "Turquoise",
+ ["X"] = "X"
+ };
+
+ NECROSIS_CONFIGURATION = {
+ ["Menu1"] = "Configuration des fragments",
+ ["Menu2"] = "Configuration des messages",
+ ["Menu3"] = "Configuration des boutons",
+ ["Menu4"] = "Configuration des timers",
+ ["Menu5"] = "Configuration graphique",
+ ["MainRotation"] = "Rotation de Necrosis",
+ ["ShardMenu"] = "|CFFB700B7I|CFFFF00FFn|CFFFF50FFv|CFFFF99FFen|CFFFFC4FFt|CFFFF99FFa|CFFFF50FFi|CFFFF00FFr|CFFB700B7e :",
+ ["ShardMenu2"] = "|CFFB700B7C|CFFFF00FFo|CFFFF50FFm|CFFFF99FFp|CFFFFC4FFt|CFFFF99FFe|CFFFF50FFu|CFFFF00FFr :",
+ ["ShardMove"] = "D\195\169place les fragments dans le sac specifi\195\169",
+ ["ShardDestroy"] = "D\195\169truit les fragments si sac plein",
+ ["SpellMenu1"] = "|CFFB700B7S|CFFFF00FFo|CFFFF50FFr|CFFFF99FFt|CFFFFC4FFs :",
+ ["SpellMenu2"] = "|CFFB700B7J|CFFFF00FFo|CFFFF50FFu|CFFFF99FFe|CFFFFC4FFu|CFFFF99FFr :",
+ ["TimerMenu"] = "|CFFB700B7T|CFFFF00FFi|CFFFF50FFm|CFFFF99FFe|CFFFFC4FFr|CFFFF99FFs G|CFFFF50FFr|CFFFF00FFa|CFFB700B7ph|CFFFF00FFi|CFFFF50FFq|CFFFF99FFue|CFFFFC4FFs :",
+ ["TranseWarning"] = "M'alerter quand j'entre en Transe",
+ ["SpellTime"] = "Affiche la gestion des dur\195\169es de sorts",
+ ["AntiFearWarning"] = "M'alerter quand ma cible \195\160 un 'anti fear'",
+ ["GraphicalTimer"] = "Affichage des timers sous forme graphique",
+ ["TimerColor"] = "Affiche le texte des timers en blanc",
+ ["TimerDirection"] = "Ajouter les timers en haut des pr\195\169c\195\169dents",
+ ["TranceButtonView"] = "Affichage des boutons cach\195\169s pour les d\195\169placer",
+ ["ButtonLock"] = "Verrouiller les boutons sur la sphere Necrosis",
+ ["MainLock"] = "Verrouiller les boutons des Pierres et Necrosis",
+ ["BagSelect"] = "Choix du sac contenant les fragments",
+ ["BuffMenu"] = "Afficher le menu des buffs vers la gauche",
+ ["PetMenu"] = "Afficher le menu des d\195\169mons vers la gauche",
+ ["CurseMenu"] = "Afficher le menu des mal\195\169dictions vers la gauche",
+ ["STimerLeft"] = "Afficher les timers sur la gauche du bouton",
+ ["ShowCount"] = "Afficher le compteur de fragments",
+ ["CountType"] = "Type de compteur",
+ ["Circle"] = "Ev\195\168nement montr\195\169 par la sph\195\168re graphique",
+ ["ShowMessage"] = "Active les messages al\195\169atoires d'invocation",
+ ["ShowDemonSummon"] = "Active les messages pour les D\195\169mons",
+ ["ShowSteedSummon"] = "Active les messages pour la Monture",
+ ["ChatType"] = "Les messages = des messages syst\195\168mes",
+ ["Sound"] = "Activer les sons",
+ ["NecrosisSize"] = "Taille de la pierre Necrosis",
+ ["BanishSize"] = "Taille du bouton Banish",
+ ["TranseSize"] = "Taille des boutons Transe et AntiPeur",
+ ["Skin"] = "Skin de la pierre Necrosis",
+ ["Show"] = {
+ ["Firestone"] = "Afficher le bouton des Pierres de feu",
+ ["Spellstone"] = "Afficher le bouton des Pierres de sort",
+ ["Healthstone"] = "Afficher le bouton des Pierres de soin",
+ ["Soulstone"] = "Afficher le bouton des Pierres d'\195\162me",
+ ["Steed"] = "Afficher le bouton de la Monture",
+ ["Buff"] = "Affiche le bouton des Buffs",
+ ["Curse"] = "Affiche le bouton des Mal\195\169dictions",
+ ["Demon"] = "Affiche le bouton d'invocation des D\195\169mons",
+ ["Tooltips"] = "Affiche les bulles d'aides"
+ },
+ ["Count"] = {
+ ["Shard"] = "Fragments d'\195\162me",
+ ["Inferno"] = "Pierres d'invocations",
+ ["Rez"] = "Timer de Rez"
+ }
+ };
+
+end
diff --git a/Localization-functions-de.lua b/Localization-functions-de.lua
index 22b66a5..6e0c189 100644
--- a/Localization-functions-de.lua
+++ b/Localization-functions-de.lua
@@ -1,210 +1,210 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 28.06.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-
-------------------------------------------------
--- GERMAN VERSION FUNCTIONS --
-------------------------------------------------
-
-if ( GetLocale() == "deDE" ) then
-
-NECROSIS_UNIT_WARLOCK = "Hexenmeister";
-
-NECROSIS_ANTI_FEAR_SPELL = {
- -- Buffs die temporäre Immunität gegenüber Furcht geben
- ["Buff"] = {
- "Furchtzauberschutz", -- Dwarf priest racial trait
- "Wille der Verlassenen", -- Forsaken racial trait
- "Furchtlos", -- Trinket
- "Berserkerwut", -- Warrior Fury talent
- "Tollk\195\188hnheit", -- Warrior Fury talent
- "Todeswunsch", -- Warrior Fury talent
- "Zorn des Wildtieres", -- Hunter Beast Mastery talent (pet only)
- "Eisblock", -- Mage Ice talent
- "G\195\182ttlicher Schutz", -- Paladin Holy buff
- "Gottesschild", -- Paladin Holy buff
- "Totem des Erdsto\195\159es", -- Shaman totem
- "Abolish Magic" -- Majordomo (NPC) spell
- -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
- },
-
- -- Debuffs and curses giving temporary immunity to fear effects
- ["Debuff"] = {
- "Fluch der Tollk\195\188hnheit" -- Warlock curse
- }
-};
-
--- Creature type absolutly immune to fear effects
-NECROSIS_ANTI_FEAR_UNIT = {
- "Untoter"
-};
-
--- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
-NECROSIS_ANTI_FEAR_SRCH = "(.+) war ein Fehlschlag. (.+) ist immun."
-
-NECROSIS_SPELL_TABLE = {
- [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Teufelsross beschw\195\182ren", Length = 0, Type = 0},
- [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Schreckensross herbeirufen", Length = 0, Type = 0},
- [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Wichtel beschw\195\182ren", Length = 0, Type = 0},
- [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Leerwandler beschw\195\182ren", Length = 0, Type = 0},
- [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Sukkubus beschw\195\182ren", Length = 0, Type = 0},
- [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Teufelsj\195\164ger beschw\195\182ren", Length = 0, Type = 0},
- [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Schattenblitz", Length = 0, Type = 0},
- [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Inferno", Length = 3600, Type = 3},
- [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Verbannen", Length = 30, Type = 2},
- [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monensklave", Length = 30000, Type = 2},
- [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Seelenstein-Auferstehung", Length = 1800, Type = 1},
- [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Feuerbrand", Length = 15, Type = 5},
- [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Furcht", Length = 15, Type = 5},
- [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Verderbnis", Length = 17, Type = 5},
- [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Teufelsbeherrschung", Length = 300, Type = 3},
- [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Verdammnis", Length = 60, Type = 3},
- [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Opferung", Length = 30, Type = 3},
- [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Seelenfeuer", Length = 60, Type = 3},
- [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Todesmantel", Length = 120, Type = 3},
- [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Schattenbrand", Length = 15, Type = 3},
- [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Feuersbrunst", Length = 10, Type = 3},
- [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Pein", Length = 24, Type = 4},
- [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Schw\195\164che", Length = 120, Type = 4},
- [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Tollk\195\188hnheit", Length = 120, Type = 4},
- [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Sprachen", Length = 30, Type = 4},
- [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Elemente", Length = 300, Type = 4},
- [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Schatten", Length = 300, Type = 4},
- [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Lebensentzug", Length = 30, Type = 5},
- [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Schreckengeh\195\164ul", Length = 40, Type = 3},
- [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Ritual der Verdammnis", Length = 3600, Type = 0},
- [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monenr\195\188stung", Length = 0, Type = 0},
- [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Unendlicher Atem", Length = 0, Type = 0},
- [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Unsichtbarkeit", Length = 0, Type = 0},
- [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Auge von Kilrogg", Length = 0, Type = 0},
- [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monensklave", Length = 0, Type = 0},
- [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monenhaut", Length = 0, Type = 0},
- [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Ritual der Beschw\195\182rung", Length = 0, Type = 0},
- [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Seelenverbindung", Length = 0, Type = 0},
- [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monen sp\195\188ren", Length = 0, Type = 0},
- [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch der Ersch\195\182pfung", Length = 12, Type = 4},
- [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Aderlass", Length = 0, Type = 0},
- [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fluch verst\195\164rken", Length = 180, Type = 3},
- [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Schattenzauberschutz", Length = 30, Type = 3},
- [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\164monische Opferung", Length = 0, Type = 0},
-
-};
--- Type 0 = Pas de Timer
--- Type 1 = Timer permanent principal
--- Type 2 = Timer permanent
--- Type 3 = Timer de cooldown
--- Type 4 = Timer de malédiction
--- Type 5 = Timer de combat
-
-NECROSIS_ITEM = {
- ["Soulshard"] = "Seelensplitter",
- ["Soulstone"] = "Seelenstein",
- ["Healthstone"] = "Gesundheitsstein",
- ["Spellstone"] = "Zauberstein",
- ["Firestone"] = "Feuerstein",
- ["Offhand"] = "Schildhand",
- ["Twohand"] = "Zweihand",
- ["InfernalStone"] = "H\195\182llenstein",
- ["DemoniacStone"] = "D\195\164monenstatuette",
- ["Hearthstone"] = "Ruhestein",
- ["SoulPouch"] = {"Seelenbeutel", "Teufelsstofftasche", "Kernteufelsstofftasche"}
-};
-
-
-NECROSIS_STONE_RANK = {
- [1] = " (schwach)", -- Rank Minor
- [2] = " (gering)", -- Rank Lesser
- [3] = "", -- Rank Intermediate, no name
- [4] = " (gro\195\159)", -- Rank Greater
- [5] = " (erheblich)" -- Rank Major
-};
-
-NECROSIS_NIGHTFALL = {
- ["BoltName"] = "blitz",
- ["ShadowTrance"] = "Schattentrance"
-};
-
-NECROSIS_CREATE = {
- [1] = "Seelenstein herstellen",
- [2] = "Gesundheitsstein herstellen",
- [3] = "Zauberstein herstellen",
- [4] = "Feuerstein herstellen"
-};
-
-NECROSIS_PET_LOCAL_NAME = {
- [1] = "Wichtel",
- [2] = "Leerwandler",
- [3] = "Sukkubus",
- [4] = "Teufelsj\195\164ger",
- [5] = "H\195\182llenbestie",
- [6] = "Verdammniswache"
-};
-
-NECROSIS_TRANSLATION = {
- ["Cooldown"] = "Cooldown",
- ["Hearth"] = "Ruhestein",
- ["Rank"] = "Rang",
- ["Invisible"] = "Unsichtbarkeit entdecken",
- ["LesserInvisible"] = "Geringe Unsichtbarkeit entdecken",
- ["GreaterInvisible"] = "Gro\195\159e Unsichtbarkeit entdecken",
- ["SoulLinkGain"] = "Du bekommst Seelenverbindung.",
- ["SacrificeGain"] = "Du bekommst Opferung.",
- ["SummoningRitual"] = "Ritual der Beschw\195\182rung"
-};
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 28.06.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+
+------------------------------------------------
+-- GERMAN VERSION FUNCTIONS --
+------------------------------------------------
+
+if ( GetLocale() == "deDE" ) then
+
+NECROSIS_UNIT_WARLOCK = "Hexenmeister";
+
+NECROSIS_ANTI_FEAR_SPELL = {
+ -- Buffs die temporäre Immunität gegenüber Furcht geben
+ ["Buff"] = {
+ "Furchtzauberschutz", -- Dwarf priest racial trait
+ "Wille der Verlassenen", -- Forsaken racial trait
+ "Furchtlos", -- Trinket
+ "Berserkerwut", -- Warrior Fury talent
+ "Tollk\195\188hnheit", -- Warrior Fury talent
+ "Todeswunsch", -- Warrior Fury talent
+ "Zorn des Wildtieres", -- Hunter Beast Mastery talent (pet only)
+ "Eisblock", -- Mage Ice talent
+ "G\195\182ttlicher Schutz", -- Paladin Holy buff
+ "Gottesschild", -- Paladin Holy buff
+ "Totem des Erdsto\195\159es", -- Shaman totem
+ "Abolish Magic" -- Majordomo (NPC) spell
+ -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
+ },
+
+ -- Debuffs and curses giving temporary immunity to fear effects
+ ["Debuff"] = {
+ "Fluch der Tollk\195\188hnheit" -- Warlock curse
+ }
+};
+
+-- Creature type absolutly immune to fear effects
+NECROSIS_ANTI_FEAR_UNIT = {
+ "Untoter"
+};
+
+-- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
+NECROSIS_ANTI_FEAR_SRCH = "(.+) war ein Fehlschlag. (.+) ist immun."
+
+NECROSIS_SPELL_TABLE = {
+ [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Teufelsross beschw\195\182ren", Length = 0, Type = 0},
+ [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Schreckensross herbeirufen", Length = 0, Type = 0},
+ [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Wichtel beschw\195\182ren", Length = 0, Type = 0},
+ [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Leerwandler beschw\195\182ren", Length = 0, Type = 0},
+ [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Sukkubus beschw\195\182ren", Length = 0, Type = 0},
+ [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Teufelsj\195\164ger beschw\195\182ren", Length = 0, Type = 0},
+ [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Schattenblitz", Length = 0, Type = 0},
+ [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Inferno", Length = 3600, Type = 3},
+ [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Verbannen", Length = 30, Type = 2},
+ [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monensklave", Length = 30000, Type = 2},
+ [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Seelenstein-Auferstehung", Length = 1800, Type = 1},
+ [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Feuerbrand", Length = 15, Type = 5},
+ [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Furcht", Length = 15, Type = 5},
+ [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Verderbnis", Length = 17, Type = 5},
+ [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Teufelsbeherrschung", Length = 300, Type = 3},
+ [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Verdammnis", Length = 60, Type = 3},
+ [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Opferung", Length = 30, Type = 3},
+ [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Seelenfeuer", Length = 60, Type = 3},
+ [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Todesmantel", Length = 120, Type = 3},
+ [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Schattenbrand", Length = 15, Type = 3},
+ [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Feuersbrunst", Length = 10, Type = 3},
+ [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Pein", Length = 24, Type = 4},
+ [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Schw\195\164che", Length = 120, Type = 4},
+ [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Tollk\195\188hnheit", Length = 120, Type = 4},
+ [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Sprachen", Length = 30, Type = 4},
+ [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Elemente", Length = 300, Type = 4},
+ [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Schatten", Length = 300, Type = 4},
+ [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Lebensentzug", Length = 30, Type = 5},
+ [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Schreckengeh\195\164ul", Length = 40, Type = 3},
+ [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Ritual der Verdammnis", Length = 3600, Type = 0},
+ [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monenr\195\188stung", Length = 0, Type = 0},
+ [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Unendlicher Atem", Length = 0, Type = 0},
+ [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Unsichtbarkeit", Length = 0, Type = 0},
+ [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Auge von Kilrogg", Length = 0, Type = 0},
+ [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monensklave", Length = 0, Type = 0},
+ [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monenhaut", Length = 0, Type = 0},
+ [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Ritual der Beschw\195\182rung", Length = 0, Type = 0},
+ [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Seelenverbindung", Length = 0, Type = 0},
+ [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monen sp\195\188ren", Length = 0, Type = 0},
+ [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch der Ersch\195\182pfung", Length = 12, Type = 4},
+ [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Aderlass", Length = 0, Type = 0},
+ [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fluch verst\195\164rken", Length = 180, Type = 3},
+ [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Schattenzauberschutz", Length = 30, Type = 3},
+ [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\164monische Opferung", Length = 0, Type = 0},
+
+};
+-- Type 0 = Pas de Timer
+-- Type 1 = Timer permanent principal
+-- Type 2 = Timer permanent
+-- Type 3 = Timer de cooldown
+-- Type 4 = Timer de malédiction
+-- Type 5 = Timer de combat
+
+NECROSIS_ITEM = {
+ ["Soulshard"] = "Seelensplitter",
+ ["Soulstone"] = "Seelenstein",
+ ["Healthstone"] = "Gesundheitsstein",
+ ["Spellstone"] = "Zauberstein",
+ ["Firestone"] = "Feuerstein",
+ ["Offhand"] = "Schildhand",
+ ["Twohand"] = "Zweihand",
+ ["InfernalStone"] = "H\195\182llenstein",
+ ["DemoniacStone"] = "D\195\164monenstatuette",
+ ["Hearthstone"] = "Ruhestein",
+ ["SoulPouch"] = {"Seelenbeutel", "Teufelsstofftasche", "Kernteufelsstofftasche"}
+};
+
+
+NECROSIS_STONE_RANK = {
+ [1] = " (schwach)", -- Rank Minor
+ [2] = " (gering)", -- Rank Lesser
+ [3] = "", -- Rank Intermediate, no name
+ [4] = " (gro\195\159)", -- Rank Greater
+ [5] = " (erheblich)" -- Rank Major
+};
+
+NECROSIS_NIGHTFALL = {
+ ["BoltName"] = "blitz",
+ ["ShadowTrance"] = "Schattentrance"
+};
+
+NECROSIS_CREATE = {
+ [1] = "Seelenstein herstellen",
+ [2] = "Gesundheitsstein herstellen",
+ [3] = "Zauberstein herstellen",
+ [4] = "Feuerstein herstellen"
+};
+
+NECROSIS_PET_LOCAL_NAME = {
+ [1] = "Wichtel",
+ [2] = "Leerwandler",
+ [3] = "Sukkubus",
+ [4] = "Teufelsj\195\164ger",
+ [5] = "H\195\182llenbestie",
+ [6] = "Verdammniswache"
+};
+
+NECROSIS_TRANSLATION = {
+ ["Cooldown"] = "Cooldown",
+ ["Hearth"] = "Ruhestein",
+ ["Rank"] = "Rang",
+ ["Invisible"] = "Unsichtbarkeit entdecken",
+ ["LesserInvisible"] = "Geringe Unsichtbarkeit entdecken",
+ ["GreaterInvisible"] = "Gro\195\159e Unsichtbarkeit entdecken",
+ ["SoulLinkGain"] = "Du bekommst Seelenverbindung.",
+ ["SacrificeGain"] = "Du bekommst Opferung.",
+ ["SummoningRitual"] = "Ritual der Beschw\195\182rung"
+};
+
+end
diff --git a/Localization-functions-en.lua b/Localization-functions-en.lua
index 54006c6..67ddef6 100644
--- a/Localization-functions-en.lua
+++ b/Localization-functions-en.lua
@@ -1,210 +1,210 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 06.05.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-
-------------------------------------------------
--- ENGLISH VERSION FUNCTIONS --
-------------------------------------------------
-
-if ( GetLocale() == "enUS" ) or ( GetLocale() == "enGB" ) then
-
-NECROSIS_UNIT_WARLOCK = "Warlock";
-
-NECROSIS_ANTI_FEAR_SPELL = {
- -- Buffs giving temporary immunity to fear effects
- ["Buff"] = {
- "Fear Ward", -- Dwarf priest racial trait
- "Will of the Forsaken", -- Forsaken racial trait
- "Fearless", -- Trinket
- "Berzerker Rage", -- Warrior Fury talent
- "Recklessness", -- Warrior Fury talent
- "Death Wish", -- Warrior Fury talent
- "Bestial Wrath", -- Hunter Beast Mastery talent (pet only)
- "Ice Block", -- Mage Ice talent
- "Divine Protection", -- Paladin Holy buff
- "Divine Shield", -- Paladin Holy buff
- "Tremor Totem", -- Shaman totem
- "Abolish Magic" -- Majordomo (NPC) spell
- -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
- },
-
- -- Debuffs and curses giving temporary immunity to fear effects
- ["Debuff"] = {
- "Curse of Recklessness" -- Warlock curse
- }
-};
-
--- Creature type absolutly immune to fear effects
-NECROSIS_ANTI_FEAR_UNIT = {
- "Undead"
-};
-
--- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
-NECROSIS_ANTI_FEAR_SRCH = "Your (.+) failed. (.+) is immune."
-
-NECROSIS_SPELL_TABLE = {
- [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Felsteed", Length = 0, Type = 0},
- [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Dreadsteed", Length = 0, Type = 0},
- [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Imp", Length = 0, Type = 0},
- [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Voidwalker", Length = 0, Type = 0},
- [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Succubus", Length = 0, Type = 0},
- [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Summon Felhunter", Length = 0, Type = 0},
- [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Shadow Bolt", Length = 0, Type = 0},
- [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Inferno", Length = 3600, Type = 3},
- [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Banish", Length = 30, Type = 2},
- [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Enslave Demon", Length = 30000, Type = 2},
- [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Soulstone Resurrection", Length = 1800, Type = 1},
- [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Immolate", Length = 15, Type = 5},
- [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fear", Length = 15, Type = 5},
- [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Corruption", Length = 17, Type = 5},
- [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Fel Domination", Length = 300, Type = 3},
- [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Doom", Length = 60, Type = 3},
- [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Sacrifice", Length = 30, Type = 3},
- [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Soul Fire", Length = 60, Type = 3},
- [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Death Coil", Length = 120, Type = 3},
- [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Shadowburn", Length = 15, Type = 3},
- [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Conflagrate", Length = 10, Type = 3},
- [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Agony", Length = 24, Type = 4},
- [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Weakness", Length = 120, Type = 4},
- [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Recklessness", Length = 120, Type = 4},
- [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Tongues", Length = 30, Type = 4},
- [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of the Elements", Length = 300, Type = 4},
- [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Shadow", Length = 300, Type = 4},
- [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Siphon Life", Length = 30, Type = 5},
- [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Howl of Terror", Length = 40, Type = 3},
- [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Ritual of Doom", Length = 3600, Type = 0},
- [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Demon Armor", Length = 0, Type = 0},
- [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Unending Breath", Length = 0, Type = 0},
- [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invisibility", Length = 0, Type = 0},
- [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Eye of Kilrogg", Length = 0, Type = 0},
- [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Enslave Demon", Length = 0, Type = 0},
- [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Demon Skin", Length = 0, Type = 0},
- [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Ritual of Summoning", Length = 0, Type = 0},
- [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Soul Link", Length = 0, Type = 0},
- [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Sense Demons", Length = 0, Type = 0},
- [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Curse of Exhaustion", Length = 12, Type = 4},
- [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Life Tap", Length = 0, Type = 0},
- [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Amplify Curse", Length = 180, Type = 3},
- [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Shadow Ward", Length = 30, Type = 3},
- [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Demonic Sacrifice", Length = 0, Type = 0},
-
-};
--- Type 0 = Pas de Timer
--- Type 1 = Timer permanent principal
--- Type 2 = Timer permanent
--- Type 3 = Timer de cooldown
--- Type 4 = Timer de malédiction
--- Type 5 = Timer de combat
-
-NECROSIS_ITEM = {
- ["Soulshard"] = "Soul Shard",
- ["Soulstone"] = "Soulstone",
- ["Healthstone"] = "Healthstone",
- ["Spellstone"] = "Spellstone",
- ["Firestone"] = "Firestone",
- ["Offhand"] = "Held In Off-hand",
- ["Twohand"] = "Two-Hand",
- ["InfernalStone"] = "Infernal Stone",
- ["DemoniacStone"] = "Demonic Figurine",
- ["Hearthstone"] = "Hearthstone",
- ["SoulPouch"] = {"Soul Pouch", "Felcloth Bag", "Core Felcloth Bag"}
-};
-
-
-NECROSIS_STONE_RANK = {
- [1] = " (Minor)", -- Rank Minor
- [2] = " (Lesser)", -- Rank Lesser
- [3] = "", -- Rank Intermediate, no name
- [4] = " (Greater)", -- Rank Greater
- [5] = " (Major)" -- Rank Major
-};
-
-NECROSIS_NIGHTFALL = {
- ["BoltName"] = "Bolt",
- ["ShadowTrance"] = "Shadow Trance"
-};
-
-NECROSIS_CREATE = {
- [1] = "Create Soulstone",
- [2] = "Create Healthstone",
- [3] = "Create Spellstone",
- [4] = "Create Firestone"
-};
-
-NECROSIS_PET_LOCAL_NAME = {
- [1] = "Imp",
- [2] = "Voidwalker",
- [3] = "Succubus",
- [4] = "Felhunter",
- [5] = "Inferno",
- [6] = "Doomguard"
-};
-
-NECROSIS_TRANSLATION = {
- ["Cooldown"] = "Cooldown",
- ["Hearth"] = "Hearthstone",
- ["Rank"] = "Rank",
- ["Invisible"] = "Detect Invisibility",
- ["LesserInvisible"] = "Detect Lesser Invisibility",
- ["GreaterInvisible"] = "Detect Greater Invisibility",
- ["SoulLinkGain"] = "You gain Soul Link.",
- ["SacrificeGain"] = "You gain Sacrifice.",
- ["SummoningRitual"] = "Ritual of Summoning"
-};
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 06.05.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+
+------------------------------------------------
+-- ENGLISH VERSION FUNCTIONS --
+------------------------------------------------
+
+if ( GetLocale() == "enUS" ) or ( GetLocale() == "enGB" ) then
+
+NECROSIS_UNIT_WARLOCK = "Warlock";
+
+NECROSIS_ANTI_FEAR_SPELL = {
+ -- Buffs giving temporary immunity to fear effects
+ ["Buff"] = {
+ "Fear Ward", -- Dwarf priest racial trait
+ "Will of the Forsaken", -- Forsaken racial trait
+ "Fearless", -- Trinket
+ "Berzerker Rage", -- Warrior Fury talent
+ "Recklessness", -- Warrior Fury talent
+ "Death Wish", -- Warrior Fury talent
+ "Bestial Wrath", -- Hunter Beast Mastery talent (pet only)
+ "Ice Block", -- Mage Ice talent
+ "Divine Protection", -- Paladin Holy buff
+ "Divine Shield", -- Paladin Holy buff
+ "Tremor Totem", -- Shaman totem
+ "Abolish Magic" -- Majordomo (NPC) spell
+ -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
+ },
+
+ -- Debuffs and curses giving temporary immunity to fear effects
+ ["Debuff"] = {
+ "Curse of Recklessness" -- Warlock curse
+ }
+};
+
+-- Creature type absolutly immune to fear effects
+NECROSIS_ANTI_FEAR_UNIT = {
+ "Undead"
+};
+
+-- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
+NECROSIS_ANTI_FEAR_SRCH = "Your (.+) failed. (.+) is immune."
+
+NECROSIS_SPELL_TABLE = {
+ [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Felsteed", Length = 0, Type = 0},
+ [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Dreadsteed", Length = 0, Type = 0},
+ [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Imp", Length = 0, Type = 0},
+ [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Voidwalker", Length = 0, Type = 0},
+ [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Succubus", Length = 0, Type = 0},
+ [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Summon Felhunter", Length = 0, Type = 0},
+ [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Shadow Bolt", Length = 0, Type = 0},
+ [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Inferno", Length = 3600, Type = 3},
+ [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Banish", Length = 30, Type = 2},
+ [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Enslave Demon", Length = 30000, Type = 2},
+ [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Soulstone Resurrection", Length = 1800, Type = 1},
+ [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Immolate", Length = 15, Type = 5},
+ [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fear", Length = 15, Type = 5},
+ [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Corruption", Length = 17, Type = 5},
+ [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Fel Domination", Length = 300, Type = 3},
+ [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Doom", Length = 60, Type = 3},
+ [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Sacrifice", Length = 30, Type = 3},
+ [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Soul Fire", Length = 60, Type = 3},
+ [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Death Coil", Length = 120, Type = 3},
+ [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Shadowburn", Length = 15, Type = 3},
+ [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Conflagrate", Length = 10, Type = 3},
+ [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Agony", Length = 24, Type = 4},
+ [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Weakness", Length = 120, Type = 4},
+ [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Recklessness", Length = 120, Type = 4},
+ [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Tongues", Length = 30, Type = 4},
+ [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of the Elements", Length = 300, Type = 4},
+ [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Shadow", Length = 300, Type = 4},
+ [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Siphon Life", Length = 30, Type = 5},
+ [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Howl of Terror", Length = 40, Type = 3},
+ [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Ritual of Doom", Length = 3600, Type = 0},
+ [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Demon Armor", Length = 0, Type = 0},
+ [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Unending Breath", Length = 0, Type = 0},
+ [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invisibility", Length = 0, Type = 0},
+ [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Eye of Kilrogg", Length = 0, Type = 0},
+ [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Enslave Demon", Length = 0, Type = 0},
+ [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Demon Skin", Length = 0, Type = 0},
+ [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Ritual of Summoning", Length = 0, Type = 0},
+ [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Soul Link", Length = 0, Type = 0},
+ [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Sense Demons", Length = 0, Type = 0},
+ [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Curse of Exhaustion", Length = 12, Type = 4},
+ [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Life Tap", Length = 0, Type = 0},
+ [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Amplify Curse", Length = 180, Type = 3},
+ [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Shadow Ward", Length = 30, Type = 3},
+ [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Demonic Sacrifice", Length = 0, Type = 0},
+
+};
+-- Type 0 = Pas de Timer
+-- Type 1 = Timer permanent principal
+-- Type 2 = Timer permanent
+-- Type 3 = Timer de cooldown
+-- Type 4 = Timer de malédiction
+-- Type 5 = Timer de combat
+
+NECROSIS_ITEM = {
+ ["Soulshard"] = "Soul Shard",
+ ["Soulstone"] = "Soulstone",
+ ["Healthstone"] = "Healthstone",
+ ["Spellstone"] = "Spellstone",
+ ["Firestone"] = "Firestone",
+ ["Offhand"] = "Held In Off-hand",
+ ["Twohand"] = "Two-Hand",
+ ["InfernalStone"] = "Infernal Stone",
+ ["DemoniacStone"] = "Demonic Figurine",
+ ["Hearthstone"] = "Hearthstone",
+ ["SoulPouch"] = {"Soul Pouch", "Felcloth Bag", "Core Felcloth Bag"}
+};
+
+
+NECROSIS_STONE_RANK = {
+ [1] = " (Minor)", -- Rank Minor
+ [2] = " (Lesser)", -- Rank Lesser
+ [3] = "", -- Rank Intermediate, no name
+ [4] = " (Greater)", -- Rank Greater
+ [5] = " (Major)" -- Rank Major
+};
+
+NECROSIS_NIGHTFALL = {
+ ["BoltName"] = "Bolt",
+ ["ShadowTrance"] = "Shadow Trance"
+};
+
+NECROSIS_CREATE = {
+ [1] = "Create Soulstone",
+ [2] = "Create Healthstone",
+ [3] = "Create Spellstone",
+ [4] = "Create Firestone"
+};
+
+NECROSIS_PET_LOCAL_NAME = {
+ [1] = "Imp",
+ [2] = "Voidwalker",
+ [3] = "Succubus",
+ [4] = "Felhunter",
+ [5] = "Inferno",
+ [6] = "Doomguard"
+};
+
+NECROSIS_TRANSLATION = {
+ ["Cooldown"] = "Cooldown",
+ ["Hearth"] = "Hearthstone",
+ ["Rank"] = "Rank",
+ ["Invisible"] = "Detect Invisibility",
+ ["LesserInvisible"] = "Detect Lesser Invisibility",
+ ["GreaterInvisible"] = "Detect Greater Invisibility",
+ ["SoulLinkGain"] = "You gain Soul Link.",
+ ["SacrificeGain"] = "You gain Sacrifice.",
+ ["SummoningRitual"] = "Ritual of Summoning"
+};
+
+end
diff --git a/Localization-functions-fr.lua b/Localization-functions-fr.lua
index 3ee359e..2541158 100644
--- a/Localization-functions-fr.lua
+++ b/Localization-functions-fr.lua
@@ -1,209 +1,209 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 05.09.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-
-------------------------------------------------
--- VERSION FRANCAISE DES FONCTIONS --
-------------------------------------------------
-
-if ( GetLocale() == "frFR" ) then
-
-NECROSIS_UNIT_WARLOCK = "D\195\169moniste";
-
-NECROSIS_ANTI_FEAR_SPELL = {
- -- Buffs giving temporary immunity to fear effects
- ["Buff"] = {
- "Gardien de peur", -- Dwarf priest racial trait
- "Volont\195\169 des r\195\169prouv\195\169", -- Forsaken racial trait
- "Sans peur", -- Trinket
- "Furie Berzerker", -- Warrior Fury talent
- "T\195\169m\195\169rit\195\169", -- Warrior Fury talent
- "Souhait mortel", -- Warrior Fury talent
- "Courroux bestial", -- Hunter Beast Mastery talent (pet only)
- "Carapace de glace", -- Mage Ice talent
- "Protection divine", -- Paladin Holy buff
- "Bouclier divin", -- Paladin Holy buff
- "Totem de s\195\169isme", -- Shaman totem
- "Abolir la magie" -- Majordomo (NPC) spell
- -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
- },
-
- -- Debuffs and curses giving temporary immunity to fear effects
- ["Debuff"] = {
- "Mal\195\169diction de t\195\169m\195\169rit\195\169" -- Warlock curse
- }
-};
-
--- Creature type absolutly immune to fear effects
-NECROSIS_ANTI_FEAR_UNIT = {
- "Mort-vivant"
-};
-
--- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
-NECROSIS_ANTI_FEAR_SRCH = "Votre (.+) rate. (.+) y est insensible."
-
-NECROSIS_SPELL_TABLE = {
- [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'un palefroi corrompu", Length = 0, Type = 0},
- [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'un destrier de l'effroi", Length = 0, Type = 0},
- [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'un diablotin", Length = 0, Type = 0},
- [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'un marcheur du Vide", Length = 0, Type = 0},
- [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'une succube", Length = 0, Type = 0},
- [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invocation d'un chasseur corrompu", Length = 0, Type = 0},
- [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Trait de l'ombre", Length = 0, Type = 0},
- [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Inferno", Length = 3600, Type = 3},
- [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Bannir", Length = 30, Type = 2},
- [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Asservir d\195\169mon", Length = 30000, Type = 2},
- [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "R\195\169surrection de Pierre d'\195\162me", Length = 1800, Type = 1},
- [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Immolation", Length = 15, Type = 5},
- [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Peur", Length = 15, Type = 5},
- [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Corruption", Length = 17, Type = 5},
- [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Domination corrompue", Length = 300, Type = 3},
- [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction funeste", Length = 60, Type = 3},
- [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Sacrifice", Length = 30, Type = 3},
- [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Feu de l'\195\162me", Length = 60, Type = 3},
- [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Voile mortel", Length = 120, Type = 3},
- [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Br\195\187lure de l'ombre", Length = 15, Type = 3},
- [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Conflagration", Length = 10, Type = 3},
- [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction d'agonie", Length = 24, Type = 4},
- [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction de faiblesse", Length = 120, Type = 4},
- [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction de t\195\169m\195\169rit\195\169", Length = 120, Type = 4},
- [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction des langages", Length = 30, Type = 4},
- [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction des \195\169l\195\169ments", Length = 300, Type = 4},
- [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction de l'ombre", Length = 300, Type = 4},
- [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Siphon de vie", Length = 30, Type = 5},
- [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Hurlement de terreur", Length = 40, Type = 3},
- [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Rituel de mal\195\169diction", Length = 3600, Type = 0},
- [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Armure d\195\169moniaque", Length = 0, Type = 0},
- [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Respiration interminable", Length = 0, Type = 0},
- [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Invisibilit\195\169", Length = 0, Type = 0},
- [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Oeil de Kilrogg", Length = 0, Type = 0},
- [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Asservir d\195\169mon", Length = 0, Type = 0},
- [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Peau de d\195\169mon", Length = 0, Type = 0},
- [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Rituel d'invocation", Length = 0, Type = 0},
- [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Lien spirituel", Length = 0, Type = 0},
- [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "D\195\169tection des d\195\169mons", Length = 0, Type = 0},
- [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction de fatigue", Length = 12, Type = 4},
- [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Connexion", Length = 0, Type = 0},
- [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Mal\195\169diction amplifi\195\169e", Length = 180, Type = 3},
- [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Gardien de l'ombre", Length = 30, Type = 3},
- [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
- Name = "Sacrifice d\195\169moniaque", Length = 0, Type = 0},
-};
--- Type 0 = Pas de Timer
--- Type 1 = Timer permanent principal
--- Type 2 = Timer permanent
--- Type 3 = Timer de cooldown
--- Type 4 = Timer de malédiction
--- Type 5 = Timer de combat
-
-NECROSIS_ITEM = {
- ["Soulshard"] = "Fragment d'\195\162me",
- ["Soulstone"] = "Pierre d'\195\162me",
- ["Healthstone"] = "Pierre de soins",
- ["Spellstone"] = "Pierre de sort",
- ["Firestone"] = "Pierre de feu",
- ["Offhand"] = "Tenu en main gauche",
- ["Twohand"] = "Deux mains",
- ["InfernalStone"] = "Pierre infernale",
- ["DemoniacStone"] = "Figurine d\195\169moniaque",
- ["Hearthstone"] = "Pierre de foyer",
- ["SoulPouch"] = {"Bourse d'\195\162me", "Sac en gangr\195\169toffe", "Sac en gangr\195\169toffe du Magma"}
-};
-
-
-NECROSIS_STONE_RANK = {
- [1] = " (mineure)", -- Rank Minor
- [2] = " (inf\195\169rieure)", -- Rank Lesser
- [3] = "", -- Rank Intermediate, no name
- [4] = " (sup\195\169rieure)", -- Rank Greater
- [5] = " (majeure)" -- Rank Major
-};
-
-NECROSIS_NIGHTFALL = {
- ["BoltName"] = "Trait",
- ["ShadowTrance"] = "Transe de l'ombre",
-};
-
-NECROSIS_CREATE = {
- [1] = "Cr\195\169ation de Pierre d'\195\162me",
- [2] = "Cr\195\169ation de Pierre de soins",
- [3] = "Cr\195\169ation de Pierre de sort",
- [4] = "Cr\195\169ation de Pierre de feu"
-};
-
-NECROSIS_PET_LOCAL_NAME = {
- [1] = "Diablotin",
- [2] = "Marcheur du Vide",
- [3] = "Succube",
- [4] = "Chasseur corrompu",
- [5] = "Infernal",
- [6] = "Garde funeste"
-};
-
-NECROSIS_TRANSLATION = {
- ["Cooldown"] = "Temps",
- ["Hearth"] = "Pierre de foyer",
- ["Rank"] = "Rang",
- ["Invisible"] = "D\195\169tection de l'invisibilit\195\169",
- ["LesserInvisible"] = "D\195\169tection de l'invisibilit\195\169 inf\195\169rieure",
- ["GreaterInvisible"] = "D\195\169tection de l'invisibilit\195\169 sup\195\169rieure",
- ["SoulLinkGain"] = "Vous gagnez Lien spirituel.",
- ["SacrificeGain"] = "Vous gagnez Sacrifice.",
- ["SummoningRitual"] = "Rituel d'invocation"
-};
-
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 05.09.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+
+------------------------------------------------
+-- VERSION FRANCAISE DES FONCTIONS --
+------------------------------------------------
+
+if ( GetLocale() == "frFR" ) then
+
+NECROSIS_UNIT_WARLOCK = "D\195\169moniste";
+
+NECROSIS_ANTI_FEAR_SPELL = {
+ -- Buffs giving temporary immunity to fear effects
+ ["Buff"] = {
+ "Gardien de peur", -- Dwarf priest racial trait
+ "Volont\195\169 des r\195\169prouv\195\169", -- Forsaken racial trait
+ "Sans peur", -- Trinket
+ "Furie Berzerker", -- Warrior Fury talent
+ "T\195\169m\195\169rit\195\169", -- Warrior Fury talent
+ "Souhait mortel", -- Warrior Fury talent
+ "Courroux bestial", -- Hunter Beast Mastery talent (pet only)
+ "Carapace de glace", -- Mage Ice talent
+ "Protection divine", -- Paladin Holy buff
+ "Bouclier divin", -- Paladin Holy buff
+ "Totem de s\195\169isme", -- Shaman totem
+ "Abolir la magie" -- Majordomo (NPC) spell
+ -- "Grounding Totem" is not considerated, as it can remove other spell than fear, and only one each 10 sec.
+ },
+
+ -- Debuffs and curses giving temporary immunity to fear effects
+ ["Debuff"] = {
+ "Mal\195\169diction de t\195\169m\195\169rit\195\169" -- Warlock curse
+ }
+};
+
+-- Creature type absolutly immune to fear effects
+NECROSIS_ANTI_FEAR_UNIT = {
+ "Mort-vivant"
+};
+
+-- Word to search for spell immunity. First (.+) replace the spell's name, 2nd (.+) replace the creature's name
+NECROSIS_ANTI_FEAR_SRCH = "Votre (.+) rate. (.+) y est insensible."
+
+NECROSIS_SPELL_TABLE = {
+ [1] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'un palefroi corrompu", Length = 0, Type = 0},
+ [2] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'un destrier de l'effroi", Length = 0, Type = 0},
+ [3] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'un diablotin", Length = 0, Type = 0},
+ [4] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'un marcheur du Vide", Length = 0, Type = 0},
+ [5] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'une succube", Length = 0, Type = 0},
+ [6] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invocation d'un chasseur corrompu", Length = 0, Type = 0},
+ [7] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Trait de l'ombre", Length = 0, Type = 0},
+ [8] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Inferno", Length = 3600, Type = 3},
+ [9] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Bannir", Length = 30, Type = 2},
+ [10] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Asservir d\195\169mon", Length = 30000, Type = 2},
+ [11] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "R\195\169surrection de Pierre d'\195\162me", Length = 1800, Type = 1},
+ [12] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Immolation", Length = 15, Type = 5},
+ [13] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Peur", Length = 15, Type = 5},
+ [14] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Corruption", Length = 17, Type = 5},
+ [15] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Domination corrompue", Length = 300, Type = 3},
+ [16] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction funeste", Length = 60, Type = 3},
+ [17] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Sacrifice", Length = 30, Type = 3},
+ [18] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Feu de l'\195\162me", Length = 60, Type = 3},
+ [19] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Voile mortel", Length = 120, Type = 3},
+ [20] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Br\195\187lure de l'ombre", Length = 15, Type = 3},
+ [21] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Conflagration", Length = 10, Type = 3},
+ [22] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction d'agonie", Length = 24, Type = 4},
+ [23] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction de faiblesse", Length = 120, Type = 4},
+ [24] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction de t\195\169m\195\169rit\195\169", Length = 120, Type = 4},
+ [25] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction des langages", Length = 30, Type = 4},
+ [26] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction des \195\169l\195\169ments", Length = 300, Type = 4},
+ [27] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction de l'ombre", Length = 300, Type = 4},
+ [28] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Siphon de vie", Length = 30, Type = 5},
+ [29] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Hurlement de terreur", Length = 40, Type = 3},
+ [30] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Rituel de mal\195\169diction", Length = 3600, Type = 0},
+ [31] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Armure d\195\169moniaque", Length = 0, Type = 0},
+ [32] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Respiration interminable", Length = 0, Type = 0},
+ [33] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Invisibilit\195\169", Length = 0, Type = 0},
+ [34] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Oeil de Kilrogg", Length = 0, Type = 0},
+ [35] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Asservir d\195\169mon", Length = 0, Type = 0},
+ [36] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Peau de d\195\169mon", Length = 0, Type = 0},
+ [37] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Rituel d'invocation", Length = 0, Type = 0},
+ [38] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Lien spirituel", Length = 0, Type = 0},
+ [39] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "D\195\169tection des d\195\169mons", Length = 0, Type = 0},
+ [40] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction de fatigue", Length = 12, Type = 4},
+ [41] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Connexion", Length = 0, Type = 0},
+ [42] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Mal\195\169diction amplifi\195\169e", Length = 180, Type = 3},
+ [43] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Gardien de l'ombre", Length = 30, Type = 3},
+ [44] = {ID = nil, Rank = nil, CastTime = nil, Mana = nil,
+ Name = "Sacrifice d\195\169moniaque", Length = 0, Type = 0},
+};
+-- Type 0 = Pas de Timer
+-- Type 1 = Timer permanent principal
+-- Type 2 = Timer permanent
+-- Type 3 = Timer de cooldown
+-- Type 4 = Timer de malédiction
+-- Type 5 = Timer de combat
+
+NECROSIS_ITEM = {
+ ["Soulshard"] = "Fragment d'\195\162me",
+ ["Soulstone"] = "Pierre d'\195\162me",
+ ["Healthstone"] = "Pierre de soins",
+ ["Spellstone"] = "Pierre de sort",
+ ["Firestone"] = "Pierre de feu",
+ ["Offhand"] = "Tenu en main gauche",
+ ["Twohand"] = "Deux mains",
+ ["InfernalStone"] = "Pierre infernale",
+ ["DemoniacStone"] = "Figurine d\195\169moniaque",
+ ["Hearthstone"] = "Pierre de foyer",
+ ["SoulPouch"] = {"Bourse d'\195\162me", "Sac en gangr\195\169toffe", "Sac en gangr\195\169toffe du Magma"}
+};
+
+
+NECROSIS_STONE_RANK = {
+ [1] = " (mineure)", -- Rank Minor
+ [2] = " (inf\195\169rieure)", -- Rank Lesser
+ [3] = "", -- Rank Intermediate, no name
+ [4] = " (sup\195\169rieure)", -- Rank Greater
+ [5] = " (majeure)" -- Rank Major
+};
+
+NECROSIS_NIGHTFALL = {
+ ["BoltName"] = "Trait",
+ ["ShadowTrance"] = "Transe de l'ombre",
+};
+
+NECROSIS_CREATE = {
+ [1] = "Cr\195\169ation de Pierre d'\195\162me",
+ [2] = "Cr\195\169ation de Pierre de soins",
+ [3] = "Cr\195\169ation de Pierre de sort",
+ [4] = "Cr\195\169ation de Pierre de feu"
+};
+
+NECROSIS_PET_LOCAL_NAME = {
+ [1] = "Diablotin",
+ [2] = "Marcheur du Vide",
+ [3] = "Succube",
+ [4] = "Chasseur corrompu",
+ [5] = "Infernal",
+ [6] = "Garde funeste"
+};
+
+NECROSIS_TRANSLATION = {
+ ["Cooldown"] = "Temps",
+ ["Hearth"] = "Pierre de foyer",
+ ["Rank"] = "Rang",
+ ["Invisible"] = "D\195\169tection de l'invisibilit\195\169",
+ ["LesserInvisible"] = "D\195\169tection de l'invisibilit\195\169 inf\195\169rieure",
+ ["GreaterInvisible"] = "D\195\169tection de l'invisibilit\195\169 sup\195\169rieure",
+ ["SoulLinkGain"] = "Vous gagnez Lien spirituel.",
+ ["SacrificeGain"] = "Vous gagnez Sacrifice.",
+ ["SummoningRitual"] = "Rituel d'invocation"
+};
+
+end
diff --git a/Localization.lua b/Localization.lua
index d060ad4..8a82692 100644
--- a/Localization.lua
+++ b/Localization.lua
@@ -1,35 +1,35 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 05.09.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-
-NecrosisData = {};
-NecrosisData.Version = "1.5.2a";
-NecrosisData.Author = "Lomig & Nyx";
-NecrosisData.AppName = "Necrosis";
-NecrosisData.Label = NecrosisData.AppName.." "..NecrosisData.Version.." by "..NecrosisData.Author;
-
-
--- Raccourcis claviers
-BINDING_HEADER_NECRO_BIND = "Necrosis";
-
-BINDING_NAME_SOULSTONE = "Pierre d'\195\162me / Soulstone";
-BINDING_NAME_HEALTHSTONE = "Pierre de soins / Healthstone";
-BINDING_NAME_SPELLSTONE = "Pierre de sort / Spellstone";
-BINDING_NAME_FIRESTONE = "Pierre de feu / Firestone";
-BINDING_NAME_STEED = "Monture / Steed";
-BINDING_NAME_WARD = "Gardien de l'ombre / Shadow Ward";
-BINDING_NAME_BANISH = "Bannir / Ban";
-BINDING_NAME_LIFETAP = "Connexion / Life tap";
-BINDING_NAME_REDOCURSE = "Relancer la mal\195\169diction / Recast the last curse";
-
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 05.09.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+
+NecrosisData = {};
+NecrosisData.Version = "1.5.2a";
+NecrosisData.Author = "Lomig & Nyx";
+NecrosisData.AppName = "Necrosis";
+NecrosisData.Label = NecrosisData.AppName.." "..NecrosisData.Version.." by "..NecrosisData.Author;
+
+
+-- Raccourcis claviers
+BINDING_HEADER_NECRO_BIND = "Necrosis";
+
+BINDING_NAME_SOULSTONE = "Pierre d'\195\162me / Soulstone";
+BINDING_NAME_HEALTHSTONE = "Pierre de soins / Healthstone";
+BINDING_NAME_SPELLSTONE = "Pierre de sort / Spellstone";
+BINDING_NAME_FIRESTONE = "Pierre de feu / Firestone";
+BINDING_NAME_STEED = "Monture / Steed";
+BINDING_NAME_WARD = "Gardien de l'ombre / Shadow Ward";
+BINDING_NAME_BANISH = "Bannir / Ban";
+BINDING_NAME_LIFETAP = "Connexion / Life tap";
+BINDING_NAME_REDOCURSE = "Relancer la mal\195\169diction / Recast the last curse";
+
diff --git a/Necrosis.lua b/Necrosis.lua
index acc9210..e0041bf 100644
--- a/Necrosis.lua
+++ b/Necrosis.lua
@@ -1,3188 +1,3188 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 05.09.2006-1
-------------------------------------------------------------------------------------------------------
-
--- Configuration par défaut
--- Se charge en cas d'absence de configuration ou de changement de version
-Default_NecrosisConfig = {
- Version = NecrosisData.Version;
- SoulshardContainer = 4;
- SoulshardSort = false;
- SoulshardDestroy = false;
- ShadowTranceAlert = true;
- ShowSpellTimers = true;
- AntiFearAlert = true;
- NecrosisLockServ = true;
- NecrosisAngle = 180;
- StonePosition = {true, true, true, true, true, true, true, true};
- NecrosisToolTip = true;
- NoDragAll = false;
- PetMenuPos = 34;
- BuffMenuPos = 34;
- CurseMenuPos = 34;
- ChatMsg = true;
- ChatType = true;
- NecrosisLanguage = GetLocale();
- ShowCount = true;
- CountType = 1;
- ShadowTranceScale = 100;
- NecrosisButtonScale = 90;
- NecrosisColor = "Rose";
- Sound = true;
- SpellTimerPos = 1;
- SpellTimerJust = "LEFT";
- Circle = 1;
- Graphical = true;
- Yellow = true;
- SensListe = 1;
- PetName = {
- [1] = " ",
- [2] = " ",
- [3] = " ",
- [4] = " "
- };
- DominationUp = false;
- AmplifyUp = false;
- SM = false;
- SteedSummon = false;
- DemonSummon = true;
- BanishScale = 100;
-};
-
-NecrosisConfig = {};
-local Debug = false;
-local Loaded = false
-
--- Détection des initialisations du mod
-local NecrosisRL = true;
-
--- Initialisation des variables utilisées par Necrosis pour la gestion des sorts lancés
-local SpellCastName = nil;
-local SpellCastRank = nil;
-local SpellTargetName = nil;
-local SpellTargetLevel = nil;
-local SpellCastTime = 0;
-
--- Initialisation des tableaux gérant les Timers
--- Un pour les sorts à timer, l'autre pour les groupes de mobs
--- Le dernier permet l'association d'un timer à une frame graphique
-SpellTimer = {};
-local SpellGroup = {
- Name = {"Rez", "Main", "Cooldown"},
- SubName = {" ", " ", " "},
- Visible = {true, true, true}
-};
-
-local TimerTable = {};
-for i = 1, 50, 1 do
- TimerTable[i] = false;
-end
-
--- Menus : Permet l'affichage des menus de buff et de pet
-local PetShow = false;
-local PetMenuShow = false;
-local BuffShow = false;
-local BuffMenuShow = false;
-local CurseShow = false;
-local CurseMenuShow = false;
-
--- Menus : Permet la disparition progressive du menu des pets (transparence)
-local AlphaPetMenu = 1;
-local AlphaPetVar = 0;
-local PetVisible = false;
-
--- Menus : Permet la disparition progressive du menu des buffs (transparence)
-local AlphaBuffMenu = 1;
-local AlphaBuffVar = 0;
-local BuffVisible = false;
-
--- Menus : Permet la disparition progressive du menu des curses (transparence)
-local AlphaCurseMenu = 1;
-local AlphaCurseVar = 0;
-local CurseVisible = false;
-
--- Menus : Permet de recaster le dernier cast du menu en cliquant milieu sur celui-ci
-local LastDemon = 0;
-local LastBuff = 0;
-local LastCurse = 0;
-local LastCurseClick = "LeftButton";
-
--- Liste des boutons disponible pour le démoniste dans chaque menu
-local PetMenuCreate = {};
-local BuffMenuCreate = {};
-local CurseMenuCreate = {};
-
--- Variables utilisées pour la gestion des montures
-local MountAvailable = false;
-local NecrosisMounted = false;
-local NecrosisTellMounted = true;
-local PlayerCombat = false;
-
--- Variables utilisées pour la gestion des transes de l'ombre
-local ShadowTrance = false;
-local AntiFearInUse = false;
-local ShadowTranceID = -1;
-
--- Variables utilisées pour la gestion des fragments d'âme
--- (principalement comptage)
-local Soulshards = 0;
-local SoulshardContainer = 4;
-local SoulshardSlot = {};
-local SoulshardSlotID = 1;
-local SoulshardMP = 0;
-local SoulshardTime = 0;
-
--- Variables utilisées pour la gestion des composants d'invocation
--- (principalement comptage)
-local InfernalStone = 0;
-local DemoniacStone = 0;
-
-
--- Variables utilisées pour la gestion des boutons d'invocation et d'utilisation des pierres
-local StoneIDInSpellTable = {0, 0, 0, 0}
-local SoulstoneUsedOnTarget = false;
-local SoulstoneOnHand = false;
-local SoulstoneLocation = {nil,nil};
-local SoulstoneMode = 1;
-local HealthstoneOnHand = false;
-local HealthstoneLocation = {nil,nil};
-local HealthstoneMode = 1;
-local FirestoneOnHand = false;
-local FirestoneLocation = {nil,nil};
-local FirestoneMode = 1;
-local SpellstoneOnHand = false;
-local SpellstoneLocation = {nil,nil};
-local SpellstoneMode = 1;
-local HearthstoneOnHand = false;
-local HearthstoneLocation = {nil,nil};
-local ItemswitchLocation = {nil,nil};
-local ItemOnHand = false;
-
--- Variables gérant la possibilité ou l'impossibilité d'utiliser un timer de rez
-local SoulstoneWaiting = false;
-local SoulstoneCooldown = false;
-local SoulstoneAdvice = false;
-local SoulstoneTarget = "";
-
--- Variables utilisées dans la gestion des démons
-local DemonType = nil;
-local DemonEnslaved = false;
-
--- Variables utilisées pour l'anti-fear
-local AFblink1, AFBlink2 = 0;
-local AFImageType = { "", "Immu", "Prot"}; -- Fear warning button filename variations
-local AFCurrentTargetImmune = false;
-
--- Variables utilisées pour les échanges de pierre avec les joueurs
-local NecrosisTradeRequest = false;
-local Trading = false;
-local TradingNow = 0;
-
--- Gestion des sacs à fragment d'âme
-local BagIsSoulPouch = {nil, nil, nil, nil, nil};
-
--- Variable contenant les derniers messages invoqués
-local PetMess = 0
-local SteedMess = 0
-local RezMess = 0
-local TPMess = 0
-
--- Permet la gestion des tooltips dans Necrosis (sans la frame des pièces de monnaie)
-local lOriginal_GameTooltip_ClearMoney;
-
-local Necrosis_In = true;
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS NECROSIS APPLIQUEES A L'ENTREE DANS LE JEU
-------------------------------------------------------------------------------------------------------
-
-
--- Fonction appliquée au chargement
-function Necrosis_OnLoad()
-
- -- Permet de repérer les sorts lancés
- Necrosis_Hook("UseAction", "Necrosis_UseAction", "before");
- Necrosis_Hook("CastSpell", "Necrosis_CastSpell", "before");
- Necrosis_Hook("CastSpellByName", "Necrosis_CastSpellByName", "before");
-
- -- Enregistrement des événements interceptés par Necrosis
- this:RegisterEvent("PLAYER_ENTERING_WORLD");
- this:RegisterEvent("PLAYER_LEAVING_WORLD");
- NecrosisButton:RegisterEvent("BAG_UPDATE");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
- NecrosisButton:RegisterEvent("PLAYER_REGEN_DISABLED");
- NecrosisButton:RegisterEvent("PLAYER_REGEN_ENABLED");
- NecrosisButton:RegisterEvent("UNIT_PET");
- NecrosisButton:RegisterEvent("SPELLCAST_START");
- NecrosisButton:RegisterEvent("SPELLCAST_FAILED");
- NecrosisButton:RegisterEvent("SPELLCAST_INTERRUPTED");
- NecrosisButton:RegisterEvent("SPELLCAST_STOP");
- NecrosisButton:RegisterEvent("LEARNED_SPELL_IN_TAB");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
- NecrosisButton:RegisterEvent("PLAYER_TARGET_CHANGED");
- NecrosisButton:RegisterEvent("TRADE_REQUEST");
- NecrosisButton:RegisterEvent("TRADE_REQUEST_CANCEL");
- NecrosisButton:RegisterEvent("TRADE_SHOW");
- NecrosisButton:RegisterEvent("TRADE_CLOSED");
-
- -- Enregistrement des composants graphiques
- NecrosisButton:RegisterForDrag("LeftButton");
- NecrosisButton:RegisterForClicks("LeftButtonUp", "RightButtonUp");
- NecrosisButton:SetFrameLevel(1);
-
- -- Enregistrement de la commande console
- SlashCmdList["NecrosisCommand"] = Necrosis_SlashHandler;
- SLASH_NecrosisCommand1 = "/necro";
-end
-
-
--- Fonction appliquée une fois les paramètres des mods chargés
-function Necrosis_LoadVariables()
- if Loaded or UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
- return
- end
-
- Necrosis_Initialize();
- Loaded = true ;
-
- -- Détection du type de démon présent à la connexion
- DemonType = UnitCreatureFamily("pet");
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS NECROSIS
-------------------------------------------------------------------------------------------------------
-
--- Fonction lancée à la mise à jour de l'interface (main) -- toutes les 0,1 secondes environ
-function Necrosis_OnUpdate()
-
- -- La fonction n'est utilisée que si Necrosis est initialisé et le joueur un Démoniste --
- if (not Loaded) and UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
- return;
- end
- -- La fonction n'est utilisée que si Necrosis est initialisé et le joueur un Démoniste --
-
-
- -- Gestion des fragments d'âme : Tri des fragment toutes les secondes
- local curTime = GetTime();
- if ((curTime-SoulshardTime) >= 1) then
- SoulshardTime = curTime;
- if (SoulshardMP > 0) then
- Necrosis_SoulshardSwitch("MOVE");
- end
- end
-
- ----------------------------------------------------------
- -- Gestion des sorts du Démoniste
- ----------------------------------------------------------
-
- -- Gestion du menu d'invocation des démons
- if PetShow then
- if GetTime() >= AlphaPetVar and AlphaPetMenu > 0 and (not PetVisible) then
- AlphaPetVar = GetTime() + 0.1;
- NecrosisPetMenu1:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu2:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu3:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu4:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu5:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu6:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu7:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu8:SetAlpha(AlphaPetMenu);
- NecrosisPetMenu9:SetAlpha(AlphaPetMenu);
- AlphaPetMenu = AlphaPetMenu - 0.1;
- end
- if AlphaPetMenu <= 0 then
- Necrosis_PetMenu();
- end
- end
-
- -- Gestion du menu des Buffs
- if BuffShow then
- if GetTime() >= AlphaBuffVar and AlphaBuffMenu > 0 and (not BuffVisible) then
- AlphaBuffVar = GetTime() + 0.1;
- NecrosisBuffMenu1:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu2:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu3:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu4:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu5:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu6:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu7:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu8:SetAlpha(AlphaBuffMenu);
- NecrosisBuffMenu9:SetAlpha(AlphaBuffMenu);
- AlphaBuffMenu = AlphaBuffMenu - 0.1;
- end
- if AlphaBuffMenu <= 0 then
- Necrosis_BuffMenu();
- end
- end
-
- -- Gestion du menu des Curses
- if CurseShow then
- if GetTime() >= AlphaCurseVar and AlphaCurseMenu > 0 and (not CurseVisible) then
- AlphaCurseVar = GetTime() + 0.1;
- NecrosisCurseMenu1:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu2:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu3:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu4:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu5:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu6:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu7:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu8:SetAlpha(AlphaCurseMenu);
- NecrosisCurseMenu9:SetAlpha(AlphaCurseMenu);
- AlphaCurseMenu = AlphaCurseMenu - 0.1;
- end
- if AlphaCurseMenu <= 0 then
- Necrosis_CurseMenu();
- end
- end
-
- -- Gestion du talent "Crépuscule"
- if NecrosisConfig.ShadowTranceAlert then
- local Actif = false;
- local TimeLeft = 0;
- Necrosis_UnitHasTrance();
- if ShadowTranceID ~= -1 then Actif = true; end
- if Actif and not ShadowTrance then
- ShadowTrance = true;
- Necrosis_Msg(NECROSIS_NIGHTFALL_TEXT.Message, "USER");
- if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.ShadowTrance); end
- local ShadowTranceIndex, cancel = GetPlayerBuff(ShadowTranceID,"HELPFUL|HARMFUL|PASSIVE");
- TimeLeft = floor(GetPlayerBuffTimeLeft(ShadowTranceIndex));
- NecrosisShadowTranceTimer:SetText(TimeLeft);
- ShowUIPanel(NecrosisShadowTranceButton);
- end
- if not Actif and ShadowTrance then
- HideUIPanel(NecrosisShadowTranceButton);
- ShadowTrance = false;
- end
- if Actif and ShadowTrance then
- local ShadowTranceIndex, cancel = GetPlayerBuff(ShadowTranceID,"HELPFUL|HARMFUL|PASSIVE");
- TimeLeft = floor(GetPlayerBuffTimeLeft(ShadowTranceIndex));
- NecrosisShadowTranceTimer:SetText(TimeLeft);
- end
- end
-
- -- Gestion des Antifears
- if NecrosisConfig.AntiFearAlert then
- local Actif = false; -- must be False, or a number from 1 to AFImageType[] max element.
-
- -- Checking if we have a target. Any fear need a target to be casted on
- if UnitExists("target") and UnitCanAttack("player", "target") and not UnitIsDead("target") then
- -- Checking if the target has natural immunity (only NPC target)
- if not UnitIsPlayer("target") then
- for index=1, table.getn(NECROSIS_ANTI_FEAR_UNIT), 1 do
- if (UnitCreatureType("target") == NECROSIS_ANTI_FEAR_UNIT[index] ) then
- Actif = 2; -- Immun
- break;
- end
- end
- end
-
- -- We'll start to parse the target buffs, as his class doesn't give him natural permanent immunity
- if not Actif then
- for index=1, table.getn(NECROSIS_ANTI_FEAR_SPELL.Buff), 1 do
- if Necrosis_UnitHasBuff("target",NECROSIS_ANTI_FEAR_SPELL.Buff[index]) then
- Actif = 3; -- Prot
- break;
- end
- end
-
- -- No buff found, let's try the debuffs
- for index=1, table.getn(NECROSIS_ANTI_FEAR_SPELL.Debuff), 1 do
- if Necrosis_UnitHasEffect("target",NECROSIS_ANTI_FEAR_SPELL.Debuff[index]) then
- Actif = 3; -- Prot
- break;
- end
- end
- end
-
- -- an immunity has been detected before, but we still don't know why => show the button anyway
- if AFCurrentTargetImmune and not Actif then
- Actif = 1;
- end
- end
-
- if Actif then
- -- Antifear button is currently not visible, we have to change that
- if not AntiFearInUse then
- AntiFearInUse = true;
- Necrosis_Msg(NECROSIS_MESSAGE.Information.FearProtect, "USER");
- NecrosisAntiFearButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\AntiFear"..AFImageType[Actif].."-02");
- if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.Fear); end
- ShowUIPanel(NecrosisAntiFearButton);
- AFBlink1 = GetTime() + 0.6;
- AFBlink2 = 2;
-
- -- Timer to make the button blink
- elseif GetTime() >= AFBlink1 then
- if AFBlink2 == 1 then
- AFBlink2 = 2;
- else
- AFBlink2 = 1;
- end
- AFBlink1 = GetTime() + 0.4;
- NecrosisAntiFearButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\AntiFear"..AFImageType[Actif].."-0"..AFBlink2);
- end
-
- elseif AntiFearInUse then -- No antifear on target, but the button is still visible => gonna hide it
- AntiFearInUse = false;
- HideUIPanel(NecrosisAntiFearButton);
- end
- end
-
- -- Gestion du Timer des sorts
- if (not NecrosisSpellTimerButton:IsVisible()) then
- ShowUIPanel(NecrosisSpellTimerButton);
- end
- local display = "";
-
- if NecrosisConfig.CountType == 3 then
- NecrosisShardCount:SetText("");
- end
- local update = false;
- if ((curTime - SpellCastTime) >= 1) then
- SpellCastTime = curTime;
- update = true;
- end
-
- -- On met à jour les boutons toutes les secondes
- -- On accepte le trade de la pierre de soin si transfert en cours
- if update then
- if Trading then
- TradingNow = TradingNow - 1;
- if TradingNow == 0 then
- AcceptTrade();
- Trading = false;
- end
- end
- Necrosis_UpdateIcons();
- end
-
- -- Parcours du tableau des Timers
- local GraphicalTimer = {texte = {}, TimeMax = {}, Time = {}, titre = {}, temps = {}, Gtimer = {}};
- if SpellTimer then
- for index = 1, table.getn(SpellTimer), 1 do
- if SpellTimer[index] then
- if (GetTime() <= SpellTimer[index].TimeMax) then
- -- Création de l'affichage des timers
- display, SpellGroup, GraphicalTimer, TimerTable = Necrosis_DisplayTimer(display, index, SpellGroup, SpellTimer, GraphicalTimer, TimerTable);
- end
- -- Action toutes les secondes
- if (update) then
- -- On enlève les timers terminés
- local TimeLocal = GetTime();
- if TimeLocal >= (SpellTimer[index].TimeMax - 0.5) and SpellTimer[index].TimeMax ~= -1 then
- -- Si le timer était celui de la Pierre d'âme, on prévient le Démoniste
- if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
- Necrosis_Msg(NECROSIS_MESSAGE.Information.SoulstoneEnd, "USER");
- SpellTimer[index].Target = "";
- SpellTimer[index].TimeMax = -1;
- if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.SoulstoneEnd); end
- Necrosis_RemoveFrame(SpellTimer[index].Gtimer, TimerTable);
- -- On met à jour l'apparence du bouton de la pierre d'âme
- Necrosis_UpdateIcons();
- -- Sinon on enlève le timer silencieusement (mais pas en cas d'enslave)
- elseif SpellTimer[index].Name ~= NECROSIS_SPELL_TABLE[10].Name then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
- index = 0;
- break;
- end
- end
- -- Si le Démoniste n'est plus sous l'emprise du Sacrifice
- if SpellTimer and SpellTimer[index].Name == NECROSIS_SPELL_TABLE[17].Name then -- Sacrifice
- if not Necrosis_UnitHasEffect("player", SpellTimer[index].Name) and SpellTimer[index].TimeMax ~= nil then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
- index = 0;
- break;
- end
- end
- -- Si la cible visée n'est plus atteinte par un sort lancé [résists]
- if SpellTimer and (SpellTimer[index].Type == 4 or SpellTimer[index].Type == 5)
- and SpellTimer[index].Target == UnitName("target")
- then
- -- On triche pour laisser le temps au mob de bien sentir qu'il est débuffé ^^
- if TimeLocal >= ((SpellTimer[index].TimeMax - SpellTimer[index].Time) + 1.5)
- and SpellTimer[index] ~= 6 then
- if not Necrosis_UnitHasEffect("target", SpellTimer[index].Name) then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
- index = 0;
- break;
- end
- end
- end
- end
- end
- end
- else
- for i = 1, 10, 1 do
- local frameName = "NecrosisTarget"..i.."Text";
- local frameItem = getglobal(frameName);
- if frameItem:IsShown() then
- frameItem:Hide();
- end
- end
- end
-
- if NecrosisConfig.ShowSpellTimers or NecrosisConfig.Graphical then
- -- Si affichage de timer texte
- if not NecrosisConfig.Graphical then
- -- Coloration de l'affichage des timers
- display = Necrosis_MsgAddColor(display);
- -- Affichage des timers
- NecrosisListSpells:SetText(display);
- else
- NecrosisListSpells:SetText("");
- end
- for i = 4, table.getn(SpellGroup.Name) do
- SpellGroup.Visible[i] = false;
- end
- else
- if (NecrosisSpellTimerButton:IsVisible()) then
- NecrosisListSpells:SetText("");
- HideUIPanel(NecrosisSpellTimerButton);
- end
- end
-end
-
--- Fonction lancée selon l'événement intercepté
-function Necrosis_OnEvent(event)
- if (event == "PLAYER_ENTERING_WORLD") then
- Necrosis_In = true;
- elseif (event == "PLAYER_LEAVING_WORLD") then
- Necrosis_In = false;
- end
-
- -- Traditionnel test : Le joueur est-il bien Démoniste ?
- -- Le jeu est-il bine chargé ?
- if (not Loaded) or (not Necrosis_In) or UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
- return;
- end
-
- -- Si le contenu des sacs a changé, on vérifie que les Fragments d'âme sont toujours dans le bon sac
- if (event == "BAG_UPDATE") then
- if (NecrosisConfig.SoulshardSort) then
- Necrosis_SoulshardSwitch("CHECK");
- else
- Necrosis_BagExplore();
- end
- -- Gestion de la fin de l'incantation des sorts
- elseif (event == "SPELLCAST_STOP") then
- Necrosis_SpellManagement();
- -- Quand le démoniste commence à incanter un sort, on intercepte le nom de celui-ci
- -- On sauve également le nom de la cible du sort ainsi que son niveau
- elseif (event == "SPELLCAST_START") then
- SpellCastName = arg1;
- SpellTargetName = UnitName("target");
- if not SpellTargetName then
- SpellTargetName = "";
- end
- SpellTargetLevel = UnitLevel("target");
- if not SpellTargetLevel then
- SpellTargetLevel = "";
- end
- -- Quand le démoniste stoppe son incantation, on relache le nom de celui-ci
- elseif (event == "SPELLCAST_FAILED") or (event == "SPELLCAST_INTERRUPTED") then
- SpellCastName = nil;
- SpellCastRank = nil;
- SpellTargetName = nil;
- SpellTargetLevel = nil;
- -- Flag si une fenetre de Trade est ouverte, afin de pouvoir trader automatiquement les pierres de soin
- elseif event == "TRADE_REQUEST" or event == "TRADE_SHOW" then
- NecrosisTradeRequest = true;
- elseif event == "TRADE_REQUEST_CANCEL" or event == "TRADE_CLOSED" then
- NecrosisTradeRequest = false;
- -- AntiFear button hide on target change
- elseif event == "PLAYER_TARGET_CHANGED" then
- if NecrosisConfig.AntiFearAlert and AFCurrentTargetImmune then
- AFCurrentTargetImmune = false;
- end
- -- AntiFear immunity on cast detection
- elseif event == "CHAT_MSG_SPELL_SELF_DAMAGE" then
- if NecrosisConfig.AntiFearAlert then
- for spell, creatureName in string.gfind(arg1, NECROSIS_ANTI_FEAR_SRCH) do
- -- We check if the casted spell on the immune target is Fear or Death Coil
- if spell == NECROSIS_SPELL_TABLE[13].Name or spell == NECROSIS_SPELL_TABLE[19].Name then
- AFCurrentTargetImmune = true;
- break;
- end
- end
- end
-
- -- Si le Démoniste apprend un nouveau sort / rang de sort, on récupère la nouvelle liste des sorts
- -- Si le Démoniste apprend un nouveau sort de buff ou d'invocation, on recrée les boutons
- elseif (event == "LEARNED_SPELL_IN_TAB") then
- Necrosis_SpellSetup();
- Necrosis_CreateMenu();
- Necrosis_ButtonSetup();
-
- -- A la fin du combat, on arrête de signaler le Crépuscule
- -- On enlève les timers de sorts ainsi que les noms des mobs
- elseif (event == "PLAYER_REGEN_ENABLED") then
- PlayerCombat = false;
- SpellGroup, SpellTimer, TimerTable = Necrosis_RetraitTimerCombat(SpellGroup, SpellTimer, TimerTable);
- for i = 1, 10, 1 do
- local frameName = "NecrosisTarget"..i.."Text";
- local frameItem = getglobal(frameName);
- if frameItem:IsShown() then
- frameItem:Hide();
- end
- end
- -- Quand le démoniste change de démon
- elseif (event == "UNIT_PET" and arg1 == "player") then
- Necrosis_ChangeDemon();
- -- Actions personnelles -- "Buffs"
- elseif (event == "CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS") then
- Necrosis_SelfEffect("BUFF");
- -- Actions personnelles -- "Debuffs"
- elseif event == "CHAT_MSG_SPELL_AURA_GONE_SELF" or event == "CHAT_MSG_SPELL_BREAK_AURA" then
- Necrosis_SelfEffect("DEBUFF");
- elseif event == "PLAYER_REGEN_DISABLED" then
- PlayerCombat = true;
- -- Fin de l'écran de chargement
- end
- return;
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS NECROSIS "ON EVENT"
-------------------------------------------------------------------------------------------------------
-
--- Events : PLAYER_ENTERING_WORLD et PLAYER_LEAVING_WORLD
--- Fonction appliquée à chaque écran de chargement
--- Quand on sort d'une zone, on arrête de surveiller les envents
--- Quand on rentre dans une zone, on reprend la surveillance
--- Cela permet d'éviter un temps de chargement trop long du mod
-function Necrosis_RegisterManagement(RegistrationType)
- if RegistrationType == "IN" then
- NecrosisButton:RegisterEvent("BAG_UPDATE");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
- NecrosisButton:RegisterEvent("PLAYER_REGEN_DISABLED");
- NecrosisButton:RegisterEvent("PLAYER_REGEN_ENABLED");
- NecrosisButton:RegisterEvent("UNIT_PET");
- NecrosisButton:RegisterEvent("SPELLCAST_START");
- NecrosisButton:RegisterEvent("SPELLCAST_FAILED");
- NecrosisButton:RegisterEvent("SPELLCAST_INTERRUPTED");
- NecrosisButton:RegisterEvent("SPELLCAST_STOP");
- NecrosisButton:RegisterEvent("LEARNED_SPELL_IN_TAB");
- NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
- NecrosisButton:RegisterEvent("PLAYER_TARGET_CHANGED");
- NecrosisButton:RegisterEvent("TRADE_REQUEST");
- NecrosisButton:RegisterEvent("TRADE_REQUEST_CANCEL");
- NecrosisButton:RegisterEvent("TRADE_SHOW");
- NecrosisButton:RegisterEvent("TRADE_CLOSED");
- else
- NecrosisButton:UnregisterEvent("BAG_UPDATE");
- NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
- NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
- NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
- NecrosisButton:UnregisterEvent("PLAYER_REGEN_DISABLED");
- NecrosisButton:UnregisterEvent("PLAYER_REGEN_ENABLED");
- NecrosisButton:UnregisterEvent("UNIT_PET");
- NecrosisButton:UnregisterEvent("SPELLCAST_START");
- NecrosisButton:UnregisterEvent("SPELLCAST_FAILED");
- NecrosisButton:UnregisterEvent("SPELLCAST_INTERRUPTED");
- NecrosisButton:UnregisterEvent("SPELLCAST_STOP");
- NecrosisButton:UnregisterEvent("LEARNED_SPELL_IN_TAB");
- NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
- NecrosisButton:UnregisterEvent("PLAYER_TARGET_CHANGED");
- NecrosisButton:UnregisterEvent("TRADE_REQUEST");
- NecrosisButton:UnregisterEvent("TRADE_REQUEST_CANCEL");
- NecrosisButton:UnregisterEvent("TRADE_SHOW");
- NecrosisButton:UnregisterEvent("TRADE_CLOSED");
- end
- return;
-end
-
--- event : UNIT_PET
--- Permet de timer les asservissements, ainsi que de prévenir pour les ruptures d'asservissement
--- Change également le nom du pet au remplacement de celui-ci
-function Necrosis_ChangeDemon()
- -- Si le nouveau démon est un démon asservi, on place un timer de 5 minutes
- if (Necrosis_UnitHasEffect("pet", NECROSIS_SPELL_TABLE[10].Name)) then
- if (not DemonEnslaved) then
- DemonEnslaved = true;
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(10, "","", SpellGroup, SpellTimer, TimerTable);
- end
- else
- -- Quand le démon asservi est perdu, on retire le Timer et on prévient le Démoniste
- if (DemonEnslaved) then
- DemonEnslaved = false;
- SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_SPELL_TABLE[10].Name, SpellTimer, TimerTable);
- if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.EnslaveEnd); end
- Necrosis_Msg(NECROSIS_MESSAGE.Information.EnslaveBreak, "USER");
- end
- end
-
- -- Si le démon n'est pas asservi on définit son titre, et on met à jour son nom dans Necrosis
- DemonType = UnitCreatureFamily("pet");
- for i = 1, 4, 1 do
- if DemonType == NECROSIS_PET_LOCAL_NAME[i] and NecrosisConfig.PetName[i] == " " and UnitName("pet") ~= UNKNOWNOBJECT then
- NecrosisConfig.PetName[i] = UnitName("pet");
- NecrosisLocalization();
- break;
- end
- end
-
- return;
-end
-
--- events : CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS, CHAT_MSG_SPELL_AURA_GONE_SELF et CHAT_MSG_SPELL_BREAK_AURA
--- Permet de gérer les effets apparaissants et disparaissants sur le démoniste
--- Basé sur le CombatLog
-function Necrosis_SelfEffect(action)
- if action == "BUFF" then
- -- Insertion d'un timer quand le Démoniste subit "Sacrifice"
- if arg1 == NECROSIS_TRANSLATION.SacrificeGain then
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(17, "", "", SpellGroup, SpellTimer, TimerTable);
- end
- -- Changement du bouton de monture quand le Démoniste chevauche
- if string.find(arg1, NECROSIS_SPELL_TABLE[1].Name) or string.find(arg1, NECROSIS_SPELL_TABLE[2].Name) then
- NecrosisMounted = true;
- if NecrosisConfig.SteedSummon and NecrosisTellMounted
- and NecrosisConfig.ChatMsg and NECROSIS_PET_MESSAGE[6] and not NecrosisConfig.SM
- then
- local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[6]));
- while tempnum == SteedMess and table.getn(NECROSIS_PET_MESSAGE[6]) >= 2 do
- tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[6]));
- end
- SteedMess = tempnum;
- for i = 1, table.getn(NECROSIS_PET_MESSAGE[6][tempnum]) do
- Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[6][tempnum][i]), "SAY");
- end
- NecrosisTellMounted = false;
- end
- NecrosisMountButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\MountButton-02");
-
- end
- -- Changement du bouton de la domination corrompue si celle-ci est activée + Timer de cooldown
- if string.find(arg1, NECROSIS_SPELL_TABLE[15].Name) and NECROSIS_SPELL_TABLE[15].ID ~= nil then
- DominationUp = true;
- NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-02");
- end
- -- Changement du bouton de la malédiction amplifiée si celle-ci est activée + Timer de cooldown
- if string.find(arg1, NECROSIS_SPELL_TABLE[42].Name) and NECROSIS_SPELL_TABLE[42].ID ~= nil then
- AmplifyUp = true;
- NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-02");
- end
- else
- -- Changement du bouton de monture quand le Démoniste est démonté
- if string.find(arg1, NECROSIS_SPELL_TABLE[1].Name) or string.find(arg1, NECROSIS_SPELL_TABLE[2].Name) then
- NecrosisMounted = false;
- NecrosisTellMounted = true;
- NecrosisMountButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\MountButton-01");
- end
- -- Changement du bouton de Domination quand le Démoniste n'est plus sous son emprise
- if string.find(arg1, NECROSIS_SPELL_TABLE[15].Name) and NECROSIS_SPELL_TABLE[15].ID ~= nil then
- DominationUp = false;
- NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-01");
- end
- -- Changement du bouton de la malédiction amplifiée quand le Démoniste n'est plus sous son emprise
- if string.find(arg1, NECROSIS_SPELL_TABLE[42].Name) and NECROSIS_SPELL_TABLE[42].ID ~= nil then
- AmplifyUp = false;
- NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-01");
- end
- end
- return;
-end
-
--- event : SPELLCAST_STOP
--- Permet de gérer tout ce qui touche aux sorts une fois leur incantation réussie
-function Necrosis_SpellManagement()
- local SortActif = false;
- if (SpellCastName) then
- -- Si le sort lancé à été une Résurrection de Pierre d'âme, on place un timer
- if (SpellCastName == NECROSIS_SPELL_TABLE[11].Name) then
- if SpellTargetName == UnitName("player") then
- SpellTargetName = "";
- end
- -- Si les messages sont actifs et que la pierre est posée sur un joueur ciblé, hop, message !
- if (NecrosisConfig.ChatMsg or NecrosisConfig.SM)
- and SoulstoneUsedOnTarget then
- SoulstoneTarget = SpellTargetName;
- SoulstoneAdvice = true;
- end
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(11, SpellTargetName, "", SpellGroup, SpellTimer, TimerTable);
- -- Si le sort était un rituel d'invocation, alors on écrit une phrase a caractère informatif aux joueurs
- elseif (SpellCastName == NECROSIS_TRANSLATION.SummoningRitual)
- and (NecrosisConfig.ChatMsg or NecrosisConfig.SM)
- and NECROSIS_INVOCATION_MESSAGES then
- local tempnum = random(1, table.getn(NECROSIS_INVOCATION_MESSAGES));
- while tempnum == TPMess and table.getn(NECROSIS_INVOCATION_MESSAGES) >= 2 do
- tempnum = random(1, table.getn(NECROSIS_INVOCATION_MESSAGES));
- end
- TPMess = tempnum;
- for i = 1, table.getn(NECROSIS_INVOCATION_MESSAGES[tempnum]) do
- Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_INVOCATION_MESSAGES[tempnum][i], SpellTargetName), "WORLD");
- end
- -- Pour les autres sorts castés, tentative de timer si valable
- else
- for spell=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
- if SpellCastName == NECROSIS_SPELL_TABLE[spell].Name and not (spell == 10) then
- -- Si le timer existe déjà sur la cible, on le met à jour
- for thisspell=1, table.getn(SpellTimer), 1 do
- if SpellTimer[thisspell].Name == SpellCastName
- and SpellTimer[thisspell].Target == SpellTargetName
- and SpellTimer[thisspell].TargetLevel == SpellTargetLevel
- and NECROSIS_SPELL_TABLE[spell].Type ~= 4
- and spell ~= 16
- then
- -- Si c'est sort lancé déjà présent sur un mob, on remet le timer à fond
- if spell ~= 9 or (spell == 9 and not Necrosis_UnitHasEffect("target", SpellCastName)) then
- SpellTimer[thisspell].Time = NECROSIS_SPELL_TABLE[spell].Length;
- SpellTimer[thisspell].TimeMax = floor(GetTime() + NECROSIS_SPELL_TABLE[spell].Length);
- if spell == 9 and SpellCastRank == 1 then
- SpellTimer[thisspell].Time = 20;
- SpellTimer[thisspell].TimeMax = floor(GetTime() + 20);
- end
- end
- SortActif = true;
- break;
- end
- -- Si c'est un banish sur une nouvelle cible, on supprime le timer précédent
- if SpellTimer[thisspell].Name == SpellCastName and spell == 9
- and
- (SpellTimer[thisspell].Target ~= SpellTargetName
- or SpellTimer[thisspell].TargetLevel ~= SpellTargetLevel)
- then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
- SortActif = false;
- break;
- end
-
- -- Si c'est un fear, on supprime le timer du fear précédent
- if SpellTimer[thisspell].Name == SpellCastName and spell == 13 then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
- SortActif = false;
- break;
- end
- if SortActif then break; end
- end
- -- Si le timer est une malédiction, on enlève la précédente malédiction sur la cible
- if (NECROSIS_SPELL_TABLE[spell].Type == 4) or (spell == 16) then
- for thisspell=1, table.getn(SpellTimer), 1 do
- -- Mais on garde le cooldown de la malédiction funeste
- if SpellTimer[thisspell].Name == NECROSIS_SPELL_TABLE[16].Name then
- SpellTimer[thisspell].Target = "";
- SpellTimer[thisspell].TargetLevel = "";
- end
- if SpellTimer[thisspell].Type == 4
- and SpellTimer[thisspell].Target == SpellTargetName
- and SpellTimer[thisspell].TargetLevel == SpellTargetLevel
- then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
- break;
- end
- end
- SortActif = false;
- end
- if not SortActif
- and NECROSIS_SPELL_TABLE[spell].Type ~= 0
- and spell ~= 10
- then
-
- if spell == 9 then
- if SpellCastRank == 1 then
- NECROSIS_SPELL_TABLE[spell].Length = 20;
- else
- NECROSIS_SPELL_TABLE[spell].Length = 30;
- end
- end
-
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(spell, SpellTargetName, SpellTargetLevel, SpellGroup, SpellTimer, TimerTable);
- break;
- end
- end
- end
- end
- end
- SpellCastName = nil;
- SpellCastRank = nil;
- return;
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DE L'INTERFACE -- LIENS XML
-------------------------------------------------------------------------------------------------------
-
--- En cliquant droit sur Necrosis, on affiche ou masque les deux panneaux de configurations
-function Necrosis_Toggle(button)
- if button == "LeftButton" then
- if NECROSIS_SPELL_TABLE[41].ID then
- CastSpell(NECROSIS_SPELL_TABLE[41].ID, "spell");
- end
- return;
- elseif (NecrosisGeneralFrame:IsVisible()) then
- HideUIPanel(NecrosisGeneralFrame);
- return;
- else
- if NecrosisConfig.SM then
- Necrosis_Msg("!!! Short Messages : On", "USER");
- end
- ShowUIPanel(NecrosisGeneralFrame);
- NecrosisGeneralTab_OnClick(1);
- return;
- end
-end
-
--- Fonction permettant le déplacement d'éléments de Necrosis sur l'écran
-function Necrosis_OnDragStart(button)
- if (button == "NecrosisIcon") then GameTooltip:Hide(); end
- button:StartMoving();
-end
-
--- Fonction arrêtant le déplacement d'éléments de Necrosis sur l'écran
-function Necrosis_OnDragStop(button)
- if (button == "NecrosisIcon") then Necrosis_BuildTooltip("OVERALL"); end
- button:StopMovingOrSizing();
-end
-
--- Fonction alternant Timers graphiques et Timers textes
-function Necrosis_HideGraphTimer()
- for i = 1, 50, 1 do
- local elements = {"Text", "Bar", "Texture", "OutText"}
- if NecrosisConfig.Graphical then
- if TimerTable[i] then
- for j = 1, 4, 1 do
- frameName = "NecrosisTimer"..i..elements[j];
- frameItem = getglobal(frameName);
- frameItem:Show();
- end
- end
- else
- for j = 1, 4, 1 do
- frameName = "NecrosisTimer"..i..elements[j];
- frameItem = getglobal(frameName);
- frameItem:Hide();
- end
- end
- end
-end
-
--- Fonction gérant les bulles d'aide
-function Necrosis_BuildTooltip(button, type, anchor)
-
- -- Si l'affichage des bulles d'aide est désactivé, Bye bye !
- if not NecrosisConfig.NecrosisToolTip then
- return;
- end
-
- -- On regarde si la domination corrompue, le gardien de l'ombre ou l'amplification de malédiction sont up (pour tooltips)
- local start, duration, start2, duration2, start3, duration3
- if NECROSIS_SPELL_TABLE[15].ID then
- start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, BOOKTYPE_SPELL);
- else
- start = 1;
- duration = 1;
- end
- if NECROSIS_SPELL_TABLE[43].ID then
- start2, duration2 = GetSpellCooldown(NECROSIS_SPELL_TABLE[43].ID, BOOKTYPE_SPELL);
- else
- start2 = 1;
- duration2 = 1;
- end
- if NECROSIS_SPELL_TABLE[42].ID then
- start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, BOOKTYPE_SPELL);
- else
- start3 = 1;
- duration3 = 1;
- end
-
- -- Création des bulles d'aides....
- GameTooltip:SetOwner(button, anchor);
- GameTooltip:SetText(NecrosisTooltipData[type].Label);
- -- ..... pour le bouton principal
- if (type == "Main") then
- GameTooltip:AddLine(NecrosisTooltipData.Main.Soulshard..Soulshards);
- GameTooltip:AddLine(NecrosisTooltipData.Main.InfernalStone..InfernalStone);
- GameTooltip:AddLine(NecrosisTooltipData.Main.DemoniacStone..DemoniacStone);
- GameTooltip:AddLine(NecrosisTooltipData.Main.Soulstone..NecrosisTooltipData[type].Stone[SoulstoneOnHand]);
- GameTooltip:AddLine(NecrosisTooltipData.Main.Healthstone..NecrosisTooltipData[type].Stone[HealthstoneOnHand]);
- -- On vérifie si une pierre de sort n'est pas équipée
- NecrosisTooltip:SetInventoryItem("player", 17);
- local rightHand = tostring(NecrosisTooltipTextLeft1:GetText());
- if string.find(rightHand, NECROSIS_ITEM.Spellstone) then SpellstoneOnHand = true; end
- GameTooltip:AddLine(NecrosisTooltipData.Main.Spellstone..NecrosisTooltipData[type].Stone[SpellstoneOnHand]);
- -- De même pour la pierre de feu
- if string.find(rightHand, NECROSIS_ITEM.Firestone) then FirestoneOnHand = true; end
- GameTooltip:AddLine(NecrosisTooltipData.Main.Firestone..NecrosisTooltipData[type].Stone[FirestoneOnHand]);
- -- Affichage du nom du démon, ou s'il est asservi, ou "Aucun" si aucun démon n'est présent
- if (DemonType) then
- GameTooltip:AddLine(NecrosisTooltipData.Main.CurrentDemon..DemonType);
- elseif DemonEnslaved then
- GameTooltip:AddLine(NecrosisTooltipData.Main.EnslavedDemon);
- else
- GameTooltip:AddLine(NecrosisTooltipData.Main.NoCurrentDemon);
- end
- -- ..... pour les boutons de pierre
- elseif (string.find(type, "stone")) then
- -- Pierre d'âme
- if (type == "Soulstone") then
- -- On affiche le nom de la pierre et l'action que produira le clic sur le bouton
- -- Et aussi le Temps de recharge
- if SoulstoneMode == 1 or SoulstoneMode == 3 then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[1]].Mana.." Mana");
- end
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(SoulstoneLocation[1], SoulstoneLocation[2]);
- local itemName = tostring(NecrosisTooltipTextLeft6:GetText());
- GameTooltip:AddLine(NecrosisTooltipData[type].Text[SoulstoneMode]);
- if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
- GameTooltip:AddLine(itemName);
- end
- -- Pierre de vie
- elseif (type == "Healthstone") then
- -- Idem
- if HealthstoneMode == 1 then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[2]].Mana.." Mana");
- end
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(HealthstoneLocation[1], HealthstoneLocation[2]);
- local itemName = tostring(NecrosisTooltipTextLeft6:GetText());
- GameTooltip:AddLine(NecrosisTooltipData[type].Text[HealthstoneMode]);
- if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
- GameTooltip:AddLine(itemName);
- end
- -- Pierre de sort
- elseif (type == "Spellstone") then
- -- Eadem
- if SpellstoneMode == 1 then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[3]].Mana.." Mana");
- end
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetInventoryItem("player", 17);
- local itemName = tostring(NecrosisTooltipTextLeft9:GetText());
- local itemStone = tostring(NecrosisTooltipTextLeft1:GetText());
- GameTooltip:AddLine(NecrosisTooltipData[type].Text[SpellstoneMode]);
- if (string.find(itemStone, NECROSIS_ITEM.Spellstone)
- and string.find(itemName, NECROSIS_TRANSLATION.Cooldown)) then
- GameTooltip:AddLine(itemName);
- end
- -- Pierre de feu
- elseif (type == "Firestone") then
- -- Idem, mais sans le cooldown
- if FirestoneMode == 1 then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[4]].Mana.." Mana");
- end
- GameTooltip:AddLine(NecrosisTooltipData[type].Text[FirestoneMode]);
- end
- -- ..... pour le bouton des Timers
- elseif (type == "SpellTimer") then
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(HearthstoneLocation[1], HearthstoneLocation[2]);
- local itemName = tostring(NecrosisTooltipTextLeft5:GetText());
- GameTooltip:AddLine(NecrosisTooltipData[type].Text);
- if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
- GameTooltip:AddLine(NECROSIS_TRANSLATION.Hearth.." - "..itemName);
- else
- GameTooltip:AddLine(NecrosisTooltipData[type].Right..GetBindLocation());
- end
-
- -- ..... pour le bouton de la Transe de l'ombre
- elseif (type == "ShadowTrance") then
- local rank = Necrosis_FindSpellAttribute("Name", NECROSIS_NIGHTFALL.BoltName, "Rank");
- GameTooltip:SetText(NecrosisTooltipData[type].Label.." |CFF808080Rank "..rank.."|r");
- -- ..... pour les autres buffs et démons, le coût en mana...
- elseif (type == "Enslave") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[35].Mana.." Mana");
- if Soulshards == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
- end
- elseif (type == "Mount") then
- if NECROSIS_SPELL_TABLE[2].ID then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[2].Mana.." Mana");
- elseif NECROSIS_SPELL_TABLE[1].ID then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[1].Mana.." Mana");
- end
- elseif (type == "Armor") then
- if NECROSIS_SPELL_TABLE[31].ID then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[31].Mana.." Mana");
- else
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[36].Mana.." Mana");
- end
- elseif (type == "Invisible") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[33].Mana.." Mana");
- elseif (type == "Aqua") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[32].Mana.." Mana");
- elseif (type == "Kilrogg") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[34].Mana.." Mana");
- elseif (type == "Banish") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[9].Mana.." Mana");
- elseif (type == "Weakness") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[23].Mana.." Mana");
- if not (start3 > 0 and duration3 > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
- end
- elseif (type == "Agony") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[22].Mana.." Mana");
- if not (start3 > 0 and duration3 > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
- end
- elseif (type == "Reckless") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[24].Mana.." Mana");
- elseif (type == "Tongues") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[25].Mana.." Mana");
- elseif (type == "Exhaust") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[40].Mana.." Mana");
- if not (start3 > 0 and duration3 > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
- end
- elseif (type == "Elements") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[26].Mana.." Mana");
- elseif (type == "Shadow") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[27].Mana.." Mana");
- elseif (type == "Doom") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[16].Mana.." Mana");
- elseif (type == "Amplify") then
- if start3 > 0 and duration3 > 0 then
- local seconde = duration3 - ( GetTime() - start3)
- local affiche, minute, time
- if seconde <= 59 then
- affiche = tostring(floor(seconde)).." sec";
- else
- minute = tostring(floor(seconde/60))
- seconde = mod(seconde, 60);
- if seconde <= 9 then
- time = "0"..tostring(floor(seconde));
- else
- time = tostring(floor(seconde));
- end
- affiche = minute..":"..time;
- end
- GameTooltip:AddLine("Cooldown : "..affiche);
- end
- elseif (type == "TP") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[37].Mana.." Mana");
- if Soulshards == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
- end
- elseif (type == "SoulLink") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[38].Mana.." Mana");
- elseif (type == "ShadowProtection") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[43].Mana.." Mana");
- if start2 > 0 and duration2 > 0 then
- local seconde = duration2 - ( GetTime() - start2)
- local affiche
- affiche = tostring(floor(seconde)).." sec";
- GameTooltip:AddLine("Cooldown : "..affiche);
- end
- elseif (type == "Domination") then
- if start > 0 and duration > 0 then
- local seconde = duration - ( GetTime() - start)
- local affiche, minute, time
- if seconde <= 59 then
- affiche = tostring(floor(seconde)).." sec";
- else
- minute = tostring(floor(seconde/60))
- seconde = mod(seconde, 60);
- if seconde <= 9 then
- time = "0"..tostring(floor(seconde));
- else
- time = tostring(floor(seconde));
- end
- affiche = minute..":"..time;
- end
- GameTooltip:AddLine("Cooldown : "..affiche);
- end
- elseif (type == "Imp") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[3].Mana.." Mana");
- if not (start > 0 and duration > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
- end
-
- elseif (type == "Void") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[4].Mana.." Mana");
- if Soulshards == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
- elseif not (start > 0 and duration > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
- end
- elseif (type == "Succubus") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[5].Mana.." Mana");
- if Soulshards == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
- elseif not (start > 0 and duration > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
- end
- elseif (type == "Fel") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[6].Mana.." Mana");
- if Soulshards == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
- elseif not (start > 0 and duration > 0) then
- GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
- end
- elseif (type == "Infernal") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[8].Mana.." Mana");
- if InfernalStone == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.InfernalStone..InfernalStone.."|r");
- else
- GameTooltip:AddLine(NecrosisTooltipData.Main.InfernalStone..InfernalStone);
- end
- elseif (type == "Doomguard") then
- GameTooltip:AddLine(NECROSIS_SPELL_TABLE[30].Mana.." Mana");
- if DemoniacStone == 0 then
- GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.DemoniacStone..DemoniacStone.."|r");
- else
- GameTooltip:AddLine(NecrosisTooltipData.Main.DemoniacStone..DemoniacStone);
- end
- elseif (type == "Buff") and LastBuff ~= 0 then
- GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_SPELL_TABLE[LastBuff].Name);
- elseif (type == "Curse") and LastCurse ~= 0 then
- GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_SPELL_TABLE[LastCurse].Name);
- elseif (type == "Pet") and LastDemon ~= 0 then
- GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_PET_LOCAL_NAME[(LastDemon - 2)]);
- end
- -- Et hop, affichage !
- GameTooltip:Show();
-end
-
--- Fonction mettant à jour les boutons Necrosis et donnant l'état du bouton de la pierre d'âme
-function Necrosis_UpdateIcons()
- -- Pierre d'âme
- -----------------------------------------------
-
- -- On se renseigne pour savoir si une pierre d'âme a été utilisée --> vérification dans les timers
- local SoulstoneInUse = false;
- if SpellTimer then
- for index = 1, table.getn(SpellTimer), 1 do
- if (SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name) and SpellTimer[index].TimeMax > 0 then
- SoulstoneInUse = true;
- break;
- end
- end
- end
-
- -- Si la Pierre n'a pas été utilisée, et qu'il n'y a pas de pierre en inventaire -> Mode 1
- if not (SoulstoneOnHand or SoulstoneInUse) then
- SoulstoneMode = 1;
- SoulstoneWaiting = false;
- SoulstoneCooldown = false;
- end
-
- -- Si la Pierre n'a pas été utilisée, mais qu'il y a une pierre en inventaire
- if SoulstoneOnHand and (not SoulstoneInUse) then
- -- Si la pierre en inventaire contient un timer, et qu'on sort d'un RL --> Mode 4
- local start, duration = GetContainerItemCooldown(SoulstoneLocation[1],SoulstoneLocation[2]);
- if NecrosisRL and start > 0 and duration > 0 then
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone("Soulstone", start, duration, SpellGroup, SpellTimer, TimerTable);
- SoulstoneMode = 4;
- NecrosisRL = false;
- SoulstoneWaiting = false;
- SoulstoneCooldown = true;
- -- Si la pierre ne contient pas de timer, ou qu'on ne sort pas d'un RL --> Mode 2
- else
- SoulstoneMode = 2;
- NecrosisRL = false;
- SoulstoneWaiting = false;
- SoulstoneCooldown = false;
- end
- end
-
- -- Si la Pierre a été utilisée mais qu'il n'y a pas de pierre en inventaire --> Mode 3
- if (not SoulstoneOnHand) and SoulstoneInUse then
- SoulstoneMode = 3;
- SoulstoneWaiting = true;
- -- Si on vient de poser la pierre, on l'annonce au raid
- if SoulstoneAdvice and NECROSIS_SOULSTONE_ALERT_MESSAGE then
- local tempnum = random(1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE));
- while tempnum == RezMess and table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE) >= 2 do
- tempnum = random(1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE));
- end
- RezMess = tempnum;
- for i = 1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE[tempnum]) do
- Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_SOULSTONE_ALERT_MESSAGE[tempnum][i], SoulstoneTarget), "WORLD");
- end
- SoulstoneAdvice = false;
- end
- end
-
- -- Si la Pierre a été utilisée et qu'il y a une pierre en inventaire
- if SoulstoneOnHand and SoulstoneInUse then
- SoulstoneAdvice = false;
- if not (SoulstoneWaiting or SoulstoneCooldown) then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_SPELL_TABLE[11].Name, SpellTimer, TimerTable);
- SoulstoneMode = 2;
- else
- SoulstoneWaiting = false;
- SoulstoneCooldown = true;
- SoulstoneMode = 4;
- end
- end
-
- -- Affichage de l'icone liée au mode
- NecrosisSoulstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SoulstoneButton-0"..SoulstoneMode);
-
- -- Pierre de vie
- -----------------------------------------------
-
- -- Mode "j'en ai une" (2) / "j'en ai pas" (1)
- if (HealthstoneOnHand) then
- HealthstoneMode = 2;
- else
- HealthstoneMode = 1;
- end
-
- -- Affichage de l'icone liée au mode
- NecrosisHealthstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\HealthstoneButton-0"..HealthstoneMode);
-
- -- Pierre de sort
- -----------------------------------------------
-
- -- Si la pierre est équipée, mode 3
- local rightHand = GetInventoryItemTexture("player", 17);
- if (rightHand == "Interface\\Icons\\INV_Misc_Gem_Sapphire_01" and not SpellstoneOnHand) then
- SpellstoneMode = 3;
- else
- -- Pierre dans l'inventaire, mode 2
- if (SpellstoneOnHand) then
- SpellstoneMode = 2;
- -- Pierre inexistante, mode 1
- else
- SpellstoneMode = 1;
- end
- end
-
- -- Affichage de l'icone liée au mode
- NecrosisSpellstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellstoneButton-0"..SpellstoneMode);
-
- -- Pierre de feu
- -----------------------------------------------
-
- -- Pierre équipée = mode 3
- if (rightHand == "Interface\\Icons\\INV_Misc_Gem_Bloodstone_02" and not FirestoneOnHand) then
- FirestoneMode = 3;
- -- Pierre dans l'inventaire = mode 2
- elseif (FirestoneOnHand) then
- FirestoneMode = 2;
- -- Pierre inexistante = mode 1
- else
- FirestoneMode = 1;
- end
-
- -- Affichage de l'icone liée au mode
- NecrosisFirestoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\FirestoneButton-0"..FirestoneMode);
-
-
- -- Bouton des démons
- -----------------------------------------------
- local mana = UnitMana("player");
-
- local ManaPet = {"1", "1", "1", "1", "1", "1"};
-
- -- Si cooldown de domination corrompue on grise
- if NECROSIS_SPELL_TABLE[15].ID and not DominationUp then
- local start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, "spell");
- if start > 0 and duration > 0 then
- NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-03");
- else
- NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-01");
- end
- end
-
- -- Si cooldown de gardien de l'ombre on grise
- if NECROSIS_SPELL_TABLE[43].ID then
- local start2, duration2 = GetSpellCooldown(NECROSIS_SPELL_TABLE[43].ID, "spell");
- if start2 > 0 and duration2 > 0 then
- NecrosisBuffMenu8:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\ShadowWard-03");
- else
- NecrosisBuffMenu8:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\ShadowWard-01");
- end
- end
-
- -- Si cooldown de la malédiction amplifiée on grise
- if NECROSIS_SPELL_TABLE[42].ID and not AmplifyUp then
- local start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, "spell");
- if start3 > 0 and duration3 > 0 then
- NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-03");
- else
- NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-01");
- end
- end
-
- if mana ~= nil then
- -- Coloration du bouton en grisé si pas assez de mana
- if NECROSIS_SPELL_TABLE[3].ID then
- if NECROSIS_SPELL_TABLE[3].Mana > mana then
- for i = 1, 6, 1 do
- ManaPet[i] = "3";
- end
- elseif NECROSIS_SPELL_TABLE[4].ID then
- if NECROSIS_SPELL_TABLE[4].Mana > mana then
- for i = 2, 6, 1 do
- ManaPet[i] = "3";
- end
- elseif NECROSIS_SPELL_TABLE[8].ID then
- if NECROSIS_SPELL_TABLE[8].Mana > mana then
- for i = 5, 6, 1 do
- ManaPet[i] = "3";
- end
- elseif NECROSIS_SPELL_TABLE[30].ID then
- if NECROSIS_SPELL_TABLE[30].Mana > mana then
- ManaPet[6] = "3";
- end
- end
- end
- end
- end
- end
-
- -- Coloration du bouton en grisé si pas de pierre pour l'invocation
- if Soulshards == 0 then
- for i = 2, 4, 1 do
- ManaPet[i] = "3";
- end
- end
- if InfernalStone == 0 then
- ManaPet[5] = "3";
- end
- if DemoniacStone == 0 then
- ManaPet[6] = "3";
- end
-
- -- Texturage des boutons de pet
- if DemonType == NECROSIS_PET_LOCAL_NAME[1] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-02");
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- elseif DemonType == NECROSIS_PET_LOCAL_NAME[2] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-02");
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- elseif DemonType == NECROSIS_PET_LOCAL_NAME[3] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-02");
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- elseif DemonType == NECROSIS_PET_LOCAL_NAME[4] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-02");
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- elseif DemonType == NECROSIS_PET_LOCAL_NAME[5] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-02");
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- elseif DemonType == NECROSIS_PET_LOCAL_NAME[6] then
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-02");
- else
- NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
- NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
- NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
- NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
- NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
- NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
- end
-
-
- -- Bouton des buffs
- -----------------------------------------------
-
- if mana ~= nil then
- -- Coloration du bouton en grisé si pas assez de mana
- if MountAvailable and not NecrosisMounted then
- if NECROSIS_SPELL_TABLE[2].ID then
- if NECROSIS_SPELL_TABLE[2].Mana > mana or PlayerCombat then
- NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-03");
- else
- NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-01");
- end
- else
- if NECROSIS_SPELL_TABLE[1].Mana > mana or PlayerCombat then
- NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-03");
- else
- NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-01");
- end
- end
- end
- if NECROSIS_SPELL_TABLE[35].ID then
- if NECROSIS_SPELL_TABLE[35].Mana > mana or Soulshards == 0 then
- NecrosisPetMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Enslave-03");
- else
- NecrosisPetMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Enslave-01");
- end
- end
- if NECROSIS_SPELL_TABLE[31].ID then
- if NECROSIS_SPELL_TABLE[31].Mana > mana then
- NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-03");
- else
- NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-01");
- end
- elseif NECROSIS_SPELL_TABLE[36].ID then
- if NECROSIS_SPELL_TABLE[36].Mana > mana then
- NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-03");
- else
- NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-01");
- end
- end
- if NECROSIS_SPELL_TABLE[32].ID then
- if NECROSIS_SPELL_TABLE[32].Mana > mana then
- NecrosisBuffMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Aqua-03");
- else
- NecrosisBuffMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Aqua-01");
- end
- end
- if NECROSIS_SPELL_TABLE[33].ID then
- if NECROSIS_SPELL_TABLE[33].Mana > mana then
- NecrosisBuffMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Invisible-03");
- else
- NecrosisBuffMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Invisible-01");
- end
- end
- if NECROSIS_SPELL_TABLE[34].ID then
- if NECROSIS_SPELL_TABLE[34].Mana > mana then
- NecrosisBuffMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Kilrogg-03");
- else
- NecrosisBuffMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Kilrogg-01");
- end
- end
- if NECROSIS_SPELL_TABLE[37].ID then
- if NECROSIS_SPELL_TABLE[37].Mana > mana or Soulshards == 0 then
- NecrosisBuffMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\TPButton-05");
- else
- NecrosisBuffMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\TPButton-01");
- end
- end
- if NECROSIS_SPELL_TABLE[38].ID then
- if NECROSIS_SPELL_TABLE[38].Mana > mana then
- NecrosisBuffMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Lien-03");
- else
- NecrosisBuffMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Lien-01");
- end
- end
- if NECROSIS_SPELL_TABLE[43].ID then
- if NECROSIS_SPELL_TABLE[43].Mana > mana then
- NecrosisBuffMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ShadowWard-03");
- else
- NecrosisBuffMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ShadowWard-01");
- end
- end
- if NECROSIS_SPELL_TABLE[9].ID then
- if NECROSIS_SPELL_TABLE[9].Mana > mana then
- NecrosisBuffMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Banish-03");
- else
- NecrosisBuffMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Banish-01");
- end
- end
- if NECROSIS_SPELL_TABLE[44].ID then
- if (NECROSIS_SPELL_TABLE[44].Mana > mana) or (not UnitExists("Pet")) then
- NecrosisPetMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Sacrifice-03");
- else
- NecrosisPetMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Sacrifice-01");
- end
- end
-
- end
-
- -- Bouton des curses
- -----------------------------------------------
-
- if mana ~= nil then
- -- Coloration du bouton en grisé si pas assez de mana
- if NECROSIS_SPELL_TABLE[23].ID then
- if NECROSIS_SPELL_TABLE[23].Mana > mana then
- NecrosisCurseMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Weakness-03");
- else
- NecrosisCurseMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Weakness-01");
- end
- end
- if NECROSIS_SPELL_TABLE[22].ID then
- if NECROSIS_SPELL_TABLE[22].Mana > mana then
- NecrosisCurseMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Agony-03");
- else
- NecrosisCurseMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Agony-01");
- end
- end
- if NECROSIS_SPELL_TABLE[24].ID then
- if NECROSIS_SPELL_TABLE[24].Mana > mana then
- NecrosisCurseMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Reckless-03");
- else
- NecrosisCurseMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Reckless-01");
- end
- end
- if NECROSIS_SPELL_TABLE[25].ID then
- if NECROSIS_SPELL_TABLE[25].Mana > mana then
- NecrosisCurseMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Tongues-03");
- else
- NecrosisCurseMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Tongues-01");
- end
- end
- if NECROSIS_SPELL_TABLE[40].ID then
- if NECROSIS_SPELL_TABLE[40].Mana > mana then
- NecrosisCurseMenu6:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Exhaust-03");
- else
- NecrosisCurseMenu6:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Exhaust-01");
- end
- end
- if NECROSIS_SPELL_TABLE[26].ID then
- if NECROSIS_SPELL_TABLE[26].Mana > mana then
- NecrosisCurseMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Elements-03");
- else
- NecrosisCurseMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Elements-01");
- end
- end
- if NECROSIS_SPELL_TABLE[27].ID then
- if NECROSIS_SPELL_TABLE[27].Mana > mana then
- NecrosisCurseMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Shadow-03");
- else
- NecrosisCurseMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Shadow-01");
- end
- end
- if NECROSIS_SPELL_TABLE[16].ID then
- if NECROSIS_SPELL_TABLE[16].Mana > mana then
- NecrosisCurseMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Doom-03");
- else
- NecrosisCurseMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Doom-01");
- end
- end
- end
-
-
- -- Bouton des Timers
- -----------------------------------------------
- if HearthstoneLocation[1] then
- local start, duration, enable = GetContainerItemCooldown(HearthstoneLocation[1], HearthstoneLocation[2]);
- if duration > 20 and start > 0 then
- NecrosisSpellTimerButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellTimerButton-Cooldown");
- else
- NecrosisSpellTimerButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellTimerButton-Normal");
- end
- end
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DES PIERRES ET DES FRAGMENTS
-------------------------------------------------------------------------------------------------------
-
-
--- T'AS QU'A SAVOIR OU T'AS MIS TES AFFAIRES !
-function Necrosis_SoulshardSetup()
- SoulshardSlotID = 1;
- for slot=1, table.getn(SoulshardSlot), 1 do
- table.remove(SoulshardSlot, slot);
- end
- for slot=1, GetContainerNumSlots(NecrosisConfig.SoulshardContainer), 1 do
- table.insert(SoulshardSlot, nil);
- end
-end
-
-
--- Fonction qui fait l'inventaire des éléments utilisés en démonologie : Pierres, Fragments, Composants d'invocation
-function Necrosis_BagExplore()
- local soulshards = Soulshards;
- Soulshards = 0;
- InfernalStone = 0;
- DemoniacStone = 0;
- SoulstoneOnHand = false;
- HealthstoneOnHand = false;
- FirestoneOnHand = false;
- SpellstoneOnHand = false;
- HearthstoneOnHand = false;
- ItemOnHand = false;
- -- Parcours des sacs
- for container=0, 4, 1 do
- -- Parcours des emplacements des sacs
- for slot=1, GetContainerNumSlots(container), 1 do
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(container, slot);
- local itemName = tostring(NecrosisTooltipTextLeft1:GetText());
- local itemSwitch = tostring(NecrosisTooltipTextLeft3:GetText());
- local itemSwitch2 = tostring(NecrosisTooltipTextLeft4:GetText());
- -- Si le sac est le sac défini pour les fragments
- -- hop la valeur du Tableau qui représente le slot du Sac = nil (pas de Shard)
- if (container == NecrosisConfig.SoulshardContainer) then
- if itemName ~= NECROSIS_ITEM.Soulshard then
- SoulshardSlot[slot] = nil;
- end
- end
- -- Dans le cas d'un emplacement non vide
- if itemName then
- -- On prend le nombre d'item en stack sur le slot
- local _, ItemCount = GetContainerItemInfo(container, slot);
- -- Si c'est un fragment ou une pierre infernale, alors on rajoute la qté au nombre de pierres
- if itemName == NECROSIS_ITEM.Soulshard then Soulshards = Soulshards + ItemCount; end
- if itemName == NECROSIS_ITEM.InfernalStone then InfernalStone = InfernalStone + ItemCount; end
- if itemName == NECROSIS_ITEM.DemoniacStone then DemoniacStone = DemoniacStone + ItemCount; end
- -- Si c'est une pierre d'âme, on note son existence et son emplacement
- if string.find(itemName, NECROSIS_ITEM.Soulstone) then
- SoulstoneOnHand = true;
- SoulstoneLocation = {container,slot};
- end
- -- Même chose pour une pierre de soin
- if string.find(itemName, NECROSIS_ITEM.Healthstone) then
- HealthstoneOnHand = true;
- HealthstoneLocation = {container,slot};
- end
- -- Et encore pour la pierre de sort
- if string.find(itemName, NECROSIS_ITEM.Spellstone) then
- SpellstoneOnHand = true;
- SpellstoneLocation = {container,slot};
- end
- -- La pierre de feu maintenant
- if string.find(itemName, NECROSIS_ITEM.Firestone) then
- FirestoneOnHand = true;
- FirestoneLocation = {container,slot};
- end
- -- et enfin la pierre de foyer
- if string.find(itemName, NECROSIS_ITEM.Hearthstone) then
- HearthstoneOnHand = true;
- HearthstoneLocation = {container,slot};
- end
-
- -- On note aussi la présence ou non des objets "main gauche"
- -- Plus tard ce sera utilisé pour remplacer automatiquement une pierre absente
- if itemSwitch == NECROSIS_ITEM.Offhand or itemSwitch2 == NECROSIS_ITEM.Offhand then
- ItemOnHand = true;
- ItemswitchLocation = {container, slot};
- end
- end
- end
- end
-
- -- Affichage du bouton principal de Necrosis
- if NecrosisConfig.Circle == 1 then
- if (Soulshards <= 32) then
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\"..NecrosisConfig.NecrosisColor.."\\Shard"..Soulshards);
- else
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\"..NecrosisConfig.NecrosisColor.."\\Shard32");
- end
- elseif SoulstoneMode ==1 or SoulstoneMode == 2 then
- if (Soulshards <= 32) then
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard"..Soulshards);
- else
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard32");
- end
- end
- if NecrosisConfig.ShowCount then
- if NecrosisConfig.CountType == 2 then
- NecrosisShardCount:SetText(InfernalStone.." / "..DemoniacStone);
- elseif NecrosisConfig.CountType == 1 then
- if Soulshards < 10 then
- NecrosisShardCount:SetText("0"..Soulshards);
- else
- NecrosisShardCount:SetText(Soulshards);
- end
- end
- else
- NecrosisShardCount:SetText("");
- end
- -- Et on met le tout à jour !
- Necrosis_UpdateIcons();
-
- -- S'il y a plus de fragment que d'emplacements dans le sac défini, on affiche un message d'avertissement
- if (Soulshards > soulshards and Soulshards == GetContainerNumSlots(NecrosisConfig.SoulshardContainer)) then
- if (SoulshardDestroy) then
- Necrosis_Msg(NECROSIS_MESSAGE.Bag.FullPrefix..GetBagName(NecrosisConfig.SoulshardContainer)..NECROSIS_MESSAGE.Bag.FullDestroySuffix);
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Bag.FullPrefix..GetBagName(NecrosisConfig.SoulshardContainer)..NECROSIS_MESSAGE.Bag.FullSuffix);
- end
- end
-end
-
--- Fonction qui permet de trouver / ranger les fragments dans les sacs
-function Necrosis_SoulshardSwitch(type)
- if (type == "CHECK") then
- SoulshardMP = 0;
- for container = 0, 4, 1 do
- for i = 1, 3, 1 do
- if GetBagName(container) == NECROSIS_ITEM.SoulPouch[i] then
- BagIsSoulPouch[container + 1] = true;
- break;
- else
- BagIsSoulPouch[container + 1] = false;
- end
- end
- end
- end
- for container = 0, 4, 1 do
- if BagIsSoulPouch[container+1] then break; end
- if container ~= NecrosisConfig.SoulshardContainer then
- for slot=1, GetContainerNumSlots(container), 1 do
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(container, slot);
- local itemInfo = tostring(NecrosisTooltipTextLeft1:GetText());
- if itemInfo == NECROSIS_ITEM.Soulshard then
- if (type == "CHECK") then
- SoulshardMP = SoulshardMP + 1;
- elseif (type == "MOVE") then
- Necrosis_FindSlot(container, slot);
- SoulshardMP = SoulshardMP - 1;
- end
- end
- end
- end
- end
- -- Après avoir tout déplacer, il faut retrouver les emplacements des pierres, etc, etc...
- Necrosis_BagExplore();
-end
-
--- Pendant le déplacement des fragments, il faut trouver un nouvel emplacement aux objets déplacés :)
-function Necrosis_FindSlot(shardIndex, shardSlot)
- local full = true;
- for slot=1, GetContainerNumSlots(NecrosisConfig.SoulshardContainer), 1 do
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem(NecrosisConfig.SoulshardContainer, slot);
- local itemInfo = tostring(NecrosisTooltipTextLeft1:GetText());
- if string.find(itemInfo, NECROSIS_ITEM.Soulshard) == nil then
- PickupContainerItem(shardIndex, shardSlot);
- PickupContainerItem(NecrosisConfig.SoulshardContainer, slot);
- SoulshardSlot[SoulshardSlotID] = slot;
- SoulshardSlotID = SoulshardSlotID + 1
- if (CursorHasItem()) then
- if shardIndex == 0 then
- PutItemInBackpack();
- else
- PutItemInBag(19 + shardIndex);
- end
- end
- full = false;
- break;
- end
- end
- -- Destruction des fragments en sur-nombre si l'option est activée
- if (full and NecrosisConfig.SoulshardDestroy) then
- PickupContainerItem(shardIndex, shardSlot);
- if (CursorHasItem()) then DeleteCursorItem(); end
- end
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DES SORTS
-------------------------------------------------------------------------------------------------------
-
-
-
--- Affiche ou masque les boutons de sort à chaque nouveau sort appris
-function Necrosis_ButtonSetup()
- if NecrosisConfig.NecrosisLockServ then
- Necrosis_NoDrag();
- Necrosis_UpdateButtonsScale();
- else
- HideUIPanel(NecrosisPetMenuButton);
- HideUIPanel(NecrosisBuffMenuButton);
- HideUIPanel(NecrosisCurseMenuButton);
- HideUIPanel(NecrosisMountButton);
- HideUIPanel(NecrosisFirestoneButton);
- HideUIPanel(NecrosisSpellstoneButton);
- HideUIPanel(NecrosisHealthstoneButton);
- HideUIPanel(NecrosisSoulstoneButton);
- if (NecrosisConfig.StonePosition[1]) and StoneIDInSpellTable[4] ~= 0 then
- ShowUIPanel(NecrosisFirestoneButton);
- end
- if (NecrosisConfig.StonePosition[2]) and StoneIDInSpellTable[3] ~= 0 then
- ShowUIPanel(NecrosisSpellstoneButton);
- end
- if (NecrosisConfig.StonePosition[3]) and StoneIDInSpellTable[2] ~= 0 then
- ShowUIPanel(NecrosisHealthstoneButton);
- end
- if (NecrosisConfig.StonePosition[4]) and StoneIDInSpellTable[1] ~= 0 then
- ShowUIPanel(NecrosisSoulstoneButton);
- end
- if (NecrosisConfig.StonePosition[5]) and BuffMenuCreate ~= {} then
- ShowUIPanel(NecrosisBuffMenuButton);
- end
- if (NecrosisConfig.StonePosition[6]) and MountAvailable then
- ShowUIPanel(NecrosisMountButton);
- end
- if (NecrosisConfig.StonePosition[7]) and PetMenuCreate ~= {} then
- ShowUIPanel(NecrosisPetMenuButton);
- end
- if (NecrosisConfig.StonePosition[8]) and CurseMenuCreate ~= {} then
- ShowUIPanel(NecrosisCurseMenuButton);
- end
- end
-end
-
-
-
--- Ma fonction préférée ! Elle fait la liste des sorts connus par le démo, et les classe par rang.
--- Pour les pierres, elle sélectionne le plus haut rang connu
-function Necrosis_SpellSetup()
- local StoneType = {NECROSIS_ITEM.Soulstone, NECROSIS_ITEM.Healthstone, NECROSIS_ITEM.Spellstone, NECROSIS_ITEM.Firestone};
- local StoneMaxRank = {0, 0, 0, 0};
-
- local CurrentStone = {
- ID = {},
- Name = {},
- subName = {}
- };
-
- local CurrentSpells = {
- ID = {},
- Name = {},
- subName = {}
- };
-
- local spellID = 1;
- local Invisible = 0;
- local InvisibleID = 0;
-
- -- On va parcourir tous les sorts possedés par le Démoniste
- while true do
- local spellName, subSpellName = GetSpellName(spellID, BOOKTYPE_SPELL);
-
- if not spellName then
- do break end
- end
-
- -- Pour les sorts avec des rangs numérotés, on compare pour chaque sort les rangs 1 à 1
- -- Le rang supérieur est conservé
- if (string.find(subSpellName, NECROSIS_TRANSLATION.Rank)) then
- local found = false;
- local rank = tonumber(strsub(subSpellName, 6, strlen(subSpellName)));
- for index=1, table.getn(CurrentSpells.Name), 1 do
- if (CurrentSpells.Name[index] == spellName) then
- found = true;
- if (CurrentSpells.subName[index] < rank) then
- CurrentSpells.ID[index] = spellID;
- CurrentSpells.subName[index] = rank;
- end
- break;
- end
- end
- -- Les plus grands rangs de chacun des sorts à rang numérotés sont insérés dans la table
- if (not found) then
- table.insert(CurrentSpells.ID, spellID);
- table.insert(CurrentSpells.Name, spellName);
- table.insert(CurrentSpells.subName, rank);
- end
- end
-
- -- Test du Rang de la détection d'invisibilité
- if spellName == NECROSIS_TRANSLATION.GreaterInvisible then
- Invisible = 3;
- InvisibleID = spellID;
- elseif spellName == NECROSIS_TRANSLATION.Invisible and Invisible ~= 3 then
- Invisible = 2;
- InvisibleID = spellID;
- elseif spellName == NECROSIS_TRANSLATION.LesserInvisible and Invisible ~= 3 and Invisible ~= 2 then
- Invisible = 1;
- InvisibleID = spellID;
- end
-
- -- Les pierres n'ont pas de rang numéroté, l'attribut de rang fait partie du nom du sort
- -- Pour chaque type de pierre, on va donc faire....
- for stoneID=1, table.getn(StoneType), 1 do
- -- Si le sort étudié est bien une invocation de ce type de pierre et qu'on n'a pas
- -- déjà assigné un rang maximum à cette dernière
- if (string.find(spellName, StoneType[stoneID]))
- and StoneMaxRank[stoneID] ~= table.getn(NECROSIS_STONE_RANK)
- then
- -- Récupération de la fin du nom de la pierre, contenant son rang
- local stoneSuffix = string.sub(spellName, string.len(NECROSIS_CREATE[stoneID]) + 1);
- -- Reste à trouver la correspondance de son rang
- for rankID=1, table.getn(NECROSIS_STONE_RANK), 1 do
- -- Si la fin du nom de la pierre correspond à une taille de pierre, on note le rang !
- if string.lower(stoneSuffix) == string.lower(NECROSIS_STONE_RANK[rankID]) then
- -- On a une pierre, on a son rang, reste à vérifier si c'est la plus puissante,
- -- et si oui, l'enregistrer
- if rankID > StoneMaxRank[stoneID] then
- StoneMaxRank[stoneID] = rankID;
- CurrentStone.Name[stoneID] = spellName;
- CurrentStone.subName[stoneID] = NECROSIS_STONE_RANK[rankID];
- CurrentStone.ID[stoneID] = spellID;
- end
- break
- end
- end
- end
- end
-
- spellID = spellID + 1;
- end
-
- -- On insère dans la table les pierres avec le plus grand rang
- for stoneID=1, table.getn(StoneType), 1 do
- if StoneMaxRank[stoneID] ~= 0 then
- table.insert(NECROSIS_SPELL_TABLE, {
- ID = CurrentStone.ID[stoneID],
- Name = CurrentStone.Name[stoneID],
- Rank = 0,
- CastTime = 0,
- Length = 0,
- Type = 0,
- });
- StoneIDInSpellTable[stoneID] = table.getn(NECROSIS_SPELL_TABLE);
- end
- end
- -- On met à jour la liste des sorts avec les nouveaux rangs
- for spell=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
- for index = 1, table.getn(CurrentSpells.Name), 1 do
- if (NECROSIS_SPELL_TABLE[spell].Name == CurrentSpells.Name[index])
- and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[1]
- and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[2]
- and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[3]
- and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[4]
- then
- NECROSIS_SPELL_TABLE[spell].ID = CurrentSpells.ID[index];
- NECROSIS_SPELL_TABLE[spell].Rank = CurrentSpells.subName[index];
- end
- end
- end
-
- -- On met à jour la durée de chaque sort en fonction de son rang
- for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
- if (index == 9) then -- si Bannish
- if NECROSIS_SPELL_TABLE[index].ID ~= nil then
- NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 10 + 10;
- end
- end
- if (index == 13) then -- si Fear
- if NECROSIS_SPELL_TABLE[index].ID ~= nil then
- NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 5 + 5;
- end
- end
- if (index == 14) then -- si Corruption
- if NECROSIS_SPELL_TABLE[index].ID ~= nil and NECROSIS_SPELL_TABLE[index].Rank <= 2 then
- NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 3 + 9;
- end
- end
- end
-
- for spellID=1, MAX_SPELLS, 1 do
- local spellName, subSpellName = GetSpellName(spellID, "spell");
- if (spellName) then
- for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
- if NECROSIS_SPELL_TABLE[index].Name == spellName then
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetSpell(spellID, 1);
- local _, _, ManaCost = string.find(NecrosisTooltipTextLeft2:GetText(), "(%d+)");
- if not NECROSIS_SPELL_TABLE[index].ID then
- NECROSIS_SPELL_TABLE[index].ID = spellID;
- end
- NECROSIS_SPELL_TABLE[index].Mana = tonumber(ManaCost);
- end
- end
- end
- end
- if NECROSIS_SPELL_TABLE[1].ID or NECROSIS_SPELL_TABLE[2].ID then
- MountAvailable = true;
- else
- MountAvailable = false;
- end
-
- -- Insertion du plus haut rang de détection d'invisibilité connu
- if Invisible >= 1 then
- NECROSIS_SPELL_TABLE[33].ID = InvisibleID;
- NECROSIS_SPELL_TABLE[33].Rank = 0;
- NECROSIS_SPELL_TABLE[33].CastTime = 0;
- NECROSIS_SPELL_TABLE[33].Length = 0;
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetSpell(InvisibleID, 1);
- local _, _, ManaCost = string.find(NecrosisTooltipTextLeft2:GetText(), "(%d+)");
- NECROSIS_SPELL_TABLE[33].Mana = tonumber(ManaCost);
- end
-end
-
--- Fonction d'extraction d'attribut de sort
--- F(type=string, string, int) -> Spell=table
-function Necrosis_FindSpellAttribute(type, attribute, array)
- for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
- if string.find(NECROSIS_SPELL_TABLE[index][type], attribute) then return NECROSIS_SPELL_TABLE[index][array]; end
- end
- return nil;
-end
-
--- Fonction pour caster un Eclat d'ombre depuis le bouton de la Transe de l'Ombre
--- L'éclat doit avoir le rang le plus haut
-function Necrosis_CastShadowBolt()
- local spellID = Necrosis_FindSpellAttribute("Name", NECROSIS_NIGHTFALL.BoltName, "ID");
- if (spellID) then
- CastSpell(spellID, "spell");
- else
- Necrosis_Msg(NECROSIS_NIGHTFALL_TEXT.NoBoltSpell, "USER");
- end
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DIVERSES
-------------------------------------------------------------------------------------------------------
-
--- Fonction pour savoir si une unité subit un effet
--- F(string, string)->bool
-function Necrosis_UnitHasEffect(unit, effect)
- local index = 1;
- while UnitDebuff(unit, index) do
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetUnitDebuff(unit, index);
- local DebuffName = tostring(NecrosisTooltipTextLeft1:GetText());
- if (string.find(DebuffName, effect)) then
- return true;
- end
- index = index+1;
- end
- return false;
-end
-
--- Function to check the presence of a buff on the unit.
--- Strictly identical to UnitHasEffect, but as WoW distinguishes Buff and DeBuff, so we have to.
-function Necrosis_UnitHasBuff(unit, effect)
- local index = 1;
- while UnitBuff(unit, index) do
- -- Here we'll cheat a little. checking a buff or debuff return the internal spell name, and not the name we give at start
- -- So we use an API widget that will use the internal name to return the known name.
- -- For example, the "Curse of Agony" spell is internaly known as "Spell_Shadow_CurseOfSargeras". Much easier to use the first one than the internal one.
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetUnitBuff(unit, index);
- local BuffName = tostring(NecrosisTooltipTextLeft1:GetText());
- if (string.find(BuffName, effect)) then
- return true;
- end
- index = index+1;
- end
- return false;
-end
-
-
--- Permet de reconnaitre quand le joueur gagne Crépuscule / Transe de l'ombre
-function Necrosis_UnitHasTrance()
- local ID = -1;
- for buffID = 0, 24, 1 do
- local buffTexture = GetPlayerBuffTexture(buffID);
- if buffTexture == nil then break end
- if strfind(buffTexture, "Spell_Shadow_Twilight") then
- ID = buffID;
- break
- end
- end
- ShadowTranceID = ID;
-end
-
--- Fonction pour gérer les actions effectuées par Necrosis au clic sur un bouton
-function Necrosis_UseItem(type,button)
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetBagItem("player", 17);
- local rightHand = tostring(NecrosisTooltipTextLeft1:GetText());
-
- -- Fonction pour utiliser une pierre de foyer dans l'inventaire
- -- s'il y en a une dans l'inventaire, et si c'était un click droit
- if type == "Hearthstone" and button == "RightButton" then
- if (HearthstoneOnHand) then
- -- on l'utilise
- UseContainerItem(HearthstoneLocation[1], HearthstoneLocation[2]);
- -- soit il n'y en a pas dans l'inventaire, on affiche un message d'erreur
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoHearthStone, "USER");
- end
- end
-
- -- Si on clique sur le bouton de la pierre d'âme
- -- On met à jour le bouton pour savoir quel est le mode
- if (type == "Soulstone") then
- Necrosis_UpdateIcons();
- -- Si le mode = 2 (une pierre dans l'inventaire, pas de pierre utilisée)
- -- alors on l'utilise
- if (SoulstoneMode == 2) then
- -- Si un joueur est ciblé, sur le joueur (avec message d'alerte)
- -- Si un joueur n'est pas ciblé, sur le Démoniste (sans message)
- if UnitIsPlayer("target") then
- SoulstoneUsedOnTarget = true;
- else
- SoulstoneUsedOnTarget = false;
- TargetUnit("player");
- end
- UseContainerItem(SoulstoneLocation[1], SoulstoneLocation[2]);
- -- Maintenant que l'on crée un timer sur la session, nous ne sortons plus d'un RL
- NecrosisRL = false;
- -- Et hop, on remet à jour l'affichage des boutons :)
- Necrosis_UpdateIcons();
- -- si il n'y a pas de pierre d'âme dans l'inventaire, alors on crée la pierre d'âme de rang le plus grand :)
- elseif (SoulstoneMode == 1) or (SoulstoneMode == 3) then
- if StoneIDInSpellTable[1] ~= 0 then
- CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[1]].ID, "spell");
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoSoulStoneSpell, "USER");
- end
-
- end
- -- Si on clique sur le bouton de la pierre de vie :
- elseif (type == "Healthstone") then
- -- soit il y en a une dans l'inventaire
- if HealthstoneOnHand then
- -- Dans ce cas si un pj allié est sélectionné, on lui donne la pierre
- -- Sinon, on l'utilise
- if NecrosisTradeRequest then
- PickupContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
- ClickTradeButton(1);
- NecrosisTradeRequest = false;
- Trading = true;
- TradingNow = 3;
- return;
- elseif (UnitExists("target") and UnitIsPlayer("target") and (not UnitCanAttack("player", "target")) and UnitName("target") ~= UnitName("player")) then
- PickupContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
- if ( CursorHasItem() ) then
- DropItemOnUnit("target");
- Trading = true;
- TradingNow = 3;
- end
- return;
- end
- if (UnitHealth("player") == UnitHealthMax("player")) then
- Necrosis_Msg(NECROSIS_MESSAGE.Error.FullHealth, "USER");
- else
- SpellStopCasting();
- UseContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
- local HealthstoneInUse = false
- if Necrosis_TimerExisteDeja(NECROSIS_COOLDOWN.Healthstone, SpellTimer) then
- HealthstoneInUse = true;
- end
- if not HealthstoneInUse then
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone(type, nil, nil, SpellGroup, SpellTimer, TimerTable);
- end
- end
- -- soit il n'y en a pas dans l'inventaire, et la pierre de plus haut rang est créée
- else
- if StoneIDInSpellTable[2] ~= 0 then
- CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[2]].ID, "spell");
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoHealthStoneSpell, "USER");
- end
- end
- -- Au tour de la pierre de sort
- elseif (type == "Spellstone") then
- -- Si la pierre est équipée ou dans l'inventaire, un clic droit l'équipe / la déséquipe
- if (SpellstoneMode ~= 1 and button == "RightButton")
- -- Si la pierre n'est pas équipée, le raccourci clavier équipe la pierre
- or (SpellstoneMode == 2 and button == "Binding") then
- Necrosis_SwitchOffHand(type);
- -- Si la pierre est équipée, un clic gauche utilise la pierre
- elseif SpellstoneMode == 3 then
- local start, duration, enable = GetInventoryItemCooldown("player", 17) ;
- UseInventoryItem(17);
- if duration == 0 or start == 0 then Necrosis_SwitchOffHand("Off-hand"); end
- -- sinon on crée la pierre :)
- elseif (SpellstoneMode == 1) then
- if StoneIDInSpellTable[3] ~= 0 then
- CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[3]].ID, "spell");
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoSpellStoneSpell, "USER");
- end
- end
- -- Meme chose pour la pierre de feu
- elseif (type == "Firestone") then
- -- Si la pierre n'existe pas, elle est créée
- if (FirestoneMode == 1) then
- if StoneIDInSpellTable[4] ~= 0 then
- CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[4]].ID, "spell");
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoFireStoneSpell, "USER");
- end
- -- Si la pierre existe, un clic droit l'équipe / la déséquiper
- elseif button ~= "LeftButton" then
- Necrosis_SwitchOffHand(type);
- end
- -- Si on clic sur le bouton de monture
- elseif (type == "Mount") then
- -- Soit c'est la monture épique
- if NECROSIS_SPELL_TABLE[2].ID ~= nil then
- CastSpell(NECROSIS_SPELL_TABLE[2].ID, "spell");
- Necrosis_OnUpdate();
- -- Soit c'est la monture classique
- elseif NECROSIS_SPELL_TABLE[1].ID ~= nil then
- CastSpell(NECROSIS_SPELL_TABLE[1].ID, "spell");
- Necrosis_OnUpdate();
- -- (Soit c'est rien :) )
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Error.NoRiding, "USER");
- end
- end
-end
-
--- Fonction permettant de permutter un objet main-gauche équipé avec un objet main-gauche de l'inventaire
-function Necrosis_SwitchOffHand(type)
- if (type == "Spellstone") then
- if SpellstoneMode == 3 then
- if ItemOnHand then
- Necrosis_Msg("Equipe "..GetContainerItemLink(ItemswitchLocation[1],ItemswitchLocation[2])..NECROSIS_MESSAGE.SwitchMessage..GetInventoryItemLink("player",17), "USER");
- PickupInventoryItem(17);
- PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
- end
- return;
- else
- PickupContainerItem(SpellstoneLocation[1], SpellstoneLocation[2]);
- PickupInventoryItem(17);
- -- Le switch avec une pierre de sort implique un cooldown porté au timer
- if Necrosis_TimerExisteDeja(NECROSIS_COOLDOWN.Spellstone, SpellTimer) then
- SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_COOLDOWN.Spellstone, SpellTimer, TimerTable);
- end
- SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone(type, nil, nil, SpellGroup, SpellTimer, TimerTable);
- return;
- end
- elseif (type == "Firestone") then
- if FirestoneMode == 3 then
- if ItemOnHand then
- PickupInventoryItem(17);
- PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
- Necrosis_Msg(NECROSIS_MESSAGE.EquipMessage..GetContainerItemLink(ItemswitchLocation[1],ItemswitchLocation[2])..NECROSIS_MESSAGE.SwitchMessage..GetInventoryItemLink("player",17), "USER");
- end
- return;
- else
- PickupContainerItem(FirestoneLocation[1], FirestoneLocation[2]);
- PickupInventoryItem(17);
- return;
- end
- end
- if (type == "OffHand") and UnitClass("player") == NECROSIS_UNIT_WARLOCK then
- if ItemswitchLocation[1] ~= nil and ItemswitchLocation[2] ~= nil then
- PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
- PickupInventoryItem(17);
- end
- end
-end
-
-function Necrosis_MoneyToggle()
- for index=1, 10 do
- local text = getglobal("NecrosisTooltipTextLeft"..index);
- text:SetText(nil);
- text = getglobal("NecrosisTooltipTextRight"..index);
- text:SetText(nil);
- end
- NecrosisTooltip:Hide();
- NecrosisTooltip:SetOwner(WorldFrame, "ANCHOR_NONE");
-end
-
-function Necrosis_GameTooltip_ClearMoney()
- -- Intentionally empty; don't clear money while we use hidden tooltips
-end
-
-
--- Fonction pour placer les boutons autour de Necrosis (et pour grossir / retracir l'interface...)
-function Necrosis_UpdateButtonsScale()
- local NBRScale = (100 + (NecrosisConfig.NecrosisButtonScale - 85)) / 100;
- if NecrosisConfig.NecrosisButtonScale <= 95 then
- NBRScale = 1.1;
- end
- if NecrosisConfig.NecrosisLockServ then
- Necrosis_ClearAllPoints();
- HideUIPanel(NecrosisPetMenuButton);
- HideUIPanel(NecrosisBuffMenuButton);
- HideUIPanel(NecrosisCurseMenuButton);
- HideUIPanel(NecrosisMountButton);
- HideUIPanel(NecrosisFirestoneButton);
- HideUIPanel(NecrosisSpellstoneButton);
- HideUIPanel(NecrosisHealthstoneButton);
- HideUIPanel(NecrosisSoulstoneButton);
- local indexScale = -36;
- for index=1, 8, 1 do
- if NecrosisConfig.StonePosition[index] then
- if index == 1 and StoneIDInSpellTable[4] ~= 0 then
- NecrosisFirestoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisFirestoneButton);
- indexScale = indexScale + 36;
- end
- if index == 2 and StoneIDInSpellTable[3] ~= 0 then
- NecrosisSpellstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisSpellstoneButton);
- indexScale = indexScale + 36;
- end
- if index == 3 and StoneIDInSpellTable[2] ~= 0 then
- NecrosisHealthstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisHealthstoneButton);
- indexScale = indexScale + 36;
- end
- if index == 4 and StoneIDInSpellTable[1] ~= 0 then
- NecrosisSoulstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisSoulstoneButton);
- indexScale = indexScale + 36;
- end
- if index == 5 and BuffMenuCreate ~= {} then
- NecrosisBuffMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisBuffMenuButton);
- indexScale = indexScale + 36;
- end
- if index == 6 and MountAvailable then
- NecrosisMountButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisMountButton);
- indexScale = indexScale + 36;
- end
- if index == 7 and PetMenuCreate ~= {} then
- NecrosisPetMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisPetMenuButton);
- indexScale = indexScale + 36;
- end
- if index == 8 and CurseMenuCreate ~= {} then
- NecrosisCurseMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
- ShowUIPanel(NecrosisCurseMenuButton);
- indexScale = indexScale + 36;
- end
- end
- end
- end
-end
-
-
-
--- Fonction (XML) pour rétablir les points d'attache par défaut des boutons
-function Necrosis_ClearAllPoints()
- NecrosisFirestoneButton:ClearAllPoints();
- NecrosisSpellstoneButton:ClearAllPoints();
- NecrosisHealthstoneButton:ClearAllPoints();
- NecrosisSoulstoneButton:ClearAllPoints();
- NecrosisMountButton:ClearAllPoints();
- NecrosisPetMenuButton:ClearAllPoints();
- NecrosisBuffMenuButton:ClearAllPoints();
- NecrosisCurseMenuButton:ClearAllPoints();
-end
-
--- Fonction (XML) pour étendre la propriété NoDrag() du bouton principal de Necrosis sur tout ses boutons
-function Necrosis_NoDrag()
- NecrosisFirestoneButton:RegisterForDrag("");
- NecrosisSpellstoneButton:RegisterForDrag("");
- NecrosisHealthstoneButton:RegisterForDrag("");
- NecrosisSoulstoneButton:RegisterForDrag("");
- NecrosisMountButton:RegisterForDrag("");
- NecrosisPetMenuButton:RegisterForDrag("");
- NecrosisBuffMenuButton:RegisterForDrag("");
- NecrosisCurseMenuButton:RegisterForDrag("");
-end
-
--- Fonction (XML) inverse de celle du dessus
-function Necrosis_Drag()
- NecrosisFirestoneButton:RegisterForDrag("LeftButton");
- NecrosisSpellstoneButton:RegisterForDrag("LeftButton");
- NecrosisHealthstoneButton:RegisterForDrag("LeftButton");
- NecrosisSoulstoneButton:RegisterForDrag("LeftButton");
- NecrosisMountButton:RegisterForDrag("LeftButton");
- NecrosisPetMenuButton:RegisterForDrag("LeftButton");
- NecrosisBuffMenuButton:RegisterForDrag("LeftButton");
- NecrosisCurseMenuButton:RegisterForDrag("LeftButton");
-end
-
--- Ouverture du menu des buffs
-function Necrosis_BuffMenu(button)
- if button == "MiddleButton" and LastBuff ~= 0 then
- Necrosis_BuffCast(LastBuff);
- return;
- end
- BuffMenuShow = not BuffMenuShow;
- if not BuffMenuShow then
- BuffShow = false;
- BuffVisible = false;
- NecrosisBuffMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\BuffMenuButton-01");
- BuffMenuCreate[1]:ClearAllPoints();
- BuffMenuCreate[1]:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", 3000, 3000);
- AlphaBuffMenu = 1;
- else
- BuffShow = true;
- NecrosisBuffMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\BuffMenuButton-02");
- -- Si clic droit, le menu de buff reste ouvert
- if button == "RightButton" then
- BuffVisible = true;
- end
- -- S'il n'existe aucun buff on ne fait rien
- if BuffMenuCreate == nil then
- return;
- end
- -- Sinon on affiche les icones
- NecrosisBuffMenu1:SetAlpha(1);
- NecrosisBuffMenu2:SetAlpha(1);
- NecrosisBuffMenu3:SetAlpha(1);
- NecrosisBuffMenu4:SetAlpha(1);
- NecrosisBuffMenu5:SetAlpha(1);
- NecrosisBuffMenu6:SetAlpha(1);
- NecrosisBuffMenu7:SetAlpha(1);
- NecrosisBuffMenu8:SetAlpha(1);
- NecrosisBuffMenu9:SetAlpha(1);
- BuffMenuCreate[1]:ClearAllPoints();
- BuffMenuCreate[1]:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31) , 26);
- AlphaPetVar = GetTime() + 3;
- AlphaBuffVar = GetTime() + 6;
- AlphaCurseVar = GetTime() + 6;
- end
-end
-
--- Ouverture du menu des curses
-function Necrosis_CurseMenu(button)
- if button == "MiddleButton" and LastCurse ~= 0 then
- Necrosis_CurseCast(LastCurse, LastCurseClick);
- return;
- end
- -- S'il n'existe aucune curse on ne fait rien
- if CurseMenuCreate[1] == nil then
- return;
- end
- CurseMenuShow = not CurseMenuShow;
- if not CurseMenuShow then
- CurseShow = false;
- CurseVisible = false;
- NecrosisCurseMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\CurseMenuButton-01");
- CurseMenuCreate[1]:ClearAllPoints();
- CurseMenuCreate[1]:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- AlphaCurseMenu = 1;
- else
- CurseShow = true;
- NecrosisCurseMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\CurseMenuButton-02");
- -- Si clic droit, le menu de curse reste ouvert
- if button == "RightButton" then
- CurseVisible = true;
- end
- -- Sinon on affiche les icones
- NecrosisCurseMenu1:SetAlpha(1);
- NecrosisCurseMenu2:SetAlpha(1);
- NecrosisCurseMenu3:SetAlpha(1);
- NecrosisCurseMenu4:SetAlpha(1);
- NecrosisCurseMenu5:SetAlpha(1);
- NecrosisCurseMenu6:SetAlpha(1);
- NecrosisCurseMenu7:SetAlpha(1);
- NecrosisCurseMenu8:SetAlpha(1);
- NecrosisCurseMenu9:SetAlpha(1);
- CurseMenuCreate[1]:ClearAllPoints();
- CurseMenuCreate[1]:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31) , -26);
- AlphaPetVar = GetTime() + 3;
- AlphaBuffVar = GetTime() + 6;
- AlphaCurseVar = GetTime() + 6;
- end
-end
-
--- Ouverture du menu des démons
-function Necrosis_PetMenu(button)
- if button == "MiddleButton" and LastDemon ~= 0 then
- Necrosis_PetCast(LastDemon);
- return;
- end
- -- S'il n'existe aucun sort d'invocation on ne fait rien
- if PetMenuCreate[1] == nil then
- return;
- end
- PetMenuShow = not PetMenuShow;
- if not PetMenuShow then
- PetShow = false;
- PetVisible = false;
- NecrosisPetMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\PetMenuButton-01");
- PetMenuCreate[1]:ClearAllPoints();
- PetMenuCreate[1]:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
- AlphaPetMenu = 1;
- else
- PetShow = true;
- NecrosisPetMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\PetMenuButton-02");
- -- Si clic droit, le menu de pet reste ouvert
- if button == "RightButton" then
- PetVisible = true;
- end
- -- Sinon on affiche les icones (on les déplace sur l'écran)
- NecrosisPetMenu1:SetAlpha(1);
- NecrosisPetMenu2:SetAlpha(1);
- NecrosisPetMenu3:SetAlpha(1);
- NecrosisPetMenu4:SetAlpha(1);
- NecrosisPetMenu5:SetAlpha(1);
- NecrosisPetMenu6:SetAlpha(1);
- NecrosisPetMenu7:SetAlpha(1);
- NecrosisPetMenu8:SetAlpha(1);
- NecrosisPetMenu9:SetAlpha(1);
- PetMenuCreate[1]:ClearAllPoints();
- PetMenuCreate[1]:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31) , 26);
- AlphaPetVar = GetTime() + 3;
- end
-end
-
--- A chaque changement du livre des sorts, au démarrage du mod, ainsi qu'au changement de sens du menu on reconstruit les menus des sorts
-function Necrosis_CreateMenu()
- PetMenuCreate = {};
- CurseMenuCreate = {};
- BuffMenuCreate = {};
- local menuVariable = nil;
- local PetButtonPosition = 0;
- local BuffButtonPosition = 0;
- local CurseButtonPosition = 0;
-
- -- On cache toutes les icones des démons
- for i = 1, 9, 1 do
- menuVariable = getglobal("NecrosisPetMenu"..i);
- menuVariable:Hide();
- end
- -- On cache toutes les icones des sorts
- for i = 1, 9, 1 do
- menuVariable = getglobal("NecrosisBuffMenu"..i);
- menuVariable:Hide();
- end
- -- On cache toutes les icones des curses
- for i = 1, 9, 1 do
- menuVariable = getglobal("NecrosisCurseMenu"..i);
- menuVariable:Hide();
- end
-
-
- -- Si le sort de Domination corrompue existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[15].ID then
- menuVariable = getglobal("NecrosisPetMenu1");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
- PetButtonPosition = 1;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation du Diablotin existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[3].ID then
- menuVariable = getglobal("NecrosisPetMenu2");
- menuVariable:ClearAllPoints();
- if PetButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- end
- PetButtonPosition = 2;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation du Marcheur existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[4].ID then
- menuVariable = getglobal("NecrosisPetMenu3");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 3;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation du Succube existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[5].ID then
- menuVariable = getglobal("NecrosisPetMenu4");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 4;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation du Felhunter existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[6].ID then
- menuVariable = getglobal("NecrosisPetMenu5");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 5;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation de l'Infernal existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[8].ID then
- menuVariable = getglobal("NecrosisPetMenu6");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 6;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'invocation du Doomguard existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[30].ID then
- menuVariable = getglobal("NecrosisPetMenu7");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 7;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si l'asservissement existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[35].ID then
- menuVariable = getglobal("NecrosisPetMenu8");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 8;
- table.insert(PetMenuCreate, menuVariable);
- end
- -- Si le sacrifice démoniaque existe, on affiche le bouton dans le menu des pets
- if NECROSIS_SPELL_TABLE[44].ID then
- menuVariable = getglobal("NecrosisPetMenu9");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
- PetButtonPosition = 9;
- table.insert(PetMenuCreate, menuVariable);
- end
-
-
- -- Maintenant que tous les boutons de pet sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
- for i = 1, table.getn(PetMenuCreate), 1 do
- ShowUIPanel(PetMenuCreate[i]);
- end
-
- -- Si l'Armure Démoniaque existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[31].ID or NECROSIS_SPELL_TABLE[36].ID then
- menuVariable = getglobal("NecrosisBuffMenu1");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", 3000, 3000);
- BuffButtonPosition = 1;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si la respiration interminable existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[32].ID then
- menuVariable = getglobal("NecrosisBuffMenu2");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 2;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si la détection de l'invisibilité existe, on affiche le bouton dans le menu des buffs (au plus haut rang)
- if NECROSIS_SPELL_TABLE[33].ID then
- menuVariable = getglobal("NecrosisBuffMenu3");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 3;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si la respiration interminable existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[34].ID then
- menuVariable = getglobal("NecrosisBuffMenu4");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 4;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si l'invocation de joueur existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[37].ID then
- menuVariable = getglobal("NecrosisBuffMenu5");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 5;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si le Radar à démon existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[39].ID then
- menuVariable = getglobal("NecrosisBuffMenu6");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 6;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si le Lien Spirituel existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[38].ID then
- menuVariable = getglobal("NecrosisBuffMenu7");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 7;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si la protection contre les ombres existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[43].ID then
- menuVariable = getglobal("NecrosisBuffMenu8");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 8;
- table.insert(BuffMenuCreate, menuVariable);
- end
- -- Si le banissement existe, on affiche le bouton dans le menu des buffs
- if NECROSIS_SPELL_TABLE[9].ID then
- menuVariable = getglobal("NecrosisBuffMenu9");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
- BuffButtonPosition = 9;
- table.insert(BuffMenuCreate, menuVariable);
- end
-
- -- Maintenant que tous les boutons de buff sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
- for i = 1, table.getn(BuffMenuCreate), 1 do
- ShowUIPanel(BuffMenuCreate[i]);
- end
-
- -- Si la Malédiction amplifiée existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[42].ID then
- menuVariable = getglobal("NecrosisCurseMenu1");
- menuVariable:ClearAllPoints();
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- CurseButtonPosition = 1;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction de faiblesse existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[23].ID then
- menuVariable = getglobal("NecrosisCurseMenu2");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 2;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction d'agonie existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[22].ID then
- menuVariable = getglobal("NecrosisCurseMenu3");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 3;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction de témérité existe, on affiche le bouton dans le menu des curses (au plus haut rang)
- if NECROSIS_SPELL_TABLE[24].ID then
- menuVariable = getglobal("NecrosisCurseMenu4");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 4;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction des languages existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[25].ID then
- menuVariable = getglobal("NecrosisCurseMenu5");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 5;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction de fatigue existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[40].ID then
- menuVariable = getglobal("NecrosisCurseMenu6");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 6;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction des éléments existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[26].ID then
- menuVariable = getglobal("NecrosisCurseMenu7");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 7;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction de l'ombre, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[27].ID then
- menuVariable = getglobal("NecrosisCurseMenu8");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 8;
- table.insert(CurseMenuCreate, menuVariable);
- end
- -- Si la Malédiction funeste existe, on affiche le bouton dans le menu des curses
- if NECROSIS_SPELL_TABLE[16].ID then
- menuVariable = getglobal("NecrosisCurseMenu9");
- menuVariable:ClearAllPoints();
- if CurseButtonPosition == 0 then
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
- else
- menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
- end
- CurseButtonPosition = 9;
- table.insert(CurseMenuCreate, menuVariable);
- end
-
- -- Maintenant que tous les boutons de curse sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
- for i = 1, table.getn(CurseMenuCreate), 1 do
- ShowUIPanel(CurseMenuCreate[i]);
- end
-end
-
--- Gestion des casts du menu des buffs
-function Necrosis_BuffCast(type)
- local TargetEnemy = false;
- if UnitCanAttack("player","target") and type ~= 9 then
- TargetUnit("player");
- TargetEnemy = true;
- end
- -- Si le Démoniste possède la peau de démon mais pas l'armure démoniaque
- if not NECROSIS_SPELL_TABLE[type].ID then
- CastSpell(NECROSIS_SPELL_TABLE[36].ID, "spell");
- else
- if (type ~= 44) or (type == 44 and UnitExists("Pet")) then
- CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
- end
- end
- LastBuff = type;
- if TargetEnemy then TargetLastTarget(); end
- AlphaBuffMenu = 1;
- AlphaBuffVar = GetTime() + 3;
-end
-
--- Gestion des casts du menu des curses
-function Necrosis_CurseCast(type, click)
- if (UnitIsFriend("player","target")) and (not UnitCanAttack("player","target")) then
- AssistUnit("target");
- end
- if (UnitCanAttack("player","target")) and (UnitName("target") ~= nil) then
- if (type == 23 or type == 22 or type == 40) then
- if (click == "RightButton") and (NECROSIS_SPELL_TABLE[42].ID ~= nil) then
- local start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, "spell");
- if not (start3 > 0 and duration3 > 0) then
- CastSpell(NECROSIS_SPELL_TABLE[42].ID, "spell");
- SpellStopCasting(NECROSIS_SPELL_TABLE[42].Name);
- end
- end
- end
- CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
- LastCurse = type;
- LastCurseClick = click;
- if (click == "MiddleButton") and (UnitExists("Pet")) then
- PetAttack();
- end
- end
- AlphaCurseMenu = 1;
- AlphaCurseVar = GetTime() + 3;
-end
-
--- Gestion des casts du menu des démons
-function Necrosis_PetCast(type, click)
- if type == 8 and InfernalStone == 0 then
- Necrosis_Msg(NECROSIS_MESSAGE.Error.InfernalStoneNotPresent, "USER");
- return;
- elseif type == 30 and DemoniacStone == 0 then
- Necrosis_Msg(NECROSIS_MESSAGE.Error.DemoniacStoneNotPresent, "USER");
- return;
- elseif type ~= 15 and type ~= 3 and type ~= 8 and type ~= 30 and Soulshards == 0 then
- Necrosis_Msg(NECROSIS_MESSAGE.Error.SoulShardNotPresent, "USER");
- return;
- end
- if (type == 3 or type == 4 or type == 5 or type == 6) then
- LastDemon = type;
- if (click == "RightButton") and (NECROSIS_SPELL_TABLE[15].ID ~= nil) then
- local start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, "spell");
- if not (start > 0 and duration > 0) then
- CastSpell(NECROSIS_SPELL_TABLE[15].ID, "spell");
- SpellStopCasting(NECROSIS_SPELL_TABLE[15].Name);
- end
- end
- if NecrosisConfig.DemonSummon and NecrosisConfig.ChatMsg and not NecrosisConfig.SM then
- if NecrosisConfig.PetName[(type - 2)] == " " and NECROSIS_PET_MESSAGE[5] then
- local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[5]));
- while tempnum == PetMess and table.getn(NECROSIS_PET_MESSAGE[5]) >= 2 do
- tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[5]));
- end
- PetMess = tempnum;
- for i = 1, table.getn(NECROSIS_PET_MESSAGE[5][tempnum]) do
- Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[5][tempnum][i]), "SAY");
- end
- elseif NECROSIS_PET_MESSAGE[(type - 2)] then
- local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)]));
- while tempnum == PetMess and table.getn(NECROSIS_PET_MESSAGE[(type - 2)]) >= 2 do
- tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)]));
- end
- PetMess = tempnum;
- for i = 1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)][tempnum]) do
- Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[(type - 2)][tempnum][i], nil , type - 2), "SAY");
- end
- end
- end
- end
- CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
- AlphaPetMenu = 1;
- AlphaPetVar = GetTime() + 3;
-end
-
--- Fonction permettant l'affichage des différentes pages du livre des configurations
-function NecrosisGeneralTab_OnClick(id)
- local TabName;
- for index=1, 5, 1 do
- TabName = getglobal("NecrosisGeneralTab"..index);
- if index == id then
- TabName:SetChecked(1);
- else
- TabName:SetChecked(nil);
- end
- end
- if id == 1 then
- ShowUIPanel(NecrosisShardMenu);
- HideUIPanel(NecrosisMessageMenu);
- HideUIPanel(NecrosisButtonMenu);
- HideUIPanel(NecrosisTimerMenu);
- HideUIPanel(NecrosisGraphOptionMenu);
- NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
- NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu1);
- elseif id == 2 then
- HideUIPanel(NecrosisShardMenu);
- ShowUIPanel(NecrosisMessageMenu);
- HideUIPanel(NecrosisButtonMenu);
- HideUIPanel(NecrosisTimerMenu);
- HideUIPanel(NecrosisGraphOptionMenu);
- NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
- NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu2);
- elseif id == 3 then
- HideUIPanel(NecrosisShardMenu);
- HideUIPanel(NecrosisMessageMenu);
- ShowUIPanel(NecrosisButtonMenu);
- HideUIPanel(NecrosisTimerMenu);
- HideUIPanel(NecrosisGraphOptionMenu);
- NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
- NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu3);
- elseif id == 4 then
- HideUIPanel(NecrosisShardMenu);
- HideUIPanel(NecrosisMessageMenu);
- HideUIPanel(NecrosisButtonMenu);
- ShowUIPanel(NecrosisTimerMenu);
- HideUIPanel(NecrosisGraphOptionMenu);
- NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
- NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu4);
- elseif id == 5 then
- HideUIPanel(NecrosisShardMenu);
- HideUIPanel(NecrosisMessageMenu);
- HideUIPanel(NecrosisButtonMenu);
- HideUIPanel(NecrosisTimerMenu);
- ShowUIPanel(NecrosisGraphOptionMenu);
- NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
- NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu5);
- end
-end
-
-
-
--- Bon, pour pouvoir utiliser le Timer sur les sorts instants, j'ai été obligé de m'inspirer de Cosmos
--- Comme je ne voulais pas rendre le mod dépendant de Sea, j'ai repris ses fonctions
--- Apparemment, la version Stand-Alone de ShardTracker a fait pareil :) :)
-Necrosis_Hook = function (orig,new,type)
- if(not type) then type = "before"; end
- if(not Hx_Hooks) then Hx_Hooks = {}; end
- if(not Hx_Hooks[orig]) then
- Hx_Hooks[orig] = {}; Hx_Hooks[orig].before = {}; Hx_Hooks[orig].before.n = 0; Hx_Hooks[orig].after = {}; Hx_Hooks[orig].after.n = 0; Hx_Hooks[orig].hide = {}; Hx_Hooks[orig].hide.n = 0; Hx_Hooks[orig].replace = {}; Hx_Hooks[orig].replace.n = 0; Hx_Hooks[orig].orig = getglobal(orig);
- else
- for key,value in Hx_Hooks[orig][type] do if(value == getglobal(new)) then return; end end
- end
- Necrosis_Push(Hx_Hooks[orig][type],getglobal(new)); setglobal(orig,function(...) Necrosis_HookHandler(orig,arg); end);
-end
-
-Necrosis_HookHandler = function (name,arg)
- local called = false; local continue = true; local retval;
- for key,value in Hx_Hooks[name].hide do
- if(type(value) == "function") then if(not value(unpack(arg))) then continue = false; end called = true; end
- end
- if(not continue) then return; end
- for key,value in Hx_Hooks[name].before do
- if(type(value) == "function") then value(unpack(arg)); called = true; end
- end
- continue = false;
- local replacedFunction = false;
- for key,value in Hx_Hooks[name].replace do
- if(type(value) == "function") then
- replacedFunction = true; if(value(unpack(arg))) then continue = true; end called = true;
- end
- end
- if(continue or (not replacedFunction)) then retval = Hx_Hooks[name].orig(unpack(arg)); end
- for key,value in Hx_Hooks[name].after do
- if(type(value) == "function") then value(unpack(arg)); called = true;end
- end
- if(not called) then setglobal(name,Hx_Hooks[name].orig); Hx_Hooks[name] = nil; end
- return retval;
-end
-
-function Necrosis_Push (table,val)
- if(not table or not table.n) then return nil; end
- table.n = table.n+1;
- table[table.n] = val;
-end
-
-function Necrosis_UseAction(id, number, onSelf)
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetAction(id);
- local tip = tostring(NecrosisTooltipTextLeft1:GetText());
- if tip then
- SpellCastName = tip;
- SpellTargetName = UnitName("target");
- if not SpellTargetName then
- SpellTargetName = "";
- end
- SpellTargetLevel = UnitLevel("target");
- if not SpellTargetLevel then
- SpellTargetLevel = "";
- end
- end
-end
-
-function Necrosis_CastSpell(spellId, spellbookTabNum)
- local Name, Rank = GetSpellName(spellId, spellbookTabNum);
- if Rank ~= nil then
- local _, _, Rank2 = string.find(Rank, "(%d+)");
- SpellCastRank = tonumber(Rank2);
- end
- SpellCastName = Name;
-
- SpellTargetName = UnitName("target");
- if not SpellTargetName then
- SpellTargetName = "";
- end
- SpellTargetLevel = UnitLevel("target");
- if not SpellTargetLevel then
- SpellTargetLevel = "";
- end
-end
-
-function Necrosis_CastSpellByName(Spell)
- local _, _, Name = string.find(Spell, "(.+)%(");
- local _, _, Rank = string.find(Spell, "([%d]+)");
-
- if Rank ~= nil then
- local _, _, Rank2 = string.find(Rank, "(%d+)");
- SpellCastRank = tonumber(Rank2);
- end
-
- if not Name then
- _, _, Name = string.find(Spell, "(.+)");
- end
- SpellCastName = Name;
-
- SpellTargetName = UnitName("target");
- if not SpellTargetName then
- SpellTargetName = "";
- end
- SpellTargetLevel = UnitLevel("target");
- if not SpellTargetLevel then
- SpellTargetLevel = "";
- end
-end
-
-function NecrosisTimer(nom, duree)
- local Cible = UnitName("target");
- local Niveau = UnitLevel("target");
- local truc = 6;
- if not Cible then
- Cible = "";
- truc = 2;
- end
- if not Niveau then
- Niveau = "";
- end
-
- SpellGroup, SpellTimer, TimerTable = NecrosisTimerX(nom, duree, truc, Cible, Niveau, SpellGroup, SpellTimer, TimerTable);
-end
-
-function NecrosisSpellCast(name)
- if string.find(name, "coa") then
- SpellCastName = NECROSIS_SPELL_TABLE[22].Name;
- SpellTargetName = UnitName("target");
- if not SpellTargetName then
- SpellTargetName = "";
- end
- SpellTargetLevel = UnitLevel("target");
- if not SpellTargetLevel then
- SpellTargetLevel = "";
- end
- CastSpell(NECROSIS_SPELL_TABLE[22].ID, "spell");
- end
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 05.09.2006-1
+------------------------------------------------------------------------------------------------------
+
+-- Configuration par défaut
+-- Se charge en cas d'absence de configuration ou de changement de version
+Default_NecrosisConfig = {
+ Version = NecrosisData.Version;
+ SoulshardContainer = 4;
+ SoulshardSort = false;
+ SoulshardDestroy = false;
+ ShadowTranceAlert = true;
+ ShowSpellTimers = true;
+ AntiFearAlert = true;
+ NecrosisLockServ = true;
+ NecrosisAngle = 180;
+ StonePosition = {true, true, true, true, true, true, true, true};
+ NecrosisToolTip = true;
+ NoDragAll = false;
+ PetMenuPos = 34;
+ BuffMenuPos = 34;
+ CurseMenuPos = 34;
+ ChatMsg = true;
+ ChatType = true;
+ NecrosisLanguage = GetLocale();
+ ShowCount = true;
+ CountType = 1;
+ ShadowTranceScale = 100;
+ NecrosisButtonScale = 90;
+ NecrosisColor = "Rose";
+ Sound = true;
+ SpellTimerPos = 1;
+ SpellTimerJust = "LEFT";
+ Circle = 1;
+ Graphical = true;
+ Yellow = true;
+ SensListe = 1;
+ PetName = {
+ [1] = " ",
+ [2] = " ",
+ [3] = " ",
+ [4] = " "
+ };
+ DominationUp = false;
+ AmplifyUp = false;
+ SM = false;
+ SteedSummon = false;
+ DemonSummon = true;
+ BanishScale = 100;
+};
+
+NecrosisConfig = {};
+local Debug = false;
+local Loaded = false
+
+-- Détection des initialisations du mod
+local NecrosisRL = true;
+
+-- Initialisation des variables utilisées par Necrosis pour la gestion des sorts lancés
+local SpellCastName = nil;
+local SpellCastRank = nil;
+local SpellTargetName = nil;
+local SpellTargetLevel = nil;
+local SpellCastTime = 0;
+
+-- Initialisation des tableaux gérant les Timers
+-- Un pour les sorts à timer, l'autre pour les groupes de mobs
+-- Le dernier permet l'association d'un timer à une frame graphique
+SpellTimer = {};
+local SpellGroup = {
+ Name = {"Rez", "Main", "Cooldown"},
+ SubName = {" ", " ", " "},
+ Visible = {true, true, true}
+};
+
+local TimerTable = {};
+for i = 1, 50, 1 do
+ TimerTable[i] = false;
+end
+
+-- Menus : Permet l'affichage des menus de buff et de pet
+local PetShow = false;
+local PetMenuShow = false;
+local BuffShow = false;
+local BuffMenuShow = false;
+local CurseShow = false;
+local CurseMenuShow = false;
+
+-- Menus : Permet la disparition progressive du menu des pets (transparence)
+local AlphaPetMenu = 1;
+local AlphaPetVar = 0;
+local PetVisible = false;
+
+-- Menus : Permet la disparition progressive du menu des buffs (transparence)
+local AlphaBuffMenu = 1;
+local AlphaBuffVar = 0;
+local BuffVisible = false;
+
+-- Menus : Permet la disparition progressive du menu des curses (transparence)
+local AlphaCurseMenu = 1;
+local AlphaCurseVar = 0;
+local CurseVisible = false;
+
+-- Menus : Permet de recaster le dernier cast du menu en cliquant milieu sur celui-ci
+local LastDemon = 0;
+local LastBuff = 0;
+local LastCurse = 0;
+local LastCurseClick = "LeftButton";
+
+-- Liste des boutons disponible pour le démoniste dans chaque menu
+local PetMenuCreate = {};
+local BuffMenuCreate = {};
+local CurseMenuCreate = {};
+
+-- Variables utilisées pour la gestion des montures
+local MountAvailable = false;
+local NecrosisMounted = false;
+local NecrosisTellMounted = true;
+local PlayerCombat = false;
+
+-- Variables utilisées pour la gestion des transes de l'ombre
+local ShadowTrance = false;
+local AntiFearInUse = false;
+local ShadowTranceID = -1;
+
+-- Variables utilisées pour la gestion des fragments d'âme
+-- (principalement comptage)
+local Soulshards = 0;
+local SoulshardContainer = 4;
+local SoulshardSlot = {};
+local SoulshardSlotID = 1;
+local SoulshardMP = 0;
+local SoulshardTime = 0;
+
+-- Variables utilisées pour la gestion des composants d'invocation
+-- (principalement comptage)
+local InfernalStone = 0;
+local DemoniacStone = 0;
+
+
+-- Variables utilisées pour la gestion des boutons d'invocation et d'utilisation des pierres
+local StoneIDInSpellTable = {0, 0, 0, 0}
+local SoulstoneUsedOnTarget = false;
+local SoulstoneOnHand = false;
+local SoulstoneLocation = {nil,nil};
+local SoulstoneMode = 1;
+local HealthstoneOnHand = false;
+local HealthstoneLocation = {nil,nil};
+local HealthstoneMode = 1;
+local FirestoneOnHand = false;
+local FirestoneLocation = {nil,nil};
+local FirestoneMode = 1;
+local SpellstoneOnHand = false;
+local SpellstoneLocation = {nil,nil};
+local SpellstoneMode = 1;
+local HearthstoneOnHand = false;
+local HearthstoneLocation = {nil,nil};
+local ItemswitchLocation = {nil,nil};
+local ItemOnHand = false;
+
+-- Variables gérant la possibilité ou l'impossibilité d'utiliser un timer de rez
+local SoulstoneWaiting = false;
+local SoulstoneCooldown = false;
+local SoulstoneAdvice = false;
+local SoulstoneTarget = "";
+
+-- Variables utilisées dans la gestion des démons
+local DemonType = nil;
+local DemonEnslaved = false;
+
+-- Variables utilisées pour l'anti-fear
+local AFblink1, AFBlink2 = 0;
+local AFImageType = { "", "Immu", "Prot"}; -- Fear warning button filename variations
+local AFCurrentTargetImmune = false;
+
+-- Variables utilisées pour les échanges de pierre avec les joueurs
+local NecrosisTradeRequest = false;
+local Trading = false;
+local TradingNow = 0;
+
+-- Gestion des sacs à fragment d'âme
+local BagIsSoulPouch = {nil, nil, nil, nil, nil};
+
+-- Variable contenant les derniers messages invoqués
+local PetMess = 0
+local SteedMess = 0
+local RezMess = 0
+local TPMess = 0
+
+-- Permet la gestion des tooltips dans Necrosis (sans la frame des pièces de monnaie)
+local lOriginal_GameTooltip_ClearMoney;
+
+local Necrosis_In = true;
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS NECROSIS APPLIQUEES A L'ENTREE DANS LE JEU
+------------------------------------------------------------------------------------------------------
+
+
+-- Fonction appliquée au chargement
+function Necrosis_OnLoad()
+
+ -- Permet de repérer les sorts lancés
+ Necrosis_Hook("UseAction", "Necrosis_UseAction", "before");
+ Necrosis_Hook("CastSpell", "Necrosis_CastSpell", "before");
+ Necrosis_Hook("CastSpellByName", "Necrosis_CastSpellByName", "before");
+
+ -- Enregistrement des événements interceptés par Necrosis
+ this:RegisterEvent("PLAYER_ENTERING_WORLD");
+ this:RegisterEvent("PLAYER_LEAVING_WORLD");
+ NecrosisButton:RegisterEvent("BAG_UPDATE");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
+ NecrosisButton:RegisterEvent("PLAYER_REGEN_DISABLED");
+ NecrosisButton:RegisterEvent("PLAYER_REGEN_ENABLED");
+ NecrosisButton:RegisterEvent("UNIT_PET");
+ NecrosisButton:RegisterEvent("SPELLCAST_START");
+ NecrosisButton:RegisterEvent("SPELLCAST_FAILED");
+ NecrosisButton:RegisterEvent("SPELLCAST_INTERRUPTED");
+ NecrosisButton:RegisterEvent("SPELLCAST_STOP");
+ NecrosisButton:RegisterEvent("LEARNED_SPELL_IN_TAB");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
+ NecrosisButton:RegisterEvent("PLAYER_TARGET_CHANGED");
+ NecrosisButton:RegisterEvent("TRADE_REQUEST");
+ NecrosisButton:RegisterEvent("TRADE_REQUEST_CANCEL");
+ NecrosisButton:RegisterEvent("TRADE_SHOW");
+ NecrosisButton:RegisterEvent("TRADE_CLOSED");
+
+ -- Enregistrement des composants graphiques
+ NecrosisButton:RegisterForDrag("LeftButton");
+ NecrosisButton:RegisterForClicks("LeftButtonUp", "RightButtonUp");
+ NecrosisButton:SetFrameLevel(1);
+
+ -- Enregistrement de la commande console
+ SlashCmdList["NecrosisCommand"] = Necrosis_SlashHandler;
+ SLASH_NecrosisCommand1 = "/necro";
+end
+
+
+-- Fonction appliquée une fois les paramètres des mods chargés
+function Necrosis_LoadVariables()
+ if Loaded or UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
+ return
+ end
+
+ Necrosis_Initialize();
+ Loaded = true ;
+
+ -- Détection du type de démon présent à la connexion
+ DemonType = UnitCreatureFamily("pet");
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS NECROSIS
+------------------------------------------------------------------------------------------------------
+
+-- Fonction lancée à la mise à jour de l'interface (main) -- toutes les 0,1 secondes environ
+function Necrosis_OnUpdate()
+
+ -- La fonction n'est utilisée que si Necrosis est initialisé et le joueur un Démoniste --
+ if (not Loaded) and UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
+ return;
+ end
+ -- La fonction n'est utilisée que si Necrosis est initialisé et le joueur un Démoniste --
+
+
+ -- Gestion des fragments d'âme : Tri des fragment toutes les secondes
+ local curTime = GetTime();
+ if ((curTime-SoulshardTime) >= 1) then
+ SoulshardTime = curTime;
+ if (SoulshardMP > 0) then
+ Necrosis_SoulshardSwitch("MOVE");
+ end
+ end
+
+ ----------------------------------------------------------
+ -- Gestion des sorts du Démoniste
+ ----------------------------------------------------------
+
+ -- Gestion du menu d'invocation des démons
+ if PetShow then
+ if GetTime() >= AlphaPetVar and AlphaPetMenu > 0 and (not PetVisible) then
+ AlphaPetVar = GetTime() + 0.1;
+ NecrosisPetMenu1:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu2:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu3:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu4:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu5:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu6:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu7:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu8:SetAlpha(AlphaPetMenu);
+ NecrosisPetMenu9:SetAlpha(AlphaPetMenu);
+ AlphaPetMenu = AlphaPetMenu - 0.1;
+ end
+ if AlphaPetMenu <= 0 then
+ Necrosis_PetMenu();
+ end
+ end
+
+ -- Gestion du menu des Buffs
+ if BuffShow then
+ if GetTime() >= AlphaBuffVar and AlphaBuffMenu > 0 and (not BuffVisible) then
+ AlphaBuffVar = GetTime() + 0.1;
+ NecrosisBuffMenu1:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu2:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu3:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu4:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu5:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu6:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu7:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu8:SetAlpha(AlphaBuffMenu);
+ NecrosisBuffMenu9:SetAlpha(AlphaBuffMenu);
+ AlphaBuffMenu = AlphaBuffMenu - 0.1;
+ end
+ if AlphaBuffMenu <= 0 then
+ Necrosis_BuffMenu();
+ end
+ end
+
+ -- Gestion du menu des Curses
+ if CurseShow then
+ if GetTime() >= AlphaCurseVar and AlphaCurseMenu > 0 and (not CurseVisible) then
+ AlphaCurseVar = GetTime() + 0.1;
+ NecrosisCurseMenu1:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu2:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu3:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu4:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu5:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu6:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu7:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu8:SetAlpha(AlphaCurseMenu);
+ NecrosisCurseMenu9:SetAlpha(AlphaCurseMenu);
+ AlphaCurseMenu = AlphaCurseMenu - 0.1;
+ end
+ if AlphaCurseMenu <= 0 then
+ Necrosis_CurseMenu();
+ end
+ end
+
+ -- Gestion du talent "Crépuscule"
+ if NecrosisConfig.ShadowTranceAlert then
+ local Actif = false;
+ local TimeLeft = 0;
+ Necrosis_UnitHasTrance();
+ if ShadowTranceID ~= -1 then Actif = true; end
+ if Actif and not ShadowTrance then
+ ShadowTrance = true;
+ Necrosis_Msg(NECROSIS_NIGHTFALL_TEXT.Message, "USER");
+ if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.ShadowTrance); end
+ local ShadowTranceIndex, cancel = GetPlayerBuff(ShadowTranceID,"HELPFUL|HARMFUL|PASSIVE");
+ TimeLeft = floor(GetPlayerBuffTimeLeft(ShadowTranceIndex));
+ NecrosisShadowTranceTimer:SetText(TimeLeft);
+ ShowUIPanel(NecrosisShadowTranceButton);
+ end
+ if not Actif and ShadowTrance then
+ HideUIPanel(NecrosisShadowTranceButton);
+ ShadowTrance = false;
+ end
+ if Actif and ShadowTrance then
+ local ShadowTranceIndex, cancel = GetPlayerBuff(ShadowTranceID,"HELPFUL|HARMFUL|PASSIVE");
+ TimeLeft = floor(GetPlayerBuffTimeLeft(ShadowTranceIndex));
+ NecrosisShadowTranceTimer:SetText(TimeLeft);
+ end
+ end
+
+ -- Gestion des Antifears
+ if NecrosisConfig.AntiFearAlert then
+ local Actif = false; -- must be False, or a number from 1 to AFImageType[] max element.
+
+ -- Checking if we have a target. Any fear need a target to be casted on
+ if UnitExists("target") and UnitCanAttack("player", "target") and not UnitIsDead("target") then
+ -- Checking if the target has natural immunity (only NPC target)
+ if not UnitIsPlayer("target") then
+ for index=1, table.getn(NECROSIS_ANTI_FEAR_UNIT), 1 do
+ if (UnitCreatureType("target") == NECROSIS_ANTI_FEAR_UNIT[index] ) then
+ Actif = 2; -- Immun
+ break;
+ end
+ end
+ end
+
+ -- We'll start to parse the target buffs, as his class doesn't give him natural permanent immunity
+ if not Actif then
+ for index=1, table.getn(NECROSIS_ANTI_FEAR_SPELL.Buff), 1 do
+ if Necrosis_UnitHasBuff("target",NECROSIS_ANTI_FEAR_SPELL.Buff[index]) then
+ Actif = 3; -- Prot
+ break;
+ end
+ end
+
+ -- No buff found, let's try the debuffs
+ for index=1, table.getn(NECROSIS_ANTI_FEAR_SPELL.Debuff), 1 do
+ if Necrosis_UnitHasEffect("target",NECROSIS_ANTI_FEAR_SPELL.Debuff[index]) then
+ Actif = 3; -- Prot
+ break;
+ end
+ end
+ end
+
+ -- an immunity has been detected before, but we still don't know why => show the button anyway
+ if AFCurrentTargetImmune and not Actif then
+ Actif = 1;
+ end
+ end
+
+ if Actif then
+ -- Antifear button is currently not visible, we have to change that
+ if not AntiFearInUse then
+ AntiFearInUse = true;
+ Necrosis_Msg(NECROSIS_MESSAGE.Information.FearProtect, "USER");
+ NecrosisAntiFearButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\AntiFear"..AFImageType[Actif].."-02");
+ if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.Fear); end
+ ShowUIPanel(NecrosisAntiFearButton);
+ AFBlink1 = GetTime() + 0.6;
+ AFBlink2 = 2;
+
+ -- Timer to make the button blink
+ elseif GetTime() >= AFBlink1 then
+ if AFBlink2 == 1 then
+ AFBlink2 = 2;
+ else
+ AFBlink2 = 1;
+ end
+ AFBlink1 = GetTime() + 0.4;
+ NecrosisAntiFearButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\AntiFear"..AFImageType[Actif].."-0"..AFBlink2);
+ end
+
+ elseif AntiFearInUse then -- No antifear on target, but the button is still visible => gonna hide it
+ AntiFearInUse = false;
+ HideUIPanel(NecrosisAntiFearButton);
+ end
+ end
+
+ -- Gestion du Timer des sorts
+ if (not NecrosisSpellTimerButton:IsVisible()) then
+ ShowUIPanel(NecrosisSpellTimerButton);
+ end
+ local display = "";
+
+ if NecrosisConfig.CountType == 3 then
+ NecrosisShardCount:SetText("");
+ end
+ local update = false;
+ if ((curTime - SpellCastTime) >= 1) then
+ SpellCastTime = curTime;
+ update = true;
+ end
+
+ -- On met à jour les boutons toutes les secondes
+ -- On accepte le trade de la pierre de soin si transfert en cours
+ if update then
+ if Trading then
+ TradingNow = TradingNow - 1;
+ if TradingNow == 0 then
+ AcceptTrade();
+ Trading = false;
+ end
+ end
+ Necrosis_UpdateIcons();
+ end
+
+ -- Parcours du tableau des Timers
+ local GraphicalTimer = {texte = {}, TimeMax = {}, Time = {}, titre = {}, temps = {}, Gtimer = {}};
+ if SpellTimer then
+ for index = 1, table.getn(SpellTimer), 1 do
+ if SpellTimer[index] then
+ if (GetTime() <= SpellTimer[index].TimeMax) then
+ -- Création de l'affichage des timers
+ display, SpellGroup, GraphicalTimer, TimerTable = Necrosis_DisplayTimer(display, index, SpellGroup, SpellTimer, GraphicalTimer, TimerTable);
+ end
+ -- Action toutes les secondes
+ if (update) then
+ -- On enlève les timers terminés
+ local TimeLocal = GetTime();
+ if TimeLocal >= (SpellTimer[index].TimeMax - 0.5) and SpellTimer[index].TimeMax ~= -1 then
+ -- Si le timer était celui de la Pierre d'âme, on prévient le Démoniste
+ if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
+ Necrosis_Msg(NECROSIS_MESSAGE.Information.SoulstoneEnd, "USER");
+ SpellTimer[index].Target = "";
+ SpellTimer[index].TimeMax = -1;
+ if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.SoulstoneEnd); end
+ Necrosis_RemoveFrame(SpellTimer[index].Gtimer, TimerTable);
+ -- On met à jour l'apparence du bouton de la pierre d'âme
+ Necrosis_UpdateIcons();
+ -- Sinon on enlève le timer silencieusement (mais pas en cas d'enslave)
+ elseif SpellTimer[index].Name ~= NECROSIS_SPELL_TABLE[10].Name then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
+ index = 0;
+ break;
+ end
+ end
+ -- Si le Démoniste n'est plus sous l'emprise du Sacrifice
+ if SpellTimer and SpellTimer[index].Name == NECROSIS_SPELL_TABLE[17].Name then -- Sacrifice
+ if not Necrosis_UnitHasEffect("player", SpellTimer[index].Name) and SpellTimer[index].TimeMax ~= nil then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
+ index = 0;
+ break;
+ end
+ end
+ -- Si la cible visée n'est plus atteinte par un sort lancé [résists]
+ if SpellTimer and (SpellTimer[index].Type == 4 or SpellTimer[index].Type == 5)
+ and SpellTimer[index].Target == UnitName("target")
+ then
+ -- On triche pour laisser le temps au mob de bien sentir qu'il est débuffé ^^
+ if TimeLocal >= ((SpellTimer[index].TimeMax - SpellTimer[index].Time) + 1.5)
+ and SpellTimer[index] ~= 6 then
+ if not Necrosis_UnitHasEffect("target", SpellTimer[index].Name) then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
+ index = 0;
+ break;
+ end
+ end
+ end
+ end
+ end
+ end
+ else
+ for i = 1, 10, 1 do
+ local frameName = "NecrosisTarget"..i.."Text";
+ local frameItem = getglobal(frameName);
+ if frameItem:IsShown() then
+ frameItem:Hide();
+ end
+ end
+ end
+
+ if NecrosisConfig.ShowSpellTimers or NecrosisConfig.Graphical then
+ -- Si affichage de timer texte
+ if not NecrosisConfig.Graphical then
+ -- Coloration de l'affichage des timers
+ display = Necrosis_MsgAddColor(display);
+ -- Affichage des timers
+ NecrosisListSpells:SetText(display);
+ else
+ NecrosisListSpells:SetText("");
+ end
+ for i = 4, table.getn(SpellGroup.Name) do
+ SpellGroup.Visible[i] = false;
+ end
+ else
+ if (NecrosisSpellTimerButton:IsVisible()) then
+ NecrosisListSpells:SetText("");
+ HideUIPanel(NecrosisSpellTimerButton);
+ end
+ end
+end
+
+-- Fonction lancée selon l'événement intercepté
+function Necrosis_OnEvent(event)
+ if (event == "PLAYER_ENTERING_WORLD") then
+ Necrosis_In = true;
+ elseif (event == "PLAYER_LEAVING_WORLD") then
+ Necrosis_In = false;
+ end
+
+ -- Traditionnel test : Le joueur est-il bien Démoniste ?
+ -- Le jeu est-il bine chargé ?
+ if (not Loaded) or (not Necrosis_In) or UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
+ return;
+ end
+
+ -- Si le contenu des sacs a changé, on vérifie que les Fragments d'âme sont toujours dans le bon sac
+ if (event == "BAG_UPDATE") then
+ if (NecrosisConfig.SoulshardSort) then
+ Necrosis_SoulshardSwitch("CHECK");
+ else
+ Necrosis_BagExplore();
+ end
+ -- Gestion de la fin de l'incantation des sorts
+ elseif (event == "SPELLCAST_STOP") then
+ Necrosis_SpellManagement();
+ -- Quand le démoniste commence à incanter un sort, on intercepte le nom de celui-ci
+ -- On sauve également le nom de la cible du sort ainsi que son niveau
+ elseif (event == "SPELLCAST_START") then
+ SpellCastName = arg1;
+ SpellTargetName = UnitName("target");
+ if not SpellTargetName then
+ SpellTargetName = "";
+ end
+ SpellTargetLevel = UnitLevel("target");
+ if not SpellTargetLevel then
+ SpellTargetLevel = "";
+ end
+ -- Quand le démoniste stoppe son incantation, on relache le nom de celui-ci
+ elseif (event == "SPELLCAST_FAILED") or (event == "SPELLCAST_INTERRUPTED") then
+ SpellCastName = nil;
+ SpellCastRank = nil;
+ SpellTargetName = nil;
+ SpellTargetLevel = nil;
+ -- Flag si une fenetre de Trade est ouverte, afin de pouvoir trader automatiquement les pierres de soin
+ elseif event == "TRADE_REQUEST" or event == "TRADE_SHOW" then
+ NecrosisTradeRequest = true;
+ elseif event == "TRADE_REQUEST_CANCEL" or event == "TRADE_CLOSED" then
+ NecrosisTradeRequest = false;
+ -- AntiFear button hide on target change
+ elseif event == "PLAYER_TARGET_CHANGED" then
+ if NecrosisConfig.AntiFearAlert and AFCurrentTargetImmune then
+ AFCurrentTargetImmune = false;
+ end
+ -- AntiFear immunity on cast detection
+ elseif event == "CHAT_MSG_SPELL_SELF_DAMAGE" then
+ if NecrosisConfig.AntiFearAlert then
+ for spell, creatureName in string.gfind(arg1, NECROSIS_ANTI_FEAR_SRCH) do
+ -- We check if the casted spell on the immune target is Fear or Death Coil
+ if spell == NECROSIS_SPELL_TABLE[13].Name or spell == NECROSIS_SPELL_TABLE[19].Name then
+ AFCurrentTargetImmune = true;
+ break;
+ end
+ end
+ end
+
+ -- Si le Démoniste apprend un nouveau sort / rang de sort, on récupère la nouvelle liste des sorts
+ -- Si le Démoniste apprend un nouveau sort de buff ou d'invocation, on recrée les boutons
+ elseif (event == "LEARNED_SPELL_IN_TAB") then
+ Necrosis_SpellSetup();
+ Necrosis_CreateMenu();
+ Necrosis_ButtonSetup();
+
+ -- A la fin du combat, on arrête de signaler le Crépuscule
+ -- On enlève les timers de sorts ainsi que les noms des mobs
+ elseif (event == "PLAYER_REGEN_ENABLED") then
+ PlayerCombat = false;
+ SpellGroup, SpellTimer, TimerTable = Necrosis_RetraitTimerCombat(SpellGroup, SpellTimer, TimerTable);
+ for i = 1, 10, 1 do
+ local frameName = "NecrosisTarget"..i.."Text";
+ local frameItem = getglobal(frameName);
+ if frameItem:IsShown() then
+ frameItem:Hide();
+ end
+ end
+ -- Quand le démoniste change de démon
+ elseif (event == "UNIT_PET" and arg1 == "player") then
+ Necrosis_ChangeDemon();
+ -- Actions personnelles -- "Buffs"
+ elseif (event == "CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS") then
+ Necrosis_SelfEffect("BUFF");
+ -- Actions personnelles -- "Debuffs"
+ elseif event == "CHAT_MSG_SPELL_AURA_GONE_SELF" or event == "CHAT_MSG_SPELL_BREAK_AURA" then
+ Necrosis_SelfEffect("DEBUFF");
+ elseif event == "PLAYER_REGEN_DISABLED" then
+ PlayerCombat = true;
+ -- Fin de l'écran de chargement
+ end
+ return;
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS NECROSIS "ON EVENT"
+------------------------------------------------------------------------------------------------------
+
+-- Events : PLAYER_ENTERING_WORLD et PLAYER_LEAVING_WORLD
+-- Fonction appliquée à chaque écran de chargement
+-- Quand on sort d'une zone, on arrête de surveiller les envents
+-- Quand on rentre dans une zone, on reprend la surveillance
+-- Cela permet d'éviter un temps de chargement trop long du mod
+function Necrosis_RegisterManagement(RegistrationType)
+ if RegistrationType == "IN" then
+ NecrosisButton:RegisterEvent("BAG_UPDATE");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
+ NecrosisButton:RegisterEvent("PLAYER_REGEN_DISABLED");
+ NecrosisButton:RegisterEvent("PLAYER_REGEN_ENABLED");
+ NecrosisButton:RegisterEvent("UNIT_PET");
+ NecrosisButton:RegisterEvent("SPELLCAST_START");
+ NecrosisButton:RegisterEvent("SPELLCAST_FAILED");
+ NecrosisButton:RegisterEvent("SPELLCAST_INTERRUPTED");
+ NecrosisButton:RegisterEvent("SPELLCAST_STOP");
+ NecrosisButton:RegisterEvent("LEARNED_SPELL_IN_TAB");
+ NecrosisButton:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
+ NecrosisButton:RegisterEvent("PLAYER_TARGET_CHANGED");
+ NecrosisButton:RegisterEvent("TRADE_REQUEST");
+ NecrosisButton:RegisterEvent("TRADE_REQUEST_CANCEL");
+ NecrosisButton:RegisterEvent("TRADE_SHOW");
+ NecrosisButton:RegisterEvent("TRADE_CLOSED");
+ else
+ NecrosisButton:UnregisterEvent("BAG_UPDATE");
+ NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");
+ NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_AURA_GONE_SELF");
+ NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_BREAK_AURA");
+ NecrosisButton:UnregisterEvent("PLAYER_REGEN_DISABLED");
+ NecrosisButton:UnregisterEvent("PLAYER_REGEN_ENABLED");
+ NecrosisButton:UnregisterEvent("UNIT_PET");
+ NecrosisButton:UnregisterEvent("SPELLCAST_START");
+ NecrosisButton:UnregisterEvent("SPELLCAST_FAILED");
+ NecrosisButton:UnregisterEvent("SPELLCAST_INTERRUPTED");
+ NecrosisButton:UnregisterEvent("SPELLCAST_STOP");
+ NecrosisButton:UnregisterEvent("LEARNED_SPELL_IN_TAB");
+ NecrosisButton:UnregisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
+ NecrosisButton:UnregisterEvent("PLAYER_TARGET_CHANGED");
+ NecrosisButton:UnregisterEvent("TRADE_REQUEST");
+ NecrosisButton:UnregisterEvent("TRADE_REQUEST_CANCEL");
+ NecrosisButton:UnregisterEvent("TRADE_SHOW");
+ NecrosisButton:UnregisterEvent("TRADE_CLOSED");
+ end
+ return;
+end
+
+-- event : UNIT_PET
+-- Permet de timer les asservissements, ainsi que de prévenir pour les ruptures d'asservissement
+-- Change également le nom du pet au remplacement de celui-ci
+function Necrosis_ChangeDemon()
+ -- Si le nouveau démon est un démon asservi, on place un timer de 5 minutes
+ if (Necrosis_UnitHasEffect("pet", NECROSIS_SPELL_TABLE[10].Name)) then
+ if (not DemonEnslaved) then
+ DemonEnslaved = true;
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(10, "","", SpellGroup, SpellTimer, TimerTable);
+ end
+ else
+ -- Quand le démon asservi est perdu, on retire le Timer et on prévient le Démoniste
+ if (DemonEnslaved) then
+ DemonEnslaved = false;
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_SPELL_TABLE[10].Name, SpellTimer, TimerTable);
+ if NecrosisConfig.Sound then PlaySoundFile(NECROSIS_SOUND.EnslaveEnd); end
+ Necrosis_Msg(NECROSIS_MESSAGE.Information.EnslaveBreak, "USER");
+ end
+ end
+
+ -- Si le démon n'est pas asservi on définit son titre, et on met à jour son nom dans Necrosis
+ DemonType = UnitCreatureFamily("pet");
+ for i = 1, 4, 1 do
+ if DemonType == NECROSIS_PET_LOCAL_NAME[i] and NecrosisConfig.PetName[i] == " " and UnitName("pet") ~= UNKNOWNOBJECT then
+ NecrosisConfig.PetName[i] = UnitName("pet");
+ NecrosisLocalization();
+ break;
+ end
+ end
+
+ return;
+end
+
+-- events : CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS, CHAT_MSG_SPELL_AURA_GONE_SELF et CHAT_MSG_SPELL_BREAK_AURA
+-- Permet de gérer les effets apparaissants et disparaissants sur le démoniste
+-- Basé sur le CombatLog
+function Necrosis_SelfEffect(action)
+ if action == "BUFF" then
+ -- Insertion d'un timer quand le Démoniste subit "Sacrifice"
+ if arg1 == NECROSIS_TRANSLATION.SacrificeGain then
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(17, "", "", SpellGroup, SpellTimer, TimerTable);
+ end
+ -- Changement du bouton de monture quand le Démoniste chevauche
+ if string.find(arg1, NECROSIS_SPELL_TABLE[1].Name) or string.find(arg1, NECROSIS_SPELL_TABLE[2].Name) then
+ NecrosisMounted = true;
+ if NecrosisConfig.SteedSummon and NecrosisTellMounted
+ and NecrosisConfig.ChatMsg and NECROSIS_PET_MESSAGE[6] and not NecrosisConfig.SM
+ then
+ local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[6]));
+ while tempnum == SteedMess and table.getn(NECROSIS_PET_MESSAGE[6]) >= 2 do
+ tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[6]));
+ end
+ SteedMess = tempnum;
+ for i = 1, table.getn(NECROSIS_PET_MESSAGE[6][tempnum]) do
+ Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[6][tempnum][i]), "SAY");
+ end
+ NecrosisTellMounted = false;
+ end
+ NecrosisMountButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\MountButton-02");
+
+ end
+ -- Changement du bouton de la domination corrompue si celle-ci est activée + Timer de cooldown
+ if string.find(arg1, NECROSIS_SPELL_TABLE[15].Name) and NECROSIS_SPELL_TABLE[15].ID ~= nil then
+ DominationUp = true;
+ NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-02");
+ end
+ -- Changement du bouton de la malédiction amplifiée si celle-ci est activée + Timer de cooldown
+ if string.find(arg1, NECROSIS_SPELL_TABLE[42].Name) and NECROSIS_SPELL_TABLE[42].ID ~= nil then
+ AmplifyUp = true;
+ NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-02");
+ end
+ else
+ -- Changement du bouton de monture quand le Démoniste est démonté
+ if string.find(arg1, NECROSIS_SPELL_TABLE[1].Name) or string.find(arg1, NECROSIS_SPELL_TABLE[2].Name) then
+ NecrosisMounted = false;
+ NecrosisTellMounted = true;
+ NecrosisMountButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\MountButton-01");
+ end
+ -- Changement du bouton de Domination quand le Démoniste n'est plus sous son emprise
+ if string.find(arg1, NECROSIS_SPELL_TABLE[15].Name) and NECROSIS_SPELL_TABLE[15].ID ~= nil then
+ DominationUp = false;
+ NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-01");
+ end
+ -- Changement du bouton de la malédiction amplifiée quand le Démoniste n'est plus sous son emprise
+ if string.find(arg1, NECROSIS_SPELL_TABLE[42].Name) and NECROSIS_SPELL_TABLE[42].ID ~= nil then
+ AmplifyUp = false;
+ NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-01");
+ end
+ end
+ return;
+end
+
+-- event : SPELLCAST_STOP
+-- Permet de gérer tout ce qui touche aux sorts une fois leur incantation réussie
+function Necrosis_SpellManagement()
+ local SortActif = false;
+ if (SpellCastName) then
+ -- Si le sort lancé à été une Résurrection de Pierre d'âme, on place un timer
+ if (SpellCastName == NECROSIS_SPELL_TABLE[11].Name) then
+ if SpellTargetName == UnitName("player") then
+ SpellTargetName = "";
+ end
+ -- Si les messages sont actifs et que la pierre est posée sur un joueur ciblé, hop, message !
+ if (NecrosisConfig.ChatMsg or NecrosisConfig.SM)
+ and SoulstoneUsedOnTarget then
+ SoulstoneTarget = SpellTargetName;
+ SoulstoneAdvice = true;
+ end
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(11, SpellTargetName, "", SpellGroup, SpellTimer, TimerTable);
+ -- Si le sort était un rituel d'invocation, alors on écrit une phrase a caractère informatif aux joueurs
+ elseif (SpellCastName == NECROSIS_TRANSLATION.SummoningRitual)
+ and (NecrosisConfig.ChatMsg or NecrosisConfig.SM)
+ and NECROSIS_INVOCATION_MESSAGES then
+ local tempnum = random(1, table.getn(NECROSIS_INVOCATION_MESSAGES));
+ while tempnum == TPMess and table.getn(NECROSIS_INVOCATION_MESSAGES) >= 2 do
+ tempnum = random(1, table.getn(NECROSIS_INVOCATION_MESSAGES));
+ end
+ TPMess = tempnum;
+ for i = 1, table.getn(NECROSIS_INVOCATION_MESSAGES[tempnum]) do
+ Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_INVOCATION_MESSAGES[tempnum][i], SpellTargetName), "WORLD");
+ end
+ -- Pour les autres sorts castés, tentative de timer si valable
+ else
+ for spell=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
+ if SpellCastName == NECROSIS_SPELL_TABLE[spell].Name and not (spell == 10) then
+ -- Si le timer existe déjà sur la cible, on le met à jour
+ for thisspell=1, table.getn(SpellTimer), 1 do
+ if SpellTimer[thisspell].Name == SpellCastName
+ and SpellTimer[thisspell].Target == SpellTargetName
+ and SpellTimer[thisspell].TargetLevel == SpellTargetLevel
+ and NECROSIS_SPELL_TABLE[spell].Type ~= 4
+ and spell ~= 16
+ then
+ -- Si c'est sort lancé déjà présent sur un mob, on remet le timer à fond
+ if spell ~= 9 or (spell == 9 and not Necrosis_UnitHasEffect("target", SpellCastName)) then
+ SpellTimer[thisspell].Time = NECROSIS_SPELL_TABLE[spell].Length;
+ SpellTimer[thisspell].TimeMax = floor(GetTime() + NECROSIS_SPELL_TABLE[spell].Length);
+ if spell == 9 and SpellCastRank == 1 then
+ SpellTimer[thisspell].Time = 20;
+ SpellTimer[thisspell].TimeMax = floor(GetTime() + 20);
+ end
+ end
+ SortActif = true;
+ break;
+ end
+ -- Si c'est un banish sur une nouvelle cible, on supprime le timer précédent
+ if SpellTimer[thisspell].Name == SpellCastName and spell == 9
+ and
+ (SpellTimer[thisspell].Target ~= SpellTargetName
+ or SpellTimer[thisspell].TargetLevel ~= SpellTargetLevel)
+ then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
+ SortActif = false;
+ break;
+ end
+
+ -- Si c'est un fear, on supprime le timer du fear précédent
+ if SpellTimer[thisspell].Name == SpellCastName and spell == 13 then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
+ SortActif = false;
+ break;
+ end
+ if SortActif then break; end
+ end
+ -- Si le timer est une malédiction, on enlève la précédente malédiction sur la cible
+ if (NECROSIS_SPELL_TABLE[spell].Type == 4) or (spell == 16) then
+ for thisspell=1, table.getn(SpellTimer), 1 do
+ -- Mais on garde le cooldown de la malédiction funeste
+ if SpellTimer[thisspell].Name == NECROSIS_SPELL_TABLE[16].Name then
+ SpellTimer[thisspell].Target = "";
+ SpellTimer[thisspell].TargetLevel = "";
+ end
+ if SpellTimer[thisspell].Type == 4
+ and SpellTimer[thisspell].Target == SpellTargetName
+ and SpellTimer[thisspell].TargetLevel == SpellTargetLevel
+ then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParIndex(thisspell, SpellTimer, TimerTable);
+ break;
+ end
+ end
+ SortActif = false;
+ end
+ if not SortActif
+ and NECROSIS_SPELL_TABLE[spell].Type ~= 0
+ and spell ~= 10
+ then
+
+ if spell == 9 then
+ if SpellCastRank == 1 then
+ NECROSIS_SPELL_TABLE[spell].Length = 20;
+ else
+ NECROSIS_SPELL_TABLE[spell].Length = 30;
+ end
+ end
+
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerParTable(spell, SpellTargetName, SpellTargetLevel, SpellGroup, SpellTimer, TimerTable);
+ break;
+ end
+ end
+ end
+ end
+ end
+ SpellCastName = nil;
+ SpellCastRank = nil;
+ return;
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DE L'INTERFACE -- LIENS XML
+------------------------------------------------------------------------------------------------------
+
+-- En cliquant droit sur Necrosis, on affiche ou masque les deux panneaux de configurations
+function Necrosis_Toggle(button)
+ if button == "LeftButton" then
+ if NECROSIS_SPELL_TABLE[41].ID then
+ CastSpell(NECROSIS_SPELL_TABLE[41].ID, "spell");
+ end
+ return;
+ elseif (NecrosisGeneralFrame:IsVisible()) then
+ HideUIPanel(NecrosisGeneralFrame);
+ return;
+ else
+ if NecrosisConfig.SM then
+ Necrosis_Msg("!!! Short Messages : On", "USER");
+ end
+ ShowUIPanel(NecrosisGeneralFrame);
+ NecrosisGeneralTab_OnClick(1);
+ return;
+ end
+end
+
+-- Fonction permettant le déplacement d'éléments de Necrosis sur l'écran
+function Necrosis_OnDragStart(button)
+ if (button == "NecrosisIcon") then GameTooltip:Hide(); end
+ button:StartMoving();
+end
+
+-- Fonction arrêtant le déplacement d'éléments de Necrosis sur l'écran
+function Necrosis_OnDragStop(button)
+ if (button == "NecrosisIcon") then Necrosis_BuildTooltip("OVERALL"); end
+ button:StopMovingOrSizing();
+end
+
+-- Fonction alternant Timers graphiques et Timers textes
+function Necrosis_HideGraphTimer()
+ for i = 1, 50, 1 do
+ local elements = {"Text", "Bar", "Texture", "OutText"}
+ if NecrosisConfig.Graphical then
+ if TimerTable[i] then
+ for j = 1, 4, 1 do
+ frameName = "NecrosisTimer"..i..elements[j];
+ frameItem = getglobal(frameName);
+ frameItem:Show();
+ end
+ end
+ else
+ for j = 1, 4, 1 do
+ frameName = "NecrosisTimer"..i..elements[j];
+ frameItem = getglobal(frameName);
+ frameItem:Hide();
+ end
+ end
+ end
+end
+
+-- Fonction gérant les bulles d'aide
+function Necrosis_BuildTooltip(button, type, anchor)
+
+ -- Si l'affichage des bulles d'aide est désactivé, Bye bye !
+ if not NecrosisConfig.NecrosisToolTip then
+ return;
+ end
+
+ -- On regarde si la domination corrompue, le gardien de l'ombre ou l'amplification de malédiction sont up (pour tooltips)
+ local start, duration, start2, duration2, start3, duration3
+ if NECROSIS_SPELL_TABLE[15].ID then
+ start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, BOOKTYPE_SPELL);
+ else
+ start = 1;
+ duration = 1;
+ end
+ if NECROSIS_SPELL_TABLE[43].ID then
+ start2, duration2 = GetSpellCooldown(NECROSIS_SPELL_TABLE[43].ID, BOOKTYPE_SPELL);
+ else
+ start2 = 1;
+ duration2 = 1;
+ end
+ if NECROSIS_SPELL_TABLE[42].ID then
+ start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, BOOKTYPE_SPELL);
+ else
+ start3 = 1;
+ duration3 = 1;
+ end
+
+ -- Création des bulles d'aides....
+ GameTooltip:SetOwner(button, anchor);
+ GameTooltip:SetText(NecrosisTooltipData[type].Label);
+ -- ..... pour le bouton principal
+ if (type == "Main") then
+ GameTooltip:AddLine(NecrosisTooltipData.Main.Soulshard..Soulshards);
+ GameTooltip:AddLine(NecrosisTooltipData.Main.InfernalStone..InfernalStone);
+ GameTooltip:AddLine(NecrosisTooltipData.Main.DemoniacStone..DemoniacStone);
+ GameTooltip:AddLine(NecrosisTooltipData.Main.Soulstone..NecrosisTooltipData[type].Stone[SoulstoneOnHand]);
+ GameTooltip:AddLine(NecrosisTooltipData.Main.Healthstone..NecrosisTooltipData[type].Stone[HealthstoneOnHand]);
+ -- On vérifie si une pierre de sort n'est pas équipée
+ NecrosisTooltip:SetInventoryItem("player", 17);
+ local rightHand = tostring(NecrosisTooltipTextLeft1:GetText());
+ if string.find(rightHand, NECROSIS_ITEM.Spellstone) then SpellstoneOnHand = true; end
+ GameTooltip:AddLine(NecrosisTooltipData.Main.Spellstone..NecrosisTooltipData[type].Stone[SpellstoneOnHand]);
+ -- De même pour la pierre de feu
+ if string.find(rightHand, NECROSIS_ITEM.Firestone) then FirestoneOnHand = true; end
+ GameTooltip:AddLine(NecrosisTooltipData.Main.Firestone..NecrosisTooltipData[type].Stone[FirestoneOnHand]);
+ -- Affichage du nom du démon, ou s'il est asservi, ou "Aucun" si aucun démon n'est présent
+ if (DemonType) then
+ GameTooltip:AddLine(NecrosisTooltipData.Main.CurrentDemon..DemonType);
+ elseif DemonEnslaved then
+ GameTooltip:AddLine(NecrosisTooltipData.Main.EnslavedDemon);
+ else
+ GameTooltip:AddLine(NecrosisTooltipData.Main.NoCurrentDemon);
+ end
+ -- ..... pour les boutons de pierre
+ elseif (string.find(type, "stone")) then
+ -- Pierre d'âme
+ if (type == "Soulstone") then
+ -- On affiche le nom de la pierre et l'action que produira le clic sur le bouton
+ -- Et aussi le Temps de recharge
+ if SoulstoneMode == 1 or SoulstoneMode == 3 then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[1]].Mana.." Mana");
+ end
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(SoulstoneLocation[1], SoulstoneLocation[2]);
+ local itemName = tostring(NecrosisTooltipTextLeft6:GetText());
+ GameTooltip:AddLine(NecrosisTooltipData[type].Text[SoulstoneMode]);
+ if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
+ GameTooltip:AddLine(itemName);
+ end
+ -- Pierre de vie
+ elseif (type == "Healthstone") then
+ -- Idem
+ if HealthstoneMode == 1 then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[2]].Mana.." Mana");
+ end
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(HealthstoneLocation[1], HealthstoneLocation[2]);
+ local itemName = tostring(NecrosisTooltipTextLeft6:GetText());
+ GameTooltip:AddLine(NecrosisTooltipData[type].Text[HealthstoneMode]);
+ if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
+ GameTooltip:AddLine(itemName);
+ end
+ -- Pierre de sort
+ elseif (type == "Spellstone") then
+ -- Eadem
+ if SpellstoneMode == 1 then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[3]].Mana.." Mana");
+ end
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetInventoryItem("player", 17);
+ local itemName = tostring(NecrosisTooltipTextLeft9:GetText());
+ local itemStone = tostring(NecrosisTooltipTextLeft1:GetText());
+ GameTooltip:AddLine(NecrosisTooltipData[type].Text[SpellstoneMode]);
+ if (string.find(itemStone, NECROSIS_ITEM.Spellstone)
+ and string.find(itemName, NECROSIS_TRANSLATION.Cooldown)) then
+ GameTooltip:AddLine(itemName);
+ end
+ -- Pierre de feu
+ elseif (type == "Firestone") then
+ -- Idem, mais sans le cooldown
+ if FirestoneMode == 1 then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[4]].Mana.." Mana");
+ end
+ GameTooltip:AddLine(NecrosisTooltipData[type].Text[FirestoneMode]);
+ end
+ -- ..... pour le bouton des Timers
+ elseif (type == "SpellTimer") then
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(HearthstoneLocation[1], HearthstoneLocation[2]);
+ local itemName = tostring(NecrosisTooltipTextLeft5:GetText());
+ GameTooltip:AddLine(NecrosisTooltipData[type].Text);
+ if string.find(itemName, NECROSIS_TRANSLATION.Cooldown) then
+ GameTooltip:AddLine(NECROSIS_TRANSLATION.Hearth.." - "..itemName);
+ else
+ GameTooltip:AddLine(NecrosisTooltipData[type].Right..GetBindLocation());
+ end
+
+ -- ..... pour le bouton de la Transe de l'ombre
+ elseif (type == "ShadowTrance") then
+ local rank = Necrosis_FindSpellAttribute("Name", NECROSIS_NIGHTFALL.BoltName, "Rank");
+ GameTooltip:SetText(NecrosisTooltipData[type].Label.." |CFF808080Rank "..rank.."|r");
+ -- ..... pour les autres buffs et démons, le coût en mana...
+ elseif (type == "Enslave") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[35].Mana.." Mana");
+ if Soulshards == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
+ end
+ elseif (type == "Mount") then
+ if NECROSIS_SPELL_TABLE[2].ID then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[2].Mana.." Mana");
+ elseif NECROSIS_SPELL_TABLE[1].ID then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[1].Mana.." Mana");
+ end
+ elseif (type == "Armor") then
+ if NECROSIS_SPELL_TABLE[31].ID then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[31].Mana.." Mana");
+ else
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[36].Mana.." Mana");
+ end
+ elseif (type == "Invisible") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[33].Mana.." Mana");
+ elseif (type == "Aqua") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[32].Mana.." Mana");
+ elseif (type == "Kilrogg") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[34].Mana.." Mana");
+ elseif (type == "Banish") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[9].Mana.." Mana");
+ elseif (type == "Weakness") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[23].Mana.." Mana");
+ if not (start3 > 0 and duration3 > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
+ end
+ elseif (type == "Agony") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[22].Mana.." Mana");
+ if not (start3 > 0 and duration3 > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
+ end
+ elseif (type == "Reckless") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[24].Mana.." Mana");
+ elseif (type == "Tongues") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[25].Mana.." Mana");
+ elseif (type == "Exhaust") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[40].Mana.." Mana");
+ if not (start3 > 0 and duration3 > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.AmplifyCooldown);
+ end
+ elseif (type == "Elements") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[26].Mana.." Mana");
+ elseif (type == "Shadow") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[27].Mana.." Mana");
+ elseif (type == "Doom") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[16].Mana.." Mana");
+ elseif (type == "Amplify") then
+ if start3 > 0 and duration3 > 0 then
+ local seconde = duration3 - ( GetTime() - start3)
+ local affiche, minute, time
+ if seconde <= 59 then
+ affiche = tostring(floor(seconde)).." sec";
+ else
+ minute = tostring(floor(seconde/60))
+ seconde = mod(seconde, 60);
+ if seconde <= 9 then
+ time = "0"..tostring(floor(seconde));
+ else
+ time = tostring(floor(seconde));
+ end
+ affiche = minute..":"..time;
+ end
+ GameTooltip:AddLine("Cooldown : "..affiche);
+ end
+ elseif (type == "TP") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[37].Mana.." Mana");
+ if Soulshards == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
+ end
+ elseif (type == "SoulLink") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[38].Mana.." Mana");
+ elseif (type == "ShadowProtection") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[43].Mana.." Mana");
+ if start2 > 0 and duration2 > 0 then
+ local seconde = duration2 - ( GetTime() - start2)
+ local affiche
+ affiche = tostring(floor(seconde)).." sec";
+ GameTooltip:AddLine("Cooldown : "..affiche);
+ end
+ elseif (type == "Domination") then
+ if start > 0 and duration > 0 then
+ local seconde = duration - ( GetTime() - start)
+ local affiche, minute, time
+ if seconde <= 59 then
+ affiche = tostring(floor(seconde)).." sec";
+ else
+ minute = tostring(floor(seconde/60))
+ seconde = mod(seconde, 60);
+ if seconde <= 9 then
+ time = "0"..tostring(floor(seconde));
+ else
+ time = tostring(floor(seconde));
+ end
+ affiche = minute..":"..time;
+ end
+ GameTooltip:AddLine("Cooldown : "..affiche);
+ end
+ elseif (type == "Imp") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[3].Mana.." Mana");
+ if not (start > 0 and duration > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
+ end
+
+ elseif (type == "Void") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[4].Mana.." Mana");
+ if Soulshards == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
+ elseif not (start > 0 and duration > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
+ end
+ elseif (type == "Succubus") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[5].Mana.." Mana");
+ if Soulshards == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
+ elseif not (start > 0 and duration > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
+ end
+ elseif (type == "Fel") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[6].Mana.." Mana");
+ if Soulshards == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.Soulshard..Soulshards.."|r");
+ elseif not (start > 0 and duration > 0) then
+ GameTooltip:AddLine(NecrosisTooltipData.DominationCooldown);
+ end
+ elseif (type == "Infernal") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[8].Mana.." Mana");
+ if InfernalStone == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.InfernalStone..InfernalStone.."|r");
+ else
+ GameTooltip:AddLine(NecrosisTooltipData.Main.InfernalStone..InfernalStone);
+ end
+ elseif (type == "Doomguard") then
+ GameTooltip:AddLine(NECROSIS_SPELL_TABLE[30].Mana.." Mana");
+ if DemoniacStone == 0 then
+ GameTooltip:AddLine("|c00FF4444"..NecrosisTooltipData.Main.DemoniacStone..DemoniacStone.."|r");
+ else
+ GameTooltip:AddLine(NecrosisTooltipData.Main.DemoniacStone..DemoniacStone);
+ end
+ elseif (type == "Buff") and LastBuff ~= 0 then
+ GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_SPELL_TABLE[LastBuff].Name);
+ elseif (type == "Curse") and LastCurse ~= 0 then
+ GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_SPELL_TABLE[LastCurse].Name);
+ elseif (type == "Pet") and LastDemon ~= 0 then
+ GameTooltip:AddLine(NecrosisTooltipData.LastSpell..NECROSIS_PET_LOCAL_NAME[(LastDemon - 2)]);
+ end
+ -- Et hop, affichage !
+ GameTooltip:Show();
+end
+
+-- Fonction mettant à jour les boutons Necrosis et donnant l'état du bouton de la pierre d'âme
+function Necrosis_UpdateIcons()
+ -- Pierre d'âme
+ -----------------------------------------------
+
+ -- On se renseigne pour savoir si une pierre d'âme a été utilisée --> vérification dans les timers
+ local SoulstoneInUse = false;
+ if SpellTimer then
+ for index = 1, table.getn(SpellTimer), 1 do
+ if (SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name) and SpellTimer[index].TimeMax > 0 then
+ SoulstoneInUse = true;
+ break;
+ end
+ end
+ end
+
+ -- Si la Pierre n'a pas été utilisée, et qu'il n'y a pas de pierre en inventaire -> Mode 1
+ if not (SoulstoneOnHand or SoulstoneInUse) then
+ SoulstoneMode = 1;
+ SoulstoneWaiting = false;
+ SoulstoneCooldown = false;
+ end
+
+ -- Si la Pierre n'a pas été utilisée, mais qu'il y a une pierre en inventaire
+ if SoulstoneOnHand and (not SoulstoneInUse) then
+ -- Si la pierre en inventaire contient un timer, et qu'on sort d'un RL --> Mode 4
+ local start, duration = GetContainerItemCooldown(SoulstoneLocation[1],SoulstoneLocation[2]);
+ if NecrosisRL and start > 0 and duration > 0 then
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone("Soulstone", start, duration, SpellGroup, SpellTimer, TimerTable);
+ SoulstoneMode = 4;
+ NecrosisRL = false;
+ SoulstoneWaiting = false;
+ SoulstoneCooldown = true;
+ -- Si la pierre ne contient pas de timer, ou qu'on ne sort pas d'un RL --> Mode 2
+ else
+ SoulstoneMode = 2;
+ NecrosisRL = false;
+ SoulstoneWaiting = false;
+ SoulstoneCooldown = false;
+ end
+ end
+
+ -- Si la Pierre a été utilisée mais qu'il n'y a pas de pierre en inventaire --> Mode 3
+ if (not SoulstoneOnHand) and SoulstoneInUse then
+ SoulstoneMode = 3;
+ SoulstoneWaiting = true;
+ -- Si on vient de poser la pierre, on l'annonce au raid
+ if SoulstoneAdvice and NECROSIS_SOULSTONE_ALERT_MESSAGE then
+ local tempnum = random(1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE));
+ while tempnum == RezMess and table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE) >= 2 do
+ tempnum = random(1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE));
+ end
+ RezMess = tempnum;
+ for i = 1, table.getn(NECROSIS_SOULSTONE_ALERT_MESSAGE[tempnum]) do
+ Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_SOULSTONE_ALERT_MESSAGE[tempnum][i], SoulstoneTarget), "WORLD");
+ end
+ SoulstoneAdvice = false;
+ end
+ end
+
+ -- Si la Pierre a été utilisée et qu'il y a une pierre en inventaire
+ if SoulstoneOnHand and SoulstoneInUse then
+ SoulstoneAdvice = false;
+ if not (SoulstoneWaiting or SoulstoneCooldown) then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_SPELL_TABLE[11].Name, SpellTimer, TimerTable);
+ SoulstoneMode = 2;
+ else
+ SoulstoneWaiting = false;
+ SoulstoneCooldown = true;
+ SoulstoneMode = 4;
+ end
+ end
+
+ -- Affichage de l'icone liée au mode
+ NecrosisSoulstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SoulstoneButton-0"..SoulstoneMode);
+
+ -- Pierre de vie
+ -----------------------------------------------
+
+ -- Mode "j'en ai une" (2) / "j'en ai pas" (1)
+ if (HealthstoneOnHand) then
+ HealthstoneMode = 2;
+ else
+ HealthstoneMode = 1;
+ end
+
+ -- Affichage de l'icone liée au mode
+ NecrosisHealthstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\HealthstoneButton-0"..HealthstoneMode);
+
+ -- Pierre de sort
+ -----------------------------------------------
+
+ -- Si la pierre est équipée, mode 3
+ local rightHand = GetInventoryItemTexture("player", 17);
+ if (rightHand == "Interface\\Icons\\INV_Misc_Gem_Sapphire_01" and not SpellstoneOnHand) then
+ SpellstoneMode = 3;
+ else
+ -- Pierre dans l'inventaire, mode 2
+ if (SpellstoneOnHand) then
+ SpellstoneMode = 2;
+ -- Pierre inexistante, mode 1
+ else
+ SpellstoneMode = 1;
+ end
+ end
+
+ -- Affichage de l'icone liée au mode
+ NecrosisSpellstoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellstoneButton-0"..SpellstoneMode);
+
+ -- Pierre de feu
+ -----------------------------------------------
+
+ -- Pierre équipée = mode 3
+ if (rightHand == "Interface\\Icons\\INV_Misc_Gem_Bloodstone_02" and not FirestoneOnHand) then
+ FirestoneMode = 3;
+ -- Pierre dans l'inventaire = mode 2
+ elseif (FirestoneOnHand) then
+ FirestoneMode = 2;
+ -- Pierre inexistante = mode 1
+ else
+ FirestoneMode = 1;
+ end
+
+ -- Affichage de l'icone liée au mode
+ NecrosisFirestoneButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\FirestoneButton-0"..FirestoneMode);
+
+
+ -- Bouton des démons
+ -----------------------------------------------
+ local mana = UnitMana("player");
+
+ local ManaPet = {"1", "1", "1", "1", "1", "1"};
+
+ -- Si cooldown de domination corrompue on grise
+ if NECROSIS_SPELL_TABLE[15].ID and not DominationUp then
+ local start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, "spell");
+ if start > 0 and duration > 0 then
+ NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-03");
+ else
+ NecrosisPetMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Domination-01");
+ end
+ end
+
+ -- Si cooldown de gardien de l'ombre on grise
+ if NECROSIS_SPELL_TABLE[43].ID then
+ local start2, duration2 = GetSpellCooldown(NECROSIS_SPELL_TABLE[43].ID, "spell");
+ if start2 > 0 and duration2 > 0 then
+ NecrosisBuffMenu8:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\ShadowWard-03");
+ else
+ NecrosisBuffMenu8:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\ShadowWard-01");
+ end
+ end
+
+ -- Si cooldown de la malédiction amplifiée on grise
+ if NECROSIS_SPELL_TABLE[42].ID and not AmplifyUp then
+ local start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, "spell");
+ if start3 > 0 and duration3 > 0 then
+ NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-03");
+ else
+ NecrosisCurseMenu1:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Amplify-01");
+ end
+ end
+
+ if mana ~= nil then
+ -- Coloration du bouton en grisé si pas assez de mana
+ if NECROSIS_SPELL_TABLE[3].ID then
+ if NECROSIS_SPELL_TABLE[3].Mana > mana then
+ for i = 1, 6, 1 do
+ ManaPet[i] = "3";
+ end
+ elseif NECROSIS_SPELL_TABLE[4].ID then
+ if NECROSIS_SPELL_TABLE[4].Mana > mana then
+ for i = 2, 6, 1 do
+ ManaPet[i] = "3";
+ end
+ elseif NECROSIS_SPELL_TABLE[8].ID then
+ if NECROSIS_SPELL_TABLE[8].Mana > mana then
+ for i = 5, 6, 1 do
+ ManaPet[i] = "3";
+ end
+ elseif NECROSIS_SPELL_TABLE[30].ID then
+ if NECROSIS_SPELL_TABLE[30].Mana > mana then
+ ManaPet[6] = "3";
+ end
+ end
+ end
+ end
+ end
+ end
+
+ -- Coloration du bouton en grisé si pas de pierre pour l'invocation
+ if Soulshards == 0 then
+ for i = 2, 4, 1 do
+ ManaPet[i] = "3";
+ end
+ end
+ if InfernalStone == 0 then
+ ManaPet[5] = "3";
+ end
+ if DemoniacStone == 0 then
+ ManaPet[6] = "3";
+ end
+
+ -- Texturage des boutons de pet
+ if DemonType == NECROSIS_PET_LOCAL_NAME[1] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-02");
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ elseif DemonType == NECROSIS_PET_LOCAL_NAME[2] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-02");
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ elseif DemonType == NECROSIS_PET_LOCAL_NAME[3] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-02");
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4]);
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ elseif DemonType == NECROSIS_PET_LOCAL_NAME[4] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-02");
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ elseif DemonType == NECROSIS_PET_LOCAL_NAME[5] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-02");
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ elseif DemonType == NECROSIS_PET_LOCAL_NAME[6] then
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-02");
+ else
+ NecrosisPetMenu2:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Imp-0"..ManaPet[1]);
+ NecrosisPetMenu3:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Voidwalker-0"..ManaPet[2]);
+ NecrosisPetMenu4:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Succubus-0"..ManaPet[3]);
+ NecrosisPetMenu5:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Felhunter-0"..ManaPet[4])
+ NecrosisPetMenu6:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Infernal-0"..ManaPet[5]);
+ NecrosisPetMenu7:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\Doomguard-0"..ManaPet[6]);
+ end
+
+
+ -- Bouton des buffs
+ -----------------------------------------------
+
+ if mana ~= nil then
+ -- Coloration du bouton en grisé si pas assez de mana
+ if MountAvailable and not NecrosisMounted then
+ if NECROSIS_SPELL_TABLE[2].ID then
+ if NECROSIS_SPELL_TABLE[2].Mana > mana or PlayerCombat then
+ NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-03");
+ else
+ NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-01");
+ end
+ else
+ if NECROSIS_SPELL_TABLE[1].Mana > mana or PlayerCombat then
+ NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-03");
+ else
+ NecrosisMountButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\MountButton-01");
+ end
+ end
+ end
+ if NECROSIS_SPELL_TABLE[35].ID then
+ if NECROSIS_SPELL_TABLE[35].Mana > mana or Soulshards == 0 then
+ NecrosisPetMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Enslave-03");
+ else
+ NecrosisPetMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Enslave-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[31].ID then
+ if NECROSIS_SPELL_TABLE[31].Mana > mana then
+ NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-03");
+ else
+ NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-01");
+ end
+ elseif NECROSIS_SPELL_TABLE[36].ID then
+ if NECROSIS_SPELL_TABLE[36].Mana > mana then
+ NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-03");
+ else
+ NecrosisBuffMenu1:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ArmureDemo-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[32].ID then
+ if NECROSIS_SPELL_TABLE[32].Mana > mana then
+ NecrosisBuffMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Aqua-03");
+ else
+ NecrosisBuffMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Aqua-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[33].ID then
+ if NECROSIS_SPELL_TABLE[33].Mana > mana then
+ NecrosisBuffMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Invisible-03");
+ else
+ NecrosisBuffMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Invisible-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[34].ID then
+ if NECROSIS_SPELL_TABLE[34].Mana > mana then
+ NecrosisBuffMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Kilrogg-03");
+ else
+ NecrosisBuffMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Kilrogg-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[37].ID then
+ if NECROSIS_SPELL_TABLE[37].Mana > mana or Soulshards == 0 then
+ NecrosisBuffMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\TPButton-05");
+ else
+ NecrosisBuffMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\TPButton-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[38].ID then
+ if NECROSIS_SPELL_TABLE[38].Mana > mana then
+ NecrosisBuffMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Lien-03");
+ else
+ NecrosisBuffMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Lien-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[43].ID then
+ if NECROSIS_SPELL_TABLE[43].Mana > mana then
+ NecrosisBuffMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ShadowWard-03");
+ else
+ NecrosisBuffMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\ShadowWard-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[9].ID then
+ if NECROSIS_SPELL_TABLE[9].Mana > mana then
+ NecrosisBuffMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Banish-03");
+ else
+ NecrosisBuffMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Banish-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[44].ID then
+ if (NECROSIS_SPELL_TABLE[44].Mana > mana) or (not UnitExists("Pet")) then
+ NecrosisPetMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Sacrifice-03");
+ else
+ NecrosisPetMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Sacrifice-01");
+ end
+ end
+
+ end
+
+ -- Bouton des curses
+ -----------------------------------------------
+
+ if mana ~= nil then
+ -- Coloration du bouton en grisé si pas assez de mana
+ if NECROSIS_SPELL_TABLE[23].ID then
+ if NECROSIS_SPELL_TABLE[23].Mana > mana then
+ NecrosisCurseMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Weakness-03");
+ else
+ NecrosisCurseMenu2:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Weakness-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[22].ID then
+ if NECROSIS_SPELL_TABLE[22].Mana > mana then
+ NecrosisCurseMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Agony-03");
+ else
+ NecrosisCurseMenu3:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Agony-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[24].ID then
+ if NECROSIS_SPELL_TABLE[24].Mana > mana then
+ NecrosisCurseMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Reckless-03");
+ else
+ NecrosisCurseMenu4:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Reckless-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[25].ID then
+ if NECROSIS_SPELL_TABLE[25].Mana > mana then
+ NecrosisCurseMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Tongues-03");
+ else
+ NecrosisCurseMenu5:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Tongues-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[40].ID then
+ if NECROSIS_SPELL_TABLE[40].Mana > mana then
+ NecrosisCurseMenu6:SetNormalTexture("Interface\\AddOns\\Necrosis\\\UI\\Exhaust-03");
+ else
+ NecrosisCurseMenu6:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Exhaust-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[26].ID then
+ if NECROSIS_SPELL_TABLE[26].Mana > mana then
+ NecrosisCurseMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Elements-03");
+ else
+ NecrosisCurseMenu7:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Elements-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[27].ID then
+ if NECROSIS_SPELL_TABLE[27].Mana > mana then
+ NecrosisCurseMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Shadow-03");
+ else
+ NecrosisCurseMenu8:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Shadow-01");
+ end
+ end
+ if NECROSIS_SPELL_TABLE[16].ID then
+ if NECROSIS_SPELL_TABLE[16].Mana > mana then
+ NecrosisCurseMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Doom-03");
+ else
+ NecrosisCurseMenu9:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Doom-01");
+ end
+ end
+ end
+
+
+ -- Bouton des Timers
+ -----------------------------------------------
+ if HearthstoneLocation[1] then
+ local start, duration, enable = GetContainerItemCooldown(HearthstoneLocation[1], HearthstoneLocation[2]);
+ if duration > 20 and start > 0 then
+ NecrosisSpellTimerButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellTimerButton-Cooldown");
+ else
+ NecrosisSpellTimerButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\SpellTimerButton-Normal");
+ end
+ end
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DES PIERRES ET DES FRAGMENTS
+------------------------------------------------------------------------------------------------------
+
+
+-- T'AS QU'A SAVOIR OU T'AS MIS TES AFFAIRES !
+function Necrosis_SoulshardSetup()
+ SoulshardSlotID = 1;
+ for slot=1, table.getn(SoulshardSlot), 1 do
+ table.remove(SoulshardSlot, slot);
+ end
+ for slot=1, GetContainerNumSlots(NecrosisConfig.SoulshardContainer), 1 do
+ table.insert(SoulshardSlot, nil);
+ end
+end
+
+
+-- Fonction qui fait l'inventaire des éléments utilisés en démonologie : Pierres, Fragments, Composants d'invocation
+function Necrosis_BagExplore()
+ local soulshards = Soulshards;
+ Soulshards = 0;
+ InfernalStone = 0;
+ DemoniacStone = 0;
+ SoulstoneOnHand = false;
+ HealthstoneOnHand = false;
+ FirestoneOnHand = false;
+ SpellstoneOnHand = false;
+ HearthstoneOnHand = false;
+ ItemOnHand = false;
+ -- Parcours des sacs
+ for container=0, 4, 1 do
+ -- Parcours des emplacements des sacs
+ for slot=1, GetContainerNumSlots(container), 1 do
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(container, slot);
+ local itemName = tostring(NecrosisTooltipTextLeft1:GetText());
+ local itemSwitch = tostring(NecrosisTooltipTextLeft3:GetText());
+ local itemSwitch2 = tostring(NecrosisTooltipTextLeft4:GetText());
+ -- Si le sac est le sac défini pour les fragments
+ -- hop la valeur du Tableau qui représente le slot du Sac = nil (pas de Shard)
+ if (container == NecrosisConfig.SoulshardContainer) then
+ if itemName ~= NECROSIS_ITEM.Soulshard then
+ SoulshardSlot[slot] = nil;
+ end
+ end
+ -- Dans le cas d'un emplacement non vide
+ if itemName then
+ -- On prend le nombre d'item en stack sur le slot
+ local _, ItemCount = GetContainerItemInfo(container, slot);
+ -- Si c'est un fragment ou une pierre infernale, alors on rajoute la qté au nombre de pierres
+ if itemName == NECROSIS_ITEM.Soulshard then Soulshards = Soulshards + ItemCount; end
+ if itemName == NECROSIS_ITEM.InfernalStone then InfernalStone = InfernalStone + ItemCount; end
+ if itemName == NECROSIS_ITEM.DemoniacStone then DemoniacStone = DemoniacStone + ItemCount; end
+ -- Si c'est une pierre d'âme, on note son existence et son emplacement
+ if string.find(itemName, NECROSIS_ITEM.Soulstone) then
+ SoulstoneOnHand = true;
+ SoulstoneLocation = {container,slot};
+ end
+ -- Même chose pour une pierre de soin
+ if string.find(itemName, NECROSIS_ITEM.Healthstone) then
+ HealthstoneOnHand = true;
+ HealthstoneLocation = {container,slot};
+ end
+ -- Et encore pour la pierre de sort
+ if string.find(itemName, NECROSIS_ITEM.Spellstone) then
+ SpellstoneOnHand = true;
+ SpellstoneLocation = {container,slot};
+ end
+ -- La pierre de feu maintenant
+ if string.find(itemName, NECROSIS_ITEM.Firestone) then
+ FirestoneOnHand = true;
+ FirestoneLocation = {container,slot};
+ end
+ -- et enfin la pierre de foyer
+ if string.find(itemName, NECROSIS_ITEM.Hearthstone) then
+ HearthstoneOnHand = true;
+ HearthstoneLocation = {container,slot};
+ end
+
+ -- On note aussi la présence ou non des objets "main gauche"
+ -- Plus tard ce sera utilisé pour remplacer automatiquement une pierre absente
+ if itemSwitch == NECROSIS_ITEM.Offhand or itemSwitch2 == NECROSIS_ITEM.Offhand then
+ ItemOnHand = true;
+ ItemswitchLocation = {container, slot};
+ end
+ end
+ end
+ end
+
+ -- Affichage du bouton principal de Necrosis
+ if NecrosisConfig.Circle == 1 then
+ if (Soulshards <= 32) then
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\"..NecrosisConfig.NecrosisColor.."\\Shard"..Soulshards);
+ else
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\"..NecrosisConfig.NecrosisColor.."\\Shard32");
+ end
+ elseif SoulstoneMode ==1 or SoulstoneMode == 2 then
+ if (Soulshards <= 32) then
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard"..Soulshards);
+ else
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard32");
+ end
+ end
+ if NecrosisConfig.ShowCount then
+ if NecrosisConfig.CountType == 2 then
+ NecrosisShardCount:SetText(InfernalStone.." / "..DemoniacStone);
+ elseif NecrosisConfig.CountType == 1 then
+ if Soulshards < 10 then
+ NecrosisShardCount:SetText("0"..Soulshards);
+ else
+ NecrosisShardCount:SetText(Soulshards);
+ end
+ end
+ else
+ NecrosisShardCount:SetText("");
+ end
+ -- Et on met le tout à jour !
+ Necrosis_UpdateIcons();
+
+ -- S'il y a plus de fragment que d'emplacements dans le sac défini, on affiche un message d'avertissement
+ if (Soulshards > soulshards and Soulshards == GetContainerNumSlots(NecrosisConfig.SoulshardContainer)) then
+ if (SoulshardDestroy) then
+ Necrosis_Msg(NECROSIS_MESSAGE.Bag.FullPrefix..GetBagName(NecrosisConfig.SoulshardContainer)..NECROSIS_MESSAGE.Bag.FullDestroySuffix);
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Bag.FullPrefix..GetBagName(NecrosisConfig.SoulshardContainer)..NECROSIS_MESSAGE.Bag.FullSuffix);
+ end
+ end
+end
+
+-- Fonction qui permet de trouver / ranger les fragments dans les sacs
+function Necrosis_SoulshardSwitch(type)
+ if (type == "CHECK") then
+ SoulshardMP = 0;
+ for container = 0, 4, 1 do
+ for i = 1, 3, 1 do
+ if GetBagName(container) == NECROSIS_ITEM.SoulPouch[i] then
+ BagIsSoulPouch[container + 1] = true;
+ break;
+ else
+ BagIsSoulPouch[container + 1] = false;
+ end
+ end
+ end
+ end
+ for container = 0, 4, 1 do
+ if BagIsSoulPouch[container+1] then break; end
+ if container ~= NecrosisConfig.SoulshardContainer then
+ for slot=1, GetContainerNumSlots(container), 1 do
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(container, slot);
+ local itemInfo = tostring(NecrosisTooltipTextLeft1:GetText());
+ if itemInfo == NECROSIS_ITEM.Soulshard then
+ if (type == "CHECK") then
+ SoulshardMP = SoulshardMP + 1;
+ elseif (type == "MOVE") then
+ Necrosis_FindSlot(container, slot);
+ SoulshardMP = SoulshardMP - 1;
+ end
+ end
+ end
+ end
+ end
+ -- Après avoir tout déplacer, il faut retrouver les emplacements des pierres, etc, etc...
+ Necrosis_BagExplore();
+end
+
+-- Pendant le déplacement des fragments, il faut trouver un nouvel emplacement aux objets déplacés :)
+function Necrosis_FindSlot(shardIndex, shardSlot)
+ local full = true;
+ for slot=1, GetContainerNumSlots(NecrosisConfig.SoulshardContainer), 1 do
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem(NecrosisConfig.SoulshardContainer, slot);
+ local itemInfo = tostring(NecrosisTooltipTextLeft1:GetText());
+ if string.find(itemInfo, NECROSIS_ITEM.Soulshard) == nil then
+ PickupContainerItem(shardIndex, shardSlot);
+ PickupContainerItem(NecrosisConfig.SoulshardContainer, slot);
+ SoulshardSlot[SoulshardSlotID] = slot;
+ SoulshardSlotID = SoulshardSlotID + 1
+ if (CursorHasItem()) then
+ if shardIndex == 0 then
+ PutItemInBackpack();
+ else
+ PutItemInBag(19 + shardIndex);
+ end
+ end
+ full = false;
+ break;
+ end
+ end
+ -- Destruction des fragments en sur-nombre si l'option est activée
+ if (full and NecrosisConfig.SoulshardDestroy) then
+ PickupContainerItem(shardIndex, shardSlot);
+ if (CursorHasItem()) then DeleteCursorItem(); end
+ end
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DES SORTS
+------------------------------------------------------------------------------------------------------
+
+
+
+-- Affiche ou masque les boutons de sort à chaque nouveau sort appris
+function Necrosis_ButtonSetup()
+ if NecrosisConfig.NecrosisLockServ then
+ Necrosis_NoDrag();
+ Necrosis_UpdateButtonsScale();
+ else
+ HideUIPanel(NecrosisPetMenuButton);
+ HideUIPanel(NecrosisBuffMenuButton);
+ HideUIPanel(NecrosisCurseMenuButton);
+ HideUIPanel(NecrosisMountButton);
+ HideUIPanel(NecrosisFirestoneButton);
+ HideUIPanel(NecrosisSpellstoneButton);
+ HideUIPanel(NecrosisHealthstoneButton);
+ HideUIPanel(NecrosisSoulstoneButton);
+ if (NecrosisConfig.StonePosition[1]) and StoneIDInSpellTable[4] ~= 0 then
+ ShowUIPanel(NecrosisFirestoneButton);
+ end
+ if (NecrosisConfig.StonePosition[2]) and StoneIDInSpellTable[3] ~= 0 then
+ ShowUIPanel(NecrosisSpellstoneButton);
+ end
+ if (NecrosisConfig.StonePosition[3]) and StoneIDInSpellTable[2] ~= 0 then
+ ShowUIPanel(NecrosisHealthstoneButton);
+ end
+ if (NecrosisConfig.StonePosition[4]) and StoneIDInSpellTable[1] ~= 0 then
+ ShowUIPanel(NecrosisSoulstoneButton);
+ end
+ if (NecrosisConfig.StonePosition[5]) and BuffMenuCreate ~= {} then
+ ShowUIPanel(NecrosisBuffMenuButton);
+ end
+ if (NecrosisConfig.StonePosition[6]) and MountAvailable then
+ ShowUIPanel(NecrosisMountButton);
+ end
+ if (NecrosisConfig.StonePosition[7]) and PetMenuCreate ~= {} then
+ ShowUIPanel(NecrosisPetMenuButton);
+ end
+ if (NecrosisConfig.StonePosition[8]) and CurseMenuCreate ~= {} then
+ ShowUIPanel(NecrosisCurseMenuButton);
+ end
+ end
+end
+
+
+
+-- Ma fonction préférée ! Elle fait la liste des sorts connus par le démo, et les classe par rang.
+-- Pour les pierres, elle sélectionne le plus haut rang connu
+function Necrosis_SpellSetup()
+ local StoneType = {NECROSIS_ITEM.Soulstone, NECROSIS_ITEM.Healthstone, NECROSIS_ITEM.Spellstone, NECROSIS_ITEM.Firestone};
+ local StoneMaxRank = {0, 0, 0, 0};
+
+ local CurrentStone = {
+ ID = {},
+ Name = {},
+ subName = {}
+ };
+
+ local CurrentSpells = {
+ ID = {},
+ Name = {},
+ subName = {}
+ };
+
+ local spellID = 1;
+ local Invisible = 0;
+ local InvisibleID = 0;
+
+ -- On va parcourir tous les sorts possedés par le Démoniste
+ while true do
+ local spellName, subSpellName = GetSpellName(spellID, BOOKTYPE_SPELL);
+
+ if not spellName then
+ do break end
+ end
+
+ -- Pour les sorts avec des rangs numérotés, on compare pour chaque sort les rangs 1 à 1
+ -- Le rang supérieur est conservé
+ if (string.find(subSpellName, NECROSIS_TRANSLATION.Rank)) then
+ local found = false;
+ local rank = tonumber(strsub(subSpellName, 6, strlen(subSpellName)));
+ for index=1, table.getn(CurrentSpells.Name), 1 do
+ if (CurrentSpells.Name[index] == spellName) then
+ found = true;
+ if (CurrentSpells.subName[index] < rank) then
+ CurrentSpells.ID[index] = spellID;
+ CurrentSpells.subName[index] = rank;
+ end
+ break;
+ end
+ end
+ -- Les plus grands rangs de chacun des sorts à rang numérotés sont insérés dans la table
+ if (not found) then
+ table.insert(CurrentSpells.ID, spellID);
+ table.insert(CurrentSpells.Name, spellName);
+ table.insert(CurrentSpells.subName, rank);
+ end
+ end
+
+ -- Test du Rang de la détection d'invisibilité
+ if spellName == NECROSIS_TRANSLATION.GreaterInvisible then
+ Invisible = 3;
+ InvisibleID = spellID;
+ elseif spellName == NECROSIS_TRANSLATION.Invisible and Invisible ~= 3 then
+ Invisible = 2;
+ InvisibleID = spellID;
+ elseif spellName == NECROSIS_TRANSLATION.LesserInvisible and Invisible ~= 3 and Invisible ~= 2 then
+ Invisible = 1;
+ InvisibleID = spellID;
+ end
+
+ -- Les pierres n'ont pas de rang numéroté, l'attribut de rang fait partie du nom du sort
+ -- Pour chaque type de pierre, on va donc faire....
+ for stoneID=1, table.getn(StoneType), 1 do
+ -- Si le sort étudié est bien une invocation de ce type de pierre et qu'on n'a pas
+ -- déjà assigné un rang maximum à cette dernière
+ if (string.find(spellName, StoneType[stoneID]))
+ and StoneMaxRank[stoneID] ~= table.getn(NECROSIS_STONE_RANK)
+ then
+ -- Récupération de la fin du nom de la pierre, contenant son rang
+ local stoneSuffix = string.sub(spellName, string.len(NECROSIS_CREATE[stoneID]) + 1);
+ -- Reste à trouver la correspondance de son rang
+ for rankID=1, table.getn(NECROSIS_STONE_RANK), 1 do
+ -- Si la fin du nom de la pierre correspond à une taille de pierre, on note le rang !
+ if string.lower(stoneSuffix) == string.lower(NECROSIS_STONE_RANK[rankID]) then
+ -- On a une pierre, on a son rang, reste à vérifier si c'est la plus puissante,
+ -- et si oui, l'enregistrer
+ if rankID > StoneMaxRank[stoneID] then
+ StoneMaxRank[stoneID] = rankID;
+ CurrentStone.Name[stoneID] = spellName;
+ CurrentStone.subName[stoneID] = NECROSIS_STONE_RANK[rankID];
+ CurrentStone.ID[stoneID] = spellID;
+ end
+ break
+ end
+ end
+ end
+ end
+
+ spellID = spellID + 1;
+ end
+
+ -- On insère dans la table les pierres avec le plus grand rang
+ for stoneID=1, table.getn(StoneType), 1 do
+ if StoneMaxRank[stoneID] ~= 0 then
+ table.insert(NECROSIS_SPELL_TABLE, {
+ ID = CurrentStone.ID[stoneID],
+ Name = CurrentStone.Name[stoneID],
+ Rank = 0,
+ CastTime = 0,
+ Length = 0,
+ Type = 0,
+ });
+ StoneIDInSpellTable[stoneID] = table.getn(NECROSIS_SPELL_TABLE);
+ end
+ end
+ -- On met à jour la liste des sorts avec les nouveaux rangs
+ for spell=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
+ for index = 1, table.getn(CurrentSpells.Name), 1 do
+ if (NECROSIS_SPELL_TABLE[spell].Name == CurrentSpells.Name[index])
+ and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[1]
+ and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[2]
+ and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[3]
+ and NECROSIS_SPELL_TABLE[spell].ID ~= StoneIDInSpellTable[4]
+ then
+ NECROSIS_SPELL_TABLE[spell].ID = CurrentSpells.ID[index];
+ NECROSIS_SPELL_TABLE[spell].Rank = CurrentSpells.subName[index];
+ end
+ end
+ end
+
+ -- On met à jour la durée de chaque sort en fonction de son rang
+ for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
+ if (index == 9) then -- si Bannish
+ if NECROSIS_SPELL_TABLE[index].ID ~= nil then
+ NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 10 + 10;
+ end
+ end
+ if (index == 13) then -- si Fear
+ if NECROSIS_SPELL_TABLE[index].ID ~= nil then
+ NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 5 + 5;
+ end
+ end
+ if (index == 14) then -- si Corruption
+ if NECROSIS_SPELL_TABLE[index].ID ~= nil and NECROSIS_SPELL_TABLE[index].Rank <= 2 then
+ NECROSIS_SPELL_TABLE[index].Length = NECROSIS_SPELL_TABLE[index].Rank * 3 + 9;
+ end
+ end
+ end
+
+ for spellID=1, MAX_SPELLS, 1 do
+ local spellName, subSpellName = GetSpellName(spellID, "spell");
+ if (spellName) then
+ for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
+ if NECROSIS_SPELL_TABLE[index].Name == spellName then
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetSpell(spellID, 1);
+ local _, _, ManaCost = string.find(NecrosisTooltipTextLeft2:GetText(), "(%d+)");
+ if not NECROSIS_SPELL_TABLE[index].ID then
+ NECROSIS_SPELL_TABLE[index].ID = spellID;
+ end
+ NECROSIS_SPELL_TABLE[index].Mana = tonumber(ManaCost);
+ end
+ end
+ end
+ end
+ if NECROSIS_SPELL_TABLE[1].ID or NECROSIS_SPELL_TABLE[2].ID then
+ MountAvailable = true;
+ else
+ MountAvailable = false;
+ end
+
+ -- Insertion du plus haut rang de détection d'invisibilité connu
+ if Invisible >= 1 then
+ NECROSIS_SPELL_TABLE[33].ID = InvisibleID;
+ NECROSIS_SPELL_TABLE[33].Rank = 0;
+ NECROSIS_SPELL_TABLE[33].CastTime = 0;
+ NECROSIS_SPELL_TABLE[33].Length = 0;
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetSpell(InvisibleID, 1);
+ local _, _, ManaCost = string.find(NecrosisTooltipTextLeft2:GetText(), "(%d+)");
+ NECROSIS_SPELL_TABLE[33].Mana = tonumber(ManaCost);
+ end
+end
+
+-- Fonction d'extraction d'attribut de sort
+-- F(type=string, string, int) -> Spell=table
+function Necrosis_FindSpellAttribute(type, attribute, array)
+ for index=1, table.getn(NECROSIS_SPELL_TABLE), 1 do
+ if string.find(NECROSIS_SPELL_TABLE[index][type], attribute) then return NECROSIS_SPELL_TABLE[index][array]; end
+ end
+ return nil;
+end
+
+-- Fonction pour caster un Eclat d'ombre depuis le bouton de la Transe de l'Ombre
+-- L'éclat doit avoir le rang le plus haut
+function Necrosis_CastShadowBolt()
+ local spellID = Necrosis_FindSpellAttribute("Name", NECROSIS_NIGHTFALL.BoltName, "ID");
+ if (spellID) then
+ CastSpell(spellID, "spell");
+ else
+ Necrosis_Msg(NECROSIS_NIGHTFALL_TEXT.NoBoltSpell, "USER");
+ end
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DIVERSES
+------------------------------------------------------------------------------------------------------
+
+-- Fonction pour savoir si une unité subit un effet
+-- F(string, string)->bool
+function Necrosis_UnitHasEffect(unit, effect)
+ local index = 1;
+ while UnitDebuff(unit, index) do
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetUnitDebuff(unit, index);
+ local DebuffName = tostring(NecrosisTooltipTextLeft1:GetText());
+ if (string.find(DebuffName, effect)) then
+ return true;
+ end
+ index = index+1;
+ end
+ return false;
+end
+
+-- Function to check the presence of a buff on the unit.
+-- Strictly identical to UnitHasEffect, but as WoW distinguishes Buff and DeBuff, so we have to.
+function Necrosis_UnitHasBuff(unit, effect)
+ local index = 1;
+ while UnitBuff(unit, index) do
+ -- Here we'll cheat a little. checking a buff or debuff return the internal spell name, and not the name we give at start
+ -- So we use an API widget that will use the internal name to return the known name.
+ -- For example, the "Curse of Agony" spell is internaly known as "Spell_Shadow_CurseOfSargeras". Much easier to use the first one than the internal one.
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetUnitBuff(unit, index);
+ local BuffName = tostring(NecrosisTooltipTextLeft1:GetText());
+ if (string.find(BuffName, effect)) then
+ return true;
+ end
+ index = index+1;
+ end
+ return false;
+end
+
+
+-- Permet de reconnaitre quand le joueur gagne Crépuscule / Transe de l'ombre
+function Necrosis_UnitHasTrance()
+ local ID = -1;
+ for buffID = 0, 24, 1 do
+ local buffTexture = GetPlayerBuffTexture(buffID);
+ if buffTexture == nil then break end
+ if strfind(buffTexture, "Spell_Shadow_Twilight") then
+ ID = buffID;
+ break
+ end
+ end
+ ShadowTranceID = ID;
+end
+
+-- Fonction pour gérer les actions effectuées par Necrosis au clic sur un bouton
+function Necrosis_UseItem(type,button)
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetBagItem("player", 17);
+ local rightHand = tostring(NecrosisTooltipTextLeft1:GetText());
+
+ -- Fonction pour utiliser une pierre de foyer dans l'inventaire
+ -- s'il y en a une dans l'inventaire, et si c'était un click droit
+ if type == "Hearthstone" and button == "RightButton" then
+ if (HearthstoneOnHand) then
+ -- on l'utilise
+ UseContainerItem(HearthstoneLocation[1], HearthstoneLocation[2]);
+ -- soit il n'y en a pas dans l'inventaire, on affiche un message d'erreur
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoHearthStone, "USER");
+ end
+ end
+
+ -- Si on clique sur le bouton de la pierre d'âme
+ -- On met à jour le bouton pour savoir quel est le mode
+ if (type == "Soulstone") then
+ Necrosis_UpdateIcons();
+ -- Si le mode = 2 (une pierre dans l'inventaire, pas de pierre utilisée)
+ -- alors on l'utilise
+ if (SoulstoneMode == 2) then
+ -- Si un joueur est ciblé, sur le joueur (avec message d'alerte)
+ -- Si un joueur n'est pas ciblé, sur le Démoniste (sans message)
+ if UnitIsPlayer("target") then
+ SoulstoneUsedOnTarget = true;
+ else
+ SoulstoneUsedOnTarget = false;
+ TargetUnit("player");
+ end
+ UseContainerItem(SoulstoneLocation[1], SoulstoneLocation[2]);
+ -- Maintenant que l'on crée un timer sur la session, nous ne sortons plus d'un RL
+ NecrosisRL = false;
+ -- Et hop, on remet à jour l'affichage des boutons :)
+ Necrosis_UpdateIcons();
+ -- si il n'y a pas de pierre d'âme dans l'inventaire, alors on crée la pierre d'âme de rang le plus grand :)
+ elseif (SoulstoneMode == 1) or (SoulstoneMode == 3) then
+ if StoneIDInSpellTable[1] ~= 0 then
+ CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[1]].ID, "spell");
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoSoulStoneSpell, "USER");
+ end
+
+ end
+ -- Si on clique sur le bouton de la pierre de vie :
+ elseif (type == "Healthstone") then
+ -- soit il y en a une dans l'inventaire
+ if HealthstoneOnHand then
+ -- Dans ce cas si un pj allié est sélectionné, on lui donne la pierre
+ -- Sinon, on l'utilise
+ if NecrosisTradeRequest then
+ PickupContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
+ ClickTradeButton(1);
+ NecrosisTradeRequest = false;
+ Trading = true;
+ TradingNow = 3;
+ return;
+ elseif (UnitExists("target") and UnitIsPlayer("target") and (not UnitCanAttack("player", "target")) and UnitName("target") ~= UnitName("player")) then
+ PickupContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
+ if ( CursorHasItem() ) then
+ DropItemOnUnit("target");
+ Trading = true;
+ TradingNow = 3;
+ end
+ return;
+ end
+ if (UnitHealth("player") == UnitHealthMax("player")) then
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.FullHealth, "USER");
+ else
+ SpellStopCasting();
+ UseContainerItem(HealthstoneLocation[1], HealthstoneLocation[2]);
+ local HealthstoneInUse = false
+ if Necrosis_TimerExisteDeja(NECROSIS_COOLDOWN.Healthstone, SpellTimer) then
+ HealthstoneInUse = true;
+ end
+ if not HealthstoneInUse then
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone(type, nil, nil, SpellGroup, SpellTimer, TimerTable);
+ end
+ end
+ -- soit il n'y en a pas dans l'inventaire, et la pierre de plus haut rang est créée
+ else
+ if StoneIDInSpellTable[2] ~= 0 then
+ CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[2]].ID, "spell");
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoHealthStoneSpell, "USER");
+ end
+ end
+ -- Au tour de la pierre de sort
+ elseif (type == "Spellstone") then
+ -- Si la pierre est équipée ou dans l'inventaire, un clic droit l'équipe / la déséquipe
+ if (SpellstoneMode ~= 1 and button == "RightButton")
+ -- Si la pierre n'est pas équipée, le raccourci clavier équipe la pierre
+ or (SpellstoneMode == 2 and button == "Binding") then
+ Necrosis_SwitchOffHand(type);
+ -- Si la pierre est équipée, un clic gauche utilise la pierre
+ elseif SpellstoneMode == 3 then
+ local start, duration, enable = GetInventoryItemCooldown("player", 17) ;
+ UseInventoryItem(17);
+ if duration == 0 or start == 0 then Necrosis_SwitchOffHand("Off-hand"); end
+ -- sinon on crée la pierre :)
+ elseif (SpellstoneMode == 1) then
+ if StoneIDInSpellTable[3] ~= 0 then
+ CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[3]].ID, "spell");
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoSpellStoneSpell, "USER");
+ end
+ end
+ -- Meme chose pour la pierre de feu
+ elseif (type == "Firestone") then
+ -- Si la pierre n'existe pas, elle est créée
+ if (FirestoneMode == 1) then
+ if StoneIDInSpellTable[4] ~= 0 then
+ CastSpell(NECROSIS_SPELL_TABLE[StoneIDInSpellTable[4]].ID, "spell");
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoFireStoneSpell, "USER");
+ end
+ -- Si la pierre existe, un clic droit l'équipe / la déséquiper
+ elseif button ~= "LeftButton" then
+ Necrosis_SwitchOffHand(type);
+ end
+ -- Si on clic sur le bouton de monture
+ elseif (type == "Mount") then
+ -- Soit c'est la monture épique
+ if NECROSIS_SPELL_TABLE[2].ID ~= nil then
+ CastSpell(NECROSIS_SPELL_TABLE[2].ID, "spell");
+ Necrosis_OnUpdate();
+ -- Soit c'est la monture classique
+ elseif NECROSIS_SPELL_TABLE[1].ID ~= nil then
+ CastSpell(NECROSIS_SPELL_TABLE[1].ID, "spell");
+ Necrosis_OnUpdate();
+ -- (Soit c'est rien :) )
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.NoRiding, "USER");
+ end
+ end
+end
+
+-- Fonction permettant de permutter un objet main-gauche équipé avec un objet main-gauche de l'inventaire
+function Necrosis_SwitchOffHand(type)
+ if (type == "Spellstone") then
+ if SpellstoneMode == 3 then
+ if ItemOnHand then
+ Necrosis_Msg("Equipe "..GetContainerItemLink(ItemswitchLocation[1],ItemswitchLocation[2])..NECROSIS_MESSAGE.SwitchMessage..GetInventoryItemLink("player",17), "USER");
+ PickupInventoryItem(17);
+ PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
+ end
+ return;
+ else
+ PickupContainerItem(SpellstoneLocation[1], SpellstoneLocation[2]);
+ PickupInventoryItem(17);
+ -- Le switch avec une pierre de sort implique un cooldown porté au timer
+ if Necrosis_TimerExisteDeja(NECROSIS_COOLDOWN.Spellstone, SpellTimer) then
+ SpellTimer, TimerTable = Necrosis_RetraitTimerParNom(NECROSIS_COOLDOWN.Spellstone, SpellTimer, TimerTable);
+ end
+ SpellGroup, SpellTimer, TimerTable = Necrosis_InsertTimerStone(type, nil, nil, SpellGroup, SpellTimer, TimerTable);
+ return;
+ end
+ elseif (type == "Firestone") then
+ if FirestoneMode == 3 then
+ if ItemOnHand then
+ PickupInventoryItem(17);
+ PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
+ Necrosis_Msg(NECROSIS_MESSAGE.EquipMessage..GetContainerItemLink(ItemswitchLocation[1],ItemswitchLocation[2])..NECROSIS_MESSAGE.SwitchMessage..GetInventoryItemLink("player",17), "USER");
+ end
+ return;
+ else
+ PickupContainerItem(FirestoneLocation[1], FirestoneLocation[2]);
+ PickupInventoryItem(17);
+ return;
+ end
+ end
+ if (type == "OffHand") and UnitClass("player") == NECROSIS_UNIT_WARLOCK then
+ if ItemswitchLocation[1] ~= nil and ItemswitchLocation[2] ~= nil then
+ PickupContainerItem(ItemswitchLocation[1],ItemswitchLocation[2]);
+ PickupInventoryItem(17);
+ end
+ end
+end
+
+function Necrosis_MoneyToggle()
+ for index=1, 10 do
+ local text = getglobal("NecrosisTooltipTextLeft"..index);
+ text:SetText(nil);
+ text = getglobal("NecrosisTooltipTextRight"..index);
+ text:SetText(nil);
+ end
+ NecrosisTooltip:Hide();
+ NecrosisTooltip:SetOwner(WorldFrame, "ANCHOR_NONE");
+end
+
+function Necrosis_GameTooltip_ClearMoney()
+ -- Intentionally empty; don't clear money while we use hidden tooltips
+end
+
+
+-- Fonction pour placer les boutons autour de Necrosis (et pour grossir / retracir l'interface...)
+function Necrosis_UpdateButtonsScale()
+ local NBRScale = (100 + (NecrosisConfig.NecrosisButtonScale - 85)) / 100;
+ if NecrosisConfig.NecrosisButtonScale <= 95 then
+ NBRScale = 1.1;
+ end
+ if NecrosisConfig.NecrosisLockServ then
+ Necrosis_ClearAllPoints();
+ HideUIPanel(NecrosisPetMenuButton);
+ HideUIPanel(NecrosisBuffMenuButton);
+ HideUIPanel(NecrosisCurseMenuButton);
+ HideUIPanel(NecrosisMountButton);
+ HideUIPanel(NecrosisFirestoneButton);
+ HideUIPanel(NecrosisSpellstoneButton);
+ HideUIPanel(NecrosisHealthstoneButton);
+ HideUIPanel(NecrosisSoulstoneButton);
+ local indexScale = -36;
+ for index=1, 8, 1 do
+ if NecrosisConfig.StonePosition[index] then
+ if index == 1 and StoneIDInSpellTable[4] ~= 0 then
+ NecrosisFirestoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisFirestoneButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 2 and StoneIDInSpellTable[3] ~= 0 then
+ NecrosisSpellstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisSpellstoneButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 3 and StoneIDInSpellTable[2] ~= 0 then
+ NecrosisHealthstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisHealthstoneButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 4 and StoneIDInSpellTable[1] ~= 0 then
+ NecrosisSoulstoneButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisSoulstoneButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 5 and BuffMenuCreate ~= {} then
+ NecrosisBuffMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisBuffMenuButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 6 and MountAvailable then
+ NecrosisMountButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisMountButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 7 and PetMenuCreate ~= {} then
+ NecrosisPetMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisPetMenuButton);
+ indexScale = indexScale + 36;
+ end
+ if index == 8 and CurseMenuCreate ~= {} then
+ NecrosisCurseMenuButton:SetPoint("CENTER", "NecrosisButton", "CENTER", ((40 * NBRScale) * cos(NecrosisConfig.NecrosisAngle-indexScale)), ((40 * NBRScale) * sin(NecrosisConfig.NecrosisAngle-indexScale)));
+ ShowUIPanel(NecrosisCurseMenuButton);
+ indexScale = indexScale + 36;
+ end
+ end
+ end
+ end
+end
+
+
+
+-- Fonction (XML) pour rétablir les points d'attache par défaut des boutons
+function Necrosis_ClearAllPoints()
+ NecrosisFirestoneButton:ClearAllPoints();
+ NecrosisSpellstoneButton:ClearAllPoints();
+ NecrosisHealthstoneButton:ClearAllPoints();
+ NecrosisSoulstoneButton:ClearAllPoints();
+ NecrosisMountButton:ClearAllPoints();
+ NecrosisPetMenuButton:ClearAllPoints();
+ NecrosisBuffMenuButton:ClearAllPoints();
+ NecrosisCurseMenuButton:ClearAllPoints();
+end
+
+-- Fonction (XML) pour étendre la propriété NoDrag() du bouton principal de Necrosis sur tout ses boutons
+function Necrosis_NoDrag()
+ NecrosisFirestoneButton:RegisterForDrag("");
+ NecrosisSpellstoneButton:RegisterForDrag("");
+ NecrosisHealthstoneButton:RegisterForDrag("");
+ NecrosisSoulstoneButton:RegisterForDrag("");
+ NecrosisMountButton:RegisterForDrag("");
+ NecrosisPetMenuButton:RegisterForDrag("");
+ NecrosisBuffMenuButton:RegisterForDrag("");
+ NecrosisCurseMenuButton:RegisterForDrag("");
+end
+
+-- Fonction (XML) inverse de celle du dessus
+function Necrosis_Drag()
+ NecrosisFirestoneButton:RegisterForDrag("LeftButton");
+ NecrosisSpellstoneButton:RegisterForDrag("LeftButton");
+ NecrosisHealthstoneButton:RegisterForDrag("LeftButton");
+ NecrosisSoulstoneButton:RegisterForDrag("LeftButton");
+ NecrosisMountButton:RegisterForDrag("LeftButton");
+ NecrosisPetMenuButton:RegisterForDrag("LeftButton");
+ NecrosisBuffMenuButton:RegisterForDrag("LeftButton");
+ NecrosisCurseMenuButton:RegisterForDrag("LeftButton");
+end
+
+-- Ouverture du menu des buffs
+function Necrosis_BuffMenu(button)
+ if button == "MiddleButton" and LastBuff ~= 0 then
+ Necrosis_BuffCast(LastBuff);
+ return;
+ end
+ BuffMenuShow = not BuffMenuShow;
+ if not BuffMenuShow then
+ BuffShow = false;
+ BuffVisible = false;
+ NecrosisBuffMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\BuffMenuButton-01");
+ BuffMenuCreate[1]:ClearAllPoints();
+ BuffMenuCreate[1]:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", 3000, 3000);
+ AlphaBuffMenu = 1;
+ else
+ BuffShow = true;
+ NecrosisBuffMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\BuffMenuButton-02");
+ -- Si clic droit, le menu de buff reste ouvert
+ if button == "RightButton" then
+ BuffVisible = true;
+ end
+ -- S'il n'existe aucun buff on ne fait rien
+ if BuffMenuCreate == nil then
+ return;
+ end
+ -- Sinon on affiche les icones
+ NecrosisBuffMenu1:SetAlpha(1);
+ NecrosisBuffMenu2:SetAlpha(1);
+ NecrosisBuffMenu3:SetAlpha(1);
+ NecrosisBuffMenu4:SetAlpha(1);
+ NecrosisBuffMenu5:SetAlpha(1);
+ NecrosisBuffMenu6:SetAlpha(1);
+ NecrosisBuffMenu7:SetAlpha(1);
+ NecrosisBuffMenu8:SetAlpha(1);
+ NecrosisBuffMenu9:SetAlpha(1);
+ BuffMenuCreate[1]:ClearAllPoints();
+ BuffMenuCreate[1]:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31) , 26);
+ AlphaPetVar = GetTime() + 3;
+ AlphaBuffVar = GetTime() + 6;
+ AlphaCurseVar = GetTime() + 6;
+ end
+end
+
+-- Ouverture du menu des curses
+function Necrosis_CurseMenu(button)
+ if button == "MiddleButton" and LastCurse ~= 0 then
+ Necrosis_CurseCast(LastCurse, LastCurseClick);
+ return;
+ end
+ -- S'il n'existe aucune curse on ne fait rien
+ if CurseMenuCreate[1] == nil then
+ return;
+ end
+ CurseMenuShow = not CurseMenuShow;
+ if not CurseMenuShow then
+ CurseShow = false;
+ CurseVisible = false;
+ NecrosisCurseMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\CurseMenuButton-01");
+ CurseMenuCreate[1]:ClearAllPoints();
+ CurseMenuCreate[1]:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ AlphaCurseMenu = 1;
+ else
+ CurseShow = true;
+ NecrosisCurseMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\CurseMenuButton-02");
+ -- Si clic droit, le menu de curse reste ouvert
+ if button == "RightButton" then
+ CurseVisible = true;
+ end
+ -- Sinon on affiche les icones
+ NecrosisCurseMenu1:SetAlpha(1);
+ NecrosisCurseMenu2:SetAlpha(1);
+ NecrosisCurseMenu3:SetAlpha(1);
+ NecrosisCurseMenu4:SetAlpha(1);
+ NecrosisCurseMenu5:SetAlpha(1);
+ NecrosisCurseMenu6:SetAlpha(1);
+ NecrosisCurseMenu7:SetAlpha(1);
+ NecrosisCurseMenu8:SetAlpha(1);
+ NecrosisCurseMenu9:SetAlpha(1);
+ CurseMenuCreate[1]:ClearAllPoints();
+ CurseMenuCreate[1]:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31) , -26);
+ AlphaPetVar = GetTime() + 3;
+ AlphaBuffVar = GetTime() + 6;
+ AlphaCurseVar = GetTime() + 6;
+ end
+end
+
+-- Ouverture du menu des démons
+function Necrosis_PetMenu(button)
+ if button == "MiddleButton" and LastDemon ~= 0 then
+ Necrosis_PetCast(LastDemon);
+ return;
+ end
+ -- S'il n'existe aucun sort d'invocation on ne fait rien
+ if PetMenuCreate[1] == nil then
+ return;
+ end
+ PetMenuShow = not PetMenuShow;
+ if not PetMenuShow then
+ PetShow = false;
+ PetVisible = false;
+ NecrosisPetMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\PetMenuButton-01");
+ PetMenuCreate[1]:ClearAllPoints();
+ PetMenuCreate[1]:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
+ AlphaPetMenu = 1;
+ else
+ PetShow = true;
+ NecrosisPetMenuButton:SetNormalTexture("Interface\\Addons\\Necrosis\\UI\\PetMenuButton-02");
+ -- Si clic droit, le menu de pet reste ouvert
+ if button == "RightButton" then
+ PetVisible = true;
+ end
+ -- Sinon on affiche les icones (on les déplace sur l'écran)
+ NecrosisPetMenu1:SetAlpha(1);
+ NecrosisPetMenu2:SetAlpha(1);
+ NecrosisPetMenu3:SetAlpha(1);
+ NecrosisPetMenu4:SetAlpha(1);
+ NecrosisPetMenu5:SetAlpha(1);
+ NecrosisPetMenu6:SetAlpha(1);
+ NecrosisPetMenu7:SetAlpha(1);
+ NecrosisPetMenu8:SetAlpha(1);
+ NecrosisPetMenu9:SetAlpha(1);
+ PetMenuCreate[1]:ClearAllPoints();
+ PetMenuCreate[1]:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31) , 26);
+ AlphaPetVar = GetTime() + 3;
+ end
+end
+
+-- A chaque changement du livre des sorts, au démarrage du mod, ainsi qu'au changement de sens du menu on reconstruit les menus des sorts
+function Necrosis_CreateMenu()
+ PetMenuCreate = {};
+ CurseMenuCreate = {};
+ BuffMenuCreate = {};
+ local menuVariable = nil;
+ local PetButtonPosition = 0;
+ local BuffButtonPosition = 0;
+ local CurseButtonPosition = 0;
+
+ -- On cache toutes les icones des démons
+ for i = 1, 9, 1 do
+ menuVariable = getglobal("NecrosisPetMenu"..i);
+ menuVariable:Hide();
+ end
+ -- On cache toutes les icones des sorts
+ for i = 1, 9, 1 do
+ menuVariable = getglobal("NecrosisBuffMenu"..i);
+ menuVariable:Hide();
+ end
+ -- On cache toutes les icones des curses
+ for i = 1, 9, 1 do
+ menuVariable = getglobal("NecrosisCurseMenu"..i);
+ menuVariable:Hide();
+ end
+
+
+ -- Si le sort de Domination corrompue existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[15].ID then
+ menuVariable = getglobal("NecrosisPetMenu1");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
+ PetButtonPosition = 1;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation du Diablotin existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[3].ID then
+ menuVariable = getglobal("NecrosisPetMenu2");
+ menuVariable:ClearAllPoints();
+ if PetButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ end
+ PetButtonPosition = 2;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation du Marcheur existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[4].ID then
+ menuVariable = getglobal("NecrosisPetMenu3");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 3;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation du Succube existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[5].ID then
+ menuVariable = getglobal("NecrosisPetMenu4");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 4;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation du Felhunter existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[6].ID then
+ menuVariable = getglobal("NecrosisPetMenu5");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 5;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation de l'Infernal existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[8].ID then
+ menuVariable = getglobal("NecrosisPetMenu6");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 6;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'invocation du Doomguard existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[30].ID then
+ menuVariable = getglobal("NecrosisPetMenu7");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 7;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si l'asservissement existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[35].ID then
+ menuVariable = getglobal("NecrosisPetMenu8");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 8;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+ -- Si le sacrifice démoniaque existe, on affiche le bouton dans le menu des pets
+ if NECROSIS_SPELL_TABLE[44].ID then
+ menuVariable = getglobal("NecrosisPetMenu9");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisPetMenu"..PetButtonPosition, "CENTER", ((36 / NecrosisConfig.PetMenuPos) * 31), 0);
+ PetButtonPosition = 9;
+ table.insert(PetMenuCreate, menuVariable);
+ end
+
+
+ -- Maintenant que tous les boutons de pet sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
+ for i = 1, table.getn(PetMenuCreate), 1 do
+ ShowUIPanel(PetMenuCreate[i]);
+ end
+
+ -- Si l'Armure Démoniaque existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[31].ID or NECROSIS_SPELL_TABLE[36].ID then
+ menuVariable = getglobal("NecrosisBuffMenu1");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenuButton", "CENTER", 3000, 3000);
+ BuffButtonPosition = 1;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si la respiration interminable existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[32].ID then
+ menuVariable = getglobal("NecrosisBuffMenu2");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 2;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si la détection de l'invisibilité existe, on affiche le bouton dans le menu des buffs (au plus haut rang)
+ if NECROSIS_SPELL_TABLE[33].ID then
+ menuVariable = getglobal("NecrosisBuffMenu3");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 3;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si la respiration interminable existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[34].ID then
+ menuVariable = getglobal("NecrosisBuffMenu4");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 4;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si l'invocation de joueur existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[37].ID then
+ menuVariable = getglobal("NecrosisBuffMenu5");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 5;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si le Radar à démon existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[39].ID then
+ menuVariable = getglobal("NecrosisBuffMenu6");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 6;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si le Lien Spirituel existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[38].ID then
+ menuVariable = getglobal("NecrosisBuffMenu7");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 7;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si la protection contre les ombres existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[43].ID then
+ menuVariable = getglobal("NecrosisBuffMenu8");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 8;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+ -- Si le banissement existe, on affiche le bouton dans le menu des buffs
+ if NECROSIS_SPELL_TABLE[9].ID then
+ menuVariable = getglobal("NecrosisBuffMenu9");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisBuffMenu"..BuffButtonPosition, "CENTER", ((36 / NecrosisConfig.BuffMenuPos) * 31), 0);
+ BuffButtonPosition = 9;
+ table.insert(BuffMenuCreate, menuVariable);
+ end
+
+ -- Maintenant que tous les boutons de buff sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
+ for i = 1, table.getn(BuffMenuCreate), 1 do
+ ShowUIPanel(BuffMenuCreate[i]);
+ end
+
+ -- Si la Malédiction amplifiée existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[42].ID then
+ menuVariable = getglobal("NecrosisCurseMenu1");
+ menuVariable:ClearAllPoints();
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ CurseButtonPosition = 1;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction de faiblesse existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[23].ID then
+ menuVariable = getglobal("NecrosisCurseMenu2");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 2;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction d'agonie existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[22].ID then
+ menuVariable = getglobal("NecrosisCurseMenu3");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 3;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction de témérité existe, on affiche le bouton dans le menu des curses (au plus haut rang)
+ if NECROSIS_SPELL_TABLE[24].ID then
+ menuVariable = getglobal("NecrosisCurseMenu4");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 4;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction des languages existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[25].ID then
+ menuVariable = getglobal("NecrosisCurseMenu5");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 5;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction de fatigue existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[40].ID then
+ menuVariable = getglobal("NecrosisCurseMenu6");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 6;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction des éléments existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[26].ID then
+ menuVariable = getglobal("NecrosisCurseMenu7");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 7;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction de l'ombre, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[27].ID then
+ menuVariable = getglobal("NecrosisCurseMenu8");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 8;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+ -- Si la Malédiction funeste existe, on affiche le bouton dans le menu des curses
+ if NECROSIS_SPELL_TABLE[16].ID then
+ menuVariable = getglobal("NecrosisCurseMenu9");
+ menuVariable:ClearAllPoints();
+ if CurseButtonPosition == 0 then
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenuButton", "CENTER", 3000, 3000);
+ else
+ menuVariable:SetPoint("CENTER", "NecrosisCurseMenu"..CurseButtonPosition, "CENTER", ((36 / NecrosisConfig.CurseMenuPos) * 31), 0);
+ end
+ CurseButtonPosition = 9;
+ table.insert(CurseMenuCreate, menuVariable);
+ end
+
+ -- Maintenant que tous les boutons de curse sont placés les uns à côté des autres (hors de l'écran), on affiche les disponibles
+ for i = 1, table.getn(CurseMenuCreate), 1 do
+ ShowUIPanel(CurseMenuCreate[i]);
+ end
+end
+
+-- Gestion des casts du menu des buffs
+function Necrosis_BuffCast(type)
+ local TargetEnemy = false;
+ if UnitCanAttack("player","target") and type ~= 9 then
+ TargetUnit("player");
+ TargetEnemy = true;
+ end
+ -- Si le Démoniste possède la peau de démon mais pas l'armure démoniaque
+ if not NECROSIS_SPELL_TABLE[type].ID then
+ CastSpell(NECROSIS_SPELL_TABLE[36].ID, "spell");
+ else
+ if (type ~= 44) or (type == 44 and UnitExists("Pet")) then
+ CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
+ end
+ end
+ LastBuff = type;
+ if TargetEnemy then TargetLastTarget(); end
+ AlphaBuffMenu = 1;
+ AlphaBuffVar = GetTime() + 3;
+end
+
+-- Gestion des casts du menu des curses
+function Necrosis_CurseCast(type, click)
+ if (UnitIsFriend("player","target")) and (not UnitCanAttack("player","target")) then
+ AssistUnit("target");
+ end
+ if (UnitCanAttack("player","target")) and (UnitName("target") ~= nil) then
+ if (type == 23 or type == 22 or type == 40) then
+ if (click == "RightButton") and (NECROSIS_SPELL_TABLE[42].ID ~= nil) then
+ local start3, duration3 = GetSpellCooldown(NECROSIS_SPELL_TABLE[42].ID, "spell");
+ if not (start3 > 0 and duration3 > 0) then
+ CastSpell(NECROSIS_SPELL_TABLE[42].ID, "spell");
+ SpellStopCasting(NECROSIS_SPELL_TABLE[42].Name);
+ end
+ end
+ end
+ CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
+ LastCurse = type;
+ LastCurseClick = click;
+ if (click == "MiddleButton") and (UnitExists("Pet")) then
+ PetAttack();
+ end
+ end
+ AlphaCurseMenu = 1;
+ AlphaCurseVar = GetTime() + 3;
+end
+
+-- Gestion des casts du menu des démons
+function Necrosis_PetCast(type, click)
+ if type == 8 and InfernalStone == 0 then
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.InfernalStoneNotPresent, "USER");
+ return;
+ elseif type == 30 and DemoniacStone == 0 then
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.DemoniacStoneNotPresent, "USER");
+ return;
+ elseif type ~= 15 and type ~= 3 and type ~= 8 and type ~= 30 and Soulshards == 0 then
+ Necrosis_Msg(NECROSIS_MESSAGE.Error.SoulShardNotPresent, "USER");
+ return;
+ end
+ if (type == 3 or type == 4 or type == 5 or type == 6) then
+ LastDemon = type;
+ if (click == "RightButton") and (NECROSIS_SPELL_TABLE[15].ID ~= nil) then
+ local start, duration = GetSpellCooldown(NECROSIS_SPELL_TABLE[15].ID, "spell");
+ if not (start > 0 and duration > 0) then
+ CastSpell(NECROSIS_SPELL_TABLE[15].ID, "spell");
+ SpellStopCasting(NECROSIS_SPELL_TABLE[15].Name);
+ end
+ end
+ if NecrosisConfig.DemonSummon and NecrosisConfig.ChatMsg and not NecrosisConfig.SM then
+ if NecrosisConfig.PetName[(type - 2)] == " " and NECROSIS_PET_MESSAGE[5] then
+ local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[5]));
+ while tempnum == PetMess and table.getn(NECROSIS_PET_MESSAGE[5]) >= 2 do
+ tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[5]));
+ end
+ PetMess = tempnum;
+ for i = 1, table.getn(NECROSIS_PET_MESSAGE[5][tempnum]) do
+ Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[5][tempnum][i]), "SAY");
+ end
+ elseif NECROSIS_PET_MESSAGE[(type - 2)] then
+ local tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)]));
+ while tempnum == PetMess and table.getn(NECROSIS_PET_MESSAGE[(type - 2)]) >= 2 do
+ tempnum = random(1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)]));
+ end
+ PetMess = tempnum;
+ for i = 1, table.getn(NECROSIS_PET_MESSAGE[(type - 2)][tempnum]) do
+ Necrosis_Msg(Necrosis_MsgReplace(NECROSIS_PET_MESSAGE[(type - 2)][tempnum][i], nil , type - 2), "SAY");
+ end
+ end
+ end
+ end
+ CastSpell(NECROSIS_SPELL_TABLE[type].ID, "spell");
+ AlphaPetMenu = 1;
+ AlphaPetVar = GetTime() + 3;
+end
+
+-- Fonction permettant l'affichage des différentes pages du livre des configurations
+function NecrosisGeneralTab_OnClick(id)
+ local TabName;
+ for index=1, 5, 1 do
+ TabName = getglobal("NecrosisGeneralTab"..index);
+ if index == id then
+ TabName:SetChecked(1);
+ else
+ TabName:SetChecked(nil);
+ end
+ end
+ if id == 1 then
+ ShowUIPanel(NecrosisShardMenu);
+ HideUIPanel(NecrosisMessageMenu);
+ HideUIPanel(NecrosisButtonMenu);
+ HideUIPanel(NecrosisTimerMenu);
+ HideUIPanel(NecrosisGraphOptionMenu);
+ NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
+ NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu1);
+ elseif id == 2 then
+ HideUIPanel(NecrosisShardMenu);
+ ShowUIPanel(NecrosisMessageMenu);
+ HideUIPanel(NecrosisButtonMenu);
+ HideUIPanel(NecrosisTimerMenu);
+ HideUIPanel(NecrosisGraphOptionMenu);
+ NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
+ NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu2);
+ elseif id == 3 then
+ HideUIPanel(NecrosisShardMenu);
+ HideUIPanel(NecrosisMessageMenu);
+ ShowUIPanel(NecrosisButtonMenu);
+ HideUIPanel(NecrosisTimerMenu);
+ HideUIPanel(NecrosisGraphOptionMenu);
+ NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
+ NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu3);
+ elseif id == 4 then
+ HideUIPanel(NecrosisShardMenu);
+ HideUIPanel(NecrosisMessageMenu);
+ HideUIPanel(NecrosisButtonMenu);
+ ShowUIPanel(NecrosisTimerMenu);
+ HideUIPanel(NecrosisGraphOptionMenu);
+ NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
+ NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu4);
+ elseif id == 5 then
+ HideUIPanel(NecrosisShardMenu);
+ HideUIPanel(NecrosisMessageMenu);
+ HideUIPanel(NecrosisButtonMenu);
+ HideUIPanel(NecrosisTimerMenu);
+ ShowUIPanel(NecrosisGraphOptionMenu);
+ NecrosisGeneralIcon:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
+ NecrosisGeneralPageText:SetText(NECROSIS_CONFIGURATION.Menu5);
+ end
+end
+
+
+
+-- Bon, pour pouvoir utiliser le Timer sur les sorts instants, j'ai été obligé de m'inspirer de Cosmos
+-- Comme je ne voulais pas rendre le mod dépendant de Sea, j'ai repris ses fonctions
+-- Apparemment, la version Stand-Alone de ShardTracker a fait pareil :) :)
+Necrosis_Hook = function (orig,new,type)
+ if(not type) then type = "before"; end
+ if(not Hx_Hooks) then Hx_Hooks = {}; end
+ if(not Hx_Hooks[orig]) then
+ Hx_Hooks[orig] = {}; Hx_Hooks[orig].before = {}; Hx_Hooks[orig].before.n = 0; Hx_Hooks[orig].after = {}; Hx_Hooks[orig].after.n = 0; Hx_Hooks[orig].hide = {}; Hx_Hooks[orig].hide.n = 0; Hx_Hooks[orig].replace = {}; Hx_Hooks[orig].replace.n = 0; Hx_Hooks[orig].orig = getglobal(orig);
+ else
+ for key,value in Hx_Hooks[orig][type] do if(value == getglobal(new)) then return; end end
+ end
+ Necrosis_Push(Hx_Hooks[orig][type],getglobal(new)); setglobal(orig,function(...) Necrosis_HookHandler(orig,arg); end);
+end
+
+Necrosis_HookHandler = function (name,arg)
+ local called = false; local continue = true; local retval;
+ for key,value in Hx_Hooks[name].hide do
+ if(type(value) == "function") then if(not value(unpack(arg))) then continue = false; end called = true; end
+ end
+ if(not continue) then return; end
+ for key,value in Hx_Hooks[name].before do
+ if(type(value) == "function") then value(unpack(arg)); called = true; end
+ end
+ continue = false;
+ local replacedFunction = false;
+ for key,value in Hx_Hooks[name].replace do
+ if(type(value) == "function") then
+ replacedFunction = true; if(value(unpack(arg))) then continue = true; end called = true;
+ end
+ end
+ if(continue or (not replacedFunction)) then retval = Hx_Hooks[name].orig(unpack(arg)); end
+ for key,value in Hx_Hooks[name].after do
+ if(type(value) == "function") then value(unpack(arg)); called = true;end
+ end
+ if(not called) then setglobal(name,Hx_Hooks[name].orig); Hx_Hooks[name] = nil; end
+ return retval;
+end
+
+function Necrosis_Push (table,val)
+ if(not table or not table.n) then return nil; end
+ table.n = table.n+1;
+ table[table.n] = val;
+end
+
+function Necrosis_UseAction(id, number, onSelf)
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetAction(id);
+ local tip = tostring(NecrosisTooltipTextLeft1:GetText());
+ if tip then
+ SpellCastName = tip;
+ SpellTargetName = UnitName("target");
+ if not SpellTargetName then
+ SpellTargetName = "";
+ end
+ SpellTargetLevel = UnitLevel("target");
+ if not SpellTargetLevel then
+ SpellTargetLevel = "";
+ end
+ end
+end
+
+function Necrosis_CastSpell(spellId, spellbookTabNum)
+ local Name, Rank = GetSpellName(spellId, spellbookTabNum);
+ if Rank ~= nil then
+ local _, _, Rank2 = string.find(Rank, "(%d+)");
+ SpellCastRank = tonumber(Rank2);
+ end
+ SpellCastName = Name;
+
+ SpellTargetName = UnitName("target");
+ if not SpellTargetName then
+ SpellTargetName = "";
+ end
+ SpellTargetLevel = UnitLevel("target");
+ if not SpellTargetLevel then
+ SpellTargetLevel = "";
+ end
+end
+
+function Necrosis_CastSpellByName(Spell)
+ local _, _, Name = string.find(Spell, "(.+)%(");
+ local _, _, Rank = string.find(Spell, "([%d]+)");
+
+ if Rank ~= nil then
+ local _, _, Rank2 = string.find(Rank, "(%d+)");
+ SpellCastRank = tonumber(Rank2);
+ end
+
+ if not Name then
+ _, _, Name = string.find(Spell, "(.+)");
+ end
+ SpellCastName = Name;
+
+ SpellTargetName = UnitName("target");
+ if not SpellTargetName then
+ SpellTargetName = "";
+ end
+ SpellTargetLevel = UnitLevel("target");
+ if not SpellTargetLevel then
+ SpellTargetLevel = "";
+ end
+end
+
+function NecrosisTimer(nom, duree)
+ local Cible = UnitName("target");
+ local Niveau = UnitLevel("target");
+ local truc = 6;
+ if not Cible then
+ Cible = "";
+ truc = 2;
+ end
+ if not Niveau then
+ Niveau = "";
+ end
+
+ SpellGroup, SpellTimer, TimerTable = NecrosisTimerX(nom, duree, truc, Cible, Niveau, SpellGroup, SpellTimer, TimerTable);
+end
+
+function NecrosisSpellCast(name)
+ if string.find(name, "coa") then
+ SpellCastName = NECROSIS_SPELL_TABLE[22].Name;
+ SpellTargetName = UnitName("target");
+ if not SpellTargetName then
+ SpellTargetName = "";
+ end
+ SpellTargetLevel = UnitLevel("target");
+ if not SpellTargetLevel then
+ SpellTargetLevel = "";
+ end
+ CastSpell(NECROSIS_SPELL_TABLE[22].ID, "spell");
+ end
+end
diff --git a/Necrosis.toc b/Necrosis.toc
index 2b6548d..8636e94 100644
--- a/Necrosis.toc
+++ b/Necrosis.toc
@@ -1,16 +1,16 @@
-## Interface: 11200
-## Title: |CFFB700B7N|CFFFF00FFe|CFFFF50FFc|CFFFF99FFr|CFFFFC4FFo|CFFFFFFFFs|CFFFFC4FFi|CFFFF99FFs |CFFFF50FFL|CFFFF00FFd|CFFB700B7C
-## Notes: Gestion graphique des shards.
-## OptionalDeps:
-## Dependencies:
-## DefaultState:
-## SavedVariables:
-## SavedVariablesPerCharacter: NecrosisConfig
-NecrosisGeneral.xml
-Necrosis.xml
-NecrosisTimer.xml
-NecrosisShardMenu.xml
-NecrosisMessageMenu.xml
-NecrosisButtonMenu.xml
-NecrosisTimerMenu.xml
-NecrosisGraphOptionMenu.xml
+## Interface: 11200
+## Title: |cFFB700B7N|cFFFF00FFe|cFFFF50FFc|cFFFF99FFr|cFFFFC4FFo|cFFFFFFFFs|cFFFFC4FFi|cFFFF99FFs |cFFFF50FFL|cFFFF00FFd|cFFB700B7C
+## Notes: Gestion graphique des shards.
+## OptionalDeps:
+## Dependencies:
+## DefaultState:
+## SavedVariables:
+## SavedVariablesPerCharacter: NecrosisConfig
+NecrosisGeneral.xml
+Necrosis.xml
+NecrosisTimer.xml
+NecrosisShardMenu.xml
+NecrosisMessageMenu.xml
+NecrosisButtonMenu.xml
+NecrosisTimerMenu.xml
+NecrosisGraphOptionMenu.xml
diff --git a/Necrosis.xml b/Necrosis.xml
index 45b07d6..cc9479b 100644
--- a/Necrosis.xml
+++ b/Necrosis.xml
@@ -1,1333 +1,1333 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Necrosis_LoadVariables()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Necrosis_LoadVariables()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NecrosisButtonMenu.xml b/NecrosisButtonMenu.xml
index 242e971..f890c4c 100644
--- a/NecrosisButtonMenu.xml
+++ b/NecrosisButtonMenu.xml
@@ -1,326 +1,326 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(this:GetValue().." %");
- NecrosisBuffMenu9:Show();
- NecrosisBuffMenu9:ClearAllPoints();
- NecrosisBuffMenu9:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
-
-
- if this:GetValue() ~= NecrosisConfig.BanishScale then
- GameTooltip:SetText(this:GetValue().." %");
- NecrosisConfig.BanishScale = this:GetValue();
- NecrosisBuffMenu9:ClearAllPoints();
- NecrosisBuffMenu9:SetScale(NecrosisConfig.BanishScale / 100);
- end
-
-
- GameTooltip:Hide();
- Necrosis_CreateMenu();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[1] = true;
- ShowUIPanel(NecrosisFirestoneButton);
- else
- NecrosisConfig.StonePosition[1] = false;
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[2] = true;
- ShowUIPanel(NecrosisSpellstoneButton);
- else
- NecrosisConfig.StonePosition[2] = false;
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[3] = true;
- ShowUIPanel(NecrosisHealthstoneButton);
- else
- NecrosisConfig.StonePosition[3] = false;
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[4] = true;
- ShowUIPanel(NecrosisSoulstoneButton);
- else
- NecrosisConfig.StonePosition[4] = false;
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[5] = true;
- ShowUIPanel(NecrosisBuffMenuButton);
- else
- NecrosisConfig.StonePosition[5] = false;
- HideUIPanel(NecrosisBuffMenuButton);
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[6] = true;
- ShowUIPanel(NecrosisMountButton);
- else
- NecrosisConfig.StonePosition[6] = false;
- HideUIPanel(NecrosisMountButton);
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[7] = true;
- ShowUIPanel(NecrosisPetMenuButton);
- else
- NecrosisConfig.StonePosition[7] = false;
- HideUIPanel(NecrosisPetMenuButton);
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.StonePosition[8] = true;
- ShowUIPanel(NecrosisCurseButton);
- else
- NecrosisConfig.StonePosition[8] = false;
- HideUIPanel(NecrosisCurseButton);
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
- HideUIPanel(NecrosisButtonMenu);
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(this:GetValue().." %");
+ NecrosisBuffMenu9:Show();
+ NecrosisBuffMenu9:ClearAllPoints();
+ NecrosisBuffMenu9:SetPoint("CENTER", "UIParent", "CENTER", 0, 0);
+
+
+ if this:GetValue() ~= NecrosisConfig.BanishScale then
+ GameTooltip:SetText(this:GetValue().." %");
+ NecrosisConfig.BanishScale = this:GetValue();
+ NecrosisBuffMenu9:ClearAllPoints();
+ NecrosisBuffMenu9:SetScale(NecrosisConfig.BanishScale / 100);
+ end
+
+
+ GameTooltip:Hide();
+ Necrosis_CreateMenu();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[1] = true;
+ ShowUIPanel(NecrosisFirestoneButton);
+ else
+ NecrosisConfig.StonePosition[1] = false;
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[2] = true;
+ ShowUIPanel(NecrosisSpellstoneButton);
+ else
+ NecrosisConfig.StonePosition[2] = false;
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[3] = true;
+ ShowUIPanel(NecrosisHealthstoneButton);
+ else
+ NecrosisConfig.StonePosition[3] = false;
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[4] = true;
+ ShowUIPanel(NecrosisSoulstoneButton);
+ else
+ NecrosisConfig.StonePosition[4] = false;
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[5] = true;
+ ShowUIPanel(NecrosisBuffMenuButton);
+ else
+ NecrosisConfig.StonePosition[5] = false;
+ HideUIPanel(NecrosisBuffMenuButton);
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[6] = true;
+ ShowUIPanel(NecrosisMountButton);
+ else
+ NecrosisConfig.StonePosition[6] = false;
+ HideUIPanel(NecrosisMountButton);
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[7] = true;
+ ShowUIPanel(NecrosisPetMenuButton);
+ else
+ NecrosisConfig.StonePosition[7] = false;
+ HideUIPanel(NecrosisPetMenuButton);
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.StonePosition[8] = true;
+ ShowUIPanel(NecrosisCurseButton);
+ else
+ NecrosisConfig.StonePosition[8] = false;
+ HideUIPanel(NecrosisCurseButton);
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+ HideUIPanel(NecrosisButtonMenu);
+
+
+
+
diff --git a/NecrosisGeneral.xml b/NecrosisGeneral.xml
index 1537f89..9d643de 100644
--- a/NecrosisGeneral.xml
+++ b/NecrosisGeneral.xml
@@ -1,253 +1,253 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:RegisterForDrag("LeftButton");
-
-
- Necrosis_OnDragStart(NecrosisGeneralFrame);
-
-
- Necrosis_OnDragStop(NecrosisGeneralFrame);
-
-
- Necrosis_OnDragStop(NecrosisGeneralFrame);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu1);
-
-
- GameTooltip:Hide();
-
-
- NecrosisGeneralTab_OnClick(1);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu2);
-
-
- GameTooltip:Hide();
-
-
- NecrosisGeneralTab_OnClick(2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu3);
-
-
- GameTooltip:Hide();
-
-
- NecrosisGeneralTab_OnClick(3);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu4);
-
-
- GameTooltip:Hide();
-
-
- NecrosisGeneralTab_OnClick(4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu5);
-
-
- GameTooltip:Hide();
-
-
- NecrosisGeneralTab_OnClick(5);
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:RegisterForDrag("LeftButton");
+
+
+ Necrosis_OnDragStart(NecrosisGeneralFrame);
+
+
+ Necrosis_OnDragStop(NecrosisGeneralFrame);
+
+
+ Necrosis_OnDragStop(NecrosisGeneralFrame);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu1);
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisGeneralTab_OnClick(1);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu2);
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisGeneralTab_OnClick(2);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu3);
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisGeneralTab_OnClick(3);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu4);
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisGeneralTab_OnClick(4);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Menu5);
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisGeneralTab_OnClick(5);
+
+
+
+
+
+
+
diff --git a/NecrosisGraphOptionMenu.xml b/NecrosisGraphOptionMenu.xml
index a7610fc..705abf1 100644
--- a/NecrosisGraphOptionMenu.xml
+++ b/NecrosisGraphOptionMenu.xml
@@ -1,355 +1,355 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(this:GetValue());
-
-
- NecrosisConfig.NecrosisAngle = this:GetValue();
- local x, y = NecrosisButton:GetCenter();
- GameTooltip:SetText(this:GetValue());
- Necrosis_UpdateButtonsScale();
-
-
- GameTooltip:Hide();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- NBx, NBy = NecrosisButton:GetCenter();
- NBx = NBx * (NecrosisConfig.NecrosisButtonScale / 100);
- NBy = NBy * (NecrosisConfig.NecrosisButtonScale / 100);
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(this:GetValue().." %");
-
-
- if this:GetValue() ~= NecrosisConfig.NecrosisButtonScale then
- NecrosisButton:ClearAllPoints();
- GameTooltip:SetText(this:GetValue().." %");
- NecrosisConfig.NecrosisButtonScale = this:GetValue();
- NecrosisButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", NBx / (NecrosisConfig.NecrosisButtonScale / 100), NBy / (NecrosisConfig.NecrosisButtonScale / 100));
- NecrosisButton:SetScale(NecrosisConfig.NecrosisButtonScale / 100);
- Necrosis_UpdateButtonsScale();
- end
-
-
- GameTooltip:Hide();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- STx, STy = NecrosisShadowTranceButton:GetCenter();
- STx = STx * (NecrosisConfig.ShadowTranceScale / 100);
- STy = STy * (NecrosisConfig.ShadowTranceScale / 100);
- AFx, AFy = NecrosisAntiFearButton:GetCenter();
- AFx = AFx * (NecrosisConfig.ShadowTranceScale / 100);
- AFy = AFy * (NecrosisConfig.ShadowTranceScale / 100);
- ShowUIPanel(NecrosisShadowTranceButton);
- ShowUIPanel(NecrosisAntiFearButton);
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(this:GetValue().."%");
-
-
- if this:GetValue() ~= NecrosisConfig.ShadowTranceScale then
- GameTooltip:SetText(this:GetValue().."%");
- NecrosisConfig.ShadowTranceScale = this:GetValue();
- NecrosisShadowTranceButton:ClearAllPoints();
- NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", STx / (NecrosisConfig.ShadowTranceScale / 100), STy / (NecrosisConfig.ShadowTranceScale / 100));
- NecrosisShadowTranceButton:SetScale(NecrosisConfig.ShadowTranceScale / 100);
- NecrosisAntiFearButton:ClearAllPoints();
- NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", AFx / (NecrosisConfig.ShadowTranceScale / 100), AFy / (NecrosisConfig.ShadowTranceScale / 100));
- NecrosisAntiFearButton:SetScale(NecrosisConfig.ShadowTranceScale / 100);
- end
-
-
- if not NecrosisShowTrance_Button:GetChecked() then
- HideUIPanel(NecrosisShadowTranceButton);
- HideUIPanel(NecrosisAntiFearButton);
- end
- GameTooltip:Hide();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- ShowUIPanel(NecrosisShadowTranceButton);
- ShowUIPanel(NecrosisAntiFearButton);
- NecrosisShadowTranceButton:RegisterForDrag("LeftButton")
- NecrosisAntiFearButton:RegisterForDrag("LeftButton")
- else
- HideUIPanel(NecrosisShadowTranceButton);
- HideUIPanel(NecrosisAntiFearButton);
- NecrosisShadowTranceButton:RegisterForDrag("");
- NecrosisAntiFearButton:RegisterForDrag("");
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.NecrosisLockServ = true;
- Necrosis_ClearAllPoints();
- Necrosis_UpdateButtonsScale();
- Necrosis_NoDrag();
- if not NecrosisConfig.NoDragAll then
- NecrosisButton:RegisterForDrag("LeftButton");
- NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
- end
- else
- NecrosisConfig.NecrosisLockServ = false;
- Necrosis_ClearAllPoints();
- NecrosisFirestoneButton:SetPoint("CENTER", "UIParent", "CENTER", -121,-100);
- NecrosisSpellstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -87,-100);
- NecrosisHealthstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -53,-100);
- NecrosisSoulstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -17,-100);
- NecrosisBuffMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 17,-100);
- NecrosisMountButton:SetPoint("CENTER", "UIParent", "CENTER", 53,-100);
- NecrosisPetMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 87,-100);
- NecrosisCurseMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 121,-100);
- Necrosis_Drag();
- NecrosisConfig.NoDragAll = false;
- NecrosisLock_Button:SetChecked(false);
- NecrosisButton:RegisterForDrag("LeftButton");
- NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- Necrosis_NoDrag();
- NecrosisButton:RegisterForDrag("");
- NecrosisSpellTimerButton:RegisterForDrag("");
- NecrosisConfig.NoDragAll = true;
- else
- if not NecrosisConfig.NecrosisLockServ then
- Necrosis_Drag();
- end
- NecrosisButton:RegisterForDrag("LeftButton");
- NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
- NecrosisConfig.NoDragAll = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.BuffMenuPos = -34;
- else
- NecrosisConfig.BuffMenuPos = 34;
- end
- Necrosis_CreateMenu();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.PetMenuPos = -34;
- else
- NecrosisConfig.PetMenuPos = 34;
- end
- Necrosis_CreateMenu();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.CurseMenuPos = -34;
- else
- NecrosisConfig.CurseMenuPos = 34;
- end
- Necrosis_CreateMenu();
-
-
-
-
-
-
- HideUIPanel(NecrosisGraphOptionMenu);
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(this:GetValue());
+
+
+ NecrosisConfig.NecrosisAngle = this:GetValue();
+ local x, y = NecrosisButton:GetCenter();
+ GameTooltip:SetText(this:GetValue());
+ Necrosis_UpdateButtonsScale();
+
+
+ GameTooltip:Hide();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NBx, NBy = NecrosisButton:GetCenter();
+ NBx = NBx * (NecrosisConfig.NecrosisButtonScale / 100);
+ NBy = NBy * (NecrosisConfig.NecrosisButtonScale / 100);
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(this:GetValue().." %");
+
+
+ if this:GetValue() ~= NecrosisConfig.NecrosisButtonScale then
+ NecrosisButton:ClearAllPoints();
+ GameTooltip:SetText(this:GetValue().." %");
+ NecrosisConfig.NecrosisButtonScale = this:GetValue();
+ NecrosisButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", NBx / (NecrosisConfig.NecrosisButtonScale / 100), NBy / (NecrosisConfig.NecrosisButtonScale / 100));
+ NecrosisButton:SetScale(NecrosisConfig.NecrosisButtonScale / 100);
+ Necrosis_UpdateButtonsScale();
+ end
+
+
+ GameTooltip:Hide();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ STx, STy = NecrosisShadowTranceButton:GetCenter();
+ STx = STx * (NecrosisConfig.ShadowTranceScale / 100);
+ STy = STy * (NecrosisConfig.ShadowTranceScale / 100);
+ AFx, AFy = NecrosisAntiFearButton:GetCenter();
+ AFx = AFx * (NecrosisConfig.ShadowTranceScale / 100);
+ AFy = AFy * (NecrosisConfig.ShadowTranceScale / 100);
+ ShowUIPanel(NecrosisShadowTranceButton);
+ ShowUIPanel(NecrosisAntiFearButton);
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(this:GetValue().."%");
+
+
+ if this:GetValue() ~= NecrosisConfig.ShadowTranceScale then
+ GameTooltip:SetText(this:GetValue().."%");
+ NecrosisConfig.ShadowTranceScale = this:GetValue();
+ NecrosisShadowTranceButton:ClearAllPoints();
+ NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", STx / (NecrosisConfig.ShadowTranceScale / 100), STy / (NecrosisConfig.ShadowTranceScale / 100));
+ NecrosisShadowTranceButton:SetScale(NecrosisConfig.ShadowTranceScale / 100);
+ NecrosisAntiFearButton:ClearAllPoints();
+ NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "BOTTOMLEFT", AFx / (NecrosisConfig.ShadowTranceScale / 100), AFy / (NecrosisConfig.ShadowTranceScale / 100));
+ NecrosisAntiFearButton:SetScale(NecrosisConfig.ShadowTranceScale / 100);
+ end
+
+
+ if not NecrosisShowTrance_Button:GetChecked() then
+ HideUIPanel(NecrosisShadowTranceButton);
+ HideUIPanel(NecrosisAntiFearButton);
+ end
+ GameTooltip:Hide();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ ShowUIPanel(NecrosisShadowTranceButton);
+ ShowUIPanel(NecrosisAntiFearButton);
+ NecrosisShadowTranceButton:RegisterForDrag("LeftButton")
+ NecrosisAntiFearButton:RegisterForDrag("LeftButton")
+ else
+ HideUIPanel(NecrosisShadowTranceButton);
+ HideUIPanel(NecrosisAntiFearButton);
+ NecrosisShadowTranceButton:RegisterForDrag("");
+ NecrosisAntiFearButton:RegisterForDrag("");
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.NecrosisLockServ = true;
+ Necrosis_ClearAllPoints();
+ Necrosis_UpdateButtonsScale();
+ Necrosis_NoDrag();
+ if not NecrosisConfig.NoDragAll then
+ NecrosisButton:RegisterForDrag("LeftButton");
+ NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
+ end
+ else
+ NecrosisConfig.NecrosisLockServ = false;
+ Necrosis_ClearAllPoints();
+ NecrosisFirestoneButton:SetPoint("CENTER", "UIParent", "CENTER", -121,-100);
+ NecrosisSpellstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -87,-100);
+ NecrosisHealthstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -53,-100);
+ NecrosisSoulstoneButton:SetPoint("CENTER", "UIParent", "CENTER", -17,-100);
+ NecrosisBuffMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 17,-100);
+ NecrosisMountButton:SetPoint("CENTER", "UIParent", "CENTER", 53,-100);
+ NecrosisPetMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 87,-100);
+ NecrosisCurseMenuButton:SetPoint("CENTER", "UIParent", "CENTER", 121,-100);
+ Necrosis_Drag();
+ NecrosisConfig.NoDragAll = false;
+ NecrosisLock_Button:SetChecked(false);
+ NecrosisButton:RegisterForDrag("LeftButton");
+ NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ Necrosis_NoDrag();
+ NecrosisButton:RegisterForDrag("");
+ NecrosisSpellTimerButton:RegisterForDrag("");
+ NecrosisConfig.NoDragAll = true;
+ else
+ if not NecrosisConfig.NecrosisLockServ then
+ Necrosis_Drag();
+ end
+ NecrosisButton:RegisterForDrag("LeftButton");
+ NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
+ NecrosisConfig.NoDragAll = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.BuffMenuPos = -34;
+ else
+ NecrosisConfig.BuffMenuPos = 34;
+ end
+ Necrosis_CreateMenu();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.PetMenuPos = -34;
+ else
+ NecrosisConfig.PetMenuPos = 34;
+ end
+ Necrosis_CreateMenu();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.CurseMenuPos = -34;
+ else
+ NecrosisConfig.CurseMenuPos = 34;
+ end
+ Necrosis_CreateMenu();
+
+
+
+
+
+
+ HideUIPanel(NecrosisGraphOptionMenu);
+
+
+
+
diff --git a/NecrosisGraphicalTimer.lua b/NecrosisGraphicalTimer.lua
index 433fd05..faacab4 100644
--- a/NecrosisGraphicalTimer.lua
+++ b/NecrosisGraphicalTimer.lua
@@ -1,162 +1,162 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 07.04.2006-1
-------------------------------------------------------------------------------------------------------
-
-
--- La fonction d'affichage des timers
--- tableau est de la forme suivante :
--- tableau {
- -- texte = "Nom du mob ou du sort",
- -- TimeMax = "TimeMax du sort",
- -- Time = "Time du sort",
- -- titre = "vrai si titre, faux sinon",
- -- temps = "timer numérique",
- -- Gtimer = "Numéro du timer associé (entre 1 et 65)"
--- }
-function NecrosisAfficheTimer(tableau, pointeur)
- -- On définit l'endroit ou apparaitra la première frame
- -- On déclare que la première frame est toujours le premier mob (logique :P)
-
- if tableau ~= nil then
- local TimerTarget = 0;
- local yPosition = NecrosisConfig.SensListe * 5;
-
- local PositionTitre = {};
-
- if NecrosisConfig.SensListe > 0 then
- PositionTitre = {11, 13};
- else
- PositionTitre = {-13, -11};
- end
-
-
- for index = 1, table.getn(tableau.texte), 1 do
- -- Si l'entrée est un titre de mob
- if tableau.titre[index] then
- -- On change de groupe de mob
- TimerTarget = TimerTarget + 1;
- if TimerTarget ~= 1 then yPosition = yPosition - PositionTitre[1]; end
- if TimerTarget == 11 then TimerTarget = 1; end
- -- On affiche le titre
- local frameName = "NecrosisTarget"..TimerTarget.."Text";
- local frameItem = getglobal(frameName);
- -- On place le coin gauche de la frame par rapport au centre du bouton des SpellTimers
- frameItem:ClearAllPoints();
- frameItem:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
- yPosition = yPosition - PositionTitre[2];
- -- On nomme la frame, puis on l'affiche ! :)
- frameItem:SetText(tableau.texte[index]);
- if not frameItem:IsShown() then
- frameItem:Show();
- end
- else
- -- Pareil pour les DoT
- local JustifInverse = "LEFT";
- if NecrosisConfig.SpellTimerJust == "LEFT" then JustifInverse = "RIGHT"; end
-
- local frameName1 = "NecrosisTimer"..tableau.Gtimer[index].."Text";
- local frameItem1 = getglobal(frameName1);
- local frameName2 = "NecrosisTimer"..tableau.Gtimer[index].."Bar";
- local frameItem2 = getglobal(frameName2);
- local frameName3 = "NecrosisTimer"..tableau.Gtimer[index].."Texture";
- local frameItem3 = getglobal(frameName3);
- local frameName4 = "NecrosisTimer"..tableau.Gtimer[index].."Spark";
- local frameItem4 = getglobal(frameName4);
- local frameName5 = "NecrosisTimer"..tableau.Gtimer[index].."OutText";
- local frameItem5 = getglobal(frameName5);
-
- frameItem1:ClearAllPoints();
- frameItem1:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition + 1);
- if NecrosisConfig.Yellow then
- frameItem1:SetTextColor(1, 0.82, 0);
- else
- frameItem1:SetTextColor(1, 1, 1);
- end
- frameItem1:SetJustifyH("LEFT");
- frameItem1:SetText(tableau.texte[index]);
- frameItem2:ClearAllPoints();
- frameItem2:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
- frameItem2:SetMinMaxValues(tableau.TimeMax[index] - tableau.Time[index], tableau.TimeMax[index]);
- frameItem2:SetValue(2 * tableau.TimeMax[index] - (tableau.Time[index] + floor(GetTime())));
- local r, g;
- local b = 37/255;
- local PercentColor = (tableau.TimeMax[index] - floor(GetTime())) / tableau.Time[index]
- if PercentColor > 0.5 then
- r = (49/255) + (((1 - PercentColor) * 2) * (1 - (49/255)));
- g = 207/255;
- else
- r = 1.0;
- g = (207/255) - (0.5 - PercentColor) * 2 * (207/255);
- end
- frameItem2:SetStatusBarColor(r, g, b)
- frameItem3:ClearAllPoints();
- frameItem3:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
- frameItem5:ClearAllPoints();
- frameItem5:SetTextColor(1, 1, 1);
- frameItem5:SetJustifyH(NecrosisConfig.SpellTimerJust);
- frameItem5:SetPoint(NecrosisConfig.SpellTimerJust, frameItem2, JustifInverse, NecrosisConfig.SpellTimerPos * 5, 1);
- frameItem5:SetText(tableau.temps[index]);
-
- local sparkPosition = 150 - ((floor(GetTime()) - (tableau.TimeMax[index] - tableau.Time[index])) / tableau.Time[index]) * 150;
- if (sparkPosition < 1) then
- sparkPosition = 1;
- end
- frameItem4:SetPoint("CENTER", frameItem2, "LEFT", sparkPosition, 0);
- yPosition = yPosition - NecrosisConfig.SensListe * 11;
- end
- end
- if TimerTarget < 10 then
- for i = TimerTarget + 1, 10, 1 do
- local frameName = "NecrosisTarget"..i.."Text";
- local frameItem = getglobal(frameName);
- if frameItem:IsShown() then
- frameItem:Hide();
- end
- end
- end
- end
-end
-
-function Necrosis_AddFrame(SpellTimer, TimerTable)
- for i = 1, table.getn(TimerTable), 1 do
- if not TimerTable[i] then
- TimerTable[i] = true;
- SpellTimer[table.getn(SpellTimer)].Gtimer = i;
- -- Affichage du timer graphique associé
- if NecrosisConfig.Graphical then
- local elements = {"Text", "Bar", "Texture", "OutText"}
- for j = 1, 4, 1 do
- frameName = "NecrosisTimer"..i..elements[j];
- frameItem = getglobal(frameName);
- frameItem:Show();
- end
- end
- break
- end
- end
- return SpellTimer, TimerTable;
-end
-
-function Necrosis_RemoveFrame(Gtime, TimerTable)
- -- On cache le timer graphique
- local elements = {"Text", "Bar", "Texture", "OutText"}
- for j = 1, 4, 1 do
- frameName = "NecrosisTimer"..Gtime..elements[j];
- frameItem = getglobal(frameName);
- frameItem:Hide();
- end
-
- -- On déclare le timer graphique comme réutilisable
- TimerTable[Gtime] = false;
-
- return TimerTable;
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 07.04.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+-- La fonction d'affichage des timers
+-- tableau est de la forme suivante :
+-- tableau {
+ -- texte = "Nom du mob ou du sort",
+ -- TimeMax = "TimeMax du sort",
+ -- Time = "Time du sort",
+ -- titre = "vrai si titre, faux sinon",
+ -- temps = "timer numérique",
+ -- Gtimer = "Numéro du timer associé (entre 1 et 65)"
+-- }
+function NecrosisAfficheTimer(tableau, pointeur)
+ -- On définit l'endroit ou apparaitra la première frame
+ -- On déclare que la première frame est toujours le premier mob (logique :P)
+
+ if tableau ~= nil then
+ local TimerTarget = 0;
+ local yPosition = NecrosisConfig.SensListe * 5;
+
+ local PositionTitre = {};
+
+ if NecrosisConfig.SensListe > 0 then
+ PositionTitre = {11, 13};
+ else
+ PositionTitre = {-13, -11};
+ end
+
+
+ for index = 1, table.getn(tableau.texte), 1 do
+ -- Si l'entrée est un titre de mob
+ if tableau.titre[index] then
+ -- On change de groupe de mob
+ TimerTarget = TimerTarget + 1;
+ if TimerTarget ~= 1 then yPosition = yPosition - PositionTitre[1]; end
+ if TimerTarget == 11 then TimerTarget = 1; end
+ -- On affiche le titre
+ local frameName = "NecrosisTarget"..TimerTarget.."Text";
+ local frameItem = getglobal(frameName);
+ -- On place le coin gauche de la frame par rapport au centre du bouton des SpellTimers
+ frameItem:ClearAllPoints();
+ frameItem:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
+ yPosition = yPosition - PositionTitre[2];
+ -- On nomme la frame, puis on l'affiche ! :)
+ frameItem:SetText(tableau.texte[index]);
+ if not frameItem:IsShown() then
+ frameItem:Show();
+ end
+ else
+ -- Pareil pour les DoT
+ local JustifInverse = "LEFT";
+ if NecrosisConfig.SpellTimerJust == "LEFT" then JustifInverse = "RIGHT"; end
+
+ local frameName1 = "NecrosisTimer"..tableau.Gtimer[index].."Text";
+ local frameItem1 = getglobal(frameName1);
+ local frameName2 = "NecrosisTimer"..tableau.Gtimer[index].."Bar";
+ local frameItem2 = getglobal(frameName2);
+ local frameName3 = "NecrosisTimer"..tableau.Gtimer[index].."Texture";
+ local frameItem3 = getglobal(frameName3);
+ local frameName4 = "NecrosisTimer"..tableau.Gtimer[index].."Spark";
+ local frameItem4 = getglobal(frameName4);
+ local frameName5 = "NecrosisTimer"..tableau.Gtimer[index].."OutText";
+ local frameItem5 = getglobal(frameName5);
+
+ frameItem1:ClearAllPoints();
+ frameItem1:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition + 1);
+ if NecrosisConfig.Yellow then
+ frameItem1:SetTextColor(1, 0.82, 0);
+ else
+ frameItem1:SetTextColor(1, 1, 1);
+ end
+ frameItem1:SetJustifyH("LEFT");
+ frameItem1:SetText(tableau.texte[index]);
+ frameItem2:ClearAllPoints();
+ frameItem2:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
+ frameItem2:SetMinMaxValues(tableau.TimeMax[index] - tableau.Time[index], tableau.TimeMax[index]);
+ frameItem2:SetValue(2 * tableau.TimeMax[index] - (tableau.Time[index] + floor(GetTime())));
+ local r, g;
+ local b = 37/255;
+ local PercentColor = (tableau.TimeMax[index] - floor(GetTime())) / tableau.Time[index]
+ if PercentColor > 0.5 then
+ r = (49/255) + (((1 - PercentColor) * 2) * (1 - (49/255)));
+ g = 207/255;
+ else
+ r = 1.0;
+ g = (207/255) - (0.5 - PercentColor) * 2 * (207/255);
+ end
+ frameItem2:SetStatusBarColor(r, g, b)
+ frameItem3:ClearAllPoints();
+ frameItem3:SetPoint(NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, yPosition);
+ frameItem5:ClearAllPoints();
+ frameItem5:SetTextColor(1, 1, 1);
+ frameItem5:SetJustifyH(NecrosisConfig.SpellTimerJust);
+ frameItem5:SetPoint(NecrosisConfig.SpellTimerJust, frameItem2, JustifInverse, NecrosisConfig.SpellTimerPos * 5, 1);
+ frameItem5:SetText(tableau.temps[index]);
+
+ local sparkPosition = 150 - ((floor(GetTime()) - (tableau.TimeMax[index] - tableau.Time[index])) / tableau.Time[index]) * 150;
+ if (sparkPosition < 1) then
+ sparkPosition = 1;
+ end
+ frameItem4:SetPoint("CENTER", frameItem2, "LEFT", sparkPosition, 0);
+ yPosition = yPosition - NecrosisConfig.SensListe * 11;
+ end
+ end
+ if TimerTarget < 10 then
+ for i = TimerTarget + 1, 10, 1 do
+ local frameName = "NecrosisTarget"..i.."Text";
+ local frameItem = getglobal(frameName);
+ if frameItem:IsShown() then
+ frameItem:Hide();
+ end
+ end
+ end
+ end
+end
+
+function Necrosis_AddFrame(SpellTimer, TimerTable)
+ for i = 1, table.getn(TimerTable), 1 do
+ if not TimerTable[i] then
+ TimerTable[i] = true;
+ SpellTimer[table.getn(SpellTimer)].Gtimer = i;
+ -- Affichage du timer graphique associé
+ if NecrosisConfig.Graphical then
+ local elements = {"Text", "Bar", "Texture", "OutText"}
+ for j = 1, 4, 1 do
+ frameName = "NecrosisTimer"..i..elements[j];
+ frameItem = getglobal(frameName);
+ frameItem:Show();
+ end
+ end
+ break
+ end
+ end
+ return SpellTimer, TimerTable;
+end
+
+function Necrosis_RemoveFrame(Gtime, TimerTable)
+ -- On cache le timer graphique
+ local elements = {"Text", "Bar", "Texture", "OutText"}
+ for j = 1, 4, 1 do
+ frameName = "NecrosisTimer"..Gtime..elements[j];
+ frameItem = getglobal(frameName);
+ frameItem:Hide();
+ end
+
+ -- On déclare le timer graphique comme réutilisable
+ TimerTable[Gtime] = false;
+
+ return TimerTable;
+end
diff --git a/NecrosisInitialize.lua b/NecrosisInitialize.lua
index 7755355..ec74989 100644
--- a/NecrosisInitialize.lua
+++ b/NecrosisInitialize.lua
@@ -1,336 +1,336 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 28.06.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-
-------------------------------------------------------------------------------------------------------
--- FONCTION D'INITIALISATION
-------------------------------------------------------------------------------------------------------
-
-function Necrosis_Initialize()
-
- Necrosis_Localization_Dialog_En()
- -- Initilialisation des Textes (VO / VF / VA)
- --if NecrosisConfig ~= {} then
- -- if (NecrosisConfig.NecrosisLanguage == "enUS") or (NecrosisConfig.NecrosisLanguage == "enGB") then
- -- Necrosis_Localization_Dialog_En();
- -- elseif (NecrosisConfig.NecrosisLanguage == "deDE") then
- -- Necrosis_Localization_Dialog_De();
- -- else
- -- Necrosis_Localization_Dialog_Fr();
- -- end
- --elseif GetLocale() == "enUS" or GetLocale() == "enGB" then
- -- Necrosis_Localization_Dialog_En();
- --elseif GetLocale() == "deDE" then
- -- Necrosis_Localization_Dialog_De();
- --else
- -- Necrosis_Localization_Dialog_Fr();
- --end
-
-
- -- On initialise ! Si le joueur n'est pas Démoniste, on cache Necrosis (chuuuut !)
- -- On indique aussi que Nécrosis est initialisé maintenant
- if UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
- HideUIPanel(NecrosisShardMenu);
- HideUIPanel(NecrosisSpellTimerButton);
- HideUIPanel(NecrosisButton);
- HideUIPanel(NecrosisPetMenuButton);
- HideUIPanel(NecrosisBuffMenuButton);
- HideUIPanel(NecrosisCurseMenuButton);
- HideUIPanel(NecrosisMountButton);
- HideUIPanel(NecrosisFirestoneButton);
- HideUIPanel(NecrosisSpellstoneButton);
- HideUIPanel(NecrosisHealthstoneButton);
- HideUIPanel(NecrosisSoulstoneButton);
- HideUIPanel(NecrosisAntiFearButton);
- HideUIPanel(NecrosisShadowTranceButton);
- else
- -- On charge (ou on crée) la configuration pour le joueur et on l'affiche sur la console
- if NecrosisConfig == nil or NecrosisConfig.Version ~= Default_NecrosisConfig.Version then
- NecrosisConfig = {};
- NecrosisConfig = Default_NecrosisConfig;
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.DefaultConfig, "USER");
- NecrosisButton:ClearAllPoints();
- NecrosisShadowTranceButton:ClearAllPoints();
- NecrosisAntiFearButton:ClearAllPoints();
- NecrosisSpellTimerButton:ClearAllPoints();
- NecrosisButton:SetPoint("CENTER", "UIParent", "CENTER",0,-100);
- NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "CENTER",100,-30);
- NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "CENTER",100,30);
- NecrosisSpellTimerButton:SetPoint("CENTER", "UIParent", "CENTER",120,340);
-
- else
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.UserConfig, "USER");
- end
-
- -----------------------------------------------------------
- -- Exécution des fonctions de démarrage
- -----------------------------------------------------------
-
- -- Affichage d'un message sur la console
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.Welcome, "USER");
- -- Création de la liste des sorts disponibles
- Necrosis_SpellSetup();
- -- Création de la liste des emplacements des fragments
- Necrosis_SoulshardSetup();
- -- Inventaire des pierres et des fragments possédés par le Démoniste
- Necrosis_BagExplore();
- -- Création des menus de buff et d'invocation
- Necrosis_CreateMenu();
-
- -- Lecture de la configuration dans le SavedVariables.lua, écriture dans les variables définies
- if (NecrosisConfig.SoulshardSort) then NecrosisSoulshardSort_Button:SetChecked(1); end
- if (NecrosisConfig.SoulshardDestroy) then NecrosisSoulshardDestroy_Button:SetChecked(1); end
- if (NecrosisConfig.ShadowTranceAlert) then NecrosisShadowTranceAlert_Button:SetChecked(1); end
- if (NecrosisConfig.ShowSpellTimers) then NecrosisShowSpellTimers_Button:SetChecked(1); end
- if (NecrosisConfig.AntiFearAlert) then NecrosisAntiFearAlert_Button:SetChecked(1); end
- if (NecrosisConfig.NecrosisLockServ) then NecrosisIconsLock_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[1]) then NecrosisShowFirestone_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[2]) then NecrosisShowSpellstone_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[3]) then NecrosisShowHealthStone_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[4]) then NecrosisShowSoulstone_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[5]) then NecrosisShowBuffMenu_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[6]) then NecrosisShowMount_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[7]) then NecrosisShowPetMenu_Button:SetChecked(1); end
- if (NecrosisConfig.StonePosition[8]) then NecrosisShowCurseMenu_Button:SetChecked(1); end
- if (NecrosisConfig.NecrosisToolTip) then NecrosisShowTooltips_Button:SetChecked(1); end
- if (NecrosisConfig.Sound) then NecrosisSound_Button:SetChecked(1); end
- if (NecrosisConfig.ShowCount) then NecrosisShowCount_Button:SetChecked(1); end
- if (NecrosisConfig.BuffMenuPos == -34) then NecrosisBuffMenu_Button:SetChecked(1); end
- if (NecrosisConfig.PetMenuPos == -34) then NecrosisPetMenu_Button:SetChecked(1); end
- if (NecrosisConfig.CurseMenuPos == -34) then NecrosisCurseMenu_Button:SetChecked(1); end
- if (NecrosisConfig.NoDragAll) then NecrosisLock_Button:SetChecked(1); end
- if (NecrosisConfig.SpellTimerPos == -1) then NecrosisSTimer_Button:SetChecked(1); end
- if (NecrosisConfig.ChatMsg) then NecrosisShowMessage_Button:SetChecked(1); end
- if (NecrosisConfig.DemonSummon) then NecrosisShowDemonSummon_Button:SetChecked(1); end
- if (NecrosisConfig.SteedSummon) then NecrosisShowSteedSummon_Button:SetChecked(1); end
- if not (NecrosisConfig.ChatType) then NecrosisChatType_Button:SetChecked(1); end
- if (NecrosisConfig.Graphical) then NecrosisGraphicalTimer_Button:SetChecked(1); end
- if not (NecrosisConfig.Yellow) then NecrosisTimerColor_Button:SetChecked(1); end
- if (NecrosisConfig.SensListe == -1) then NecrosisTimerDirection_Button:SetChecked(1); end
-
- -- Paramètres des glissières
- NecrosisButtonRotate_Slider:SetValue(NecrosisConfig.NecrosisAngle);
- NecrosisButtonRotate_SliderLow:SetText("0");
- NecrosisButtonRotate_SliderHigh:SetText("360");
-
- if NecrosisConfig.NecrosisLanguage == "deDE" then
- NecrosisLanguage_Slider:SetValue(3);
- elseif NecrosisConfig.NecrosisLanguage == "enUS" then
- NecrosisLanguage_Slider:SetValue(2);
- else
- NecrosisLanguage_Slider:SetValue(1);
- end
- NecrosisLanguage_SliderText:SetText("Langue / Language / Sprache");
- NecrosisLanguage_SliderLow:SetText("");
- NecrosisLanguage_SliderHigh:SetText("")
-
- NecrosisBag_Slider:SetValue(4 - NecrosisConfig.SoulshardContainer);
- NecrosisBag_SliderLow:SetText("5");
- NecrosisBag_SliderHigh:SetText("1");
-
- NecrosisCountType_Slider:SetValue(NecrosisConfig.CountType);
- NecrosisCountType_SliderLow:SetText("");
- NecrosisCountType_SliderHigh:SetText("");
-
- NecrosisCircle_Slider:SetValue(NecrosisConfig.Circle);
- NecrosisCircle_SliderLow:SetText("");
- NecrosisCircle_SliderHigh:SetText("");
-
- ShadowTranceScale_Slider:SetValue(NecrosisConfig.ShadowTranceScale);
- ShadowTranceScale_SliderLow:SetText("50%");
- ShadowTranceScale_SliderHigh:SetText("150%");
-
- if (NecrosisConfig.NecrosisColor == "Rose") then
- NecrosisColor_Slider:SetValue(1);
- elseif (NecrosisConfig.NecrosisColor == "Bleu") then
- NecrosisColor_Slider:SetValue(2);
- elseif (NecrosisConfig.NecrosisColor == "Orange") then
- NecrosisColor_Slider:SetValue(3);
- elseif (NecrosisConfig.NecrosisColor == "Turquoise") then
- NecrosisColor_Slider:SetValue(4);
- elseif (NecrosisConfig.NecrosisColor == "Violet") then
- NecrosisColor_Slider:SetValue(5);
- else
- NecrosisColor_Slider:SetValue(6);
- end
- NecrosisColor_SliderLow:SetText("");
- NecrosisColor_SliderHigh:SetText("");
-
- NecrosisButtonScale_Slider:SetValue(NecrosisConfig.NecrosisButtonScale);
- NecrosisButtonScale_SliderLow:SetText("50 %");
- NecrosisButtonScale_SliderHigh:SetText("150 %");
-
- NecrosisBanishScale_Slider:SetValue(NecrosisConfig.BanishScale);
- NecrosisBanishScale_SliderLow:SetText("100 %");
- NecrosisBanishScale_SliderHigh:SetText("200 %");
-
- -- On règle la taille de la pierre et des boutons suivant les réglages du SavedVariables
- NecrosisButton:SetScale(NecrosisConfig.NecrosisButtonScale/100);
- NecrosisShadowTranceButton:SetScale(NecrosisConfig.ShadowTranceScale/100);
- NecrosisAntiFearButton:SetScale(NecrosisConfig.ShadowTranceScale/100);
- NecrosisBuffMenu9:SetScale(NecrosisConfig.BanishScale/100);
-
- -- On définit l'affichage des Timers à gauche ou à droite du bouton
- NecrosisListSpells:ClearAllPoints();
- NecrosisListSpells:SetJustifyH(NecrosisConfig.SpellTimerJust);
- NecrosisListSpells:SetPoint("TOP"..NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, 5);
- ShowUIPanel(NecrosisButton);
-
- -- On définit également l'affichage des tooltips pour ces timers à gauche ou à droite du bouton
- if NecrosisConfig.SpellTimerJust == -23 then
- AnchorSpellTimerTooltip = "ANCHOR_LEFT";
- else
- AnchorSpellTimerTooltip = "ANCHOR_RIGHT";
- end
-
- -- On vérifie que les fragments sont dans le sac défini par le Démoniste
- Necrosis_SoulshardSwitch("CHECK");
-
- -- Le Shard est-il vérouillé sur l'interface ?
- if NecrosisConfig.NoDragAll then
- Necrosis_NoDrag();
- NecrosisButton:RegisterForDrag("");
- NecrosisSpellTimerButton:RegisterForDrag("");
- else
- Necrosis_Drag();
- NecrosisButton:RegisterForDrag("LeftButton");
- NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
- end
-
- -- Les boutons sont-ils vérouillés sur le Shard ?
- Necrosis_ButtonSetup();
-
- -- Si le démoniste a une arme une main d'équipée, on lui équipe le premier objet lié main gauche
- Necrosis_MoneyToggle();
- NecrosisTooltip:SetInventoryItem("player", 16);
- local itemName = tostring(NecrosisTooltipTextLeft2:GetText());
- if itemName == "Soulbound" then
- itemName = tostring(NecrosisTooltipTextLeft3:GetText());
- end
- Necrosis_MoneyToggle();
- if not GetInventoryItemLink("player", 17) and not string.find(itemName, NECROSIS_ITEM.Twohand) then
- Necrosis_SwitchOffHand(NECROSIS_ITEM.Offhand);
- end
-
- -- Initialisation des fichiers de langues -- Mise en place éventuelle du SMS
- Necrosis_LanguageInitialize();
- if NecrosisConfig.SM then
- NECROSIS_SOULSTONE_ALERT_MESSAGE = NECROSIS_SHORT_MESSAGES[1];
- NECROSIS_INVOCATION_MESSAGES = NECROSIS_SHORT_MESSAGES[2];
- end
- end
-end
-
-function Necrosis_LanguageInitialize()
-
- -- Localisation du speech.lua
- NecrosisLocalization();
-
- -- Localisation du XML
- NecrosisVersion:SetText(NecrosisData.Label);
- NecrosisShardsInventory_Section:SetText(NECROSIS_CONFIGURATION.ShardMenu);
- NecrosisShardsCount_Section:SetText(NECROSIS_CONFIGURATION.ShardMenu2);
- NecrosisSoulshardSort_Option:SetText(NECROSIS_CONFIGURATION.ShardMove);
- NecrosisSoulshardDestroy_Option:SetText(NECROSIS_CONFIGURATION.ShardDestroy);
-
- NecrosisMessageSpell_Section:SetText(NECROSIS_CONFIGURATION.SpellMenu1);
- NecrosisMessagePlayer_Section:SetText(NECROSIS_CONFIGURATION.SpellMenu2);
- NecrosisShadowTranceAlert_Option:SetText(NECROSIS_CONFIGURATION.TranseWarning);
- NecrosisAntiFearAlert_Option:SetText(NECROSIS_CONFIGURATION.AntiFearWarning);
-
- NecrosisShowTrance_Option:SetText(NECROSIS_CONFIGURATION.TranceButtonView);
- NecrosisIconsLock_Option:SetText(NECROSIS_CONFIGURATION.ButtonLock);
-
- NecrosisShowFirestone_Option:SetText(NECROSIS_CONFIGURATION.Show.Firestone);
- NecrosisShowSpellstone_Option:SetText(NECROSIS_CONFIGURATION.Show.Spellstone);
- NecrosisShowHealthStone_Option:SetText(NECROSIS_CONFIGURATION.Show.Healthstone);
- NecrosisShowSoulstone_Option:SetText(NECROSIS_CONFIGURATION.Show.Soulstone);
- NecrosisShowMount_Option:SetText(NECROSIS_CONFIGURATION.Show.Steed);
- NecrosisShowBuffMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Buff);
- NecrosisShowPetMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Demon);
- NecrosisShowCurseMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Curse);
- NecrosisShowTooltips_Option:SetText(NECROSIS_CONFIGURATION.Show.Tooltips);
-
- NecrosisShowSpellTimers_Option:SetText(NECROSIS_CONFIGURATION.SpellTime);
- NecrosisGraphicalTimer_Section:SetText(NECROSIS_CONFIGURATION.TimerMenu);
- NecrosisGraphicalTimer_Option:SetText(NECROSIS_CONFIGURATION.GraphicalTimer);
- NecrosisTimerColor_Option:SetText(NECROSIS_CONFIGURATION.TimerColor);
- NecrosisTimerDirection_Option:SetText(NECROSIS_CONFIGURATION.TimerDirection);
-
- NecrosisLock_Option:SetText(NECROSIS_CONFIGURATION.MainLock);
- NecrosisBuffMenu_Option:SetText(NECROSIS_CONFIGURATION.BuffMenu);
- NecrosisPetMenu_Option:SetText(NECROSIS_CONFIGURATION.PetMenu);
- NecrosisCurseMenu_Option:SetText(NECROSIS_CONFIGURATION.CurseMenu);
- NecrosisShowCount_Option:SetText(NECROSIS_CONFIGURATION.ShowCount);
- NecrosisSTimer_Option:SetText(NECROSIS_CONFIGURATION.STimerLeft);
-
- NecrosisSound_Option:SetText(NECROSIS_CONFIGURATION.Sound);
- NecrosisShowMessage_Option:SetText(NECROSIS_CONFIGURATION.ShowMessage);
- NecrosisShowSteedSummon_Option:SetText(NECROSIS_CONFIGURATION.ShowSteedSummon);
- NecrosisShowDemonSummon_Option:SetText(NECROSIS_CONFIGURATION.ShowDemonSummon);
- NecrosisChatType_Option:SetText(NECROSIS_CONFIGURATION.ChatType);
-
- NecrosisButtonRotate_SliderText:SetText(NECROSIS_CONFIGURATION.MainRotation);
- NecrosisCountType_SliderText:SetText(NECROSIS_CONFIGURATION.CountType);
- NecrosisCircle_SliderText:SetText(NECROSIS_CONFIGURATION.Circle);
- NecrosisBag_SliderText:SetText(NECROSIS_CONFIGURATION.BagSelect);
- NecrosisButtonScale_SliderText:SetText(NECROSIS_CONFIGURATION.NecrosisSize);
- NecrosisBanishScale_SliderText:SetText(NECROSIS_CONFIGURATION.BanishSize);
- ShadowTranceScale_SliderText:SetText(NECROSIS_CONFIGURATION.TranseSize);
- NecrosisColor_SliderText:SetText(NECROSIS_CONFIGURATION.Skin);
-
-end
-
-
-
-------------------------------------------------------------------------------------------------------
--- FONCTION GERANT LA COMMANDE CONSOLE /NECRO
-------------------------------------------------------------------------------------------------------
-
-function Necrosis_SlashHandler(arg1)
- -- Blah blah blah, le joueur est-il bien un Démoniste ? On finira par le savoir !
- if UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
- return;
- end
- if string.find(string.lower(arg1), "recall") then
- NecrosisButton:ClearAllPoints();
- NecrosisButton:SetPoint("CENTER", "UIParent", "CENTER",0,0);
- NecrosisSpellTimerButton:ClearAllPoints();
- NecrosisSpellTimerButton:SetPoint("CENTER", "UIParent", "CENTER",0,0);
- NecrosisAntiFearButton:ClearAllPoints();
- NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "CENTER",20,0);
- NecrosisShadowTranceButton:ClearAllPoints();
- NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "CENTER",-20,0);
- elseif string.find(string.lower(arg1), "sm") then
- if NECROSIS_SOULSTONE_ALERT_MESSAGE == NECROSIS_SHORT_MESSAGES[1] then
- NecrosisConfig.SM = false;
- NecrosisLocalization();
- Necrosis_Msg("Short Messages : Off", "USER");
- else
- NecrosisConfig.SM = true;
- NECROSIS_SOULSTONE_ALERT_MESSAGE = NECROSIS_SHORT_MESSAGES[1];
- NECROSIS_INVOCATION_MESSAGES = NECROSIS_SHORT_MESSAGES[2];
- Necrosis_Msg("Short Messages : On", "USER");
- end
- elseif string.find(string.lower(arg1), "cast") then
- NecrosisSpellCast(string.lower(arg1));
- else
- if NECROSIS_MESSAGE.Help ~= nil then
- for i = 1, table.getn(NECROSIS_MESSAGE.Help), 1 do
- Necrosis_Msg(NECROSIS_MESSAGE.Help[i], "USER");
- end
- end
- Necrosis_Toggle();
- end
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 28.06.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+
+------------------------------------------------------------------------------------------------------
+-- FONCTION D'INITIALISATION
+------------------------------------------------------------------------------------------------------
+
+function Necrosis_Initialize()
+
+ Necrosis_Localization_Dialog_En()
+ -- Initilialisation des Textes (VO / VF / VA)
+ --if NecrosisConfig ~= {} then
+ -- if (NecrosisConfig.NecrosisLanguage == "enUS") or (NecrosisConfig.NecrosisLanguage == "enGB") then
+ -- Necrosis_Localization_Dialog_En();
+ -- elseif (NecrosisConfig.NecrosisLanguage == "deDE") then
+ -- Necrosis_Localization_Dialog_De();
+ -- else
+ -- Necrosis_Localization_Dialog_Fr();
+ -- end
+ --elseif GetLocale() == "enUS" or GetLocale() == "enGB" then
+ -- Necrosis_Localization_Dialog_En();
+ --elseif GetLocale() == "deDE" then
+ -- Necrosis_Localization_Dialog_De();
+ --else
+ -- Necrosis_Localization_Dialog_Fr();
+ --end
+
+
+ -- On initialise ! Si le joueur n'est pas Démoniste, on cache Necrosis (chuuuut !)
+ -- On indique aussi que Nécrosis est initialisé maintenant
+ if UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
+ HideUIPanel(NecrosisShardMenu);
+ HideUIPanel(NecrosisSpellTimerButton);
+ HideUIPanel(NecrosisButton);
+ HideUIPanel(NecrosisPetMenuButton);
+ HideUIPanel(NecrosisBuffMenuButton);
+ HideUIPanel(NecrosisCurseMenuButton);
+ HideUIPanel(NecrosisMountButton);
+ HideUIPanel(NecrosisFirestoneButton);
+ HideUIPanel(NecrosisSpellstoneButton);
+ HideUIPanel(NecrosisHealthstoneButton);
+ HideUIPanel(NecrosisSoulstoneButton);
+ HideUIPanel(NecrosisAntiFearButton);
+ HideUIPanel(NecrosisShadowTranceButton);
+ else
+ -- On charge (ou on crée) la configuration pour le joueur et on l'affiche sur la console
+ if NecrosisConfig == nil or NecrosisConfig.Version ~= Default_NecrosisConfig.Version then
+ NecrosisConfig = {};
+ NecrosisConfig = Default_NecrosisConfig;
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.DefaultConfig, "USER");
+ NecrosisButton:ClearAllPoints();
+ NecrosisShadowTranceButton:ClearAllPoints();
+ NecrosisAntiFearButton:ClearAllPoints();
+ NecrosisSpellTimerButton:ClearAllPoints();
+ NecrosisButton:SetPoint("CENTER", "UIParent", "CENTER",0,-100);
+ NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "CENTER",100,-30);
+ NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "CENTER",100,30);
+ NecrosisSpellTimerButton:SetPoint("CENTER", "UIParent", "CENTER",120,340);
+
+ else
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.UserConfig, "USER");
+ end
+
+ -----------------------------------------------------------
+ -- Exécution des fonctions de démarrage
+ -----------------------------------------------------------
+
+ -- Affichage d'un message sur la console
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.Welcome, "USER");
+ -- Création de la liste des sorts disponibles
+ Necrosis_SpellSetup();
+ -- Création de la liste des emplacements des fragments
+ Necrosis_SoulshardSetup();
+ -- Inventaire des pierres et des fragments possédés par le Démoniste
+ Necrosis_BagExplore();
+ -- Création des menus de buff et d'invocation
+ Necrosis_CreateMenu();
+
+ -- Lecture de la configuration dans le SavedVariables.lua, écriture dans les variables définies
+ if (NecrosisConfig.SoulshardSort) then NecrosisSoulshardSort_Button:SetChecked(1); end
+ if (NecrosisConfig.SoulshardDestroy) then NecrosisSoulshardDestroy_Button:SetChecked(1); end
+ if (NecrosisConfig.ShadowTranceAlert) then NecrosisShadowTranceAlert_Button:SetChecked(1); end
+ if (NecrosisConfig.ShowSpellTimers) then NecrosisShowSpellTimers_Button:SetChecked(1); end
+ if (NecrosisConfig.AntiFearAlert) then NecrosisAntiFearAlert_Button:SetChecked(1); end
+ if (NecrosisConfig.NecrosisLockServ) then NecrosisIconsLock_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[1]) then NecrosisShowFirestone_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[2]) then NecrosisShowSpellstone_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[3]) then NecrosisShowHealthStone_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[4]) then NecrosisShowSoulstone_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[5]) then NecrosisShowBuffMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[6]) then NecrosisShowMount_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[7]) then NecrosisShowPetMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.StonePosition[8]) then NecrosisShowCurseMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.NecrosisToolTip) then NecrosisShowTooltips_Button:SetChecked(1); end
+ if (NecrosisConfig.Sound) then NecrosisSound_Button:SetChecked(1); end
+ if (NecrosisConfig.ShowCount) then NecrosisShowCount_Button:SetChecked(1); end
+ if (NecrosisConfig.BuffMenuPos == -34) then NecrosisBuffMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.PetMenuPos == -34) then NecrosisPetMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.CurseMenuPos == -34) then NecrosisCurseMenu_Button:SetChecked(1); end
+ if (NecrosisConfig.NoDragAll) then NecrosisLock_Button:SetChecked(1); end
+ if (NecrosisConfig.SpellTimerPos == -1) then NecrosisSTimer_Button:SetChecked(1); end
+ if (NecrosisConfig.ChatMsg) then NecrosisShowMessage_Button:SetChecked(1); end
+ if (NecrosisConfig.DemonSummon) then NecrosisShowDemonSummon_Button:SetChecked(1); end
+ if (NecrosisConfig.SteedSummon) then NecrosisShowSteedSummon_Button:SetChecked(1); end
+ if not (NecrosisConfig.ChatType) then NecrosisChatType_Button:SetChecked(1); end
+ if (NecrosisConfig.Graphical) then NecrosisGraphicalTimer_Button:SetChecked(1); end
+ if not (NecrosisConfig.Yellow) then NecrosisTimerColor_Button:SetChecked(1); end
+ if (NecrosisConfig.SensListe == -1) then NecrosisTimerDirection_Button:SetChecked(1); end
+
+ -- Paramètres des glissières
+ NecrosisButtonRotate_Slider:SetValue(NecrosisConfig.NecrosisAngle);
+ NecrosisButtonRotate_SliderLow:SetText("0");
+ NecrosisButtonRotate_SliderHigh:SetText("360");
+
+ if NecrosisConfig.NecrosisLanguage == "deDE" then
+ NecrosisLanguage_Slider:SetValue(3);
+ elseif NecrosisConfig.NecrosisLanguage == "enUS" then
+ NecrosisLanguage_Slider:SetValue(2);
+ else
+ NecrosisLanguage_Slider:SetValue(1);
+ end
+ NecrosisLanguage_SliderText:SetText("Langue / Language / Sprache");
+ NecrosisLanguage_SliderLow:SetText("");
+ NecrosisLanguage_SliderHigh:SetText("")
+
+ NecrosisBag_Slider:SetValue(4 - NecrosisConfig.SoulshardContainer);
+ NecrosisBag_SliderLow:SetText("5");
+ NecrosisBag_SliderHigh:SetText("1");
+
+ NecrosisCountType_Slider:SetValue(NecrosisConfig.CountType);
+ NecrosisCountType_SliderLow:SetText("");
+ NecrosisCountType_SliderHigh:SetText("");
+
+ NecrosisCircle_Slider:SetValue(NecrosisConfig.Circle);
+ NecrosisCircle_SliderLow:SetText("");
+ NecrosisCircle_SliderHigh:SetText("");
+
+ ShadowTranceScale_Slider:SetValue(NecrosisConfig.ShadowTranceScale);
+ ShadowTranceScale_SliderLow:SetText("50%");
+ ShadowTranceScale_SliderHigh:SetText("150%");
+
+ if (NecrosisConfig.NecrosisColor == "Rose") then
+ NecrosisColor_Slider:SetValue(1);
+ elseif (NecrosisConfig.NecrosisColor == "Bleu") then
+ NecrosisColor_Slider:SetValue(2);
+ elseif (NecrosisConfig.NecrosisColor == "Orange") then
+ NecrosisColor_Slider:SetValue(3);
+ elseif (NecrosisConfig.NecrosisColor == "Turquoise") then
+ NecrosisColor_Slider:SetValue(4);
+ elseif (NecrosisConfig.NecrosisColor == "Violet") then
+ NecrosisColor_Slider:SetValue(5);
+ else
+ NecrosisColor_Slider:SetValue(6);
+ end
+ NecrosisColor_SliderLow:SetText("");
+ NecrosisColor_SliderHigh:SetText("");
+
+ NecrosisButtonScale_Slider:SetValue(NecrosisConfig.NecrosisButtonScale);
+ NecrosisButtonScale_SliderLow:SetText("50 %");
+ NecrosisButtonScale_SliderHigh:SetText("150 %");
+
+ NecrosisBanishScale_Slider:SetValue(NecrosisConfig.BanishScale);
+ NecrosisBanishScale_SliderLow:SetText("100 %");
+ NecrosisBanishScale_SliderHigh:SetText("200 %");
+
+ -- On règle la taille de la pierre et des boutons suivant les réglages du SavedVariables
+ NecrosisButton:SetScale(NecrosisConfig.NecrosisButtonScale/100);
+ NecrosisShadowTranceButton:SetScale(NecrosisConfig.ShadowTranceScale/100);
+ NecrosisAntiFearButton:SetScale(NecrosisConfig.ShadowTranceScale/100);
+ NecrosisBuffMenu9:SetScale(NecrosisConfig.BanishScale/100);
+
+ -- On définit l'affichage des Timers à gauche ou à droite du bouton
+ NecrosisListSpells:ClearAllPoints();
+ NecrosisListSpells:SetJustifyH(NecrosisConfig.SpellTimerJust);
+ NecrosisListSpells:SetPoint("TOP"..NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, 5);
+ ShowUIPanel(NecrosisButton);
+
+ -- On définit également l'affichage des tooltips pour ces timers à gauche ou à droite du bouton
+ if NecrosisConfig.SpellTimerJust == -23 then
+ AnchorSpellTimerTooltip = "ANCHOR_LEFT";
+ else
+ AnchorSpellTimerTooltip = "ANCHOR_RIGHT";
+ end
+
+ -- On vérifie que les fragments sont dans le sac défini par le Démoniste
+ Necrosis_SoulshardSwitch("CHECK");
+
+ -- Le Shard est-il vérouillé sur l'interface ?
+ if NecrosisConfig.NoDragAll then
+ Necrosis_NoDrag();
+ NecrosisButton:RegisterForDrag("");
+ NecrosisSpellTimerButton:RegisterForDrag("");
+ else
+ Necrosis_Drag();
+ NecrosisButton:RegisterForDrag("LeftButton");
+ NecrosisSpellTimerButton:RegisterForDrag("LeftButton");
+ end
+
+ -- Les boutons sont-ils vérouillés sur le Shard ?
+ Necrosis_ButtonSetup();
+
+ -- Si le démoniste a une arme une main d'équipée, on lui équipe le premier objet lié main gauche
+ Necrosis_MoneyToggle();
+ NecrosisTooltip:SetInventoryItem("player", 16);
+ local itemName = tostring(NecrosisTooltipTextLeft2:GetText());
+ if itemName == "Soulbound" then
+ itemName = tostring(NecrosisTooltipTextLeft3:GetText());
+ end
+ Necrosis_MoneyToggle();
+ if not GetInventoryItemLink("player", 17) and not string.find(itemName, NECROSIS_ITEM.Twohand) then
+ Necrosis_SwitchOffHand(NECROSIS_ITEM.Offhand);
+ end
+
+ -- Initialisation des fichiers de langues -- Mise en place éventuelle du SMS
+ Necrosis_LanguageInitialize();
+ if NecrosisConfig.SM then
+ NECROSIS_SOULSTONE_ALERT_MESSAGE = NECROSIS_SHORT_MESSAGES[1];
+ NECROSIS_INVOCATION_MESSAGES = NECROSIS_SHORT_MESSAGES[2];
+ end
+ end
+end
+
+function Necrosis_LanguageInitialize()
+
+ -- Localisation du speech.lua
+ NecrosisLocalization();
+
+ -- Localisation du XML
+ NecrosisVersion:SetText(NecrosisData.Label);
+ NecrosisShardsInventory_Section:SetText(NECROSIS_CONFIGURATION.ShardMenu);
+ NecrosisShardsCount_Section:SetText(NECROSIS_CONFIGURATION.ShardMenu2);
+ NecrosisSoulshardSort_Option:SetText(NECROSIS_CONFIGURATION.ShardMove);
+ NecrosisSoulshardDestroy_Option:SetText(NECROSIS_CONFIGURATION.ShardDestroy);
+
+ NecrosisMessageSpell_Section:SetText(NECROSIS_CONFIGURATION.SpellMenu1);
+ NecrosisMessagePlayer_Section:SetText(NECROSIS_CONFIGURATION.SpellMenu2);
+ NecrosisShadowTranceAlert_Option:SetText(NECROSIS_CONFIGURATION.TranseWarning);
+ NecrosisAntiFearAlert_Option:SetText(NECROSIS_CONFIGURATION.AntiFearWarning);
+
+ NecrosisShowTrance_Option:SetText(NECROSIS_CONFIGURATION.TranceButtonView);
+ NecrosisIconsLock_Option:SetText(NECROSIS_CONFIGURATION.ButtonLock);
+
+ NecrosisShowFirestone_Option:SetText(NECROSIS_CONFIGURATION.Show.Firestone);
+ NecrosisShowSpellstone_Option:SetText(NECROSIS_CONFIGURATION.Show.Spellstone);
+ NecrosisShowHealthStone_Option:SetText(NECROSIS_CONFIGURATION.Show.Healthstone);
+ NecrosisShowSoulstone_Option:SetText(NECROSIS_CONFIGURATION.Show.Soulstone);
+ NecrosisShowMount_Option:SetText(NECROSIS_CONFIGURATION.Show.Steed);
+ NecrosisShowBuffMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Buff);
+ NecrosisShowPetMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Demon);
+ NecrosisShowCurseMenu_Option:SetText(NECROSIS_CONFIGURATION.Show.Curse);
+ NecrosisShowTooltips_Option:SetText(NECROSIS_CONFIGURATION.Show.Tooltips);
+
+ NecrosisShowSpellTimers_Option:SetText(NECROSIS_CONFIGURATION.SpellTime);
+ NecrosisGraphicalTimer_Section:SetText(NECROSIS_CONFIGURATION.TimerMenu);
+ NecrosisGraphicalTimer_Option:SetText(NECROSIS_CONFIGURATION.GraphicalTimer);
+ NecrosisTimerColor_Option:SetText(NECROSIS_CONFIGURATION.TimerColor);
+ NecrosisTimerDirection_Option:SetText(NECROSIS_CONFIGURATION.TimerDirection);
+
+ NecrosisLock_Option:SetText(NECROSIS_CONFIGURATION.MainLock);
+ NecrosisBuffMenu_Option:SetText(NECROSIS_CONFIGURATION.BuffMenu);
+ NecrosisPetMenu_Option:SetText(NECROSIS_CONFIGURATION.PetMenu);
+ NecrosisCurseMenu_Option:SetText(NECROSIS_CONFIGURATION.CurseMenu);
+ NecrosisShowCount_Option:SetText(NECROSIS_CONFIGURATION.ShowCount);
+ NecrosisSTimer_Option:SetText(NECROSIS_CONFIGURATION.STimerLeft);
+
+ NecrosisSound_Option:SetText(NECROSIS_CONFIGURATION.Sound);
+ NecrosisShowMessage_Option:SetText(NECROSIS_CONFIGURATION.ShowMessage);
+ NecrosisShowSteedSummon_Option:SetText(NECROSIS_CONFIGURATION.ShowSteedSummon);
+ NecrosisShowDemonSummon_Option:SetText(NECROSIS_CONFIGURATION.ShowDemonSummon);
+ NecrosisChatType_Option:SetText(NECROSIS_CONFIGURATION.ChatType);
+
+ NecrosisButtonRotate_SliderText:SetText(NECROSIS_CONFIGURATION.MainRotation);
+ NecrosisCountType_SliderText:SetText(NECROSIS_CONFIGURATION.CountType);
+ NecrosisCircle_SliderText:SetText(NECROSIS_CONFIGURATION.Circle);
+ NecrosisBag_SliderText:SetText(NECROSIS_CONFIGURATION.BagSelect);
+ NecrosisButtonScale_SliderText:SetText(NECROSIS_CONFIGURATION.NecrosisSize);
+ NecrosisBanishScale_SliderText:SetText(NECROSIS_CONFIGURATION.BanishSize);
+ ShadowTranceScale_SliderText:SetText(NECROSIS_CONFIGURATION.TranseSize);
+ NecrosisColor_SliderText:SetText(NECROSIS_CONFIGURATION.Skin);
+
+end
+
+
+
+------------------------------------------------------------------------------------------------------
+-- FONCTION GERANT LA COMMANDE CONSOLE /NECRO
+------------------------------------------------------------------------------------------------------
+
+function Necrosis_SlashHandler(arg1)
+ -- Blah blah blah, le joueur est-il bien un Démoniste ? On finira par le savoir !
+ if UnitClass("player") ~= NECROSIS_UNIT_WARLOCK then
+ return;
+ end
+ if string.find(string.lower(arg1), "recall") then
+ NecrosisButton:ClearAllPoints();
+ NecrosisButton:SetPoint("CENTER", "UIParent", "CENTER",0,0);
+ NecrosisSpellTimerButton:ClearAllPoints();
+ NecrosisSpellTimerButton:SetPoint("CENTER", "UIParent", "CENTER",0,0);
+ NecrosisAntiFearButton:ClearAllPoints();
+ NecrosisAntiFearButton:SetPoint("CENTER", "UIParent", "CENTER",20,0);
+ NecrosisShadowTranceButton:ClearAllPoints();
+ NecrosisShadowTranceButton:SetPoint("CENTER", "UIParent", "CENTER",-20,0);
+ elseif string.find(string.lower(arg1), "sm") then
+ if NECROSIS_SOULSTONE_ALERT_MESSAGE == NECROSIS_SHORT_MESSAGES[1] then
+ NecrosisConfig.SM = false;
+ NecrosisLocalization();
+ Necrosis_Msg("Short Messages : Off", "USER");
+ else
+ NecrosisConfig.SM = true;
+ NECROSIS_SOULSTONE_ALERT_MESSAGE = NECROSIS_SHORT_MESSAGES[1];
+ NECROSIS_INVOCATION_MESSAGES = NECROSIS_SHORT_MESSAGES[2];
+ Necrosis_Msg("Short Messages : On", "USER");
+ end
+ elseif string.find(string.lower(arg1), "cast") then
+ NecrosisSpellCast(string.lower(arg1));
+ else
+ if NECROSIS_MESSAGE.Help ~= nil then
+ for i = 1, table.getn(NECROSIS_MESSAGE.Help), 1 do
+ Necrosis_Msg(NECROSIS_MESSAGE.Help[i], "USER");
+ end
+ end
+ Necrosis_Toggle();
+ end
+end
diff --git a/NecrosisMessage.lua b/NecrosisMessage.lua
index dc153c7..28361a2 100644
--- a/NecrosisMessage.lua
+++ b/NecrosisMessage.lua
@@ -1,125 +1,125 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 30.04.2005-1
-------------------------------------------------------------------------------------------------------
-
-
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS D'AFFICHAGE (CONSOLE, CHAT, MESSAGE SYSTEME)
-------------------------------------------------------------------------------------------------------
-
-function Necrosis_Msg(msg, type)
- if (msg and type) then
- -- Si le type du message est "USER", le message s'affiche sur l'écran...
- if (type == "USER") then
- -- On colorise astucieusement notre message :D
- msg = Necrosis_MsgAddColor(msg);
- local Intro = "|CFFFF00FFNe|CFFFF50FFcr|CFFFF99FFos|CFFFFC4FFis|CFFFFFFFF: ";
- if NecrosisConfig.ChatType then
- -- ...... sur la première fenêtre de chat
- ChatFrame1:AddMessage(Intro..msg, 1.0, 0.7, 1.0, 1.0, UIERRORS_HOLD_TIME);
- else
- -- ...... ou au milieu de l'écran
- UIErrorsFrame:AddMessage(Intro..msg, 1.0, 0.7, 1.0, 1.0, UIERRORS_HOLD_TIME);
- end
- -- Si le type du message est "WORLD", le message sera envoyé en raid, à défaut en groupe, et à défaut en chat local
- elseif (type == "WORLD") then
- if (GetNumRaidMembers() > 0) then
- SendChatMessage(msg, "RAID");
- elseif (GetNumPartyMembers() > 0) then
- SendChatMessage(msg, "PARTY");
- else
- SendChatMessage(msg, "SAY");
- end
- -- Si le type du message est "PARTY", le message sera envoyé en groupe
- elseif (type == "PARTY") then
- SendChatMessage(msg, "PARTY");
- -- Si le type du message est "RAID", le message sera envoyé en raid
- elseif (type == "RAID") then
- SendChatMessage(msg, "RAID");
- elseif (type == "SAY") then
- -- Si le type du message est "SAY", le message sera envoyé en chat local
- SendChatMessage(msg, "SAY");
- end
- end
-end
-
-
-------------------------------------------------------------------------------------------------------
--- ... ET LE COLORAMA FUT !
-------------------------------------------------------------------------------------------------------
-
--- Remplace dans les chaines les codes de coloration par les définitions de couleur associées
-function Necrosis_MsgAddColor(msg)
- msg = string.gsub(msg, "", "|CFFFFFFFF");
- msg = string.gsub(msg, "", "|CFF99CCFF");
- msg = string.gsub(msg, "", "|CFF00FF00");
- msg = string.gsub(msg, "", "|CFF66FF66");
- msg = string.gsub(msg, "", "|CFF99FF66");
- msg = string.gsub(msg, "", "|CFFCCFF66");
- msg = string.gsub(msg, "", "|CFFFFFF66");
- msg = string.gsub(msg, "", "|CFFFFCC00");
- msg = string.gsub(msg, "", "|CFFFFCC66");
- msg = string.gsub(msg, "", "|CFFFF9933");
- msg = string.gsub(msg, "", "|CFFFF6600");
- msg = string.gsub(msg, "", "|CFFFF3300");
- msg = string.gsub(msg, "", "|CFFFF0000");
- msg = string.gsub(msg, "", "|CFFFF5555");
- msg = string.gsub(msg, "", "|CFFFFC4FF");
- msg = string.gsub(msg, "", "|CFFFF99FF");
- msg = string.gsub(msg, "", "|CFFFF50FF");
- msg = string.gsub(msg, "", "|CFFFF00FF");
- msg = string.gsub(msg, "", "|CFFB700B7");
- msg = string.gsub(msg, "", "|r");
- return msg;
-end
-
-
--- Insère dans les timers des codes de coloration en fonction du pourcentage de temps restant
-function NecrosisTimerColor(percent)
- local color = "";
- if (percent < 10) then
- color = "";
- elseif (percent < 20) then
- color = "";
- elseif (percent < 30) then
- color = "";
- elseif (percent < 40) then
- color = "";
- elseif (percent < 50) then
- color = "";
- elseif (percent < 60) then
- color = "";
- elseif (percent < 70) then
- color = "";
- elseif (percent < 80) then
- color = "";
- elseif (percent < 90) then
- color = "";
- end
- return color;
-end
-
-------------------------------------------------------------------------------------------------------
--- VARIABLES USER-FRIENDLY DANS LES MESSAGES D'INVOCATION
-------------------------------------------------------------------------------------------------------
-
-function Necrosis_MsgReplace(msg, target, pet)
- msg = string.gsub(msg, "", UnitName("player"));
- if target then
- msg = string.gsub(msg, "", target);
- end
- if pet then
- msg = string.gsub(msg, "", NecrosisConfig.PetName[pet]);
- end
- return msg;
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 30.04.2005-1
+------------------------------------------------------------------------------------------------------
+
+
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS D'AFFICHAGE (CONSOLE, CHAT, MESSAGE SYSTEME)
+------------------------------------------------------------------------------------------------------
+
+function Necrosis_Msg(msg, type)
+ if (msg and type) then
+ -- Si le type du message est "USER", le message s'affiche sur l'écran...
+ if (type == "USER") then
+ -- On colorise astucieusement notre message :D
+ msg = Necrosis_MsgAddColor(msg);
+ local Intro = "|CFFFF00FFNe|CFFFF50FFcr|CFFFF99FFos|CFFFFC4FFis|CFFFFFFFF: ";
+ if NecrosisConfig.ChatType then
+ -- ...... sur la première fenêtre de chat
+ ChatFrame1:AddMessage(Intro..msg, 1.0, 0.7, 1.0, 1.0, UIERRORS_HOLD_TIME);
+ else
+ -- ...... ou au milieu de l'écran
+ UIErrorsFrame:AddMessage(Intro..msg, 1.0, 0.7, 1.0, 1.0, UIERRORS_HOLD_TIME);
+ end
+ -- Si le type du message est "WORLD", le message sera envoyé en raid, à défaut en groupe, et à défaut en chat local
+ elseif (type == "WORLD") then
+ if (GetNumRaidMembers() > 0) then
+ SendChatMessage(msg, "RAID");
+ elseif (GetNumPartyMembers() > 0) then
+ SendChatMessage(msg, "PARTY");
+ else
+ SendChatMessage(msg, "SAY");
+ end
+ -- Si le type du message est "PARTY", le message sera envoyé en groupe
+ elseif (type == "PARTY") then
+ SendChatMessage(msg, "PARTY");
+ -- Si le type du message est "RAID", le message sera envoyé en raid
+ elseif (type == "RAID") then
+ SendChatMessage(msg, "RAID");
+ elseif (type == "SAY") then
+ -- Si le type du message est "SAY", le message sera envoyé en chat local
+ SendChatMessage(msg, "SAY");
+ end
+ end
+end
+
+
+------------------------------------------------------------------------------------------------------
+-- ... ET LE COLORAMA FUT !
+------------------------------------------------------------------------------------------------------
+
+-- Remplace dans les chaines les codes de coloration par les définitions de couleur associées
+function Necrosis_MsgAddColor(msg)
+ msg = string.gsub(msg, "", "|CFFFFFFFF");
+ msg = string.gsub(msg, "", "|CFF99CCFF");
+ msg = string.gsub(msg, "", "|CFF00FF00");
+ msg = string.gsub(msg, "", "|CFF66FF66");
+ msg = string.gsub(msg, "", "|CFF99FF66");
+ msg = string.gsub(msg, "", "|CFFCCFF66");
+ msg = string.gsub(msg, "", "|CFFFFFF66");
+ msg = string.gsub(msg, "", "|CFFFFCC00");
+ msg = string.gsub(msg, "", "|CFFFFCC66");
+ msg = string.gsub(msg, "", "|CFFFF9933");
+ msg = string.gsub(msg, "", "|CFFFF6600");
+ msg = string.gsub(msg, "", "|CFFFF3300");
+ msg = string.gsub(msg, "", "|CFFFF0000");
+ msg = string.gsub(msg, "", "|CFFFF5555");
+ msg = string.gsub(msg, "", "|CFFFFC4FF");
+ msg = string.gsub(msg, "", "|CFFFF99FF");
+ msg = string.gsub(msg, "", "|CFFFF50FF");
+ msg = string.gsub(msg, "", "|CFFFF00FF");
+ msg = string.gsub(msg, "", "|CFFB700B7");
+ msg = string.gsub(msg, "", "|r");
+ return msg;
+end
+
+
+-- Insère dans les timers des codes de coloration en fonction du pourcentage de temps restant
+function NecrosisTimerColor(percent)
+ local color = "";
+ if (percent < 10) then
+ color = "";
+ elseif (percent < 20) then
+ color = "";
+ elseif (percent < 30) then
+ color = "";
+ elseif (percent < 40) then
+ color = "";
+ elseif (percent < 50) then
+ color = "";
+ elseif (percent < 60) then
+ color = "";
+ elseif (percent < 70) then
+ color = "";
+ elseif (percent < 80) then
+ color = "";
+ elseif (percent < 90) then
+ color = "";
+ end
+ return color;
+end
+
+------------------------------------------------------------------------------------------------------
+-- VARIABLES USER-FRIENDLY DANS LES MESSAGES D'INVOCATION
+------------------------------------------------------------------------------------------------------
+
+function Necrosis_MsgReplace(msg, target, pet)
+ msg = string.gsub(msg, "", UnitName("player"));
+ if target then
+ msg = string.gsub(msg, "", target);
+ end
+ if pet then
+ msg = string.gsub(msg, "", NecrosisConfig.PetName[pet]);
+ end
+ return msg;
+end
diff --git a/NecrosisMessageMenu.xml b/NecrosisMessageMenu.xml
index f57e2b0..8951123 100644
--- a/NecrosisMessageMenu.xml
+++ b/NecrosisMessageMenu.xml
@@ -1,343 +1,343 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- if (this:GetValue() == 1) then
- GameTooltip:SetText("Francais");
- elseif (this:GetValue() == 2) then
- GameTooltip:SetText("English");
- else
- GameTooltip:SetText("Deutsch");
- end
-
-
- GameTooltip:SetText(this:GetValue());
- if (this:GetValue() == 1) then
- GameTooltip:SetText("Francais");
- NecrosisConfig.NecrosisLanguage = "frFR";
- Necrosis_Localization_Dialog_Fr();
- elseif (this:GetValue() == 2) then
- GameTooltip:SetText("English");
- NecrosisConfig.NecrosisLanguage = "enUS";
- Necrosis_Localization_Dialog_En();
- else
- GameTooltip:SetText("Deutsch");
- NecrosisConfig.NecrosisLanguage = "deDE";
- Necrosis_Localization_Dialog_De();
- end
- Necrosis_LanguageInitialize();
-
-
- GameTooltip:Hide();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.AntiFearAlert = true;
- else
- NecrosisConfig.AntiFearAlert = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.ShadowTranceAlert = true;
- else
- NecrosisConfig.ShadowTranceAlert = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.NecrosisToolTip = true;
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.TooltipOn, "USER");
- else
- NecrosisConfig.NecrosisToolTip = false;
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.TooltipOff, "USER");
- end
- Necrosis_UpdateButtonsScale();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.Sound = true;
- else
- NecrosisConfig.Sound = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.ChatType = false;
- else
- NecrosisConfig.ChatType = true;
- end
- Necrosis_Msg(NECROSIS_MESSAGE.Interface.MessagePosition, "USER");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.ChatMsg = true;
- else
- NecrosisConfig.ChatMsg = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.DemonSummon = true;
- else
- NecrosisConfig.DemonSummon = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.SteedSummon = true;
- else
- NecrosisConfig.SteedSummon = false;
- end
-
-
-
-
-
-
- HideUIPanel(NecrosisMessageMenu);
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ if (this:GetValue() == 1) then
+ GameTooltip:SetText("Francais");
+ elseif (this:GetValue() == 2) then
+ GameTooltip:SetText("English");
+ else
+ GameTooltip:SetText("Deutsch");
+ end
+
+
+ GameTooltip:SetText(this:GetValue());
+ if (this:GetValue() == 1) then
+ GameTooltip:SetText("Francais");
+ NecrosisConfig.NecrosisLanguage = "frFR";
+ Necrosis_Localization_Dialog_Fr();
+ elseif (this:GetValue() == 2) then
+ GameTooltip:SetText("English");
+ NecrosisConfig.NecrosisLanguage = "enUS";
+ Necrosis_Localization_Dialog_En();
+ else
+ GameTooltip:SetText("Deutsch");
+ NecrosisConfig.NecrosisLanguage = "deDE";
+ Necrosis_Localization_Dialog_De();
+ end
+ Necrosis_LanguageInitialize();
+
+
+ GameTooltip:Hide();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.AntiFearAlert = true;
+ else
+ NecrosisConfig.AntiFearAlert = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.ShadowTranceAlert = true;
+ else
+ NecrosisConfig.ShadowTranceAlert = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.NecrosisToolTip = true;
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.TooltipOn, "USER");
+ else
+ NecrosisConfig.NecrosisToolTip = false;
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.TooltipOff, "USER");
+ end
+ Necrosis_UpdateButtonsScale();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.Sound = true;
+ else
+ NecrosisConfig.Sound = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.ChatType = false;
+ else
+ NecrosisConfig.ChatType = true;
+ end
+ Necrosis_Msg(NECROSIS_MESSAGE.Interface.MessagePosition, "USER");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.ChatMsg = true;
+ else
+ NecrosisConfig.ChatMsg = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.DemonSummon = true;
+ else
+ NecrosisConfig.DemonSummon = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.SteedSummon = true;
+ else
+ NecrosisConfig.SteedSummon = false;
+ end
+
+
+
+
+
+
+ HideUIPanel(NecrosisMessageMenu);
+
+
+
+
diff --git a/NecrosisShardMenu.xml b/NecrosisShardMenu.xml
index aa76e97..57accf6 100644
--- a/NecrosisShardMenu.xml
+++ b/NecrosisShardMenu.xml
@@ -1,306 +1,306 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- GameTooltip:SetText(5-this:GetValue());
-
-
- GameTooltip:SetText(5-this:GetValue());
-
-
- GameTooltip:Hide();
-
-
- GameTooltip:SetText(5-this:GetValue());
- NecrosisConfig.SoulshardContainer = 4-this:GetValue();
- Necrosis_SoulshardSwitch("MOVE");
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- if this:GetValue() == 1 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
- elseif this:GetValue() == 2 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Inferno);
- else
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
- end
-
-
- if this:GetValue() == 1 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
- elseif this:GetValue() == 2 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Inferno);
- else
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
- end
-
-
- GameTooltip:Hide();
-
-
- NecrosisConfig.CountType = this:GetValue();
- Necrosis_BagExplore();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- if this:GetValue() == 1 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
- else
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
- end
-
-
- if this:GetValue() == 1 then
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
- else
- GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
- end
-
-
- GameTooltip:Hide();
-
-
- NecrosisConfig.Circle = this:GetValue();
- Necrosis_BagExplore();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
- if (this:GetValue() == 1) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Pink);
- elseif (this:GetValue() == 2) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Blue);
- elseif (this:GetValue() == 3) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Orange);
- elseif (this:GetValue() == 4) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Turquoise);
- elseif (this:GetValue() == 5) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Purple);
- else
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.X);
- end
-
-
- GameTooltip:SetText(this:GetValue());
- if (this:GetValue() == 1) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Pink);
- NecrosisConfig.NecrosisColor = "Rose";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Rose\\Shard16");
- elseif (this:GetValue() == 2) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Blue);
- NecrosisConfig.NecrosisColor = "Bleu";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard16");
- elseif (this:GetValue() == 3) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Orange);
- NecrosisConfig.NecrosisColor = "Orange";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Orange\\Shard16");
- elseif (this:GetValue() == 4) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Turquoise);
- NecrosisConfig.NecrosisColor = "Turquoise";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Turquoise\\Shard16");
- elseif (this:GetValue() == 5) then
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Purple);
- NecrosisConfig.NecrosisColor = "Violet";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Violet\\Shard16");
- else
- GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.X);
- NecrosisConfig.NecrosisColor = "X";
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\X\\Shard16");
- end
-
-
- GameTooltip:Hide();
- Necrosis_BagExplore();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.SoulshardSort = true;
- else
- NecrosisConfig.SoulshardSort = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.SoulshardDestroy = true;
- else
- NecrosisConfig.SoulshardDestroy = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.ShowCount = true;
- else
- NecrosisConfig.ShowCount = false;
- end
- Necrosis_BagExplore();
-
-
-
-
-
-
- HideUIPanel(NecrosisShardMenu);
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ GameTooltip:SetText(5-this:GetValue());
+
+
+ GameTooltip:SetText(5-this:GetValue());
+
+
+ GameTooltip:Hide();
+
+
+ GameTooltip:SetText(5-this:GetValue());
+ NecrosisConfig.SoulshardContainer = 4-this:GetValue();
+ Necrosis_SoulshardSwitch("MOVE");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ if this:GetValue() == 1 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
+ elseif this:GetValue() == 2 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Inferno);
+ else
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
+ end
+
+
+ if this:GetValue() == 1 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
+ elseif this:GetValue() == 2 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Inferno);
+ else
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
+ end
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisConfig.CountType = this:GetValue();
+ Necrosis_BagExplore();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ if this:GetValue() == 1 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
+ else
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
+ end
+
+
+ if this:GetValue() == 1 then
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Shard);
+ else
+ GameTooltip:SetText(NECROSIS_CONFIGURATION.Count.Rez);
+ end
+
+
+ GameTooltip:Hide();
+
+
+ NecrosisConfig.Circle = this:GetValue();
+ Necrosis_BagExplore();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
+ if (this:GetValue() == 1) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Pink);
+ elseif (this:GetValue() == 2) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Blue);
+ elseif (this:GetValue() == 3) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Orange);
+ elseif (this:GetValue() == 4) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Turquoise);
+ elseif (this:GetValue() == 5) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Purple);
+ else
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.X);
+ end
+
+
+ GameTooltip:SetText(this:GetValue());
+ if (this:GetValue() == 1) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Pink);
+ NecrosisConfig.NecrosisColor = "Rose";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Rose\\Shard16");
+ elseif (this:GetValue() == 2) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Blue);
+ NecrosisConfig.NecrosisColor = "Bleu";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Bleu\\Shard16");
+ elseif (this:GetValue() == 3) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Orange);
+ NecrosisConfig.NecrosisColor = "Orange";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Orange\\Shard16");
+ elseif (this:GetValue() == 4) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Turquoise);
+ NecrosisConfig.NecrosisColor = "Turquoise";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Turquoise\\Shard16");
+ elseif (this:GetValue() == 5) then
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.Purple);
+ NecrosisConfig.NecrosisColor = "Violet";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Violet\\Shard16");
+ else
+ GameTooltip:SetText(NECROSIS_COLOR_TOOLTIP.X);
+ NecrosisConfig.NecrosisColor = "X";
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\X\\Shard16");
+ end
+
+
+ GameTooltip:Hide();
+ Necrosis_BagExplore();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.SoulshardSort = true;
+ else
+ NecrosisConfig.SoulshardSort = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.SoulshardDestroy = true;
+ else
+ NecrosisConfig.SoulshardDestroy = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.ShowCount = true;
+ else
+ NecrosisConfig.ShowCount = false;
+ end
+ Necrosis_BagExplore();
+
+
+
+
+
+
+ HideUIPanel(NecrosisShardMenu);
+
+
+
+
diff --git a/NecrosisTimer.xml b/NecrosisTimer.xml
index c5486a0..2653ed0 100644
--- a/NecrosisTimer.xml
+++ b/NecrosisTimer.xml
@@ -1,3752 +1,3752 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this:SetFrameLevel(this:GetFrameLevel() - 1)
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ this:SetFrameLevel(this:GetFrameLevel() - 1)
+
+
+
+
+
+
+
+
diff --git a/NecrosisTimerFunction.lua b/NecrosisTimerFunction.lua
index 1d91c9c..a19593a 100644
--- a/NecrosisTimerFunction.lua
+++ b/NecrosisTimerFunction.lua
@@ -1,351 +1,351 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
---
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version Allemande par Arne Meier et Halisstra, Lothar
--- Remerciements spéciaux pour Sadyre (JoL)
--- Version 23.04.2006-1
-------------------------------------------------------------------------------------------------------
-
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS D'INSERTION
-------------------------------------------------------------------------------------------------------
-
--- La table des timers est là pour ça !
-function Necrosis_InsertTimerParTable(IndexTable, Target, LevelTarget, SpellGroup, SpellTimer, TimerTable)
-
- -- Insertion de l'entrée dans le tableau
- table.insert(SpellTimer,
- {
- Name = NECROSIS_SPELL_TABLE[IndexTable].Name,
- Time = NECROSIS_SPELL_TABLE[IndexTable].Length,
- TimeMax = floor(GetTime() + NECROSIS_SPELL_TABLE[IndexTable].Length),
- Type = NECROSIS_SPELL_TABLE[IndexTable].Type,
- Target = Target,
- TargetLevel = LevelTarget,
- Group = 0,
- Gtimer = nil
- });
-
- -- Association d'un timer graphique au timer
- SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
-
- -- Tri des entrées par type de sort
- Necrosis_Tri(SpellTimer, "Type");
-
- -- Création des groupes (noms des mobs) des timers
- SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
-
- return SpellGroup, SpellTimer, TimerTable;
-end
-
--- Et pour insérer le timer de pierres
-function Necrosis_InsertTimerStone(Stone, start, duration, SpellGroup, SpellTimer, TimerTable)
-
- -- Insertion de l'entrée dans le tableau
- if Stone == "Healthstone" then
- table.insert(SpellTimer,
- {
- Name = NECROSIS_COOLDOWN.Healthstone,
- Time = 180,
- TimeMax = floor(GetTime() + 180),
- Type = 2,
- Target = "",
- TargetLevel = "",
- Group = 2,
- Gtimer = nil
- });
-
- -- Association d'un timer graphique au timer
- SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
-
- elseif Stone == "Spellstone" then
- table.insert(SpellTimer,
- {
- Name = NECROSIS_COOLDOWN.Spellstone,
- Time = 30,
- TimeMax = floor(GetTime() + 30),
- Type = 2,
- Target = "",
- TargetLevel = "",
- Group = 2,
- Gtimer = nil
- });
-
- -- Association d'un timer graphique au timer
- SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
-
- elseif Stone == "Soulstone" then
- table.insert(SpellTimer,
- {
- Name = NECROSIS_SPELL_TABLE[11].Name,
- Time = floor(duration - GetTime() + start),
- TimeMax = floor(start + duration),
- Type = NECROSIS_SPELL_TABLE[11].Type,
- Target = "???",
- TargetLevel = "",
- Group = 1,
- Gtimer = nil,
- });
-
- -- Association d'un timer graphique au timer
- SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
- end
-
- -- Tri des entrées par type de sort
- Necrosis_Tri(SpellTimer, "Type");
-
- -- Création des groupes (noms des mobs) des timers
- SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
-
- return SpellGroup, SpellTimer, TimerTable;
-end
-
--- Pour la création de timers personnels
-function NecrosisTimerX(nom, duree, truc, Target, LevelTarget, SpellGroup, SpellTimer, TimerTable)
-
- table.insert(SpellTimer,
- {
- Name = nom,
- Time = duree,
- TimeMax = floor(GetTime() + duree),
- Type = truc,
- Target = Target,
- TargetLevel = LevelTarget,
- Group = 0,
- Gtimer = nil
- });
-
- -- Association d'un timer graphique au timer
- SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
-
- -- Tri des entrées par type de sort
- Necrosis_Tri(SpellTimer, "Type");
-
- -- Création des groupes (noms des mobs) des timers
- SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
-
- return SpellGroup, SpellTimer, TimerTable;
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DE RETRAIT
-------------------------------------------------------------------------------------------------------
-
-
--- Connaissant l'index du Timer dans la liste, on le supprime
-function Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable)
-
- -- Suppression du timer graphique
- local Gtime = SpellTimer[index].Gtimer;
- TimerTable = Necrosis_RemoveFrame(Gtime, TimerTable);
-
- -- On enlève le timer de la liste
- table.remove(SpellTimer, index);
-
- return SpellTimer, TimerTable;
-end
-
--- Si on veut supprimer spécifiquement un Timer...
-function Necrosis_RetraitTimerParNom(name, SpellTimer, TimerTable)
- for index = 1, table.getn(SpellTimer), 1 do
- if SpellTimer[index].Name == name then
- SpellTimer = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
- break;
- end
- end
- return SpellTimer, TimerTable;
-end
-
--- Fonction pour enlever les timers de combat lors de la regen
-function Necrosis_RetraitTimerCombat(SpellGroup, SpellTimer, TimerTable)
- for index=1, table.getn(SpellTimer), 1 do
- if SpellTimer[index] then
- -- Si les cooldowns sont nominatifs, on enlève le nom
- if SpellTimer[index].Type == 3 then
- SpellTimer[index].Target = "";
- SpellTimer[index].TargetLevel = "";
- end
- -- Enlevage des timers de combat
- if ((SpellTimer[index].Type == 4) or (SpellTimer[index].Type == 5)) then
- SpellTimer = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
- end
- end
- end
-
- if table.getn(SpellGroup.Name) >= 4 then
- for index = 4, table.getn(SpellGroup.Name), 1 do
- table.remove(SpellGroup.Name);
- table.remove(SpellGroup.SubName);
- table.remove(SpellGroup.Visible);
- end
- end
- return SpellGroup, SpellTimer, TimerTable;
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS BOOLEENNES
-------------------------------------------------------------------------------------------------------
-
-function Necrosis_TimerExisteDeja(Nom, SpellTimer)
- for index = 1, table.getn(SpellTimer), 1 do
- if SpellTimer[index].Name == Nom then
- return true;
- end
- end
- return false;
-end
-
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS DE TRI
-------------------------------------------------------------------------------------------------------
-
--- On définit les groupes de chaque Timer
-function Necrosis_Parsing(SpellGroup, SpellTimer)
- local GroupeOK = false;
- for index = 1, table.getn(SpellTimer), 1 do
- local GroupeOK = false;
- for i = 1, table.getn(SpellGroup.Name), 1 do
- if ((SpellTimer[index].Type == i) and (i <= 3)) or
- (SpellTimer[index].Target == SpellGroup.Name[i]
- and SpellTimer[index].TargetLevel == SpellGroup.SubName[i])
- then
- GroupeOK = true;
- SpellTimer[index].Group = i;
- break;
- end
- end
- -- Si le groupe n'existe pas, on en crée un nouveau
- if not GroupeOK then
- table.insert(SpellGroup.Name, SpellTimer[index].Target);
- table.insert(SpellGroup.SubName, SpellTimer[index].TargetLevel);
- table.insert(SpellGroup.Visible, false);
- SpellTimer[index].Group = table.getn(SpellGroup.Name);
- end
- end
-
- Necrosis_Tri(SpellTimer, "Group");
- return SpellGroup, SpellTimer;
-end
-
--- On trie les timers selon leur groupe
-function Necrosis_Tri(SpellTimer, clef)
- return table.sort(SpellTimer,
- function (SubTab1, SubTab2)
- return SubTab1[clef] < SubTab2[clef]
- end);
-end
-
-------------------------------------------------------------------------------------------------------
--- FONCTIONS D'AFFICHAGE : CREATION DE LA CHAINE DE CARACTERE
-------------------------------------------------------------------------------------------------------
-
-
-function Necrosis_DisplayTimer(display, index, SpellGroup, SpellTimer, GraphicalTimer, TimerTable)
- if not SpellTimer then
- return display, SpellGroup;
- end
-
- local minutes = 0;
- local seconds = 0;
- local affichage;
-
- -- Changement de la couleur suivant le temps restant
- local percent = (floor(SpellTimer[index].TimeMax - floor(GetTime())) / SpellTimer[index].Time)*100;
- local color = NecrosisTimerColor(percent);
-
- if not SpellGroup.Visible[SpellTimer[index].Group]
- and SpellGroup.SubName[SpellTimer[index].Group] ~= nil
- and SpellGroup.Name[SpellTimer[index].Group] ~= nil then
- display = display.."-------------------------------\n"..SpellGroup.Name[SpellTimer[index].Group].." "..SpellGroup.SubName[SpellTimer[index].Group].."\n-------------------------------\n";
- -- Crée le tableau qui servira aux timers graphiques
- table.insert(GraphicalTimer.texte, SpellGroup.Name[SpellTimer[index].Group].." "..SpellGroup.SubName[SpellTimer[index].Group]);
- table.insert(GraphicalTimer.TimeMax, 0);
- table.insert(GraphicalTimer.Time, 0);
- table.insert(GraphicalTimer.titre, true);
- table.insert(GraphicalTimer.temps, "");
- table.insert(GraphicalTimer.Gtimer, 0);
- SpellGroup.Visible[SpellTimer[index].Group] = true;
- end
-
- -- Mise en place d'un Chrono plutôt qu'un Compte à Rebours pour l'asservissement
- if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[10].Name then
- seconds = floor(GetTime()) - (SpellTimer[index].TimeMax - SpellTimer[index].Time);
- else
- seconds = SpellTimer[index].TimeMax - floor(GetTime());
- end
- minutes = floor(seconds/60);
- if (minutes > 0) then
- if (minutes > 9) then
- affichage = tostring(minutes)..":";
- else
- affichage = "0"..minutes..":"
- end
- else
- affichage = "0:";
- end
- seconds = mod(seconds, 60);
- if (seconds > 9) then
- affichage = affichage..seconds
- else
- affichage = affichage.."0"..seconds
- end
- display = display..""..affichage.." - ";
-
- -- Crée le tableau qui servira aux timers graphiques
- if (SpellTimer[index].Type == 1 or SpellTimer[index].Name == NECROSIS_SPELL_TABLE[16].Name)
- and (SpellTimer[index].Target ~= "") then
- if NecrosisConfig.SpellTimerPos == 1 then
- affichage = affichage.." - "..SpellTimer[index].Target;
- else
- affichage = SpellTimer[index].Target.." - "..affichage;
- end
- end
- table.insert(GraphicalTimer.texte, SpellTimer[index].Name);
- table.insert(GraphicalTimer.TimeMax, SpellTimer[index].TimeMax);
- table.insert(GraphicalTimer.Time, SpellTimer[index].Time);
- table.insert(GraphicalTimer.titre, false);
- table.insert(GraphicalTimer.temps, affichage);
- table.insert(GraphicalTimer.Gtimer, SpellTimer[index].Gtimer);
-
- if NecrosisConfig.CountType == 3 then
- if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
- if (minutes > 0) then
- NecrosisShardCount:SetText(minutes.." m");
- else
- NecrosisShardCount:SetText(seconds);
- end
- end
- end
- if NecrosisConfig.Circle == 2 then
- if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
- if (minutes >= 16) then
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Turquoise\\Shard"..minutes - 15);
- elseif minutes >= 1 or seconds >= 33 then
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Orange\\Shard"..minutes + 1);
- else
- NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Rose\\Shard"..seconds);
- end
- end
- end
- display = display..color..SpellTimer[index].Name.."";
- if (SpellTimer[index].Type == 1 or SpellTimer[index].Name == NECROSIS_SPELL_TABLE[16].Name)
- and (SpellTimer[index].Target ~= "")
- then
- display = display.." - "..SpellTimer[index].Target.."\n";
- else
- display = display.."\n";
- end
- -- Affichage des timers graphiques (si sélectionnés)
- if NecrosisConfig.Graphical then
- NecrosisAfficheTimer(GraphicalTimer, TimerTable);
- end
-
- return display, SpellGroup, GraphicalTimer, TimerTable;
-end
+------------------------------------------------------------------------------------------------------
+-- Necrosis LdC
+--
+-- Créateur initial (US) : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+-- Implémentation de base (FR) : Tilienna Thorondor
+-- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
+--
+-- Skins et voix Françaises : Eliah, Ner'zhul
+-- Version Allemande par Arne Meier et Halisstra, Lothar
+-- Remerciements spéciaux pour Sadyre (JoL)
+-- Version 23.04.2006-1
+------------------------------------------------------------------------------------------------------
+
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS D'INSERTION
+------------------------------------------------------------------------------------------------------
+
+-- La table des timers est là pour ça !
+function Necrosis_InsertTimerParTable(IndexTable, Target, LevelTarget, SpellGroup, SpellTimer, TimerTable)
+
+ -- Insertion de l'entrée dans le tableau
+ table.insert(SpellTimer,
+ {
+ Name = NECROSIS_SPELL_TABLE[IndexTable].Name,
+ Time = NECROSIS_SPELL_TABLE[IndexTable].Length,
+ TimeMax = floor(GetTime() + NECROSIS_SPELL_TABLE[IndexTable].Length),
+ Type = NECROSIS_SPELL_TABLE[IndexTable].Type,
+ Target = Target,
+ TargetLevel = LevelTarget,
+ Group = 0,
+ Gtimer = nil
+ });
+
+ -- Association d'un timer graphique au timer
+ SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
+
+ -- Tri des entrées par type de sort
+ Necrosis_Tri(SpellTimer, "Type");
+
+ -- Création des groupes (noms des mobs) des timers
+ SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
+
+ return SpellGroup, SpellTimer, TimerTable;
+end
+
+-- Et pour insérer le timer de pierres
+function Necrosis_InsertTimerStone(Stone, start, duration, SpellGroup, SpellTimer, TimerTable)
+
+ -- Insertion de l'entrée dans le tableau
+ if Stone == "Healthstone" then
+ table.insert(SpellTimer,
+ {
+ Name = NECROSIS_COOLDOWN.Healthstone,
+ Time = 180,
+ TimeMax = floor(GetTime() + 180),
+ Type = 2,
+ Target = "",
+ TargetLevel = "",
+ Group = 2,
+ Gtimer = nil
+ });
+
+ -- Association d'un timer graphique au timer
+ SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
+
+ elseif Stone == "Spellstone" then
+ table.insert(SpellTimer,
+ {
+ Name = NECROSIS_COOLDOWN.Spellstone,
+ Time = 30,
+ TimeMax = floor(GetTime() + 30),
+ Type = 2,
+ Target = "",
+ TargetLevel = "",
+ Group = 2,
+ Gtimer = nil
+ });
+
+ -- Association d'un timer graphique au timer
+ SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
+
+ elseif Stone == "Soulstone" then
+ table.insert(SpellTimer,
+ {
+ Name = NECROSIS_SPELL_TABLE[11].Name,
+ Time = floor(duration - GetTime() + start),
+ TimeMax = floor(start + duration),
+ Type = NECROSIS_SPELL_TABLE[11].Type,
+ Target = "???",
+ TargetLevel = "",
+ Group = 1,
+ Gtimer = nil,
+ });
+
+ -- Association d'un timer graphique au timer
+ SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
+ end
+
+ -- Tri des entrées par type de sort
+ Necrosis_Tri(SpellTimer, "Type");
+
+ -- Création des groupes (noms des mobs) des timers
+ SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
+
+ return SpellGroup, SpellTimer, TimerTable;
+end
+
+-- Pour la création de timers personnels
+function NecrosisTimerX(nom, duree, truc, Target, LevelTarget, SpellGroup, SpellTimer, TimerTable)
+
+ table.insert(SpellTimer,
+ {
+ Name = nom,
+ Time = duree,
+ TimeMax = floor(GetTime() + duree),
+ Type = truc,
+ Target = Target,
+ TargetLevel = LevelTarget,
+ Group = 0,
+ Gtimer = nil
+ });
+
+ -- Association d'un timer graphique au timer
+ SpellTimer, TimerTable = Necrosis_AddFrame(SpellTimer, TimerTable);
+
+ -- Tri des entrées par type de sort
+ Necrosis_Tri(SpellTimer, "Type");
+
+ -- Création des groupes (noms des mobs) des timers
+ SpellGroup, SpellTimer = Necrosis_Parsing(SpellGroup, SpellTimer);
+
+ return SpellGroup, SpellTimer, TimerTable;
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DE RETRAIT
+------------------------------------------------------------------------------------------------------
+
+
+-- Connaissant l'index du Timer dans la liste, on le supprime
+function Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable)
+
+ -- Suppression du timer graphique
+ local Gtime = SpellTimer[index].Gtimer;
+ TimerTable = Necrosis_RemoveFrame(Gtime, TimerTable);
+
+ -- On enlève le timer de la liste
+ table.remove(SpellTimer, index);
+
+ return SpellTimer, TimerTable;
+end
+
+-- Si on veut supprimer spécifiquement un Timer...
+function Necrosis_RetraitTimerParNom(name, SpellTimer, TimerTable)
+ for index = 1, table.getn(SpellTimer), 1 do
+ if SpellTimer[index].Name == name then
+ SpellTimer = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
+ break;
+ end
+ end
+ return SpellTimer, TimerTable;
+end
+
+-- Fonction pour enlever les timers de combat lors de la regen
+function Necrosis_RetraitTimerCombat(SpellGroup, SpellTimer, TimerTable)
+ for index=1, table.getn(SpellTimer), 1 do
+ if SpellTimer[index] then
+ -- Si les cooldowns sont nominatifs, on enlève le nom
+ if SpellTimer[index].Type == 3 then
+ SpellTimer[index].Target = "";
+ SpellTimer[index].TargetLevel = "";
+ end
+ -- Enlevage des timers de combat
+ if ((SpellTimer[index].Type == 4) or (SpellTimer[index].Type == 5)) then
+ SpellTimer = Necrosis_RetraitTimerParIndex(index, SpellTimer, TimerTable);
+ end
+ end
+ end
+
+ if table.getn(SpellGroup.Name) >= 4 then
+ for index = 4, table.getn(SpellGroup.Name), 1 do
+ table.remove(SpellGroup.Name);
+ table.remove(SpellGroup.SubName);
+ table.remove(SpellGroup.Visible);
+ end
+ end
+ return SpellGroup, SpellTimer, TimerTable;
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS BOOLEENNES
+------------------------------------------------------------------------------------------------------
+
+function Necrosis_TimerExisteDeja(Nom, SpellTimer)
+ for index = 1, table.getn(SpellTimer), 1 do
+ if SpellTimer[index].Name == Nom then
+ return true;
+ end
+ end
+ return false;
+end
+
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS DE TRI
+------------------------------------------------------------------------------------------------------
+
+-- On définit les groupes de chaque Timer
+function Necrosis_Parsing(SpellGroup, SpellTimer)
+ local GroupeOK = false;
+ for index = 1, table.getn(SpellTimer), 1 do
+ local GroupeOK = false;
+ for i = 1, table.getn(SpellGroup.Name), 1 do
+ if ((SpellTimer[index].Type == i) and (i <= 3)) or
+ (SpellTimer[index].Target == SpellGroup.Name[i]
+ and SpellTimer[index].TargetLevel == SpellGroup.SubName[i])
+ then
+ GroupeOK = true;
+ SpellTimer[index].Group = i;
+ break;
+ end
+ end
+ -- Si le groupe n'existe pas, on en crée un nouveau
+ if not GroupeOK then
+ table.insert(SpellGroup.Name, SpellTimer[index].Target);
+ table.insert(SpellGroup.SubName, SpellTimer[index].TargetLevel);
+ table.insert(SpellGroup.Visible, false);
+ SpellTimer[index].Group = table.getn(SpellGroup.Name);
+ end
+ end
+
+ Necrosis_Tri(SpellTimer, "Group");
+ return SpellGroup, SpellTimer;
+end
+
+-- On trie les timers selon leur groupe
+function Necrosis_Tri(SpellTimer, clef)
+ return table.sort(SpellTimer,
+ function (SubTab1, SubTab2)
+ return SubTab1[clef] < SubTab2[clef]
+ end);
+end
+
+------------------------------------------------------------------------------------------------------
+-- FONCTIONS D'AFFICHAGE : CREATION DE LA CHAINE DE CARACTERE
+------------------------------------------------------------------------------------------------------
+
+
+function Necrosis_DisplayTimer(display, index, SpellGroup, SpellTimer, GraphicalTimer, TimerTable)
+ if not SpellTimer then
+ return display, SpellGroup;
+ end
+
+ local minutes = 0;
+ local seconds = 0;
+ local affichage;
+
+ -- Changement de la couleur suivant le temps restant
+ local percent = (floor(SpellTimer[index].TimeMax - floor(GetTime())) / SpellTimer[index].Time)*100;
+ local color = NecrosisTimerColor(percent);
+
+ if not SpellGroup.Visible[SpellTimer[index].Group]
+ and SpellGroup.SubName[SpellTimer[index].Group] ~= nil
+ and SpellGroup.Name[SpellTimer[index].Group] ~= nil then
+ display = display.."-------------------------------\n"..SpellGroup.Name[SpellTimer[index].Group].." "..SpellGroup.SubName[SpellTimer[index].Group].."\n-------------------------------\n";
+ -- Crée le tableau qui servira aux timers graphiques
+ table.insert(GraphicalTimer.texte, SpellGroup.Name[SpellTimer[index].Group].." "..SpellGroup.SubName[SpellTimer[index].Group]);
+ table.insert(GraphicalTimer.TimeMax, 0);
+ table.insert(GraphicalTimer.Time, 0);
+ table.insert(GraphicalTimer.titre, true);
+ table.insert(GraphicalTimer.temps, "");
+ table.insert(GraphicalTimer.Gtimer, 0);
+ SpellGroup.Visible[SpellTimer[index].Group] = true;
+ end
+
+ -- Mise en place d'un Chrono plutôt qu'un Compte à Rebours pour l'asservissement
+ if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[10].Name then
+ seconds = floor(GetTime()) - (SpellTimer[index].TimeMax - SpellTimer[index].Time);
+ else
+ seconds = SpellTimer[index].TimeMax - floor(GetTime());
+ end
+ minutes = floor(seconds/60);
+ if (minutes > 0) then
+ if (minutes > 9) then
+ affichage = tostring(minutes)..":";
+ else
+ affichage = "0"..minutes..":"
+ end
+ else
+ affichage = "0:";
+ end
+ seconds = mod(seconds, 60);
+ if (seconds > 9) then
+ affichage = affichage..seconds
+ else
+ affichage = affichage.."0"..seconds
+ end
+ display = display..""..affichage.." - ";
+
+ -- Crée le tableau qui servira aux timers graphiques
+ if (SpellTimer[index].Type == 1 or SpellTimer[index].Name == NECROSIS_SPELL_TABLE[16].Name)
+ and (SpellTimer[index].Target ~= "") then
+ if NecrosisConfig.SpellTimerPos == 1 then
+ affichage = affichage.." - "..SpellTimer[index].Target;
+ else
+ affichage = SpellTimer[index].Target.." - "..affichage;
+ end
+ end
+ table.insert(GraphicalTimer.texte, SpellTimer[index].Name);
+ table.insert(GraphicalTimer.TimeMax, SpellTimer[index].TimeMax);
+ table.insert(GraphicalTimer.Time, SpellTimer[index].Time);
+ table.insert(GraphicalTimer.titre, false);
+ table.insert(GraphicalTimer.temps, affichage);
+ table.insert(GraphicalTimer.Gtimer, SpellTimer[index].Gtimer);
+
+ if NecrosisConfig.CountType == 3 then
+ if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
+ if (minutes > 0) then
+ NecrosisShardCount:SetText(minutes.." m");
+ else
+ NecrosisShardCount:SetText(seconds);
+ end
+ end
+ end
+ if NecrosisConfig.Circle == 2 then
+ if SpellTimer[index].Name == NECROSIS_SPELL_TABLE[11].Name then
+ if (minutes >= 16) then
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Turquoise\\Shard"..minutes - 15);
+ elseif minutes >= 1 or seconds >= 33 then
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Orange\\Shard"..minutes + 1);
+ else
+ NecrosisButton:SetNormalTexture("Interface\\AddOns\\Necrosis\\UI\\Rose\\Shard"..seconds);
+ end
+ end
+ end
+ display = display..color..SpellTimer[index].Name.."";
+ if (SpellTimer[index].Type == 1 or SpellTimer[index].Name == NECROSIS_SPELL_TABLE[16].Name)
+ and (SpellTimer[index].Target ~= "")
+ then
+ display = display.." - "..SpellTimer[index].Target.."\n";
+ else
+ display = display.."\n";
+ end
+ -- Affichage des timers graphiques (si sélectionnés)
+ if NecrosisConfig.Graphical then
+ NecrosisAfficheTimer(GraphicalTimer, TimerTable);
+ end
+
+ return display, SpellGroup, GraphicalTimer, TimerTable;
+end
diff --git a/NecrosisTimerMenu.xml b/NecrosisTimerMenu.xml
index 8ca23b0..5a44e0c 100644
--- a/NecrosisTimerMenu.xml
+++ b/NecrosisTimerMenu.xml
@@ -1,190 +1,190 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.ShowSpellTimers = true;
- else
- NecrosisConfig.ShowSpellTimers = false;
- end
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.SpellTimerPos = -1;
- NecrosisConfig.SpellTimerJust = "RIGHT";
- AnchorSpellTimerTooltip = "ANCHOR_LEFT"
- else
- NecrosisConfig.SpellTimerPos = 1;
- NecrosisConfig.SpellTimerJust = "LEFT";
- AnchorSpellTimerTooltip = "ANCHOR_RIGHT";
- end
- NecrosisListSpells:ClearAllPoints();
- NecrosisListSpells:SetJustifyH(NecrosisConfig.SpellTimerJust);
- NecrosisListSpells:SetPoint("TOP"..NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, 10);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- NecrosisConfig.Graphical = this:GetChecked();
- Necrosis_HideGraphTimer();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- NecrosisConfig.Yellow = not this:GetChecked();
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- if (this:GetChecked()) then
- NecrosisConfig.SensListe = -1;
- else
- NecrosisConfig.SensListe = 1;
- end
-
-
-
-
-
-
- HideUIPanel(NecrosisTimerMenu);
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.ShowSpellTimers = true;
+ else
+ NecrosisConfig.ShowSpellTimers = false;
+ end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.SpellTimerPos = -1;
+ NecrosisConfig.SpellTimerJust = "RIGHT";
+ AnchorSpellTimerTooltip = "ANCHOR_LEFT"
+ else
+ NecrosisConfig.SpellTimerPos = 1;
+ NecrosisConfig.SpellTimerJust = "LEFT";
+ AnchorSpellTimerTooltip = "ANCHOR_RIGHT";
+ end
+ NecrosisListSpells:ClearAllPoints();
+ NecrosisListSpells:SetJustifyH(NecrosisConfig.SpellTimerJust);
+ NecrosisListSpells:SetPoint("TOP"..NecrosisConfig.SpellTimerJust, "NecrosisSpellTimerButton", "CENTER", NecrosisConfig.SpellTimerPos * 23, 10);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NecrosisConfig.Graphical = this:GetChecked();
+ Necrosis_HideGraphTimer();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NecrosisConfig.Yellow = not this:GetChecked();
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if (this:GetChecked()) then
+ NecrosisConfig.SensListe = -1;
+ else
+ NecrosisConfig.SensListe = 1;
+ end
+
+
+
+
+
+
+ HideUIPanel(NecrosisTimerMenu);
+
+
+
+
diff --git a/README.md b/README.md
index d069e9d..a7ab512 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-This is fork of 1.5.2a of Necrosis LdC addon for Turtle WoW server
-
-# Changes
-
-Removed init dialog options (en only)
-Updated shard counting and Fel Domination CD tracking ( pylebecq )
+This is fork of 1.5.2a of Necrosis LdC addon for Turtle WoW server
+
+# Changes
+
+Removed init dialog options (en only)
+Updated shard counting and Fel Domination CD tracking ( pylebecq )
diff --git a/Readme.txt b/Readme.txt
index 61a1eb6..3733d93 100644
--- a/Readme.txt
+++ b/Readme.txt
@@ -1,120 +1,120 @@
-NECROSIS LdC
--------------------------------
-
-- Original Idea : Infernal (http://www.revolvus.com/games/interface/necrosis/)
-- First translation (in French which was not supported by the original
- mod) and improvements : Tilienna Thorondor
-- Necrosis LdC maintainers : Lomig & Nyx from Kael'Thas
-
-- Skins and French voices : Eliah from Ner'zhul
-- German Version by Arne Meier
-- Special thanks to Sadyre
-
-- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
-
-
-First of all, I apologize for my bad english, I will try to find someone
-who can speak more fluently than me to improve my pieces of writing...
-
-
-
--------------------------------
-1 - What is Necrosis ?
--------------------------------
-
-Necrosis is a mod to help Warlocks managing their stones, shards and
-demon. No more, but no less... It actually can not make a coffee, but I
-tried, I promise !
-
-
--------------------------------
-2 - Why should I use Necrosis ?
--------------------------------
-
-Because it is marvelous ! It is really cute, thanks to him you will not
-be obliged to have one thousand buttons all over your screen, your
-friends will be happy knowing they are protected by a stone, and they will
-thank you when it will teach them how to summon a guy... Marvelous, I
-said !
-
--------------------------------
-3 - How does it work ?
--------------------------------
-
-Really simple. My grandmother can do it.Oh, well, you can bet my
-grandmother never intended to play online games. She thought that computers
-were devil machines which can provide illness and death. I think it is a
-shame not to be less narrowminded. Well, anyway...
-
-How does it work ? Mmm...
-
-
-Necrosis will provide you a sphere and 7 buttons.
-Right click on the sphere will provide you the configuration menu.
-
-- On the sphere, the number of soulshards you have
-- A button to create / equip a fire stone
-- A button to create / equip / use a spellstone
- Right click to create or equip
- Left click to create or use
-- A button to create / use / give a healthstone
- With no target, npc, mobs or enemy target : Use the stone
- With a friendly player target : Give the stone
-- A button to create / use a soulstone
- Use while targeting a friendly player : Use the stone on him
- Use while targeting something else : Use the stone on you
- Fortunately, you will not be able to use a stone as you already
- have full life... And if you want to cure already-fine-people
- only, you can try to become a Paladin instead !
-- A button to summon your Steed
-- A button to show you the demon menu from which you will be able to summon
- your demons, gain a Fel Domination...
-- A button for Spell timers
- Spell timers will appear on the right of this button
- Right click on this button will use your Hearthstone
-
--------------------------------
-4 - More functionnalities
--------------------------------
-
-You can put the Necrosis Sphere wherever you want
-You can put the Necrosis Buttons wherever you want
-
-When you quit the game with a stone in off-hand, and then you re-enter the
-world more than 30 minutes later, as your stones had faded, your first
-soulbound off-hand item in your bags will be equiped
-
-When you summon a player, Necrosis will pick up a sentence to ask your friends
-to help you. I said "pick up" because there is several sentences available,
-picked up randomly.
-
-When you give a Soulstone protection to a friend by its button, Necrosis will
-also pick up a sentence to tell
-
-These sentences are written in the "Speech.lua" file, you can modify/add/remove
-as many sentence as you wish
-
-
-Most of your spells with cooldown will be shown by the Spell Timer... Most, but
-not all ! It is quite difficult to time instant cast spells... Well I'll try to !
-
--------------------------------
-5 - Help needed
--------------------------------
-
-I can read english quite perfectly, but speaking or writing it, it is an ordeal...
-So neither this text nor my "in game" sentences are "oxbridge" english. If you
-you want me to correct vocabulary / spelling / grammar, you can mail me !
-
-Please do not try to correct my French, I would be offended :P
-
-If there is a bug with this mod, you can write me, explaining me how does the
-bug happen, and giving me the whole and complete (and entire) (and full)
-error message :P
-
--------------------------------
-6 - Improvement
--------------------------------
-
-If you think some functions are dumshit, if you add a brilliant stuff and think
-people would like it, mail us !
+NECROSIS LdC
+-------------------------------
+
+- Original Idea : Infernal (http://www.revolvus.com/games/interface/necrosis/)
+- First translation (in French which was not supported by the original
+ mod) and improvements : Tilienna Thorondor
+- Necrosis LdC maintainers : Lomig & Nyx from Kael'Thas
+
+- Skins and French voices : Eliah from Ner'zhul
+- German Version by Arne Meier
+- Special thanks to Sadyre
+
+- Contact : lomig@larmes-cenarius.net - nyx@larmes-cenarius.net
+
+
+First of all, I apologize for my bad english, I will try to find someone
+who can speak more fluently than me to improve my pieces of writing...
+
+
+
+-------------------------------
+1 - What is Necrosis ?
+-------------------------------
+
+Necrosis is a mod to help Warlocks managing their stones, shards and
+demon. No more, but no less... It actually can not make a coffee, but I
+tried, I promise !
+
+
+-------------------------------
+2 - Why should I use Necrosis ?
+-------------------------------
+
+Because it is marvelous ! It is really cute, thanks to him you will not
+be obliged to have one thousand buttons all over your screen, your
+friends will be happy knowing they are protected by a stone, and they will
+thank you when it will teach them how to summon a guy... Marvelous, I
+said !
+
+-------------------------------
+3 - How does it work ?
+-------------------------------
+
+Really simple. My grandmother can do it.Oh, well, you can bet my
+grandmother never intended to play online games. She thought that computers
+were devil machines which can provide illness and death. I think it is a
+shame not to be less narrowminded. Well, anyway...
+
+How does it work ? Mmm...
+
+
+Necrosis will provide you a sphere and 7 buttons.
+Right click on the sphere will provide you the configuration menu.
+
+- On the sphere, the number of soulshards you have
+- A button to create / equip a fire stone
+- A button to create / equip / use a spellstone
+ Right click to create or equip
+ Left click to create or use
+- A button to create / use / give a healthstone
+ With no target, npc, mobs or enemy target : Use the stone
+ With a friendly player target : Give the stone
+- A button to create / use a soulstone
+ Use while targeting a friendly player : Use the stone on him
+ Use while targeting something else : Use the stone on you
+ Fortunately, you will not be able to use a stone as you already
+ have full life... And if you want to cure already-fine-people
+ only, you can try to become a Paladin instead !
+- A button to summon your Steed
+- A button to show you the demon menu from which you will be able to summon
+ your demons, gain a Fel Domination...
+- A button for Spell timers
+ Spell timers will appear on the right of this button
+ Right click on this button will use your Hearthstone
+
+-------------------------------
+4 - More functionnalities
+-------------------------------
+
+You can put the Necrosis Sphere wherever you want
+You can put the Necrosis Buttons wherever you want
+
+When you quit the game with a stone in off-hand, and then you re-enter the
+world more than 30 minutes later, as your stones had faded, your first
+soulbound off-hand item in your bags will be equiped
+
+When you summon a player, Necrosis will pick up a sentence to ask your friends
+to help you. I said "pick up" because there is several sentences available,
+picked up randomly.
+
+When you give a Soulstone protection to a friend by its button, Necrosis will
+also pick up a sentence to tell
+
+These sentences are written in the "Speech.lua" file, you can modify/add/remove
+as many sentence as you wish
+
+
+Most of your spells with cooldown will be shown by the Spell Timer... Most, but
+not all ! It is quite difficult to time instant cast spells... Well I'll try to !
+
+-------------------------------
+5 - Help needed
+-------------------------------
+
+I can read english quite perfectly, but speaking or writing it, it is an ordeal...
+So neither this text nor my "in game" sentences are "oxbridge" english. If you
+you want me to correct vocabulary / spelling / grammar, you can mail me !
+
+Please do not try to correct my French, I would be offended :P
+
+If there is a bug with this mod, you can write me, explaining me how does the
+bug happen, and giving me the whole and complete (and entire) (and full)
+error message :P
+
+-------------------------------
+6 - Improvement
+-------------------------------
+
+If you think some functions are dumshit, if you add a brilliant stuff and think
+people would like it, mail us !
diff --git a/Speech.lua b/Speech.lua
index 98cc205..4608cfa 100644
--- a/Speech.lua
+++ b/Speech.lua
@@ -1,488 +1,488 @@
-------------------------------------------------------------------------------------------------------
--- Necrosis LdC
---
--- Créateur initial (US) : Infernal (http://www.shadydesign.com/necrosis/files/)
--- Implémentation de base (FR) : Tilienna Thorondor
--- Reprise du projet : Lomig & Nyx des Larmes de Cenarius, Kael'Thas
--- Skins et voix Françaises : Eliah, Ner'zhul
--- Version 01.05.2006-2
-------------------------------------------------------------------------------------------------------
-
-
--- Les textes d'invocation du démoniste
-----------------------------------------
--- Ici sont rassemblés les textes d'invocation pour le démoniste. Vous pouvez les modifier
--- Pour qu'ils collent plus à votre personnage !
--- Pour ceci, voici une aide :
--- Les invocations sont de type "Blah blah blah" Le joueur invoqué "Blah blah blah"
--- Si vous voulez écrire "Je vous invoque 'Nom du joueur' si vous cliquez sur mon portail"
--- Il faut savoir que le nom de la cible est remplacé par
--- alors il faudra rajouter avant } :
--- "Je vous invoque si vous cliquez sur mon portail"
---
--- La même chose est valable pour les messages de pierre d'âme
---
--- En ce qui concerne l'invocation des démons, ça a l'air compliqué mais ça ne l'est pas vraiment
--- Chaque démon est numéroté de 1 à 4
--- A l'intérieur de ces démons chaque discours d'invocation est numérotée de 1 à x
--- A l'intérieur de ces discours d'invocation, des retours à la ligne sur la fenetre de chat est possible
--- J'espère que les commentaires que j'y ai mis sont compréhensibles
--- Sinon n'hésitez pas à poster dans le sujet du forum officiel ou écrivez moi (lomig@larmes-cenarius.net)
-
-
--- Texts for a summoning by a warlock
---------------------------------------
--- Here are some summoning speeches for your warlock. You can change them for them to
--- fit your warlock-way-of-thinking a little more !
--- Need some help ? :)
--- Correct syntax is "Blah blah blah" SelectedPlayer "Blah blah blah"
--- If you want to write "In few seconds 'Player's name' will be able to help us"
--- The target's name is replaced by
--- you need to add before the } :
--- "In few seconds will be able to help us",
---
--- The same thing is available for soulstone messages
---
--- As for the demon summoning, it seems to be complicated but it is not
--- Each demon is numbered from 1 to 4
--- Inside those demons, each summon speech is numbered from 1 to x
--- Thoses speeches can contain several sentences in the chat window, in game
--- I made notes on the sentences given by example, I hope they are understandable
--- If not, do not hesistate to mail me (lomig@larmes-cenarius.net)
-
-
--- Texte für das Ritual der Beschwörung
-----------------------------------------
--- Hier sind einige Beschwörungstexte für deinen Hexenmeister. Du kannst sie ändern
--- um deinen Hexenmeisterdenken ein wenig anzupassen!
--- Hier ein paar Tipps. :)
--- Der korrekte Syntax ist "Blah blah blah" ausgewälter Spieler "Blah blah blah"
--- Wenn du schreiben möchtest "In wenigen Sekunden wird 'Spielername' in der Lage sein uns zu helfen"
--- musst du vor dem }; hinzufügen:
--- "In wenigen Sekunden wird in der Lage sein uns zu helfen",
---
--- Das gleiche gilt für Seelenstein Nachrichten.
---
--- Das Beschwören von Dämonen: Es sieht zwar kompliziert aus, aber es ist nicht kompliziert
--- Jeder Dämon ist von 1 bis 4 durchnummeriert
--- Innerhalb dieser Dämonen ist jeder Beschwörungsspruch von 1 bis X durchnummeriert
--- Diese Sprüche können einige Sequenzen enthalten, die ingame dann im Chatfenster angezeigt werden
--- Ich habe einige Anmerkungen bei den Beispielsätzen hinzugefügt, ich hoffe sie sind verständlich
--- Sollten sie es nicht sein, zögert nicht mich zu kontaktieren (lomig@larmes-cenarius.net)
-
-
--------------------------------------
--- ENGLISH VERSION --
--------------------------------------
-
-function Necrosis_Localization_Speech_En()
-
- NECROSIS_INVOCATION_MESSAGES = {
- [1] = {
- "Arcanum Taxi Cab ! I am summoning , please click on the portal.",
- },
- [2] = {
- "Welcome aboard, , you are flying on the ~Succubus Air Lines~ to ...",
- "Air Hostesses and their lashes are at your service during your trip !",
- },
- [3] = {
- "If you click on the portal, someone named will appear and do your job for you !",
- },
- [4] = {
- "If you do not want a sprawling, phlegm-looking and asthmatic creature to come from this portal, click on it to help find a path in Hell as quick as possible !",
- },
- };
-
- NECROSIS_SOULSTONE_ALERT_MESSAGE = {
- [1] = {
- "If you cherish the idea of a mass suicide, now can self-resurrect, so all should be fine. Go ahead.",
- },
- [2]= {
- " can go afk to drink a cup of coffee or so, soulstone is in place to allow for the wipe...",
- },
- };
-
- NECROSIS_PET_MESSAGE = {
- -- Imp
- [1] = {
- -- Summon speech 1
- [1] = {
- "Well, crapy nasty little Imp, now you stop sulking and you come to help ! AND THAT'S AN ORDER !",
- },
- -- Summon speech 2
- [2] = {
- "! HEEL ! NOW !",
- },
- };
- -- Voidwalker
- [2] = {
- -- Summon speech 1
- [1] = {
- -- First sentence in the chat window
- "Oops, I will probably need an idiot to be knocked for me...",
- -- Second setence in the chat window
- ", please help !",
- },
- };
- -- Succubus
- [3] = {
- -- Summon speech 1
- [1] = {
- " baby, please help me sweet heart !",
- },
- };
- -- Felhunter
- [4] = {
- -- Summon speech 1
- [1] = {
- " ! ! Come on boy, come here ! !",
- },
- };
- -- Sentences for the first summon : When Necrosis do not know the name of your demons yet
- [5] = {
- -- Summon speech 1
- [1] = {
- -- First sentence in the chat window
- "Fishing ? Yes I love fishing... Look !",
- -- Second sentence in the chat window
- "I close my eyes, I move my fingers like that... And voila ! Yes, yes, it is a fish, I can swear you !",
- },
- -- Summon speech 2
- [2] = {
- -- First sentence in the chat window
- "Anyway I hate you all ! I don't need you, I have friends.... Powerful friends !",
- -- Second sentence in the chat window
- "COME TO ME, CREATURE OF HELL AND NIGHTMARE !",
- },
- };
- -- Sentences for the stead summon
- [6] = {
- -- Summon speech 1
- [1] = {
- -- First sentence in the chat window
- "Hey, I'm late ! Let's find a horse that roxes !",
- },
- -- Summon speech 2
- [2] = {
- -- First sentence in the chat window
- "I am summoning a stead from nightmare !",
- -- Second sentence in the chat window
- "AH AHA HA HA AH AH !",
- },
- };
- };
-
- NECROSIS_SHORT_MESSAGES = {
- {{"--> is soulstoned for 30 minutes <--"}},
- {{" Summoning , please click on the portal "}},
- };
-
-end
-
--------------------------------------
--- VERSION FRANCAISE --
--------------------------------------
-
-function Necrosis_Localization_Speech_Fr()
-
- NECROSIS_INVOCATION_MESSAGES = {
- [1] = {
- "Taxi des Arcanes ! J'invoque , cliquez sur le portail svp !",
- },
- [2] = {
- "Bienvenue, , sur le vol de ~Succube Air Lines~ \195\160 destination de ...",
- "Les h\195\180tesses et leur fouet sont \195\160 votre disposition durant le trajet",
- },
- [3] = {
- "Si vous ne voulez pas qu'une cr\195\169ature tentaculaire, glaireuse et asthmatique sorte de ce portail, cliquez dessus pour aider \195\160 trouver son chemin au plus vite !",
- },
- [4] = {
- "Si vous cliquez sur le portail, un machin nomm\195\169 sortira et fera le boulot \195\160 votre place...",
- },
- [5] = {
- "Tel un lapin dans un chapeau de mage, va appara\195\174tre devant vos yeux \195\169bahis. Et hop.",
- },
- [6] = {
- "PAR ASTAROTH ET DASMODES, JE T'INVOQUE, O TOUT PUISSANT DEMON DES SEPTS ENFERS, PARANGON VELU DES INFRA MONDES DEMONIAQUES, PAR LA PUISSANCE DU SCEAU ANCESTR... euh ?!? Ah merde c’est qui d\195\169barque !!",
- },
- [7] = {
- "Chantons ensemble ! Venu de nulle part, c'est , Plus vif que le serpent, c'est !",
- "Personne ne l'aper\195\167oit, c'est , Mais il est toujours l\195\160, c'est !",
- "Plein d'effroi les Pirates de Tanaris rien qu'\195\160 son nom voient leur sang qui se glace, se glace, se glace... Mais quand il y a danger, c'est qui vient pour nous aider, ...",
- "(Cliquez vite sur le portail sinon je continue...)",
- "C'EST ! ! !",
- },
- };
-
- NECROSIS_SOULSTONE_ALERT_MESSAGE = {
- [1] = {
- "Si ca vous tente un suicide collectif, s'en fout, la pierre d'\195\162me lui permettra de se relever",
- },
- [2] = {
- " peut partir siroter un caf\195\169, et pourra se relever du wipe qui s'en suivra gr\195\162ce \195\160 sa pierre d'\195\162me",
- },
- [3] = {
- "Pierre pos\195\169e sur , vous pouvez recommencer \195\160 faire n’importe quoi sans risque",
- },
- [4] = {
- "Gr\195\162ce \195\160 sa pierre d’\195\162me, est pass\195\169 en mode Easy wipe",
- },
- [5] = {
- " peut d\195\169sormais revenir d’entre les morts, histoire d’organiser le prochain wipe",
- },
- [6] = {
- "Les hindous croient \195\160 l’immortalit\195\169, aussi depuis que je lui ai pos\195\169 une pierre d’\195\162me",
- },
- [7] = {
- " est d\195\169sormais \195\169quip\195\169 de son kit de survie temporaire.",
- },
- [8] = {
- "Tel le ph\195\169nix, pourra revenir d’entre les flammes de l’enfer (Faut dire aussi qu’il a beaucoup de rf...)",
- },
- [9] = {
- "Gr\195\162ce \195\160 sa pierre d’\195\162me,